From 7454453643762fd6922ebdd41218c6106a7f59b6 Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Sat, 10 Jan 2026 00:50:52 +0000 Subject: [PATCH 1/8] Add makefile & dockerfile --- google-cloud-bigquery-jdbc/Dockerfile | 21 ++++ google-cloud-bigquery-jdbc/Makefile | 144 ++++++++++++++++++++++++++ google-cloud-bigquery-jdbc/pom.xml | 5 +- 3 files changed, 168 insertions(+), 2 deletions(-) create mode 100644 google-cloud-bigquery-jdbc/Dockerfile create mode 100644 google-cloud-bigquery-jdbc/Makefile diff --git a/google-cloud-bigquery-jdbc/Dockerfile b/google-cloud-bigquery-jdbc/Dockerfile new file mode 100644 index 000000000..5f8a1d1ba --- /dev/null +++ b/google-cloud-bigquery-jdbc/Dockerfile @@ -0,0 +1,21 @@ +FROM gcr.io/cloud-devrel-public-resources/java11 + +ENV JDBC_DOCKER_ENV=true +RUN apt install zip + +RUN mkdir /tst +COPY ./pom.xml /src/pom.xml +COPY ./java.header /src/java.header +COPY ./license-checks.xml /src/license-checks.xml +COPY ./google-cloud-bigquery-jdbc/pom.xml /src/google-cloud-bigquery-jdbc/pom.xml + +COPY ./google-cloud-bigquery /src/google-cloud-bigquery +COPY ./google-cloud-bigquery-bom /src/google-cloud-bigquery-bom + + +WORKDIR /src +RUN mvn install + +WORKDIR /src/google-cloud-bigquery-jdbc + +ENTRYPOINT [] diff --git a/google-cloud-bigquery-jdbc/Makefile b/google-cloud-bigquery-jdbc/Makefile new file mode 100644 index 000000000..d8c452ca9 --- /dev/null +++ b/google-cloud-bigquery-jdbc/Makefile @@ -0,0 +1,144 @@ +SECRET=`cat $(GOOGLE_APPLICATION_CREDENTIALS)` +CONTAINER_NAME=jdbc +PACKAGE_DESTINATION=$(PWD)/bigquery-external-jdbc-tests/drivers +skipSurefire ?= true + +# no indendation for ifndef\endif due to their evaluation before execution +.check-env: | +ifndef GOOGLE_APPLICATION_CREDENTIALS + $(error GOOGLE_APPLICATION_CREDENTIALS is required to run tests) +endif + +install: + mvn clean install + +clean: + mvn clean + +lint: + mvn com.spotify.fmt:fmt-maven-plugin:format + +unittest: | + mvn -B -ntp \ + -DtrimStackTrace=false \ + -Dclirr.skip=true \ + -Denforcer.skip=true \ + -Dtest=$(test) \ + test + +# Important: By default, this command will skip unittests. +# To include unit tests, run: make integration-test skipSurefire=false +integration-test: .check-env + mvn -B -ntp \ + -Penable-integration-tests \ + -DtrimStackTrace=false \ + -DskipSurefire=$(skipSurefire) \ + -Dclirr.skip=true \ + -Denforcer.skip=true \ + -Dit.failIfNoSpecifiedTests=false \ + -Dit.test=$(test) \ + integration-test + +unit-test-coverage: + $(MAKE) unittest + mvn -B -ntp --projects=google-cloud-bigquery-jdbc jacoco:report + BUILD_DIR=$$(mvn -B -ntp --projects=google-cloud-bigquery-jdbc help:evaluate -Dexpression=project.build.directory -q -DforceStdout); \ + cd $$BUILD_DIR/site && zip -r $$OLDPWD/jacoco-unittests.zip jacoco && cd $$OLDPWD + +full-coverage: .check-env + $(MAKE) integration-test skipSurefire=false test=ITBigQueryJDBCTest,ITNightlyBigQueryTest + mvn -B -ntp --projects=google-cloud-bigquery-jdbc jacoco:report + BUILD_DIR=$$(mvn -B -ntp --projects=google-cloud-bigquery-jdbc help:evaluate -Dexpression=project.build.directory -q -DforceStdout); \ + cd $$BUILD_DIR/site && zip -r $$OLDPWD/jacoco-full.zip jacoco && cd $$OLDPWD + +package: + mvn clean package \ + -DincludeScope=runtime \ + -Dmaven.test.skip=true \ + --projects=google-cloud-bigquery-jdbc + mvn dependency:copy-dependencies \ + -DincludeScope=runtime + ${MAKE} generate-dependency-list + +package-all-dependencies: + mvn package \ + -DincludeScope=runtime \ + -Dmaven.test.skip=true \ + -P=release-all-dependencies \ + --projects=google-cloud-bigquery-jdbc + +package-all-dependencies-shaded: + mvn package \ + -DincludeScope=runtime \ + -Dmaven.test.skip=true \ + -P=release-all-dependencies,release-all-dependencies-shaded \ + --projects=google-cloud-bigquery-jdbc + +generate-dependency-list: + mvn -B dependency:list \ + -f google-cloud-bigquery-jdbc/pom.xml \ + -DexcludeTransitive \ + -DincludeScope=runtime | grep :jar: | sed -E "s/^.* ([^: ]+):([^:]+):([^:]+):([^:]+).*/\1<\/groupId>\2<\/artifactId>\4<\/version><\/dependency>/g" > dependencies.txt + +# Commands for dockerized environments +.docker-run: | + docker run -it \ + -v $(GOOGLE_APPLICATION_CREDENTIALS):/auth/application_creds.json \ + -v "$(GOOGLE_APPLICATION_CREDENTIALS).p12":/auth/application_creds.p12 \ + -e "GOOGLE_APPLICATION_CREDENTIALS=/auth/application_creds.json" \ + -v $(PWD)/..:/src \ + -e "SA_EMAIL=test_email" \ + -e "SA_SECRET=$(SECRET)" \ + -e "SA_SECRET_P12=/auth/application_creds.p12" \ + $(CONTAINER_NAME) $(args) + +docker-build: + docker build -t $(CONTAINER_NAME) -f Dockerfile .. + +docker-session: + $(MAKE) .docker-run args="bash" + +docker-package-all-dependencies: docker-build + mkdir -p $(PACKAGE_DESTINATION) + docker run \ + -v $(PWD):/src \ + -v $(PACKAGE_DESTINATION):/pkg \ + $(CONTAINER_NAME) \ + sh -c "make package-all-dependencies && \ + cp --no-preserve=ownership /mvn/test-target/google-cloud-bigquery-jdbc-*.jar /pkg && \ + rm -f /pkg/*tests.jar" + +docker-package-all-dependencies-shaded: docker-build + mkdir -p $(PACKAGE_DESTINATION) + docker run \ + -v $(PWD):/src \ + -v $(PACKAGE_DESTINATION):/pkg \ + $(CONTAINER_NAME) \ + sh -c "make package-all-dependencies-shaded && \ + cp --no-preserve=ownership /mvn/test-target/google-cloud-bigquery-jdbc-*.jar /pkg && \ + rm -f /pkg/*tests.jar" + +docker-package: docker-build + mkdir -p bigquery-external-jdbc-tests/drivers/ + docker run \ + -v $(PWD):/src \ + -v $(PACKAGE_DESTINATION):/pkg \ + $(CONTAINER_NAME) \ + sh -c "make package && \ + mkdir -p /tmp/package && \ + cp --no-preserve=ownership /mvn/test-target/google-cloud-bigquery-jdbc-*.jar /tmp/package && \ + rm -f /pkg/*tests.jar && \ + cp --no-preserve=ownership dependencies.txt /tmp/package && \ + rm dependencies.txt && \ + cp --no-preserve=ownership /mvn/test-target/dependency/*.jar /tmp/package && \ + zip -j -r /pkg/google-cloud-bigquery-jdbc-$$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout).zip /tmp/package" + +docker-unittest: | + $(MAKE) .docker-run args="make unittest test=$(test)" + +docker-integration-test: .check-env + $(MAKE) .docker-run args="make integration-test test=$(test) skipSurefire=$(skipSurefire)" + +docker-coverage: + $(MAKE) .docker-run args="make unit-test-coverage" + $(MAKE) .docker-run args="make full-coverage" \ No newline at end of file diff --git a/google-cloud-bigquery-jdbc/pom.xml b/google-cloud-bigquery-jdbc/pom.xml index a697ba101..6f0a53789 100644 --- a/google-cloud-bigquery-jdbc/pom.xml +++ b/google-cloud-bigquery-jdbc/pom.xml @@ -60,13 +60,14 @@ com.google.cloud - google-cloud-bigquery-jdbc-parent - 0.1.0 + google-cloud-bigquery-parent + 2.57.2-SNAPSHOT com.google.cloud google-cloud-bigquery + 2.57.2-SNAPSHOT com.google.cloud From 24350fc6658810cab2404afbbcc153809ed551e5 Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Sat, 10 Jan 2026 07:20:04 +0000 Subject: [PATCH 2/8] Remove inherited dependencies --- google-cloud-bigquery-jdbc/pom.xml | 79 ------------------------------ 1 file changed, 79 deletions(-) diff --git a/google-cloud-bigquery-jdbc/pom.xml b/google-cloud-bigquery-jdbc/pom.xml index 6f0a53789..e8f608d82 100644 --- a/google-cloud-bigquery-jdbc/pom.xml +++ b/google-cloud-bigquery-jdbc/pom.xml @@ -73,60 +73,6 @@ com.google.cloud google-cloud-bigquerystorage - - com.google.api - api-common - - - org.apache.arrow - arrow-vector - - - com.google.guava - guava - - - com.google.cloud - google-cloud-core - - - com.google.api - gax - - - com.google.auth - google-auth-library-oauth2-http - - - com.google.auth - google-auth-library-credentials - - - - - org.apache.arrow - arrow-memory-core - - - org.apache.arrow - arrow-memory-netty - - - com.google.protobuf - protobuf-java - - - com.google.api.grpc - proto-google-cloud-bigquerystorage-v1 - - - com.google.code.gson - gson - - - com.google.code.findbugs - jsr305 - org.apache.httpcomponents.core5 httpcore5 @@ -135,10 +81,6 @@ org.apache.httpcomponents.client5 httpclient5 - - com.google.http-client - google-http-client - com.google.http-client google-http-client-apache-v5 @@ -153,27 +95,6 @@ - - com.google.cloud - google-cloud-core-http - - - com.google.api - gax-grpc - - - io.grpc - grpc-api - - - io.grpc - grpc-netty-shaded - - - io.grpc - grpc-core - - com.google.truth truth From 70a91d5481a2c33299989c5ff98ae53ee06d43dc Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Sat, 10 Jan 2026 07:33:58 +0000 Subject: [PATCH 3/8] Trim more dependnecies --- google-cloud-bigquery-jdbc/pom.xml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/google-cloud-bigquery-jdbc/pom.xml b/google-cloud-bigquery-jdbc/pom.xml index e8f608d82..5c10d2ec0 100644 --- a/google-cloud-bigquery-jdbc/pom.xml +++ b/google-cloud-bigquery-jdbc/pom.xml @@ -73,14 +73,6 @@ com.google.cloud google-cloud-bigquerystorage - - org.apache.httpcomponents.core5 - httpcore5 - - - org.apache.httpcomponents.client5 - httpclient5 - com.google.http-client google-http-client-apache-v5 @@ -95,6 +87,7 @@ + com.google.truth truth From 346f14db766a59024b3be0dc0fe9e8a58db0edf6 Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Thu, 15 Jan 2026 00:54:43 +0000 Subject: [PATCH 4/8] Update all makefile commands --- .gitignore | 6 ++++- google-cloud-bigquery-jdbc/Dockerfile | 2 +- google-cloud-bigquery-jdbc/Makefile | 33 ++++++++++++--------------- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index c94c87d10..d5bcd47b2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,8 @@ __pycache__ SimpleBenchmarkApp/src/main/java/com/google/cloud/App.java .flattened-pom.xml # Local Test files -*ITLocalTest.java \ No newline at end of file +*ITLocalTest.java + +# JDBC-specific files +google-cloud-bigquery-jdbc/drivers/ +google-cloud-bigquery-jdbc/jacoco* \ No newline at end of file diff --git a/google-cloud-bigquery-jdbc/Dockerfile b/google-cloud-bigquery-jdbc/Dockerfile index 5f8a1d1ba..25a8e5508 100644 --- a/google-cloud-bigquery-jdbc/Dockerfile +++ b/google-cloud-bigquery-jdbc/Dockerfile @@ -14,7 +14,7 @@ COPY ./google-cloud-bigquery-bom /src/google-cloud-bigquery-bom WORKDIR /src -RUN mvn install +RUN mvn install -DskipTests WORKDIR /src/google-cloud-bigquery-jdbc diff --git a/google-cloud-bigquery-jdbc/Makefile b/google-cloud-bigquery-jdbc/Makefile index d8c452ca9..5ad882b0b 100644 --- a/google-cloud-bigquery-jdbc/Makefile +++ b/google-cloud-bigquery-jdbc/Makefile @@ -1,6 +1,7 @@ SECRET=`cat $(GOOGLE_APPLICATION_CREDENTIALS)` CONTAINER_NAME=jdbc -PACKAGE_DESTINATION=$(PWD)/bigquery-external-jdbc-tests/drivers +PACKAGE_DESTINATION=$(PWD)/drivers +SRC="$(PWD)/.." skipSurefire ?= true # no indendation for ifndef\endif due to their evaluation before execution @@ -41,21 +42,20 @@ integration-test: .check-env unit-test-coverage: $(MAKE) unittest - mvn -B -ntp --projects=google-cloud-bigquery-jdbc jacoco:report - BUILD_DIR=$$(mvn -B -ntp --projects=google-cloud-bigquery-jdbc help:evaluate -Dexpression=project.build.directory -q -DforceStdout); \ + mvn -B -ntp jacoco:report + BUILD_DIR=$$(mvn -B -ntp help:evaluate -Dexpression=project.build.directory -q -DforceStdout); \ cd $$BUILD_DIR/site && zip -r $$OLDPWD/jacoco-unittests.zip jacoco && cd $$OLDPWD full-coverage: .check-env $(MAKE) integration-test skipSurefire=false test=ITBigQueryJDBCTest,ITNightlyBigQueryTest - mvn -B -ntp --projects=google-cloud-bigquery-jdbc jacoco:report - BUILD_DIR=$$(mvn -B -ntp --projects=google-cloud-bigquery-jdbc help:evaluate -Dexpression=project.build.directory -q -DforceStdout); \ + mvn -B -ntp jacoco:report + BUILD_DIR=$$(mvn -B -ntp help:evaluate -Dexpression=project.build.directory -q -DforceStdout); \ cd $$BUILD_DIR/site && zip -r $$OLDPWD/jacoco-full.zip jacoco && cd $$OLDPWD package: mvn clean package \ -DincludeScope=runtime \ - -Dmaven.test.skip=true \ - --projects=google-cloud-bigquery-jdbc + -Dmaven.test.skip=true mvn dependency:copy-dependencies \ -DincludeScope=runtime ${MAKE} generate-dependency-list @@ -64,20 +64,17 @@ package-all-dependencies: mvn package \ -DincludeScope=runtime \ -Dmaven.test.skip=true \ - -P=release-all-dependencies \ - --projects=google-cloud-bigquery-jdbc + -P=release-all-dependencies package-all-dependencies-shaded: mvn package \ -DincludeScope=runtime \ -Dmaven.test.skip=true \ - -P=release-all-dependencies,release-all-dependencies-shaded \ - --projects=google-cloud-bigquery-jdbc + -P=release-all-dependencies,release-all-dependencies-shaded generate-dependency-list: mvn -B dependency:list \ - -f google-cloud-bigquery-jdbc/pom.xml \ - -DexcludeTransitive \ + -f pom.xml \ -DincludeScope=runtime | grep :jar: | sed -E "s/^.* ([^: ]+):([^:]+):([^:]+):([^:]+).*/\1<\/groupId>\2<\/artifactId>\4<\/version><\/dependency>/g" > dependencies.txt # Commands for dockerized environments @@ -86,7 +83,7 @@ generate-dependency-list: -v $(GOOGLE_APPLICATION_CREDENTIALS):/auth/application_creds.json \ -v "$(GOOGLE_APPLICATION_CREDENTIALS).p12":/auth/application_creds.p12 \ -e "GOOGLE_APPLICATION_CREDENTIALS=/auth/application_creds.json" \ - -v $(PWD)/..:/src \ + -v $(SRC):/src \ -e "SA_EMAIL=test_email" \ -e "SA_SECRET=$(SECRET)" \ -e "SA_SECRET_P12=/auth/application_creds.p12" \ @@ -101,7 +98,7 @@ docker-session: docker-package-all-dependencies: docker-build mkdir -p $(PACKAGE_DESTINATION) docker run \ - -v $(PWD):/src \ + -v $(SRC):/src \ -v $(PACKAGE_DESTINATION):/pkg \ $(CONTAINER_NAME) \ sh -c "make package-all-dependencies && \ @@ -111,7 +108,7 @@ docker-package-all-dependencies: docker-build docker-package-all-dependencies-shaded: docker-build mkdir -p $(PACKAGE_DESTINATION) docker run \ - -v $(PWD):/src \ + -v $(SRC):/src \ -v $(PACKAGE_DESTINATION):/pkg \ $(CONTAINER_NAME) \ sh -c "make package-all-dependencies-shaded && \ @@ -119,9 +116,9 @@ docker-package-all-dependencies-shaded: docker-build rm -f /pkg/*tests.jar" docker-package: docker-build - mkdir -p bigquery-external-jdbc-tests/drivers/ + mkdir -p $(PACKAGE_DESTINATION) docker run \ - -v $(PWD):/src \ + -v $(SRC):/src \ -v $(PACKAGE_DESTINATION):/pkg \ $(CONTAINER_NAME) \ sh -c "make package && \ From 299d85c6e8e85dd425cd0aabfa486a778db7497f Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Thu, 15 Jan 2026 01:32:02 +0000 Subject: [PATCH 5/8] Add versions --- google-cloud-bigquery-jdbc/pom.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/google-cloud-bigquery-jdbc/pom.xml b/google-cloud-bigquery-jdbc/pom.xml index 5c10d2ec0..cc813708d 100644 --- a/google-cloud-bigquery-jdbc/pom.xml +++ b/google-cloud-bigquery-jdbc/pom.xml @@ -20,7 +20,7 @@ 4.0.0 com.google.cloud google-cloud-bigquery-jdbc - 0.1.0 + 0.1.0-SNAPSHOT jar BigQuery JDBC https://github.com/googleapis/java-bigquery-jdbc @@ -72,10 +72,12 @@ com.google.cloud google-cloud-bigquerystorage + 3.18.0 com.google.http-client google-http-client-apache-v5 + 2.0.3 org.apache.httpcomponents From 642f5cd9fb4225fd404f786ebb0177d746374dd3 Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Thu, 15 Jan 2026 01:57:14 +0000 Subject: [PATCH 6/8] Remove secret --- google-cloud-bigquery-jdbc/Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/google-cloud-bigquery-jdbc/Makefile b/google-cloud-bigquery-jdbc/Makefile index 5ad882b0b..f19659687 100644 --- a/google-cloud-bigquery-jdbc/Makefile +++ b/google-cloud-bigquery-jdbc/Makefile @@ -1,4 +1,3 @@ -SECRET=`cat $(GOOGLE_APPLICATION_CREDENTIALS)` CONTAINER_NAME=jdbc PACKAGE_DESTINATION=$(PWD)/drivers SRC="$(PWD)/.." @@ -85,7 +84,7 @@ generate-dependency-list: -e "GOOGLE_APPLICATION_CREDENTIALS=/auth/application_creds.json" \ -v $(SRC):/src \ -e "SA_EMAIL=test_email" \ - -e "SA_SECRET=$(SECRET)" \ + -e "SA_SECRET=/auth/application_creds.json" \ -e "SA_SECRET_P12=/auth/application_creds.p12" \ $(CONTAINER_NAME) $(args) From 5976332d30b959649170db21fb1946b375baf62a Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Thu, 15 Jan 2026 02:00:25 +0000 Subject: [PATCH 7/8] Update dockerfile --- google-cloud-bigquery-jdbc/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-bigquery-jdbc/Dockerfile b/google-cloud-bigquery-jdbc/Dockerfile index 25a8e5508..f88cc5a4b 100644 --- a/google-cloud-bigquery-jdbc/Dockerfile +++ b/google-cloud-bigquery-jdbc/Dockerfile @@ -1,7 +1,7 @@ FROM gcr.io/cloud-devrel-public-resources/java11 ENV JDBC_DOCKER_ENV=true -RUN apt install zip +RUN apt-get update && apt-get install -y zip && rm -rf /var/lib/apt/lists/* RUN mkdir /tst COPY ./pom.xml /src/pom.xml From cf93c2c0e7b5e1f24c7f6d8bb8f77b055b71de85 Mon Sep 17 00:00:00 2001 From: Kirill Logachev Date: Thu, 15 Jan 2026 19:01:36 +0000 Subject: [PATCH 8/8] Revert explicit versions --- google-cloud-bigquery-jdbc/pom.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/google-cloud-bigquery-jdbc/pom.xml b/google-cloud-bigquery-jdbc/pom.xml index cc813708d..677437794 100644 --- a/google-cloud-bigquery-jdbc/pom.xml +++ b/google-cloud-bigquery-jdbc/pom.xml @@ -67,17 +67,14 @@ com.google.cloud google-cloud-bigquery - 2.57.2-SNAPSHOT com.google.cloud google-cloud-bigquerystorage - 3.18.0 com.google.http-client google-http-client-apache-v5 - 2.0.3 org.apache.httpcomponents