7012
com/google/cloud/bigquery/Connection
diff --git a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQuery.java b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQuery.java
index 2e0747f6b..ab16ed40f 100644
--- a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQuery.java
+++ b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQuery.java
@@ -1609,6 +1609,28 @@ TableResult query(QueryJobConfiguration configuration, JobOption... options)
TableResult query(QueryJobConfiguration configuration, JobId jobId, JobOption... options)
throws InterruptedException, JobException;
+ /**
+ * Starts the query associated with the request, using the given JobId. It returns either
+ * TableResult for quick queries or Job object for long-running queries.
+ *
+ * If the location of the job is not "US" or "EU", the {@code jobId} must specify the job
+ * location.
+ *
+ *
This method cannot be used in conjunction with {@link QueryJobConfiguration#dryRun()}
+ * queries. Since dry-run queries are not actually executed, there's no way to retrieve results.
+ *
+ *
See {@link #query(QueryJobConfiguration, JobOption...)} for examples on populating a {@link
+ * QueryJobConfiguration}.
+ *
+ * @throws BigQueryException upon failure
+ * @throws InterruptedException if the current thread gets interrupted while waiting for the query
+ * to complete
+ * @throws JobException if the job completes unsuccessfully
+ */
+ Object queryWithTimeout(
+ QueryJobConfiguration configuration, JobId jobId, Long timeoutMs, JobOption... options)
+ throws InterruptedException, JobException;
+
/**
* Returns results of the query associated with the provided job.
*
diff --git a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java
index 088d15c09..ac8fce708 100644
--- a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java
+++ b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java
@@ -1925,48 +1925,10 @@ public Boolean call() throws IOException {
@Override
public TableResult query(QueryJobConfiguration configuration, JobOption... options)
throws InterruptedException, JobException {
- Job.checkNotDryRun(configuration, "query");
-
- configuration =
- configuration.toBuilder()
- .setJobCreationMode(getOptions().getDefaultJobCreationMode())
- .build();
-
- Span querySpan = null;
- if (getOptions().isOpenTelemetryTracingEnabled()
- && getOptions().getOpenTelemetryTracer() != null) {
- querySpan =
- getOptions()
- .getOpenTelemetryTracer()
- .spanBuilder("com.google.cloud.bigquery.BigQuery.query")
- .setAllAttributes(otelAttributesFromOptions(options))
- .startSpan();
- }
- try (Scope queryScope = querySpan != null ? querySpan.makeCurrent() : null) {
- // If all parameters passed in configuration are supported by the query() method on the
- // backend,
- // put on fast path
- QueryRequestInfo requestInfo =
- new QueryRequestInfo(configuration, getOptions().getUseInt64Timestamps());
- if (requestInfo.isFastQuerySupported(null)) {
- String projectId = getOptions().getProjectId();
- QueryRequest content = requestInfo.toPb();
- if (getOptions().getLocation() != null) {
- content.setLocation(getOptions().getLocation());
- }
- return queryRpc(projectId, content, options);
- }
- // Otherwise, fall back to the existing create query job logic
- return create(JobInfo.of(configuration), options).getQueryResults();
- } finally {
- if (querySpan != null) {
- querySpan.end();
- }
- }
+ return query(configuration, null, options);
}
- private TableResult queryRpc(
- final String projectId, final QueryRequest content, JobOption... options)
+ private Object queryRpc(final String projectId, final QueryRequest content, JobOption... options)
throws InterruptedException {
com.google.api.services.bigquery.model.QueryResponse results;
Span queryRpc = null;
@@ -2030,7 +1992,7 @@ public com.google.api.services.bigquery.model.QueryResponse call()
// here, but this is left as future work.
JobId jobId = JobId.fromPb(results.getJobReference());
Job job = getJob(jobId, options);
- return job.getQueryResults();
+ return job;
}
if (results.getPageToken() != null) {
@@ -2070,16 +2032,35 @@ public com.google.api.services.bigquery.model.QueryResponse call()
@Override
public TableResult query(QueryJobConfiguration configuration, JobId jobId, JobOption... options)
throws InterruptedException, JobException {
+ Object result = queryWithTimeout(configuration, jobId, null, options);
+ if (result instanceof Job) {
+ return ((Job) result).getQueryResults();
+ }
+ return (TableResult) result;
+ }
+
+ @Override
+ public Object queryWithTimeout(
+ QueryJobConfiguration configuration, JobId jobId, Long timeoutMs, JobOption... options)
+ throws InterruptedException, JobException {
Job.checkNotDryRun(configuration, "query");
+ // If JobCreationMode is not explicitly set, update it with default value;
+ if (configuration.getJobCreationMode() == null) {
+ configuration =
+ configuration.toBuilder()
+ .setJobCreationMode(getOptions().getDefaultJobCreationMode())
+ .build();
+ }
+
Span querySpan = null;
if (getOptions().isOpenTelemetryTracingEnabled()
&& getOptions().getOpenTelemetryTracer() != null) {
querySpan =
getOptions()
.getOpenTelemetryTracer()
- .spanBuilder("com.google.cloud.bigquery.BigQuery.query")
- .setAllAttributes(jobId.getOtelAttributes())
+ .spanBuilder("com.google.cloud.bigquery.BigQuery.queryWithTimeout")
+ .setAllAttributes(jobId != null ? jobId.getOtelAttributes() : null)
.setAllAttributes(otelAttributesFromOptions(options))
.startSpan();
}
@@ -2095,18 +2076,23 @@ && getOptions().getOpenTelemetryTracer() != null) {
// fail with "Access denied" if the project do not have enough permissions to run the job.
String projectId =
- jobId.getProject() != null ? jobId.getProject() : getOptions().getProjectId();
+ jobId != null && jobId.getProject() != null
+ ? jobId.getProject()
+ : getOptions().getProjectId();
QueryRequest content = requestInfo.toPb();
// Be careful when setting the location, if a location is specified in the BigQueryOption or
// JobId the job created by the query method will be in that location, even if the table to
// be
// queried is in a different location. This may cause the query to fail with
// "BigQueryException: Not found"
- if (jobId.getLocation() != null) {
+ if (jobId != null && jobId.getLocation() != null) {
content.setLocation(jobId.getLocation());
} else if (getOptions().getLocation() != null) {
content.setLocation(getOptions().getLocation());
}
+ if (timeoutMs != null) {
+ content.setTimeoutMs(timeoutMs);
+ }
return queryRpc(projectId, content, options);
}
diff --git a/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryImplTest.java b/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryImplTest.java
index c0367beae..393455e36 100644
--- a/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryImplTest.java
+++ b/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryImplTest.java
@@ -2610,6 +2610,29 @@ PROJECT, JOB, null, optionMap(Job.DEFAULT_QUERY_WAIT_OPTIONS)))
PROJECT, DATASET, TABLE, Collections.emptyMap());
}
+ @Test
+ public void testQueryWithTimeoutSetsTimeout() throws InterruptedException, IOException {
+ com.google.api.services.bigquery.model.QueryResponse queryResponsePb =
+ new com.google.api.services.bigquery.model.QueryResponse()
+ .setCacheHit(false)
+ .setJobComplete(true)
+ .setKind("bigquery#queryResponse")
+ .setPageToken(null)
+ .setRows(ImmutableList.of(TABLE_ROW))
+ .setSchema(TABLE_SCHEMA.toPb())
+ .setTotalBytesProcessed(42L)
+ .setTotalRows(BigInteger.valueOf(1L));
+
+ when(bigqueryRpcMock.queryRpcSkipExceptionTranslation(eq(PROJECT), requestPbCapture.capture()))
+ .thenReturn(queryResponsePb);
+
+ bigquery = options.getService();
+ Object result = bigquery.queryWithTimeout(QUERY_JOB_CONFIGURATION_FOR_QUERY, null, 1000L);
+ assertTrue(result instanceof TableResult);
+ QueryRequest requestPb = requestPbCapture.getValue();
+ assertEquals((Long) 1000L, requestPb.getTimeoutMs());
+ }
+
@Test
public void testGetQueryResults() throws IOException {
JobId queryJob = JobId.of(JOB);
diff --git a/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java b/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java
index c9f6296cc..ec1f7b5a0 100644
--- a/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java
+++ b/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java
@@ -7215,6 +7215,7 @@ public void testTableResultJobIdAndQueryId() throws InterruptedException {
// 2. For queries that fails the requirements to be stateless, then jobId is populated and
// queryId is not.
// 3. For explicitly created jobs, then jobId is populated and queryId is not populated.
+ // 4. If QueryJobConfiguration explicitly sets Job Creation Mode to Required.
// Test scenario 1.
// Create local BigQuery for test scenario 1 to not contaminate global test parameters.
@@ -7241,6 +7242,16 @@ public void testTableResultJobIdAndQueryId() throws InterruptedException {
result = job.getQueryResults();
assertNotNull(result.getJobId());
assertNull(result.getQueryId());
+
+ // Test scenario 4.
+ configWithJob =
+ QueryJobConfiguration.newBuilder(query)
+ .setJobCreationMode(JobCreationMode.JOB_CREATION_REQUIRED)
+ .build();
+ result = bigQuery.query(configWithJob);
+ result = job.getQueryResults();
+ assertNotNull(result.getJobId());
+ assertNull(result.getQueryId());
}
@Test
@@ -7294,6 +7305,50 @@ public void testStatelessQueriesWithLocation() throws Exception {
}
}
+ @Test
+ public void testQueryWithTimeout() throws InterruptedException {
+ // Validate that queryWithTimeout returns either TableResult or Job object
+
+ RemoteBigQueryHelper bigqueryHelper = RemoteBigQueryHelper.create();
+ BigQuery bigQuery = bigqueryHelper.getOptions().getService();
+ bigQuery.getOptions().setDefaultJobCreationMode(JobCreationMode.JOB_CREATION_OPTIONAL);
+ String largeQuery =
+ "SELECT * FROM UNNEST(GENERATE_ARRAY(1, 20000)) CROSS JOIN UNNEST(GENERATE_ARRAY(1, 20000))";
+ String query = "SELECT 1 as one";
+ // Test scenario 1.
+ // Stateless query returns TableResult
+ QueryJobConfiguration config = QueryJobConfiguration.newBuilder(query).build();
+ Object result = bigQuery.queryWithTimeout(config, null, null);
+ assertTrue(result instanceof TableResult);
+ assertNull(((TableResult) result).getJobId());
+ assertNotNull(((TableResult) result).getQueryId());
+
+ // Stateful query returns Job
+ // Test scenario 2 to ensure job is created if JobCreationMode is set, but for a small query
+ // it still returns results.
+ config =
+ QueryJobConfiguration.newBuilder(query)
+ .setJobCreationMode(JobCreationMode.JOB_CREATION_REQUIRED)
+ .build();
+ result = bigQuery.queryWithTimeout(config, null, null);
+ assertTrue(result instanceof TableResult);
+ assertNotNull(((TableResult) result).getJobId());
+ assertNull(((TableResult) result).getQueryId());
+
+ // Stateful query returns Job
+ // Test scenario 3 to ensure job is created if Query is long running.
+ // Explicitly disable cache to ensure it is long-running query;
+ config = QueryJobConfiguration.newBuilder(largeQuery).setUseQueryCache(false).build();
+ long millis = System.currentTimeMillis();
+ result = bigQuery.queryWithTimeout(config, null, 1000L);
+ millis = System.currentTimeMillis() - millis;
+ assertTrue(result instanceof Job);
+ // Cancel the job as we don't need results.
+ ((Job) result).cancel();
+ // Allow 2 seconds of timeout value to account for random delays
+ assertTrue(millis < 1_000_000 * 2);
+ }
+
@Test
public void testUniverseDomainWithInvalidUniverseDomain() {
RemoteBigQueryHelper bigqueryHelper = RemoteBigQueryHelper.create();
@@ -7743,7 +7798,7 @@ public void testOpenTelemetryTracingQuery() throws InterruptedException {
assertNotNull(
OTEL_ATTRIBUTES.get("com.google.cloud.bigquery.BigQueryRetryHelper.runWithRetries"));
assertNotNull(OTEL_ATTRIBUTES.get("com.google.cloud.bigquery.BigQueryRpc.queryRpc"));
- assertTrue(OTEL_ATTRIBUTES.containsKey("com.google.cloud.bigquery.BigQuery.query"));
+ assertTrue(OTEL_ATTRIBUTES.containsKey("com.google.cloud.bigquery.BigQuery.queryWithTimeout"));
// Query job
String query = "SELECT TimestampField, StringField, BooleanField FROM " + TABLE_ID.getTable();
From c9c43517edec7072dd7745be890fd641e44809a1 Mon Sep 17 00:00:00 2001
From: Diego Marquez
Date: Fri, 14 Nov 2025 11:39:06 -0500
Subject: [PATCH 4/7] chore: grant write access to
@googleapis/cloud-java-team-teamsync (#3999)
* chore: grant write access to @googleapis/cloud-java-team-teamsync
* Update CODEOWNERS to simplify ownership rules
Removed specific ownership for handwritten Java libraries.
---
.github/CODEOWNERS | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 6aaf5360d..7892b1d67 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -5,14 +5,10 @@
# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners#codeowners-syntax
# The @googleapis/api-bigquery is the default owner for changes in this repo
-* @googleapis/yoshi-java @googleapis/api-bigquery
-
-# for handwritten libraries, keep codeowner_team in .repo-metadata.json as owner
-**/*.java @googleapis/api-bigquery
-
+* @googleapis/cloud-java-team-teamsync @googleapis/api-bigquery
# The java-samples-reviewers team is the default owner for samples changes
-samples/**/*.java @googleapis/java-samples-reviewers
+samples/**/*.java @googleapis/cloud-java-team-teamsync @googleapis/java-samples-reviewers
# Generated snippets should not be owned by samples reviewers
-samples/snippets/generated/ @googleapis/yoshi-java
+samples/snippets/generated/ @googleapis/cloud-java-team-teamsync @googleapis/yoshi-java
From 4e09f6bc7a25904ad8f61141a0837535d39dbb4e Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Fri, 14 Nov 2025 16:39:16 +0000
Subject: [PATCH 5/7] deps: update dependency
com.google.cloud:sdk-platform-java-config to v3.54.1 (#3994)
---
.github/workflows/unmanaged_dependency_check.yaml | 2 +-
.kokoro/continuous/graalvm-native-a.cfg | 2 +-
.kokoro/continuous/graalvm-native-b.cfg | 2 +-
.kokoro/continuous/graalvm-native-c.cfg | 2 +-
.kokoro/presubmit/graalvm-native-a.cfg | 2 +-
.kokoro/presubmit/graalvm-native-b.cfg | 2 +-
.kokoro/presubmit/graalvm-native-c.cfg | 2 +-
google-cloud-bigquery-bom/pom.xml | 2 +-
pom.xml | 2 +-
9 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml
index 252a22396..5ba388acc 100644
--- a/.github/workflows/unmanaged_dependency_check.yaml
+++ b/.github/workflows/unmanaged_dependency_check.yaml
@@ -17,7 +17,7 @@ jobs:
# repository
.kokoro/build.sh
- name: Unmanaged dependency check
- uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.53.0
+ uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.54.1
with:
# java-bigquery does not produce a BOM. Fortunately the root pom.xml
# defines google-cloud-bigquery in dependencyManagement section. So
diff --git a/.kokoro/continuous/graalvm-native-a.cfg b/.kokoro/continuous/graalvm-native-a.cfg
index dff3d3e36..0d98de509 100644
--- a/.kokoro/continuous/graalvm-native-a.cfg
+++ b/.kokoro/continuous/graalvm-native-a.cfg
@@ -3,7 +3,7 @@
# Configure the docker image for kokoro-trampoline.
env_vars: {
key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.53.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.54.1"
}
env_vars: {
diff --git a/.kokoro/continuous/graalvm-native-b.cfg b/.kokoro/continuous/graalvm-native-b.cfg
index 95870eaa3..c270bff71 100644
--- a/.kokoro/continuous/graalvm-native-b.cfg
+++ b/.kokoro/continuous/graalvm-native-b.cfg
@@ -3,7 +3,7 @@
# Configure the docker image for kokoro-trampoline.
env_vars: {
key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.53.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.54.1"
}
env_vars: {
diff --git a/.kokoro/continuous/graalvm-native-c.cfg b/.kokoro/continuous/graalvm-native-c.cfg
index ca49f7431..720f8bcfa 100644
--- a/.kokoro/continuous/graalvm-native-c.cfg
+++ b/.kokoro/continuous/graalvm-native-c.cfg
@@ -3,7 +3,7 @@
# Configure the docker image for kokoro-trampoline.
env_vars: {
key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.53.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.54.1"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-a.cfg b/.kokoro/presubmit/graalvm-native-a.cfg
index dff3d3e36..0d98de509 100644
--- a/.kokoro/presubmit/graalvm-native-a.cfg
+++ b/.kokoro/presubmit/graalvm-native-a.cfg
@@ -3,7 +3,7 @@
# Configure the docker image for kokoro-trampoline.
env_vars: {
key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.53.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.54.1"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-b.cfg b/.kokoro/presubmit/graalvm-native-b.cfg
index 95870eaa3..c270bff71 100644
--- a/.kokoro/presubmit/graalvm-native-b.cfg
+++ b/.kokoro/presubmit/graalvm-native-b.cfg
@@ -3,7 +3,7 @@
# Configure the docker image for kokoro-trampoline.
env_vars: {
key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.53.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.54.1"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-c.cfg b/.kokoro/presubmit/graalvm-native-c.cfg
index ca49f7431..720f8bcfa 100644
--- a/.kokoro/presubmit/graalvm-native-c.cfg
+++ b/.kokoro/presubmit/graalvm-native-c.cfg
@@ -3,7 +3,7 @@
# Configure the docker image for kokoro-trampoline.
env_vars: {
key: "TRAMPOLINE_IMAGE"
- value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.53.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.54.1"
}
env_vars: {
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index 84ccf695e..f70507c5e 100644
--- a/google-cloud-bigquery-bom/pom.xml
+++ b/google-cloud-bigquery-bom/pom.xml
@@ -8,7 +8,7 @@
com.google.cloud
sdk-platform-java-config
- 3.53.0
+ 3.54.1
diff --git a/pom.xml b/pom.xml
index 43c1f5b1d..3dc65348a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,7 @@
com.google.cloud
sdk-platform-java-config
- 3.53.0
+ 3.54.1
From 4ee8655f84d0d140a729ae2a9e210f47531912c7 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Sat, 15 Nov 2025 23:04:10 +0000
Subject: [PATCH 6/7] chore(deps): update dependency
com.google.cloud:google-cloud-bigquerystorage-bom to v3.18.0 (#3998)
Co-authored-by: Diego Marquez
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 3dc65348a..3d3582b42 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,7 +71,7 @@
com.google.cloud
google-cloud-bigquerystorage-bom
- 3.17.3
+ 3.18.0
pom
import
From 42091e09c7f59148514bb38f095859cf1dc8c20b Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Sun, 16 Nov 2025 22:57:17 -0500
Subject: [PATCH 7/7] chore(main): release 2.56.0 (#3996)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
CHANGELOG.md | 13 +++++++++++++
benchmark/pom.xml | 2 +-
google-cloud-bigquery-bom/pom.xml | 4 ++--
google-cloud-bigquery/pom.xml | 4 ++--
pom.xml | 4 ++--
samples/snapshot/pom.xml | 2 +-
versions.txt | 2 +-
7 files changed, 22 insertions(+), 9 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c0ca0a69e..59350c03b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,18 @@
# Changelog
+## [2.56.0](https://github.com/googleapis/java-bigquery/compare/v2.55.3...v2.56.0) (2025-11-15)
+
+
+### Features
+
+* New queryWithTimeout method for customer-side wait ([#3995](https://github.com/googleapis/java-bigquery/issues/3995)) ([9c0df54](https://github.com/googleapis/java-bigquery/commit/9c0df5422c05696f7ce4bedf914a58306150dc21))
+
+
+### Dependencies
+
+* Update dependency com.google.apis:google-api-services-bigquery to v2-rev20251012-2.0.0 ([#3923](https://github.com/googleapis/java-bigquery/issues/3923)) ([1d8977d](https://github.com/googleapis/java-bigquery/commit/1d8977df3b1451378e5471cce9fd8b067f80fc9a))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.54.1 ([#3994](https://github.com/googleapis/java-bigquery/issues/3994)) ([4e09f6b](https://github.com/googleapis/java-bigquery/commit/4e09f6bc7a25904ad8f61141a0837535d39dbb4e))
+
## [2.55.3](https://github.com/googleapis/java-bigquery/compare/v2.55.2...v2.55.3) (2025-10-21)
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index 185be777c..9f219179f 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -6,7 +6,7 @@
google-cloud-bigquery-parent
com.google.cloud
- 2.55.4-SNAPSHOT
+ 2.56.0
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index f70507c5e..2e6d9828b 100644
--- a/google-cloud-bigquery-bom/pom.xml
+++ b/google-cloud-bigquery-bom/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.google.cloud
google-cloud-bigquery-bom
- 2.55.4-SNAPSHOT
+ 2.56.0
pom
com.google.cloud
@@ -54,7 +54,7 @@
com.google.cloud
google-cloud-bigquery
- 2.55.4-SNAPSHOT
+ 2.56.0