From 6ba2126da9c80b14f32123c98247f7e2332b1ada Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Wed, 25 Jun 2025 17:56:27 -0400
Subject: [PATCH 01/50] chore(main): release 2.52.1-SNAPSHOT (#3864)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
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 +-
6 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index bb58ca1e1c..8fcf7ca00d 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -6,7 +6,7 @@
google-cloud-bigquery-parent
com.google.cloud
- 2.52.0
+ 2.52.1-SNAPSHOT
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index 836073eb4c..1194e1b0e2 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.52.0
+ 2.52.1-SNAPSHOT
pom
com.google.cloud
@@ -54,7 +54,7 @@
com.google.cloud
google-cloud-bigquery
- 2.52.0
+ 2.52.1-SNAPSHOT
diff --git a/google-cloud-bigquery/pom.xml b/google-cloud-bigquery/pom.xml
index 644fe0ef5b..6c7e1aed1b 100644
--- a/google-cloud-bigquery/pom.xml
+++ b/google-cloud-bigquery/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.google.cloud
google-cloud-bigquery
- 2.52.0
+ 2.52.1-SNAPSHOT
jar
BigQuery
https://github.com/googleapis/java-bigquery
@@ -11,7 +11,7 @@
com.google.cloud
google-cloud-bigquery-parent
- 2.52.0
+ 2.52.1-SNAPSHOT
google-cloud-bigquery
diff --git a/pom.xml b/pom.xml
index b265c66e31..6d9674e6f1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud
google-cloud-bigquery-parent
pom
- 2.52.0
+ 2.52.1-SNAPSHOT
BigQuery Parent
https://github.com/googleapis/java-bigquery
@@ -93,7 +93,7 @@
com.google.cloud
google-cloud-bigquery
- 2.52.0
+ 2.52.1-SNAPSHOT
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 1a16552343..9e51363615 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -44,7 +44,7 @@
com.google.cloud
google-cloud-bigquery
- 2.52.0
+ 2.52.1-SNAPSHOT
diff --git a/versions.txt b/versions.txt
index 2b59228747..5e931b82a5 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,4 +1,4 @@
# Format:
# module:released-version:current-version
-google-cloud-bigquery:2.52.0:2.52.0
\ No newline at end of file
+google-cloud-bigquery:2.52.0:2.52.1-SNAPSHOT
\ No newline at end of file
From e2d23c1b15f2c48a4113f82b920f5c29c4b5dfea Mon Sep 17 00:00:00 2001
From: Liam Huffman <44932470+whuffman36@users.noreply.github.com>
Date: Wed, 25 Jun 2025 23:14:57 -0700
Subject: [PATCH 02/50] feat(bigquery): Add OpenTelemetry support to BQ rpcs
(#3860)
* feat(bigquery): Add OpenTelemetry support to BQ rpcs
* remove oauth and access token attributes
* Capture repsponse ids in attributes
* Fix attribute name scoping typos
---
.../bigquery/spi/v2/HttpBigQueryRpc.java | 1062 ++++++++++++++---
.../cloud/bigquery/it/ITBigQueryTest.java | 20 +
2 files changed, 914 insertions(+), 168 deletions(-)
diff --git a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java
index 03e1fb5866..9d89435ea9 100644
--- a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java
+++ b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java
@@ -69,6 +69,9 @@
import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
+import io.opentelemetry.api.common.Attributes;
+import io.opentelemetry.api.trace.Span;
+import io.opentelemetry.api.trace.SpanKind;
import java.io.IOException;
import java.math.BigInteger;
import java.util.List;
@@ -155,7 +158,28 @@ public Dataset getDatasetSkipExceptionTranslation(
if (options.containsKey(Option.DATASET_VIEW)) {
bqGetRequest.setDatasetView(options.get(Option.DATASET_VIEW).toString());
}
- return bqGetRequest.execute();
+
+ Span getDataset = null;
+ if (this.options.isOpenTelemetryTracingEnabled()
+ && this.options.getOpenTelemetryTracer() != null) {
+ getDataset =
+ this.options
+ .getOpenTelemetryTracer()
+ .spanBuilder("com.google.cloud.bigquery.BigQueryRpc.getDataset")
+ .setSpanKind(SpanKind.CLIENT)
+ .setAttribute("bq.rpc.service", "DatasetService")
+ .setAttribute("bq.rpc.method", "GetDataset")
+ .setAttribute("bq.rpc.system", "http")
+ .setAllAttributes(otelAttributesFromOptions(options))
+ .startSpan();
+ }
+
+ Dataset dataset = bqGetRequest.execute();
+ if (getDataset != null) {
+ getDataset.setAttribute("bq.rpc.response.dataset.id", dataset.getId());
+ getDataset.end();
+ }
+ return dataset;
}
@Override
@@ -171,7 +195,7 @@ public Tuple> listDatasets(String projectId, Map> listDatasetsSkipExceptionTranslation(
String projectId, Map
From e5467c917c63ac066edcbcd902cc2093a39971a3 Mon Sep 17 00:00:00 2001
From: Liam Huffman <44932470+whuffman36@users.noreply.github.com>
Date: Mon, 30 Jun 2025 16:27:08 -0700
Subject: [PATCH 09/50] feat(bigquery): Add support for custom timezones and
timestamps (#3859)
* feat(bigquery): Add support for custom timezones and timestamps
* update ignored-diff
* fix data -> date typo
* Add enums for SourceColumnMatch
* Change null markers test names
* change enums to StringEnumValue
---
.../clirr-ignored-differences.xml | 70 ++++++
.../bigquery/ExternalTableDefinition.java | 186 +++++++++++++++
.../cloud/bigquery/LoadJobConfiguration.java | 219 +++++++++++++++++-
.../bigquery/ExternalTableDefinitionTest.java | 29 +++
.../bigquery/LoadJobConfigurationTest.java | 22 ++
5 files changed, 525 insertions(+), 1 deletion(-)
diff --git a/google-cloud-bigquery/clirr-ignored-differences.xml b/google-cloud-bigquery/clirr-ignored-differences.xml
index e048f4ce82..bd455d2d4f 100644
--- a/google-cloud-bigquery/clirr-ignored-differences.xml
+++ b/google-cloud-bigquery/clirr-ignored-differences.xml
@@ -2,6 +2,76 @@
+
+ 7013
+ com/google/cloud/bigquery/ExternalTableDefinition*
+ *TimeZone(*)
+
+
+ 7013
+ com/google/cloud/bigquery/ExternalTableDefinition*
+ *DateFormat(*)
+
+
+ 7013
+ com/google/cloud/bigquery/ExternalTableDefinition*
+ *DatetimeFormat(*)
+
+
+ 7013
+ com/google/cloud/bigquery/ExternalTableDefinition*
+ *TimeFormat(*)
+
+
+ 7013
+ com/google/cloud/bigquery/ExternalTableDefinition*
+ *TimestampFormat(*)
+
+
+ 7013
+ com/google/cloud/bigquery/ExternalTableDefinition*
+ *SourceColumnMatch(*)
+
+
+ 7013
+ com/google/cloud/bigquery/ExternalTableDefinition*
+ *NullMarkers(*)
+
+
+ 7013
+ com/google/cloud/bigquery/LoadJobConfiguration*
+ *TimeZone(*)
+
+
+ 7013
+ com/google/cloud/bigquery/LoadJobConfiguration*
+ *DateFormat(*)
+
+
+ 7013
+ com/google/cloud/bigquery/LoadJobConfiguration*
+ *DatetimeFormat(*)
+
+
+ 7013
+ com/google/cloud/bigquery/LoadJobConfiguration*
+ *TimeFormat(*)
+
+
+ 7013
+ com/google/cloud/bigquery/LoadJobConfiguration*
+ *TimestampFormat(*)
+
+
+ 7013
+ com/google/cloud/bigquery/LoadJobConfiguration*
+ *SourceColumnMatch(*)
+
+
+ 7013
+ com/google/cloud/bigquery/LoadJobConfiguration*
+ *NullMarkers(*)
+
7004
com/google/cloud/bigquery/BigQueryRetryHelper
diff --git a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/ExternalTableDefinition.java b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/ExternalTableDefinition.java
index ea4cceeade..c1859c3f9f 100644
--- a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/ExternalTableDefinition.java
+++ b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/ExternalTableDefinition.java
@@ -19,9 +19,12 @@
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Strings.isNullOrEmpty;
+import com.google.api.core.ApiFunction;
import com.google.api.services.bigquery.model.ExternalDataConfiguration;
import com.google.api.services.bigquery.model.Table;
import com.google.auto.value.AutoValue;
+import com.google.cloud.StringEnumType;
+import com.google.cloud.StringEnumValue;
import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
import java.util.List;
@@ -57,6 +60,46 @@ public ExternalDataConfiguration apply(ExternalTableDefinition tableInfo) {
private static final long serialVersionUID = -5951580238459622025L;
+ public static final class SourceColumnMatch extends StringEnumValue {
+ private static final long serialVersionUID = 818920627219751207L;
+ private static final ApiFunction CONSTRUCTOR =
+ new ApiFunction() {
+ @Override
+ public SourceColumnMatch apply(String constant) {
+ return new SourceColumnMatch(constant);
+ }
+ };
+
+ private static final StringEnumType type =
+ new StringEnumType(SourceColumnMatch.class, CONSTRUCTOR);
+
+ public static final SourceColumnMatch POSITION = type.createAndRegister("POSITION");
+
+ public static final SourceColumnMatch NAME = type.createAndRegister("NAME");
+
+ private SourceColumnMatch(String constant) {
+ super(constant);
+ }
+
+ /**
+ * Get the SourceColumnMatch for the given String constant, and throw an exception if the
+ * constant is not recognized.
+ */
+ public static SourceColumnMatch valueOfStrict(String constant) {
+ return type.valueOfStrict(constant);
+ }
+
+ /** Get the SourceColumnMatch for the given String constant, and allow unrecognized values. */
+ public static SourceColumnMatch valueOf(String constant) {
+ return type.valueOf(constant);
+ }
+
+ /** Return the known values for SourceColumnMatch. */
+ public static SourceColumnMatch[] values() {
+ return type.values();
+ }
+ }
+
@AutoValue.Builder
public abstract static class Builder
extends TableDefinition.Builder {
@@ -215,6 +258,45 @@ public Builder setMaxStaleness(String maxStaleness) {
abstract Builder setMaxStalenessInner(String maxStaleness);
+ /**
+ * Time zone used when parsing timestamp values that do not have specific time zone information
+ * (e.g. 2024-04-20 12:34:56). The expected format is a IANA timezone string (e.g.
+ * America/Los_Angeles).
+ */
+ public abstract Builder setTimeZone(String timeZone);
+
+ /** Format used to parse DATE values. Supports C-style and SQL-style values. */
+ public abstract Builder setDateFormat(String dateFormat);
+
+ /** Format used to parse DATETIME values. Supports C-style and SQL-style values. */
+ public abstract Builder setDatetimeFormat(String datetimeFormat);
+
+ /** Format used to parse TIME values. Supports C-style and SQL-style values. */
+ public abstract Builder setTimeFormat(String timeFormat);
+
+ /** Format used to parse TIMESTAMP values. Supports C-style and SQL-style values. */
+ public abstract Builder setTimestampFormat(String timestampFormat);
+
+ /**
+ * Controls the strategy used to match loaded columns to the schema. If not set, a sensible
+ * default is chosen based on how the schema is provided. If autodetect is used, then columns
+ * are matched by name. Otherwise, columns are matched by position. This is done to keep the
+ * behavior backward-compatible. Acceptable values are: POSITION - matches by position. This
+ * assumes that the columns are ordered the same way as the schema. NAME - matches by name. This
+ * reads the header row as column names and reorders columns to match the field names in the
+ * schema.
+ */
+ public abstract Builder setSourceColumnMatch(SourceColumnMatch sourceColumnMatch);
+
+ /**
+ * A list of strings represented as SQL NULL value in a CSV file. null_marker and null_markers
+ * can't be set at the same time. If null_marker is set, null_markers has to be not set. If
+ * null_markers is set, null_marker has to be not set. If both null_marker and null_markers are
+ * set at the same time, a user error would be thrown. Any strings listed in null_markers,
+ * including empty string would be interpreted as SQL NULL. This applies to all column types.
+ */
+ public abstract Builder setNullMarkers(List nullMarkers);
+
/** Creates an {@code ExternalTableDefinition} object. */
@Override
public abstract ExternalTableDefinition build();
@@ -373,6 +455,37 @@ public HivePartitioningOptions getHivePartitioningOptions() {
return getHivePartitioningOptionsInner();
}
+ /**
+ * Returns the time zone used when parsing timestamp values that don't have specific time zone
+ * information.
+ */
+ @Nullable
+ public abstract String getTimeZone();
+
+ /** Returns the format used to parse DATE values. */
+ @Nullable
+ public abstract String getDateFormat();
+
+ /** Returns the format used to parse DATETIME values. */
+ @Nullable
+ public abstract String getDatetimeFormat();
+
+ /** Returns the format used to parse TIME values. */
+ @Nullable
+ public abstract String getTimeFormat();
+
+ /** Returns the format used to parse TIMESTAMP values. */
+ @Nullable
+ public abstract String getTimestampFormat();
+
+ /** Returns the strategy used to match loaded columns to the schema, either POSITION or NAME. */
+ @Nullable
+ public abstract SourceColumnMatch getSourceColumnMatch();
+
+ /** Returns a list of strings represented as SQL NULL value in a CSV file. */
+ @Nullable
+ public abstract List getNullMarkers();
+
@Nullable
abstract HivePartitioningOptions getHivePartitioningOptionsInner();
@@ -454,6 +567,29 @@ com.google.api.services.bigquery.model.ExternalDataConfiguration toExternalDataC
if (getMetadataCacheMode() != null) {
externalConfigurationPb.setMetadataCacheMode(getMetadataCacheMode());
}
+ if (getTimeZone() != null) {
+ externalConfigurationPb.setTimeZone(getTimeZone());
+ }
+ if (getDateFormat() != null) {
+ externalConfigurationPb.setDateFormat(getDateFormat());
+ }
+ if (getDatetimeFormat() != null) {
+ externalConfigurationPb.setDatetimeFormat(getDatetimeFormat());
+ }
+ if (getTimeFormat() != null) {
+ externalConfigurationPb.setTimeFormat(getTimeFormat());
+ }
+ if (getTimestampFormat() != null) {
+ externalConfigurationPb.setTimestampFormat(getTimestampFormat());
+ }
+ if (getSourceColumnMatch() != null) {
+ externalConfigurationPb
+ .getCsvOptions()
+ .setSourceColumnMatch(getSourceColumnMatch().toString());
+ }
+ if (getNullMarkers() != null) {
+ externalConfigurationPb.getCsvOptions().setNullMarkers(getNullMarkers());
+ }
return externalConfigurationPb;
}
@@ -654,6 +790,31 @@ static ExternalTableDefinition fromPb(Table tablePb) {
if (tablePb.getMaxStaleness() != null) {
builder.setMaxStaleness(tablePb.getMaxStaleness());
}
+ if (externalDataConfiguration.getTimeZone() != null) {
+ builder.setTimeZone(externalDataConfiguration.getTimeZone());
+ }
+ if (externalDataConfiguration.getDateFormat() != null) {
+ builder.setDateFormat(externalDataConfiguration.getDateFormat());
+ }
+ if (externalDataConfiguration.getDatetimeFormat() != null) {
+ builder.setDatetimeFormat(externalDataConfiguration.getDatetimeFormat());
+ }
+ if (externalDataConfiguration.getTimeFormat() != null) {
+ builder.setTimeFormat(externalDataConfiguration.getTimeFormat());
+ }
+ if (externalDataConfiguration.getTimestampFormat() != null) {
+ builder.setTimestampFormat(externalDataConfiguration.getTimestampFormat());
+ }
+ if (externalDataConfiguration.getCsvOptions() != null) {
+ if (externalDataConfiguration.getCsvOptions().getSourceColumnMatch() != null) {
+ builder.setSourceColumnMatch(
+ SourceColumnMatch.valueOf(
+ externalDataConfiguration.getCsvOptions().getSourceColumnMatch()));
+ }
+ if (externalDataConfiguration.getCsvOptions().getNullMarkers() != null) {
+ builder.setNullMarkers(externalDataConfiguration.getCsvOptions().getNullMarkers());
+ }
+ }
}
return builder.build();
}
@@ -724,6 +885,31 @@ static ExternalTableDefinition fromExternalDataConfiguration(
if (externalDataConfiguration.getMetadataCacheMode() != null) {
builder.setMetadataCacheMode(externalDataConfiguration.getMetadataCacheMode());
}
+ if (externalDataConfiguration.getTimeZone() != null) {
+ builder.setTimeZone(externalDataConfiguration.getTimeZone());
+ }
+ if (externalDataConfiguration.getDateFormat() != null) {
+ builder.setDateFormat(externalDataConfiguration.getDateFormat());
+ }
+ if (externalDataConfiguration.getDatetimeFormat() != null) {
+ builder.setDatetimeFormat(externalDataConfiguration.getDatetimeFormat());
+ }
+ if (externalDataConfiguration.getTimeFormat() != null) {
+ builder.setTimeFormat(externalDataConfiguration.getTimeFormat());
+ }
+ if (externalDataConfiguration.getTimestampFormat() != null) {
+ builder.setTimestampFormat(externalDataConfiguration.getTimeFormat());
+ }
+ if (externalDataConfiguration.getCsvOptions() != null) {
+ if (externalDataConfiguration.getCsvOptions().getSourceColumnMatch() != null) {
+ builder.setSourceColumnMatch(
+ SourceColumnMatch.valueOf(
+ externalDataConfiguration.getCsvOptions().getSourceColumnMatch()));
+ }
+ if (externalDataConfiguration.getCsvOptions().getNullMarkers() != null) {
+ builder.setNullMarkers(externalDataConfiguration.getCsvOptions().getNullMarkers());
+ }
+ }
return builder.build();
}
diff --git a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java
index 5d17554597..0d1eb7245b 100644
--- a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java
+++ b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java
@@ -18,7 +18,10 @@
import static com.google.common.base.Preconditions.checkNotNull;
+import com.google.api.core.ApiFunction;
import com.google.api.services.bigquery.model.JobConfigurationLoad;
+import com.google.cloud.StringEnumType;
+import com.google.cloud.StringEnumValue;
import com.google.common.base.MoreObjects.ToStringHelper;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
@@ -63,6 +66,55 @@ public final class LoadJobConfiguration extends JobConfiguration implements Load
private final List connectionProperties;
private final Boolean createSession;
private final String reservation;
+ private final String timeZone;
+ private final String dateFormat;
+ private final String datetimeFormat;
+ private final String timeFormat;
+ private final String timestampFormat;
+ private final SourceColumnMatch sourceColumnMatch;
+ private final List nullMarkers;
+
+ public static final class SourceColumnMatch extends StringEnumValue {
+ private static final long serialVersionUID = 818920627219751207L;
+ private static final ApiFunction CONSTRUCTOR =
+ new ApiFunction() {
+ @Override
+ public SourceColumnMatch apply(String constant) {
+ return new SourceColumnMatch(constant);
+ }
+ };
+
+ private static final StringEnumType type =
+ new StringEnumType(SourceColumnMatch.class, CONSTRUCTOR);
+
+ public static final SourceColumnMatch SOURCE_COLUMN_MATCH_UNSPECIFIED =
+ type.createAndRegister("SOURCE_COLUMN_MATCH_UNSPECIFIED");
+ public static final SourceColumnMatch POSITION = type.createAndRegister("POSITION");
+
+ public static final SourceColumnMatch NAME = type.createAndRegister("NAME");
+
+ private SourceColumnMatch(String constant) {
+ super(constant);
+ }
+
+ /**
+ * Get the SourceColumnMatch for the given String constant, and throw an exception if the
+ * constant is not recognized.
+ */
+ public static SourceColumnMatch valueOfStrict(String constant) {
+ return type.valueOfStrict(constant);
+ }
+
+ /** Get the SourceColumnMatch for the given String constant, and allow unrecognized values. */
+ public static SourceColumnMatch valueOf(String constant) {
+ return type.valueOf(constant);
+ }
+
+ /** Return the known values for SourceColumnMatch. */
+ public static SourceColumnMatch[] values() {
+ return type.values();
+ }
+ }
public static final class Builder extends JobConfiguration.Builder
implements LoadConfiguration.Builder {
@@ -95,6 +147,13 @@ public static final class Builder extends JobConfiguration.Builder connectionProperties;
private Boolean createSession;
private String reservation;
+ private String timeZone;
+ private String dateFormat;
+ private String datetimeFormat;
+ private String timeFormat;
+ private String timestampFormat;
+ private SourceColumnMatch sourceColumnMatch;
+ private List nullMarkers;
private Builder() {
super(Type.LOAD);
@@ -129,6 +188,13 @@ private Builder(LoadJobConfiguration loadConfiguration) {
this.connectionProperties = loadConfiguration.connectionProperties;
this.createSession = loadConfiguration.createSession;
this.reservation = loadConfiguration.reservation;
+ this.timeZone = loadConfiguration.timeZone;
+ this.dateFormat = loadConfiguration.dateFormat;
+ this.datetimeFormat = loadConfiguration.datetimeFormat;
+ this.timeFormat = loadConfiguration.timeFormat;
+ this.timestampFormat = loadConfiguration.timestampFormat;
+ this.sourceColumnMatch = loadConfiguration.sourceColumnMatch;
+ this.nullMarkers = loadConfiguration.nullMarkers;
}
private Builder(com.google.api.services.bigquery.model.JobConfiguration configurationPb) {
@@ -238,6 +304,28 @@ private Builder(com.google.api.services.bigquery.model.JobConfiguration configur
if (configurationPb.getReservation() != null) {
this.reservation = configurationPb.getReservation();
}
+ if (loadConfigurationPb.getTimeZone() != null) {
+ this.timeZone = loadConfigurationPb.getTimeZone();
+ }
+ if (loadConfigurationPb.getDateFormat() != null) {
+ this.dateFormat = loadConfigurationPb.getDateFormat();
+ }
+ if (loadConfigurationPb.getDatetimeFormat() != null) {
+ this.datetimeFormat = loadConfigurationPb.getDatetimeFormat();
+ }
+ if (loadConfigurationPb.getTimeFormat() != null) {
+ this.timeFormat = loadConfigurationPb.getTimeFormat();
+ }
+ if (loadConfigurationPb.getTimestampFormat() != null) {
+ this.timestampFormat = loadConfigurationPb.getTimestampFormat();
+ }
+ if (loadConfigurationPb.getSourceColumnMatch() != null) {
+ this.sourceColumnMatch =
+ SourceColumnMatch.valueOf(loadConfigurationPb.getSourceColumnMatch());
+ }
+ if (loadConfigurationPb.getNullMarkers() != null) {
+ this.nullMarkers = loadConfigurationPb.getNullMarkers();
+ }
}
@Override
@@ -449,6 +537,62 @@ public Builder setReservation(String reservation) {
return this;
}
+ /**
+ * [Experimental] Default time zone that will apply when parsing timestamp values that have no
+ * specific time zone.
+ */
+ public Builder setTimeZone(String timeZone) {
+ this.timeZone = timeZone;
+ return this;
+ }
+
+ /** Date format used for parsing DATE values. */
+ public Builder setDateFormat(String dateFormat) {
+ this.dateFormat = dateFormat;
+ return this;
+ }
+
+ /** Date format used for parsing DATETIME values. */
+ public Builder setDatetimeFormat(String datetimeFormat) {
+ this.datetimeFormat = datetimeFormat;
+ return this;
+ }
+
+ /** Date format used for parsing TIME values. */
+ public Builder setTimeFormat(String timeFormat) {
+ this.timeFormat = timeFormat;
+ return this;
+ }
+
+ /** Date format used for parsing TIMESTAMP values. */
+ public Builder setTimestampFormat(String timestampFormat) {
+ this.timestampFormat = timestampFormat;
+ return this;
+ }
+
+ /**
+ * Controls the strategy used to match loaded columns to the schema. If not set, a sensible
+ * default is chosen based on how the schema is provided. If autodetect is used, then columns
+ * are matched by name. Otherwise, columns are matched by position. This is done to keep the
+ * behavior backward-compatible.
+ */
+ public Builder setSourceColumnMatch(SourceColumnMatch sourceColumnMatch) {
+ this.sourceColumnMatch = sourceColumnMatch;
+ return this;
+ }
+
+ /**
+ * A list of strings represented as SQL NULL value in a CSV file. null_marker and null_markers
+ * can't be set at the same time. If null_marker is set, null_markers has to be not set. If
+ * null_markers is set, null_marker has to be not set. If both null_marker and null_markers are
+ * set at the same time, a user error would be thrown. Any strings listed in null_markers,
+ * including empty string would be interpreted as SQL NULL. This applies to all column types.
+ */
+ public Builder setNullMarkers(List nullMarkers) {
+ this.nullMarkers = nullMarkers;
+ return this;
+ }
+
@Override
public LoadJobConfiguration build() {
return new LoadJobConfiguration(this);
@@ -483,6 +627,13 @@ private LoadJobConfiguration(Builder builder) {
this.connectionProperties = builder.connectionProperties;
this.createSession = builder.createSession;
this.reservation = builder.reservation;
+ this.timeZone = builder.timeZone;
+ this.dateFormat = builder.dateFormat;
+ this.datetimeFormat = builder.datetimeFormat;
+ this.timeFormat = builder.timeFormat;
+ this.timestampFormat = builder.timestampFormat;
+ this.sourceColumnMatch = builder.sourceColumnMatch;
+ this.nullMarkers = builder.nullMarkers;
}
@Override
@@ -634,6 +785,44 @@ public String getReservation() {
return reservation;
}
+ /**
+ * Returns the time zone used when parsing timestamp values that don't have specific time zone
+ * information.
+ */
+ public String getTimeZone() {
+ return timeZone;
+ }
+
+ /** Returns the format used to parse DATE values. */
+ public String getDateFormat() {
+ return dateFormat;
+ }
+
+ /** Returns the format used to parse DATETIME values. */
+ public String getDatetimeFormat() {
+ return datetimeFormat;
+ }
+
+ /** Returns the format used to parse TIME values. */
+ public String getTimeFormat() {
+ return timeFormat;
+ }
+
+ /** Returns the format used to parse TIMESTAMP values. */
+ public String getTimestampFormat() {
+ return timestampFormat;
+ }
+
+ /** Returns the strategy used to match loaded columns to the schema, either POSITION or NAME. */
+ public SourceColumnMatch getSourceColumnMatch() {
+ return sourceColumnMatch;
+ }
+
+ /** Returns a list of strings represented as SQL NULL value in a CSV file. */
+ public List getNullMarkers() {
+ return nullMarkers;
+ }
+
@Override
public Builder toBuilder() {
return new Builder(this);
@@ -667,7 +856,14 @@ ToStringHelper toStringHelper() {
.add("referenceFileSchemaUri", referenceFileSchemaUri)
.add("connectionProperties", connectionProperties)
.add("createSession", createSession)
- .add("reservation", reservation);
+ .add("reservation", reservation)
+ .add("timeZone", timeZone)
+ .add("dateFormat", dateFormat)
+ .add("datetimeFormat", datetimeFormat)
+ .add("timeFormat", timeFormat)
+ .add("timestampFormat", timestampFormat)
+ .add("sourceColumnMatch", sourceColumnMatch)
+ .add("nullMarkers", nullMarkers);
}
@Override
@@ -789,6 +985,27 @@ com.google.api.services.bigquery.model.JobConfiguration toPb() {
if (reservation != null) {
jobConfiguration.setReservation(reservation);
}
+ if (timeZone != null) {
+ loadConfigurationPb.setTimeZone(timeZone);
+ }
+ if (dateFormat != null) {
+ loadConfigurationPb.setDateFormat(dateFormat);
+ }
+ if (datetimeFormat != null) {
+ loadConfigurationPb.setDatetimeFormat(datetimeFormat);
+ }
+ if (timeFormat != null) {
+ loadConfigurationPb.setTimeFormat(timeFormat);
+ }
+ if (timestampFormat != null) {
+ loadConfigurationPb.setTimestampFormat(timestampFormat);
+ }
+ if (sourceColumnMatch != null) {
+ loadConfigurationPb.setSourceColumnMatch(sourceColumnMatch.toString());
+ }
+ if (nullMarkers != null) {
+ loadConfigurationPb.setNullMarkers(nullMarkers);
+ }
jobConfiguration.setLoad(loadConfigurationPb);
return jobConfiguration;
diff --git a/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/ExternalTableDefinitionTest.java b/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/ExternalTableDefinitionTest.java
index 93a4425dfd..cb7578c75a 100644
--- a/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/ExternalTableDefinitionTest.java
+++ b/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/ExternalTableDefinitionTest.java
@@ -20,6 +20,7 @@
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
+import com.google.cloud.bigquery.ExternalTableDefinition.SourceColumnMatch;
import com.google.common.collect.ImmutableList;
import java.util.List;
import org.junit.Test;
@@ -61,6 +62,13 @@ public class ExternalTableDefinitionTest {
private static final String OBJECT_METADATA = "SIMPLE";
private static final String METADATA_CACHE_MODE = "AUTOMATIC";
private static final String MAX_STALENESS = "INTERVAL 15 MINUTE";
+ private static final String TIME_ZONE = "America/Los_Angeles";
+ private static final String DATE_FORMAT = "YYYY-MM-DD";
+ private static final String DATETIME_FORMAT = "YYYY-MM-DD HH:MI:SS";
+ private static final String TIME_FORMAT = "HH:MI:SS";
+ private static final String TIMESTAMP_FORMAT = "YYYY-MM-DD HH:MI:SS";
+ private static final SourceColumnMatch SOURCE_COLUMN_MATCH = SourceColumnMatch.POSITION;
+ private static final List NULL_MARKERS = ImmutableList.of("SQL NULL", "TEST_MARKER");
private static final ExternalTableDefinition EXTERNAL_TABLE_DEFINITION =
ExternalTableDefinition.newBuilder(SOURCE_URIS, TABLE_SCHEMA, CSV_OPTIONS)
.setFileSetSpecType("FILE_SET_SPEC_TYPE_FILE_SYSTEM_MATCH")
@@ -74,6 +82,13 @@ public class ExternalTableDefinitionTest {
.setObjectMetadata(OBJECT_METADATA)
.setMetadataCacheMode(METADATA_CACHE_MODE)
.setMaxStaleness(MAX_STALENESS)
+ .setTimeZone(TIME_ZONE)
+ .setDateFormat(DATE_FORMAT)
+ .setDatetimeFormat(DATETIME_FORMAT)
+ .setTimeFormat(TIME_FORMAT)
+ .setTimestampFormat(TIMESTAMP_FORMAT)
+ .setSourceColumnMatch(SOURCE_COLUMN_MATCH)
+ .setNullMarkers(NULL_MARKERS)
.build();
private static final ExternalTableDefinition EXTERNAL_TABLE_DEFINITION_AVRO =
@@ -131,6 +146,13 @@ public void testBuilder() {
assertEquals(DECIMAL_TARGET_TYPES, EXTERNAL_TABLE_DEFINITION.getDecimalTargetTypes());
assertEquals(AUTODETECT, EXTERNAL_TABLE_DEFINITION.getAutodetect());
assertEquals(HIVE_PARTITIONING_OPTIONS, EXTERNAL_TABLE_DEFINITION.getHivePartitioningOptions());
+ assertEquals(TIME_ZONE, EXTERNAL_TABLE_DEFINITION.getTimeZone());
+ assertEquals(DATE_FORMAT, EXTERNAL_TABLE_DEFINITION.getDateFormat());
+ assertEquals(DATETIME_FORMAT, EXTERNAL_TABLE_DEFINITION.getDatetimeFormat());
+ assertEquals(TIME_FORMAT, EXTERNAL_TABLE_DEFINITION.getTimeFormat());
+ assertEquals(TIMESTAMP_FORMAT, EXTERNAL_TABLE_DEFINITION.getTimestampFormat());
+ assertEquals(SOURCE_COLUMN_MATCH, EXTERNAL_TABLE_DEFINITION.getSourceColumnMatch());
+ assertEquals(NULL_MARKERS, EXTERNAL_TABLE_DEFINITION.getNullMarkers());
assertNotEquals(EXTERNAL_TABLE_DEFINITION, TableDefinition.Type.EXTERNAL);
}
@@ -174,5 +196,12 @@ private void compareExternalTableDefinition(
assertEquals(expected.getObjectMetadata(), value.getObjectMetadata());
assertEquals(expected.getMetadataCacheMode(), value.getMetadataCacheMode());
assertEquals(expected.getMaxStaleness(), value.getMaxStaleness());
+ assertEquals(expected.getTimeZone(), value.getTimeZone());
+ assertEquals(expected.getDateFormat(), value.getDateFormat());
+ assertEquals(expected.getDatetimeFormat(), value.getDatetimeFormat());
+ assertEquals(expected.getTimeFormat(), value.getTimeFormat());
+ assertEquals(expected.getTimestampFormat(), value.getTimestampFormat());
+ assertEquals(expected.getSourceColumnMatch(), value.getSourceColumnMatch());
+ assertEquals(expected.getNullMarkers(), value.getNullMarkers());
}
}
diff --git a/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/LoadJobConfigurationTest.java b/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/LoadJobConfigurationTest.java
index 6d181a3287..b1a2f1af89 100644
--- a/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/LoadJobConfigurationTest.java
+++ b/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/LoadJobConfigurationTest.java
@@ -21,6 +21,7 @@
import com.google.cloud.bigquery.JobInfo.CreateDisposition;
import com.google.cloud.bigquery.JobInfo.SchemaUpdateOption;
import com.google.cloud.bigquery.JobInfo.WriteDisposition;
+import com.google.cloud.bigquery.LoadJobConfiguration.SourceColumnMatch;
import com.google.cloud.bigquery.TimePartitioning.Type;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -77,6 +78,13 @@ public class LoadJobConfigurationTest {
private static final String KEY = "session_id";
private static final String VALUE = "session_id_1234567890";
+ private static final String TIME_ZONE = "America/Los_Angeles";
+ private static final String DATE_FORMAT = "YYYY-MM-DD";
+ private static final String DATETIME_FORMAT = "YYYY-MM-DD HH:MI:SS";
+ private static final String TIME_FORMAT = "HH:MI:SS";
+ private static final String TIMESTAMP_FORMAT = "YYYY-MM-DD HH:MI:SS";
+ private static final SourceColumnMatch SOURCE_COLUMN_MATCH = SourceColumnMatch.POSITION;
+ private static final List NULL_MARKERS = ImmutableList.of("SQL NULL", "TEST MARKER");
private static final ConnectionProperty CONNECTION_PROPERTY =
ConnectionProperty.newBuilder().setKey(KEY).setValue(VALUE).build();
private static final List CONNECTION_PROPERTIES =
@@ -110,6 +118,13 @@ public class LoadJobConfigurationTest {
.setConnectionProperties(CONNECTION_PROPERTIES)
.setCreateSession(CREATE_SESSION)
.setReservation(RESERVATION)
+ .setTimeZone(TIME_ZONE)
+ .setDateFormat(DATE_FORMAT)
+ .setDatetimeFormat(DATETIME_FORMAT)
+ .setTimeFormat(TIME_FORMAT)
+ .setTimestampFormat(TIMESTAMP_FORMAT)
+ .setSourceColumnMatch(SOURCE_COLUMN_MATCH)
+ .setNullMarkers(NULL_MARKERS)
.build();
private static final DatastoreBackupOptions BACKUP_OPTIONS =
@@ -271,5 +286,12 @@ private void compareLoadJobConfiguration(
assertEquals(expected.getConnectionProperties(), value.getConnectionProperties());
assertEquals(expected.getCreateSession(), value.getCreateSession());
assertEquals(expected.getReservation(), value.getReservation());
+ assertEquals(expected.getTimeZone(), value.getTimeZone());
+ assertEquals(expected.getDateFormat(), value.getDateFormat());
+ assertEquals(expected.getDatetimeFormat(), value.getDatetimeFormat());
+ assertEquals(expected.getTimeFormat(), value.getTimeFormat());
+ assertEquals(expected.getTimestampFormat(), value.getTimestampFormat());
+ assertEquals(expected.getSourceColumnMatch(), value.getSourceColumnMatch());
+ assertEquals(expected.getNullMarkers(), value.getNullMarkers());
}
}
From 8aabfa76ac8d55a6a3d49b76ac85abd011411fc6 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Wed, 2 Jul 2025 15:54:42 +0200
Subject: [PATCH 10/50] chore(deps): update dependency
com.google.cloud:libraries-bom to v26.63.0 (#3874)
---
samples/snippets/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index 8b1e77bd38..62c7f22ec7 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -47,7 +47,7 @@
com.google.cloud
libraries-bom
- 26.62.0
+ 26.63.0
pom
import
From d2918da844cd20ca1602c6fcf9fa1df685f261fc Mon Sep 17 00:00:00 2001
From: Phong Chuong <147636638+PhongChuong@users.noreply.github.com>
Date: Fri, 4 Jul 2025 13:16:25 -0400
Subject: [PATCH 11/50] docs: update maven format command (#3877)
---
CONTRIBUTING.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0599033d79..5456fad053 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -88,7 +88,7 @@ Code in this repo is formatted with
[google-java-format](https://github.com/google/google-java-format).
To run formatting on your project, you can run:
```
-mvn com.coveo:fmt-maven-plugin:format
+mvn com.spotify.fmt:fmt-maven-plugin:format
```
[1]: https://cloud.google.com/docs/authentication/getting-started#creating_a_service_account
From 0e971b8ace013caa31b8a02a21038e94bebae2a5 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Wed, 9 Jul 2025 16:57:01 +0200
Subject: [PATCH 12/50] deps: update dependency
com.google.cloud:sdk-platform-java-config to v3.50.1 (#3878)
---
.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 63543a40fa..1795d3b24a 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.50.0
+ uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.50.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 dfa34060bc..13d12ce348 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.50.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.50.1"
}
env_vars: {
diff --git a/.kokoro/continuous/graalvm-native-b.cfg b/.kokoro/continuous/graalvm-native-b.cfg
index 37dda4ab5a..4696d04ef0 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.50.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.50.1"
}
env_vars: {
diff --git a/.kokoro/continuous/graalvm-native-c.cfg b/.kokoro/continuous/graalvm-native-c.cfg
index a8ab977848..26d39a747e 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.50.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.50.1"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-a.cfg b/.kokoro/presubmit/graalvm-native-a.cfg
index dfa34060bc..13d12ce348 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.50.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.50.1"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-b.cfg b/.kokoro/presubmit/graalvm-native-b.cfg
index 37dda4ab5a..4696d04ef0 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.50.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.50.1"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-c.cfg b/.kokoro/presubmit/graalvm-native-c.cfg
index a8ab977848..26d39a747e 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.50.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.50.1"
}
env_vars: {
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index 1194e1b0e2..8af53ddadb 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.50.0
+ 3.50.1
diff --git a/pom.xml b/pom.xml
index 433cb320c5..5c10cf0197 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,7 @@
com.google.cloud
sdk-platform-java-config
- 3.50.0
+ 3.50.1
From 5cfdf855fa0cf206660fd89743cbaabf3afa75a3 Mon Sep 17 00:00:00 2001
From: Phong Chuong <147636638+PhongChuong@users.noreply.github.com>
Date: Wed, 9 Jul 2025 21:01:49 -0400
Subject: [PATCH 13/50] fix: load jobs preserve ascii control characters
configuration (#3876)
* fix: load jobs preserve ascii control characters configuration
* fix lint
* fix NPE
* fix NPE
---
.../cloud/bigquery/LoadJobConfiguration.java | 6 ++++
.../bigquery/LoadJobConfigurationTest.java | 1 +
.../cloud/bigquery/it/ITBigQueryTest.java | 29 +++++++++++++++++--
3 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java
index 0d1eb7245b..381942cd0b 100644
--- a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java
+++ b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/LoadJobConfiguration.java
@@ -219,6 +219,7 @@ private Builder(com.google.api.services.bigquery.model.JobConfiguration configur
this.nullMarker = loadConfigurationPb.getNullMarker();
}
if (loadConfigurationPb.getAllowJaggedRows() != null
+ || loadConfigurationPb.getPreserveAsciiControlCharacters() != null
|| loadConfigurationPb.getAllowQuotedNewlines() != null
|| loadConfigurationPb.getEncoding() != null
|| loadConfigurationPb.getFieldDelimiter() != null
@@ -229,6 +230,10 @@ private Builder(com.google.api.services.bigquery.model.JobConfiguration configur
.setEncoding(loadConfigurationPb.getEncoding())
.setFieldDelimiter(loadConfigurationPb.getFieldDelimiter())
.setQuote(loadConfigurationPb.getQuote());
+ if (loadConfigurationPb.getPreserveAsciiControlCharacters() != null) {
+ builder.setPreserveAsciiControlCharacters(
+ loadConfigurationPb.getPreserveAsciiControlCharacters());
+ }
if (loadConfigurationPb.getAllowJaggedRows() != null) {
builder.setAllowJaggedRows(loadConfigurationPb.getAllowJaggedRows());
}
@@ -907,6 +912,7 @@ com.google.api.services.bigquery.model.JobConfiguration toPb() {
.setAllowJaggedRows(csvOptions.allowJaggedRows())
.setAllowQuotedNewlines(csvOptions.allowQuotedNewLines())
.setEncoding(csvOptions.getEncoding())
+ .setPreserveAsciiControlCharacters(csvOptions.getPreserveAsciiControlCharacters())
.setQuote(csvOptions.getQuote());
if (csvOptions.getSkipLeadingRows() != null) {
// todo(mziccard) remove checked cast or comment when #1044 is closed
diff --git a/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/LoadJobConfigurationTest.java b/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/LoadJobConfigurationTest.java
index b1a2f1af89..d987eb28e0 100644
--- a/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/LoadJobConfigurationTest.java
+++ b/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/LoadJobConfigurationTest.java
@@ -38,6 +38,7 @@ public class LoadJobConfigurationTest {
.setAllowJaggedRows(true)
.setAllowQuotedNewLines(false)
.setEncoding(StandardCharsets.UTF_8)
+ .setPreserveAsciiControlCharacters(true)
.build();
private static final TableId TABLE_ID = TableId.of("dataset", "table");
private static final CreateDisposition CREATE_DISPOSITION = CreateDisposition.CREATE_IF_NEEDED;
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 f188e7946e..c9f6296cc5 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
@@ -613,6 +613,7 @@ public class ITBigQueryTest {
private static final String LOAD_FILE_LARGE = "load_large.csv";
private static final String LOAD_FILE_FLEXIBLE_COLUMN_NAME = "load_flexible_column_name.csv";
+ private static final String LOAD_FILE_NULL = "load_null.csv";
private static final String JSON_LOAD_FILE = "load.json";
private static final String JSON_LOAD_FILE_BQ_RESULTSET = "load_bq_resultset.json";
private static final String JSON_LOAD_FILE_SIMPLE = "load_simple.json";
@@ -628,6 +629,7 @@ public class ITBigQueryTest {
private static final TableId TABLE_ID_FASTQUERY_BQ_RESULTSET =
TableId.of(DATASET, "fastquery_testing_bq_resultset");
private static final String CSV_CONTENT = "StringValue1\nStringValue2\n";
+ private static final String CSV_CONTENT_NULL = "String\0Value1\n";
private static final String CSV_CONTENT_FLEXIBLE_COLUMN = "name,&ersand\nrow_name,1";
private static final String JSON_CONTENT =
@@ -1080,6 +1082,9 @@ public static void beforeClass() throws InterruptedException, IOException {
storage.create(
BlobInfo.newBuilder(BUCKET, LOAD_FILE).setContentType("text/plain").build(),
CSV_CONTENT.getBytes(StandardCharsets.UTF_8));
+ storage.create(
+ BlobInfo.newBuilder(BUCKET, LOAD_FILE_NULL).setContentType("text/plain").build(),
+ CSV_CONTENT_NULL.getBytes(StandardCharsets.UTF_8));
storage.create(
BlobInfo.newBuilder(BUCKET, LOAD_FILE_FLEXIBLE_COLUMN_NAME)
.setContentType("text/plain")
@@ -6600,9 +6605,9 @@ public void testLocation() throws Exception {
}
@Test
- public void testPreserveAsciiControlCharacters()
+ public void testWriteChannelPreserveAsciiControlCharacters()
throws InterruptedException, IOException, TimeoutException {
- String destinationTableName = "test_preserve_ascii_control_characters";
+ String destinationTableName = "test_write_channel_preserve_ascii_control_characters";
TableId tableId = TableId.of(DATASET, destinationTableName);
WriteChannelConfiguration configuration =
WriteChannelConfiguration.newBuilder(tableId)
@@ -6625,6 +6630,26 @@ public void testPreserveAsciiControlCharacters()
assertTrue(bigquery.delete(tableId));
}
+ @Test
+ public void testLoadJobPreserveAsciiControlCharacters() throws InterruptedException {
+ String destinationTableName = "test_load_job_preserve_ascii_control_characters";
+ TableId destinationTable = TableId.of(DATASET, destinationTableName);
+
+ try {
+ LoadJobConfiguration configuration =
+ LoadJobConfiguration.newBuilder(destinationTable, "gs://" + BUCKET + "/" + LOAD_FILE_NULL)
+ .setFormatOptions(
+ CsvOptions.newBuilder().setPreserveAsciiControlCharacters(true).build())
+ .setSchema(SIMPLE_SCHEMA)
+ .build();
+ Job remoteLoadJob = bigquery.create(JobInfo.of(configuration));
+ remoteLoadJob = remoteLoadJob.waitFor();
+ assertNull(remoteLoadJob.getStatus().getError());
+ } finally {
+ assertTrue(bigquery.delete(destinationTable));
+ }
+ }
+
@Test
public void testReferenceFileSchemaUriForAvro() {
try {
From c47a062136fea4de91190cafb1f11bac6abbbe3a Mon Sep 17 00:00:00 2001
From: Jin Seop Kim
Date: Thu, 10 Jul 2025 11:38:38 -0700
Subject: [PATCH 14/50] feat: next release from main branch is 2.53.0 (#3879)
---
.github/release-please.yml | 4 ++++
.github/sync-repo-settings.yaml | 15 +++++++++++++++
2 files changed, 19 insertions(+)
diff --git a/.github/release-please.yml b/.github/release-please.yml
index 48231f76e4..d722d35a25 100644
--- a/.github/release-please.yml
+++ b/.github/release-please.yml
@@ -31,6 +31,10 @@ branches:
handleGHRelease: true
releaseType: java-backport
branch: 2.48.x
+ - bumpMinorPreMajor: true
+ handleGHRelease: true
+ releaseType: java-backport
+ branch: 2.52.x
bumpMinorPreMajor: true
handleGHRelease: true
releaseType: java-yoshi
diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml
index c3a3263dd7..26f85cb166 100644
--- a/.github/sync-repo-settings.yaml
+++ b/.github/sync-repo-settings.yaml
@@ -132,6 +132,21 @@ branchProtectionRules:
- cla/google
- javadoc
- unmanaged_dependency_check
+ - pattern: 2.52.x
+ isAdminEnforced: true
+ requiredApprovingReviewCount: 1
+ requiresCodeOwnerReviews: true
+ requiresStrictStatusChecks: false
+ requiredStatusCheckContexts:
+ - dependencies (17)
+ - lint
+ - clirr
+ - units (8)
+ - units (11)
+ - 'Kokoro - Test: Integration'
+ - cla/google
+ - javadoc
+ - unmanaged_dependency_check
permissionRules:
- team: api-bigquery
permission: admin
From 3a17ec2c7e0e2f2c0960d07a92bc09cac9dc8ab7 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Mon, 14 Jul 2025 17:03:06 +0200
Subject: [PATCH 15/50] chore(deps): update dependency
com.google.cloud:google-cloud-bigquerystorage-bom to v3.16.0 (#3884)
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 5c10cf0197..d44a03befc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,7 +71,7 @@
com.google.cloud
google-cloud-bigquerystorage-bom
- 3.15.3
+ 3.16.0
pom
import
From ed331354e225d9340c6101b9e783a1b79eae2875 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Mon, 14 Jul 2025 12:59:52 -0400
Subject: [PATCH 16/50] chore(main): release 2.53.0 (#3866)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
CHANGELOG.md | 26 ++++++++++++++++++++++++++
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, 35 insertions(+), 9 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 71577758bd..9336a4195c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,31 @@
# Changelog
+## [2.53.0](https://github.com/googleapis/java-bigquery/compare/v2.52.0...v2.53.0) (2025-07-14)
+
+
+### Features
+
+* **bigquery:** Add OpenTelemetry support to BQ rpcs ([#3860](https://github.com/googleapis/java-bigquery/issues/3860)) ([e2d23c1](https://github.com/googleapis/java-bigquery/commit/e2d23c1b15f2c48a4113f82b920f5c29c4b5dfea))
+* **bigquery:** Add support for custom timezones and timestamps ([#3859](https://github.com/googleapis/java-bigquery/issues/3859)) ([e5467c9](https://github.com/googleapis/java-bigquery/commit/e5467c917c63ac066edcbcd902cc2093a39971a3))
+* Next release from main branch is 2.53.0 ([#3879](https://github.com/googleapis/java-bigquery/issues/3879)) ([c47a062](https://github.com/googleapis/java-bigquery/commit/c47a062136fea4de91190cafb1f11bac6abbbe3a))
+
+
+### Bug Fixes
+
+* Load jobs preserve ascii control characters configuration ([#3876](https://github.com/googleapis/java-bigquery/issues/3876)) ([5cfdf85](https://github.com/googleapis/java-bigquery/commit/5cfdf855fa0cf206660fd89743cbaabf3afa75a3))
+
+
+### Dependencies
+
+* Update dependency com.google.api.grpc:proto-google-cloud-bigqueryconnection-v1 to v2.69.0 ([#3870](https://github.com/googleapis/java-bigquery/issues/3870)) ([a7f1007](https://github.com/googleapis/java-bigquery/commit/a7f1007b5242da2c0adebbb309a908d7d4db5974))
+* Update dependency com.google.apis:google-api-services-bigquery to v2-rev20250615-2.0.0 ([#3872](https://github.com/googleapis/java-bigquery/issues/3872)) ([f081589](https://github.com/googleapis/java-bigquery/commit/f08158955b7fec3c2ced6332b6e4d76cc13f2e90))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.50.1 ([#3878](https://github.com/googleapis/java-bigquery/issues/3878)) ([0e971b8](https://github.com/googleapis/java-bigquery/commit/0e971b8ace013caa31b8a02a21038e94bebae2a5))
+
+
+### Documentation
+
+* Update maven format command ([#3877](https://github.com/googleapis/java-bigquery/issues/3877)) ([d2918da](https://github.com/googleapis/java-bigquery/commit/d2918da844cd20ca1602c6fcf9fa1df685f261fc))
+
## [2.52.0](https://github.com/googleapis/java-bigquery/compare/v2.51.0...v2.52.0) (2025-06-25)
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index 8fcf7ca00d..8674b71026 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -6,7 +6,7 @@
google-cloud-bigquery-parent
com.google.cloud
- 2.52.1-SNAPSHOT
+ 2.53.0
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index 8af53ddadb..bc3a9e0c3b 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.52.1-SNAPSHOT
+ 2.53.0
pom
com.google.cloud
@@ -54,7 +54,7 @@
com.google.cloud
google-cloud-bigquery
- 2.52.1-SNAPSHOT
+ 2.53.0
diff --git a/google-cloud-bigquery/pom.xml b/google-cloud-bigquery/pom.xml
index 6c7e1aed1b..ad20f607e7 100644
--- a/google-cloud-bigquery/pom.xml
+++ b/google-cloud-bigquery/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.google.cloud
google-cloud-bigquery
- 2.52.1-SNAPSHOT
+ 2.53.0
jar
BigQuery
https://github.com/googleapis/java-bigquery
@@ -11,7 +11,7 @@
com.google.cloud
google-cloud-bigquery-parent
- 2.52.1-SNAPSHOT
+ 2.53.0
google-cloud-bigquery
diff --git a/pom.xml b/pom.xml
index d44a03befc..4bc7652ba9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud
google-cloud-bigquery-parent
pom
- 2.52.1-SNAPSHOT
+ 2.53.0
BigQuery Parent
https://github.com/googleapis/java-bigquery
@@ -93,7 +93,7 @@
com.google.cloud
google-cloud-bigquery
- 2.52.1-SNAPSHOT
+ 2.53.0
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index d9d52314b0..7e1bfd314d 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -44,7 +44,7 @@
com.google.cloud
google-cloud-bigquery
- 2.52.1-SNAPSHOT
+ 2.53.0
diff --git a/versions.txt b/versions.txt
index 5e931b82a5..5245c445bf 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,4 +1,4 @@
# Format:
# module:released-version:current-version
-google-cloud-bigquery:2.52.0:2.52.1-SNAPSHOT
\ No newline at end of file
+google-cloud-bigquery:2.53.0:2.53.0
\ No newline at end of file
From b95f1221e2672e3c824daaed81783a6228d54fe3 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Tue, 15 Jul 2025 11:19:07 -0400
Subject: [PATCH 17/50] chore(main): release 2.53.1-SNAPSHOT (#3886)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
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 +-
6 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index 8674b71026..9352cc46f5 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -6,7 +6,7 @@
google-cloud-bigquery-parent
com.google.cloud
- 2.53.0
+ 2.53.1-SNAPSHOT
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index bc3a9e0c3b..c41c4c601c 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.53.0
+ 2.53.1-SNAPSHOT
pom
com.google.cloud
@@ -54,7 +54,7 @@
com.google.cloud
google-cloud-bigquery
- 2.53.0
+ 2.53.1-SNAPSHOT
diff --git a/google-cloud-bigquery/pom.xml b/google-cloud-bigquery/pom.xml
index ad20f607e7..b3f4461a08 100644
--- a/google-cloud-bigquery/pom.xml
+++ b/google-cloud-bigquery/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.google.cloud
google-cloud-bigquery
- 2.53.0
+ 2.53.1-SNAPSHOT
jar
BigQuery
https://github.com/googleapis/java-bigquery
@@ -11,7 +11,7 @@
com.google.cloud
google-cloud-bigquery-parent
- 2.53.0
+ 2.53.1-SNAPSHOT
google-cloud-bigquery
diff --git a/pom.xml b/pom.xml
index 4bc7652ba9..bfbc88b03d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud
google-cloud-bigquery-parent
pom
- 2.53.0
+ 2.53.1-SNAPSHOT
BigQuery Parent
https://github.com/googleapis/java-bigquery
@@ -93,7 +93,7 @@
com.google.cloud
google-cloud-bigquery
- 2.53.0
+ 2.53.1-SNAPSHOT
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 7e1bfd314d..9900dc8299 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -44,7 +44,7 @@
com.google.cloud
google-cloud-bigquery
- 2.53.0
+ 2.53.1-SNAPSHOT
diff --git a/versions.txt b/versions.txt
index 5245c445bf..73c78399ea 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,4 +1,4 @@
# Format:
# module:released-version:current-version
-google-cloud-bigquery:2.53.0:2.53.0
\ No newline at end of file
+google-cloud-bigquery:2.53.0:2.53.1-SNAPSHOT
\ No newline at end of file
From a2dbafb9bc1c37ffda6e21605e98637a52b42ee3 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Tue, 15 Jul 2025 17:49:48 +0200
Subject: [PATCH 18/50] chore(deps): update dependency
com.google.cloud:google-cloud-bigquery to v2.53.0 (#3887)
---
samples/install-without-bom/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index 11e13e43ec..3faa299811 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -45,7 +45,7 @@
com.google.cloud
google-cloud-bigquery
- 2.52.0
+ 2.53.0
From 84207e297eec75bcb4f1cc1b64423d7c2ddd6c30 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Tue, 15 Jul 2025 18:54:15 +0200
Subject: [PATCH 19/50] deps: update dependency
com.google.api.grpc:proto-google-cloud-bigqueryconnection-v1 to v2.70.0
(#3890)
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index bfbc88b03d..32f6636a62 100644
--- a/pom.xml
+++ b/pom.xml
@@ -149,7 +149,7 @@
com.google.api.grpc
proto-google-cloud-bigqueryconnection-v1
- 2.69.0
+ 2.70.0
test
From 83278f66bbab19a5ff6131374687c65358dc392a Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Thu, 17 Jul 2025 18:24:49 +0200
Subject: [PATCH 20/50] chore(deps): update dependency
com.google.cloud:google-cloud-bigtable to v2.62.0 (#3894)
---
samples/install-without-bom/pom.xml | 2 +-
samples/snapshot/pom.xml | 2 +-
samples/snippets/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index 3faa299811..fac67658a6 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -63,7 +63,7 @@
com.google.cloud
google-cloud-bigtable
- 2.61.0
+ 2.62.0
test
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 9900dc8299..9f836d7217 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -61,7 +61,7 @@
com.google.cloud
google-cloud-bigtable
- 2.61.0
+ 2.62.0
test
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index 62c7f22ec7..7ec8cdc108 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -79,7 +79,7 @@
com.google.cloud
google-cloud-bigtable
- 2.61.0
+ 2.62.0
test
From 92371d9d9a4dd64f5291342aff1e4f5aae16da9e Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Thu, 17 Jul 2025 19:33:10 +0200
Subject: [PATCH 21/50] chore(deps): update dependency
com.google.cloud:libraries-bom to v26.64.0 (#3895)
---
samples/snippets/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index 7ec8cdc108..3f293ddd09 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -47,7 +47,7 @@
com.google.cloud
libraries-bom
- 26.63.0
+ 26.64.0
pom
import
From fce3d8f874f800a0f48e59f80c47ff53e2b7f166 Mon Sep 17 00:00:00 2001
From: Jin Seop Kim
Date: Fri, 18 Jul 2025 13:02:17 -0700
Subject: [PATCH 22/50] chore: create LTS branch 2.51.x (#3896)
---
.github/release-please.yml | 4 ++++
.github/sync-repo-settings.yaml | 15 +++++++++++++++
2 files changed, 19 insertions(+)
diff --git a/.github/release-please.yml b/.github/release-please.yml
index d722d35a25..f87ac1ecca 100644
--- a/.github/release-please.yml
+++ b/.github/release-please.yml
@@ -35,6 +35,10 @@ branches:
handleGHRelease: true
releaseType: java-backport
branch: 2.52.x
+ - bumpMinorPreMajor: true
+ handleGHRelease: true
+ releaseType: java-backport
+ branch: 2.51.x
bumpMinorPreMajor: true
handleGHRelease: true
releaseType: java-yoshi
diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml
index 26f85cb166..8a7fa3e302 100644
--- a/.github/sync-repo-settings.yaml
+++ b/.github/sync-repo-settings.yaml
@@ -147,6 +147,21 @@ branchProtectionRules:
- cla/google
- javadoc
- unmanaged_dependency_check
+ - pattern: 2.51.x
+ isAdminEnforced: true
+ requiredApprovingReviewCount: 1
+ requiresCodeOwnerReviews: true
+ requiresStrictStatusChecks: false
+ requiredStatusCheckContexts:
+ - dependencies (17)
+ - lint
+ - clirr
+ - units (8)
+ - units (11)
+ - 'Kokoro - Test: Integration'
+ - cla/google
+ - javadoc
+ - unmanaged_dependency_check
permissionRules:
- team: api-bigquery
permission: admin
From 36d3e82c80a1de7b00d83b0d85c1a5ad65d84640 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Mon, 21 Jul 2025 17:55:40 +0200
Subject: [PATCH 23/50] chore(deps): update google cloud java monorepo updates
(#3889)
---
pom.xml | 4 ++--
samples/install-without-bom/pom.xml | 2 +-
samples/snapshot/pom.xml | 2 +-
samples/snippets/pom.xml | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/pom.xml b/pom.xml
index 32f6636a62..850b288e58 100644
--- a/pom.xml
+++ b/pom.xml
@@ -79,7 +79,7 @@
com.google.cloud
google-cloud-datacatalog-bom
- 1.73.0
+ 1.74.0
pom
import
@@ -143,7 +143,7 @@
com.google.cloud
google-cloud-bigqueryconnection
- 2.69.0
+ 2.70.0
test
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index fac67658a6..c492b1182c 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -69,7 +69,7 @@
com.google.cloud
google-cloud-bigqueryconnection
- 2.69.0
+ 2.70.0
test
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 9f836d7217..496458c708 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -67,7 +67,7 @@
com.google.cloud
google-cloud-bigqueryconnection
- 2.69.0
+ 2.70.0
test
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index 3f293ddd09..0e32438edd 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -85,7 +85,7 @@
com.google.cloud
google-cloud-bigqueryconnection
- 2.69.0
+ 2.70.0
test
From e3d9ed92ca5d9b58b5747960d74f895ed8733ebf Mon Sep 17 00:00:00 2001
From: Liam Huffman <44932470+whuffman36@users.noreply.github.com>
Date: Wed, 23 Jul 2025 10:46:24 -0700
Subject: [PATCH 24/50] feat(bigquery): Add OpenTelemetry Samples (#3899)
* feat(bigquery): Add OpenTelemetry Samples
* Add dependencies to pom files
* fix style
* Fix dependencies, clean up sample
* Add sample without parent span
* Fix copy/paste error
* Remove reference to global otel object
* Replace custom exporter with logging exporter
* Add logging exporter dep to snapshot and without-bom
* Generate random strings for ds names
* feat(bigquery): Add custom console exporter to samples
* fix style, remove comments
---
samples/install-without-bom/pom.xml | 31 +++++
samples/snapshot/pom.xml | 42 +++++++
samples/snippets/pom.xml | 37 ++++++
.../bigquery/EnableOpenTelemetryTracing.java | 85 ++++++++++++++
...bleOpenTelemetryTracingWithParentSpan.java | 105 +++++++++++++++++
.../EnableOpenTelemetryTracingIT.java | 105 +++++++++++++++++
...eOpenTelemetryTracingWithParentSpanIT.java | 110 ++++++++++++++++++
7 files changed, 515 insertions(+)
create mode 100644 samples/snippets/src/main/java/com/example/bigquery/EnableOpenTelemetryTracing.java
create mode 100644 samples/snippets/src/main/java/com/example/bigquery/EnableOpenTelemetryTracingWithParentSpan.java
create mode 100644 samples/snippets/src/test/java/com/example/bigquery/EnableOpenTelemetryTracingIT.java
create mode 100644 samples/snippets/src/test/java/com/example/bigquery/EnableOpenTelemetryTracingWithParentSpanIT.java
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index c492b1182c..87a5670338 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -59,6 +59,37 @@
google-oauth-client-jetty
1.39.0
+
+ io.opentelemetry
+ opentelemetry-api
+ 1.48.0
+
+
+ io.opentelemetry
+ opentelemetry-context
+ 1.48.0
+
+
+ io.opentelemetry
+ opentelemetry-sdk
+ 1.48.0
+
+
+ io.opentelemetry
+ opentelemetry-sdk-common
+ 1.48.0
+
+
+ io.opentelemetry
+ opentelemetry-sdk-trace
+ 1.48.0
+
+
+ io.opentelemetry
+ opentelemetry-exporter-logging
+ 1.48.0
+
+
com.google.cloud
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 496458c708..f2c96c00db 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -39,6 +39,18 @@
UTF-8
+
+
+
+ io.opentelemetry
+ opentelemetry-bom
+ 1.48.0
+ pom
+ import
+
+
+
+
@@ -82,6 +94,36 @@
1.4.4
test
+
+ io.opentelemetry
+ opentelemetry-api
+ 1.48.0
+
+
+ io.opentelemetry
+ opentelemetry-context
+ 1.48.0
+
+
+ io.opentelemetry
+ opentelemetry-sdk
+ 1.48.0
+
+
+ io.opentelemetry
+ opentelemetry-sdk-common
+ 1.48.0
+
+
+ io.opentelemetry
+ opentelemetry-sdk-trace
+ 1.48.0
+
+
+ io.opentelemetry
+ opentelemetry-exporter-logging
+ 1.48.0
+
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index 0e32438edd..2b5dfd4bcd 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -51,6 +51,13 @@
pom
import
+
+ io.opentelemetry
+ opentelemetry-bom
+ 1.48.0
+ pom
+ import
+
@@ -59,6 +66,36 @@
com.google.cloud
google-cloud-bigquery
+
+ io.opentelemetry
+ opentelemetry-api
+ 1.48.0
+
+
+ io.opentelemetry
+ opentelemetry-context
+ 1.48.0
+
+
+ io.opentelemetry
+ opentelemetry-sdk
+ 1.48.0
+
+
+ io.opentelemetry
+ opentelemetry-sdk-common
+ 1.48.0
+
+
+ io.opentelemetry
+ opentelemetry-sdk-trace
+ 1.48.0
+
+
+ io.opentelemetry
+ opentelemetry-exporter-logging
+ 1.48.0
+
diff --git a/samples/snippets/src/main/java/com/example/bigquery/EnableOpenTelemetryTracing.java b/samples/snippets/src/main/java/com/example/bigquery/EnableOpenTelemetryTracing.java
new file mode 100644
index 0000000000..57ec7eb71d
--- /dev/null
+++ b/samples/snippets/src/main/java/com/example/bigquery/EnableOpenTelemetryTracing.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2025 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.bigquery;
+
+// [START bigquery_enable_otel_tracing]
+import com.google.cloud.bigquery.BigQuery;
+import com.google.cloud.bigquery.BigQueryOptions;
+import com.google.cloud.bigquery.Dataset;
+import com.google.cloud.bigquery.DatasetInfo;
+import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.trace.Tracer;
+import io.opentelemetry.exporter.logging.LoggingSpanExporter;
+import io.opentelemetry.sdk.OpenTelemetrySdk;
+import io.opentelemetry.sdk.trace.SdkTracerProvider;
+import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
+import io.opentelemetry.sdk.trace.samplers.Sampler;
+import java.util.logging.ConsoleHandler;
+import java.util.logging.Logger;
+
+public class EnableOpenTelemetryTracing {
+ private static final Logger log = Logger.getLogger(EnableOpenTelemetryTracing.class.getName());
+
+ public static void main(String[] args) {
+ // Set logging to System.err.
+ ConsoleHandler ch = new ConsoleHandler();
+ log.addHandler(ch);
+
+ // TODO(developer): Replace values before running the sample.
+ final String tracerName = "Sample Tracer";
+ final String datasetId = "sampleDatasetId";
+
+ // Create TracerProvider that exports to a logger.
+ SdkTracerProvider tracerProvider =
+ SdkTracerProvider.builder()
+ .addSpanProcessor(SimpleSpanProcessor.builder(LoggingSpanExporter.create()).build())
+ .setSampler(Sampler.alwaysOn())
+ .build();
+
+ // Create global OpenTelemetry instance using the TracerProvider.
+ OpenTelemetry otel = OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).build();
+
+ // Create Tracer instance from the OpenTelemetry object. Tracers are used to create
+ // Spans. There can be multiple Tracers in an OpenTelemetry instance.
+ Tracer tracer = otel.getTracer(tracerName);
+
+ enableOpenTelemetry(tracer, datasetId);
+ }
+
+ public static void enableOpenTelemetry(Tracer tracer, String datasetId) {
+ // Create BigQuery client to trace. EnableOpenTelemetryTracing and OpenTelemetryTracer must
+ // be set to enable tracing.
+ BigQueryOptions otelOptions =
+ BigQueryOptions.newBuilder()
+ .setEnableOpenTelemetryTracing(true)
+ .setOpenTelemetryTracer(tracer)
+ .build();
+ BigQuery bigquery = otelOptions.getService();
+
+ try {
+ // Create dataset.
+ DatasetInfo info = DatasetInfo.newBuilder(datasetId).build();
+ Dataset dataset = bigquery.create(info);
+ } catch (Exception e) {
+ System.out.println(
+ String.format("Failed to create dataset: %s: %s", e.toString(), e.getMessage()));
+ } finally {
+ bigquery.delete(datasetId);
+ }
+ }
+}
+// [END bigquery_enable_otel_tracing]
diff --git a/samples/snippets/src/main/java/com/example/bigquery/EnableOpenTelemetryTracingWithParentSpan.java b/samples/snippets/src/main/java/com/example/bigquery/EnableOpenTelemetryTracingWithParentSpan.java
new file mode 100644
index 0000000000..af69df10ba
--- /dev/null
+++ b/samples/snippets/src/main/java/com/example/bigquery/EnableOpenTelemetryTracingWithParentSpan.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2025 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.bigquery;
+
+// [START bigquery_enable_otel_tracing_with_parent_span]
+import com.google.cloud.bigquery.BigQuery;
+import com.google.cloud.bigquery.BigQueryOptions;
+import com.google.cloud.bigquery.Dataset;
+import com.google.cloud.bigquery.DatasetInfo;
+import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.trace.Span;
+import io.opentelemetry.api.trace.Tracer;
+import io.opentelemetry.context.Scope;
+import io.opentelemetry.exporter.logging.LoggingSpanExporter;
+import io.opentelemetry.sdk.OpenTelemetrySdk;
+import io.opentelemetry.sdk.trace.SdkTracerProvider;
+import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
+import io.opentelemetry.sdk.trace.samplers.Sampler;
+import java.time.LocalDate;
+import java.util.logging.ConsoleHandler;
+import java.util.logging.Logger;
+
+public class EnableOpenTelemetryTracingWithParentSpan {
+ private static final Logger log =
+ Logger.getLogger(EnableOpenTelemetryTracingWithParentSpan.class.getName());
+
+ public static void main(String[] args) {
+ // Set logging to System.err.
+ ConsoleHandler ch = new ConsoleHandler();
+ log.addHandler(ch);
+
+ // TODO(developer): Replace values before running the sample.
+ final String tracerName = "Sample Tracer";
+ final String parentSpanName = "Sample Parent Span";
+ final String datasetId = "sampleDatasetId";
+
+ // Create TracerProvider that exports to a logger.
+ SdkTracerProvider tracerProvider =
+ SdkTracerProvider.builder()
+ .addSpanProcessor(SimpleSpanProcessor.builder(LoggingSpanExporter.create()).build())
+ .setSampler(Sampler.alwaysOn())
+ .build();
+
+ // Create OpenTelemetry instance using the TracerProvider.
+ OpenTelemetry otel = OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).build();
+
+ // Create Tracer instance from the global OpenTelemetry object. Tracers are used to create
+ // Spans. There can be multiple Tracers in a global OpenTelemetry instance.
+ final Tracer tracer = otel.getTracer(tracerName);
+ enableOpenTelemetryWithParentSpan(tracer, parentSpanName, datasetId);
+ }
+
+ public static void enableOpenTelemetryWithParentSpan(
+ Tracer tracer, String parentSpanName, String datasetId) {
+ // Create BigQuery client to trace. EnableOpenTelemetryTracing and OpenTelemetryTracer must
+ // be set to enable tracing.
+ BigQueryOptions otelOptions =
+ BigQueryOptions.newBuilder()
+ .setEnableOpenTelemetryTracing(true)
+ .setOpenTelemetryTracer(tracer)
+ .build();
+ BigQuery bigquery = otelOptions.getService();
+
+ LocalDate currentDate = LocalDate.now();
+
+ // Create the root parent Span. setNoParent() ensures that it is a parent Span with a Span ID
+ // of 0.
+ Span parentSpan =
+ tracer
+ .spanBuilder(parentSpanName)
+ .setNoParent()
+ .setAttribute("current_date", currentDate.toString())
+ .startSpan();
+
+ // The Span Context is automatically passed on to any functions called within the scope of the
+ // try block. parentSpan.makeCurrent() sets parentSpan to be the parent of any Spans created in
+ // this scope, or the scope of any functions called within this scope.
+ try (Scope parentScope = parentSpan.makeCurrent()) {
+ DatasetInfo info = DatasetInfo.newBuilder(datasetId).build();
+ Dataset dataset = bigquery.create(info);
+ } catch (Exception e) {
+ System.out.println(
+ String.format("Failed to create dataset: %s: %s", e.toString(), e.getMessage()));
+ } finally {
+ // finally block ensures that Spans are cleaned up properly.
+ parentSpan.end();
+ bigquery.delete(datasetId);
+ }
+ }
+}
+// [END bigquery_enable_otel_tracing_with_parent_span]
diff --git a/samples/snippets/src/test/java/com/example/bigquery/EnableOpenTelemetryTracingIT.java b/samples/snippets/src/test/java/com/example/bigquery/EnableOpenTelemetryTracingIT.java
new file mode 100644
index 0000000000..0ad5651018
--- /dev/null
+++ b/samples/snippets/src/test/java/com/example/bigquery/EnableOpenTelemetryTracingIT.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2025 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.bigquery;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import com.google.cloud.bigquery.testing.RemoteBigQueryHelper;
+import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.trace.Tracer;
+import io.opentelemetry.sdk.OpenTelemetrySdk;
+import io.opentelemetry.sdk.common.CompletableResultCode;
+import io.opentelemetry.sdk.trace.SdkTracerProvider;
+import io.opentelemetry.sdk.trace.data.SpanData;
+import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
+import io.opentelemetry.sdk.trace.samplers.Sampler;
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class EnableOpenTelemetryTracingIT {
+ private final Logger log = Logger.getLogger(this.getClass().getName());
+ private ByteArrayOutputStream bout;
+ private PrintStream out;
+ private PrintStream originalPrintStream;
+
+ private static class ConsoleSpanExporter
+ implements io.opentelemetry.sdk.trace.export.SpanExporter {
+ @Override
+ public CompletableResultCode export(Collection collection) {
+ if (collection.isEmpty()) {
+ return CompletableResultCode.ofFailure();
+ }
+ for (SpanData data : collection) {
+ System.out.println(data);
+ }
+ return CompletableResultCode.ofSuccess();
+ }
+
+ @Override
+ public CompletableResultCode flush() {
+ return CompletableResultCode.ofSuccess();
+ }
+
+ @Override
+ public CompletableResultCode shutdown() {
+ return CompletableResultCode.ofSuccess();
+ }
+ }
+
+ @Before
+ public void setUp() {
+ bout = new ByteArrayOutputStream();
+ out = new PrintStream(bout);
+ originalPrintStream = System.out;
+ System.setOut(out);
+ }
+
+ @After
+ public void tearDown() {
+ // restores print statements in the original method
+ System.out.flush();
+ System.setOut(originalPrintStream);
+ log.log(Level.INFO, "\n" + bout.toString());
+ }
+
+ @Test
+ public void testEnableOpenTelemetryTracing() {
+ final String tracerName = "testSampleTracer";
+ final String datasetId = RemoteBigQueryHelper.generateDatasetName();
+
+ SdkTracerProvider tracerProvider =
+ SdkTracerProvider.builder()
+ .addSpanProcessor(SimpleSpanProcessor.builder(new ConsoleSpanExporter()).build())
+ .setSampler(Sampler.alwaysOn())
+ .build();
+
+ OpenTelemetry otel = OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).build();
+
+ final Tracer tracer = otel.getTracer(tracerName);
+
+ EnableOpenTelemetryTracing.enableOpenTelemetry(tracer, datasetId);
+
+ assertThat(bout.toString()).contains("com.google.cloud.bigquery.BigQuery.createDataset");
+ assertThat(bout.toString()).contains("com.google.cloud.bigquery.BigQuery.deleteDataset");
+ }
+}
diff --git a/samples/snippets/src/test/java/com/example/bigquery/EnableOpenTelemetryTracingWithParentSpanIT.java b/samples/snippets/src/test/java/com/example/bigquery/EnableOpenTelemetryTracingWithParentSpanIT.java
new file mode 100644
index 0000000000..482915008b
--- /dev/null
+++ b/samples/snippets/src/test/java/com/example/bigquery/EnableOpenTelemetryTracingWithParentSpanIT.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2025 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.bigquery;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import com.google.cloud.bigquery.testing.RemoteBigQueryHelper;
+import io.opentelemetry.api.OpenTelemetry;
+import io.opentelemetry.api.trace.Tracer;
+import io.opentelemetry.sdk.OpenTelemetrySdk;
+import io.opentelemetry.sdk.common.CompletableResultCode;
+import io.opentelemetry.sdk.trace.SdkTracerProvider;
+import io.opentelemetry.sdk.trace.data.SpanData;
+import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
+import io.opentelemetry.sdk.trace.samplers.Sampler;
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.time.LocalDate;
+import java.util.Collection;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class EnableOpenTelemetryTracingWithParentSpanIT {
+ private final Logger log = Logger.getLogger(this.getClass().getName());
+ private ByteArrayOutputStream bout;
+ private PrintStream out;
+ private PrintStream originalPrintStream;
+
+ private static class ConsoleSpanExporter
+ implements io.opentelemetry.sdk.trace.export.SpanExporter {
+ @Override
+ public CompletableResultCode export(Collection collection) {
+ if (collection.isEmpty()) {
+ return CompletableResultCode.ofFailure();
+ }
+ for (SpanData data : collection) {
+ System.out.println(data);
+ }
+ return CompletableResultCode.ofSuccess();
+ }
+
+ @Override
+ public CompletableResultCode flush() {
+ return CompletableResultCode.ofSuccess();
+ }
+
+ @Override
+ public CompletableResultCode shutdown() {
+ return CompletableResultCode.ofSuccess();
+ }
+ }
+
+ @Before
+ public void setUp() {
+ bout = new ByteArrayOutputStream();
+ out = new PrintStream(bout);
+ originalPrintStream = System.out;
+ System.setOut(out);
+ }
+
+ @After
+ public void tearDown() {
+ // restores print statements in the original method
+ System.out.flush();
+ System.setOut(originalPrintStream);
+ log.log(Level.INFO, "\n" + bout.toString());
+ }
+
+ @Test
+ public void testEnableOpenTelemetryWithParentSpan() {
+ final String tracerName = "testSampleTracer";
+ final String parentSpanName = "testSampleParentSpan";
+ final String datasetId = RemoteBigQueryHelper.generateDatasetName();
+ final LocalDate currentDate = LocalDate.now();
+
+ SdkTracerProvider tracerProvider =
+ SdkTracerProvider.builder()
+ .addSpanProcessor(SimpleSpanProcessor.builder(new ConsoleSpanExporter()).build())
+ .setSampler(Sampler.alwaysOn())
+ .build();
+
+ OpenTelemetry otel = OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).build();
+
+ final Tracer tracer = otel.getTracer(tracerName);
+
+ EnableOpenTelemetryTracingWithParentSpan.enableOpenTelemetryWithParentSpan(
+ tracer, parentSpanName, datasetId);
+
+ assertThat(bout.toString()).contains(parentSpanName);
+ assertThat(bout.toString())
+ .contains(String.format("AttributesMap{data={current_date=%s}", currentDate.toString()));
+ }
+}
From aa3d10bc7f1f44f2e92ee631da8056aa762b25e3 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Fri, 25 Jul 2025 03:48:02 +0200
Subject: [PATCH 25/50] test(deps): update dependency
com.google.cloud:google-cloud-storage to v2.53.3 (#3882)
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 850b288e58..e0e3aa024b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -137,7 +137,7 @@
com.google.cloud
google-cloud-storage
- 2.53.2
+ 2.53.3
test
From 4071e4cb2547b236183fd4fbb92c73f074cf2fa0 Mon Sep 17 00:00:00 2001
From: Liam Huffman <44932470+whuffman36@users.noreply.github.com>
Date: Fri, 25 Jul 2025 09:06:15 -0700
Subject: [PATCH 26/50] feat(bigquery): Add otel metrics to request headers
(#3900)
---
.../bigquery/spi/v2/HttpBigQueryRpc.java | 147 +++++++++++++++++-
1 file changed, 142 insertions(+), 5 deletions(-)
diff --git a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java
index 9d89435ea9..16737dc4b7 100644
--- a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java
+++ b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java
@@ -158,6 +158,9 @@ public Dataset getDatasetSkipExceptionTranslation(
if (options.containsKey(Option.DATASET_VIEW)) {
bqGetRequest.setDatasetView(options.get(Option.DATASET_VIEW).toString());
}
+ bqGetRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
Span getDataset = null;
if (this.options.isOpenTelemetryTracingEnabled()
@@ -205,6 +208,10 @@ public Tuple> listDatasetsSkipExceptionTranslation(
.setMaxResults(Option.MAX_RESULTS.getLong(options))
.setPageToken(Option.PAGE_TOKEN.getString(options));
+ datasetsListRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span listDatasets = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -256,6 +263,9 @@ public Dataset createSkipExceptionTranslation(Dataset dataset, Map op
if (options.containsKey(Option.ACCESS_POLICY_VERSION)) {
bqCreateRequest.setAccessPolicyVersion((Integer) options.get(Option.ACCESS_POLICY_VERSION));
}
+ bqCreateRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
Span createDataset = null;
if (this.options.isOpenTelemetryTracingEnabled()
@@ -302,6 +312,10 @@ public Table createSkipExceptionTranslation(Table table, Map options)
.setPrettyPrint(false)
.setFields(Option.FIELDS.getString(options));
+ bqCreateRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span createTable = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -345,6 +359,10 @@ public Routine createSkipExceptionTranslation(Routine routine, Map op
.setPrettyPrint(false)
.setFields(Option.FIELDS.getString(options));
+ bqCreateRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span createRoutine = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -391,6 +409,10 @@ public Job createSkipExceptionTranslation(Job job, Map options) throw
.setPrettyPrint(false)
.setFields(Option.FIELDS.getString(options));
+ bqCreateRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span createJob = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -434,6 +456,10 @@ public Job createJobForQuerySkipExceptionTranslation(Job job) throws IOException
Bigquery.Jobs.Insert bqCreateRequest =
bigquery.jobs().insert(projectId, job).setPrettyPrint(false);
+ bqCreateRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span createJob = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -481,6 +507,10 @@ public boolean deleteDatasetSkipExceptionTranslation(
.setPrettyPrint(false)
.setDeleteContents(Option.DELETE_CONTENTS.getBoolean(options));
+ bqDeleteRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span deleteDataset = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -528,6 +558,9 @@ public Dataset patchSkipExceptionTranslation(Dataset dataset, Map opt
if (options.containsKey(Option.DATASET_UPDATE_MODE)) {
bqPatchRequest.setUpdateMode(options.get(Option.DATASET_UPDATE_MODE).toString());
}
+ bqPatchRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
Span patchDataset = null;
if (this.options.isOpenTelemetryTracingEnabled()
@@ -576,6 +609,10 @@ public Table patchSkipExceptionTranslation(Table table, Map options)
.setFields(Option.FIELDS.getString(options))
.setAutodetectSchema(BigQueryRpc.Option.AUTODETECT_SCHEMA.getBoolean(options));
+ bqPatchRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span patchTable = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -625,6 +662,10 @@ public Table getTableSkipExceptionTranslation(
.setFields(Option.FIELDS.getString(options))
.setView(getTableMetadataOption(options));
+ bqGetRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span getTable = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -676,6 +717,10 @@ public Tuple> listTablesSkipExceptionTranslation(
.setMaxResults(Option.MAX_RESULTS.getLong(options))
.setPageToken(Option.PAGE_TOKEN.getString(options));
+ tableListRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span listTables = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -740,6 +785,10 @@ public boolean deleteTableSkipExceptionTranslation(
Bigquery.Tables.Delete bqDeleteRequest =
bigquery.tables().delete(projectId, datasetId, tableId);
+ bqDeleteRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span deleteTable = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -783,6 +832,10 @@ public Model patchSkipExceptionTranslation(Model model, Map options)
.setPrettyPrint(false)
.setFields(Option.FIELDS.getString(options));
+ bqPatchRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span patchModel = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -832,6 +885,10 @@ public Model getModelSkipExceptionTranslation(
.setPrettyPrint(false)
.setFields(Option.FIELDS.getString(options));
+ bqGetRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span getModel = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -877,6 +934,10 @@ public Tuple> listModelsSkipExceptionTranslation(
.setMaxResults(Option.MAX_RESULTS.getLong(options))
.setPageToken(Option.PAGE_TOKEN.getString(options));
+ modelListRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span listModels = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -923,6 +984,10 @@ public boolean deleteModelSkipExceptionTranslation(
Bigquery.Models.Delete bqDeleteRequest =
bigquery.models().delete(projectId, datasetId, modelId);
+ bqDeleteRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span deleteModels = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -968,6 +1033,10 @@ public Routine updateSkipExceptionTranslation(Routine routine, Map op
.setPrettyPrint(false)
.setFields(Option.FIELDS.getString(options));
+ bqUpdateRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span updateRoutine = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -1017,6 +1086,10 @@ public Routine getRoutineSkipExceptionTranslation(
.setPrettyPrint(false)
.setFields(Option.FIELDS.getString(options));
+ bqGetRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span getRoutine = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -1062,6 +1135,10 @@ public Tuple> listRoutinesSkipExceptionTranslation(
.setMaxResults(Option.MAX_RESULTS.getLong(options))
.setPageToken(Option.PAGE_TOKEN.getString(options));
+ routineListRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span listRoutines = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -1109,6 +1186,10 @@ public boolean deleteRoutineSkipExceptionTranslation(
Bigquery.Routines.Delete bqDeleteRequest =
bigquery.routines().delete(projectId, datasetId, routineId);
+ bqDeleteRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span deleteRoutine = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -1150,6 +1231,10 @@ public TableDataInsertAllResponse insertAllSkipExceptionTranslation(
.insertAll(projectId, datasetId, tableId, request)
.setPrettyPrint(false);
+ insertAllRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span insertAll = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -1197,6 +1282,10 @@ public TableDataList listTableDataSkipExceptionTranslation(
? BigInteger.valueOf(Option.START_INDEX.getLong(options))
: null);
+ bqListRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span listTableData = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -1251,6 +1340,10 @@ public TableDataList listTableDataWithRowLimitSkipExceptionTranslation(
.setMaxResults(Long.valueOf(maxResultPerPage))
.setPageToken(pageToken);
+ bqListRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span listTableData = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -1297,6 +1390,10 @@ public Job getJobSkipExceptionTranslation(
.setLocation(location)
.setFields(Option.FIELDS.getString(options));
+ bqGetRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span getJob = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -1340,6 +1437,10 @@ public Job getQueryJobSkipExceptionTranslation(String projectId, String jobId, S
Bigquery.Jobs.Get bqGetRequest =
bigquery.jobs().get(projectId, jobId).setPrettyPrint(false).setLocation(location);
+ bqGetRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span getJob = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -1375,7 +1476,7 @@ public Tuple> listJobs(String projectId, Map op
public Tuple> listJobsSkipExceptionTranslation(
String projectId, Map options) throws IOException {
validateRPC();
- Bigquery.Jobs.List request =
+ Bigquery.Jobs.List listJobsRequest =
bigquery
.jobs()
.list(projectId)
@@ -1388,11 +1489,16 @@ public Tuple> listJobsSkipExceptionTranslation(
.setProjection(DEFAULT_PROJECTION)
.setParentJobId(Option.PARENT_JOB_ID.getString(options));
if (Option.MIN_CREATION_TIME.getLong(options) != null) {
- request.setMinCreationTime(BigInteger.valueOf(Option.MIN_CREATION_TIME.getLong(options)));
+ listJobsRequest.setMinCreationTime(
+ BigInteger.valueOf(Option.MIN_CREATION_TIME.getLong(options)));
}
if (Option.MAX_CREATION_TIME.getLong(options) != null) {
- request.setMaxCreationTime(BigInteger.valueOf(Option.MAX_CREATION_TIME.getLong(options)));
+ listJobsRequest.setMaxCreationTime(
+ BigInteger.valueOf(Option.MAX_CREATION_TIME.getLong(options)));
}
+ listJobsRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
Span listJobs = null;
if (this.options.isOpenTelemetryTracingEnabled()
@@ -1405,11 +1511,11 @@ public Tuple> listJobsSkipExceptionTranslation(
.setAttribute("bq.rpc.service", "JobService")
.setAttribute("bq.rpc.method", "ListJobs")
.setAttribute("bq.rpc.system", "http")
- .setAttribute("bq.rpc.page_token", request.getPageToken())
+ .setAttribute("bq.rpc.page_token", listJobsRequest.getPageToken())
.setAllAttributes(otelAttributesFromOptions(options))
.startSpan();
}
- JobList jobsList = request.execute();
+ JobList jobsList = listJobsRequest.execute();
if (listJobs != null) {
listJobs.setAttribute("bq.rpc.next_page_token", jobsList.getNextPageToken());
listJobs.end();
@@ -1463,6 +1569,10 @@ public boolean cancelSkipExceptionTranslation(String projectId, String jobId, St
Bigquery.Jobs.Cancel bqCancelRequest =
bigquery.jobs().cancel(projectId, jobId).setLocation(location).setPrettyPrint(false);
+ bqCancelRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span cancelJob = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -1499,6 +1609,10 @@ public boolean deleteJobSkipExceptionTranslation(
Bigquery.Jobs.Delete bqDeleteRequest =
bigquery.jobs().delete(projectId, jobName).setLocation(location).setPrettyPrint(false);
+ bqDeleteRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span deleteJob = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -1547,6 +1661,10 @@ public GetQueryResultsResponse getQueryResultsSkipExceptionTranslation(
: null)
.setTimeoutMs(Option.TIMEOUT.getLong(options));
+ queryRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span getQueryResults = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -1595,6 +1713,10 @@ public GetQueryResultsResponse getQueryResultsWithRowLimitSkipExceptionTranslati
.setMaxResults(Long.valueOf(maxResultPerPage))
.setTimeoutMs(timeoutMs);
+ queryRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
+
Span getQueryResults = null;
if (this.options.isOpenTelemetryTracingEnabled()
&& this.options.getOpenTelemetryTracer() != null) {
@@ -1631,6 +1753,9 @@ public QueryResponse queryRpcSkipExceptionTranslation(String projectId, QueryReq
throws IOException {
validateRPC();
Bigquery.Jobs.Query queryRequest = bigquery.jobs().query(projectId, content);
+ queryRequest
+ .getRequestHeaders()
+ .set("x-goog-otel-enabled", this.options.isOpenTelemetryTracingEnabled());
Span getQueryResults = null;
if (this.options.isOpenTelemetryTracingEnabled()
@@ -1765,6 +1890,10 @@ public Policy getIamPolicySkipExceptionTranslation(String resourceId, Map
Date: Sat, 26 Jul 2025 05:55:22 +0200
Subject: [PATCH 27/50] deps: update dependency
io.opentelemetry:opentelemetry-api to v1.52.0 (#3902)
---
samples/install-without-bom/pom.xml | 2 +-
samples/snapshot/pom.xml | 2 +-
samples/snippets/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index 87a5670338..2254c0abd3 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -62,7 +62,7 @@
io.opentelemetry
opentelemetry-api
- 1.48.0
+ 1.52.0
io.opentelemetry
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index f2c96c00db..c434d4cddf 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -97,7 +97,7 @@
io.opentelemetry
opentelemetry-api
- 1.48.0
+ 1.52.0
io.opentelemetry
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index 2b5dfd4bcd..fbb512e1d4 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -69,7 +69,7 @@
io.opentelemetry
opentelemetry-api
- 1.48.0
+ 1.52.0
io.opentelemetry
From 509a6fc0bb7e7a101bf0d4334a3ff1adde2cab09 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Sun, 27 Jul 2025 08:17:13 +0200
Subject: [PATCH 28/50] deps: update dependency
io.opentelemetry:opentelemetry-bom to v1.52.0 (#3903)
---
samples/snapshot/pom.xml | 2 +-
samples/snippets/pom.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index c434d4cddf..9c1aaa6046 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -44,7 +44,7 @@
io.opentelemetry
opentelemetry-bom
- 1.48.0
+ 1.52.0
pom
import
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index fbb512e1d4..83c147eaee 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -54,7 +54,7 @@
io.opentelemetry
opentelemetry-bom
- 1.48.0
+ 1.52.0
pom
import
From 96c1bae0fcdfdfc2dbb25dcae5007c5d02111a8c Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Sun, 27 Jul 2025 08:37:54 +0200
Subject: [PATCH 29/50] deps: update dependency
io.opentelemetry:opentelemetry-context to v1.52.0 (#3904)
---
samples/install-without-bom/pom.xml | 2 +-
samples/snapshot/pom.xml | 2 +-
samples/snippets/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index 2254c0abd3..fd6756a02e 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -67,7 +67,7 @@
io.opentelemetry
opentelemetry-context
- 1.48.0
+ 1.52.0
io.opentelemetry
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 9c1aaa6046..e4e9e6684a 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -102,7 +102,7 @@
io.opentelemetry
opentelemetry-context
- 1.48.0
+ 1.52.0
io.opentelemetry
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index 83c147eaee..a8b96e44c7 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -74,7 +74,7 @@
io.opentelemetry
opentelemetry-context
- 1.48.0
+ 1.52.0
io.opentelemetry
From 28ee4c941b99b1fe3803aefbe7a8ae57100d76cb Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Sun, 27 Jul 2025 08:59:52 +0200
Subject: [PATCH 30/50] deps: update dependency
io.opentelemetry:opentelemetry-exporter-logging to v1.52.0 (#3905)
---
samples/install-without-bom/pom.xml | 2 +-
samples/snapshot/pom.xml | 2 +-
samples/snippets/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index fd6756a02e..4bc7f7a2b4 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -87,7 +87,7 @@
io.opentelemetry
opentelemetry-exporter-logging
- 1.48.0
+ 1.52.0
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index e4e9e6684a..7e2a08cab2 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -122,7 +122,7 @@
io.opentelemetry
opentelemetry-exporter-logging
- 1.48.0
+ 1.52.0
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index a8b96e44c7..da5d031b5a 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -94,7 +94,7 @@
io.opentelemetry
opentelemetry-exporter-logging
- 1.48.0
+ 1.52.0
From ae5c97146c7076e90c000fd98b797ec8e08a9cd8 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Mon, 28 Jul 2025 02:03:38 +0200
Subject: [PATCH 31/50] deps: update dependency
com.google.apis:google-api-services-bigquery to v2-rev20250706-2.0.0 (#3910)
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index e0e3aa024b..79a2629d01 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,7 +54,7 @@
UTF-8
github
google-cloud-bigquery-parent
- v2-rev20250615-2.0.0
+ v2-rev20250706-2.0.0
From e6453bf08cb822e820ffeb9ee3bd43cfcf2d4d15 Mon Sep 17 00:00:00 2001
From: Phong Chuong <147636638+PhongChuong@users.noreply.github.com>
Date: Wed, 30 Jul 2025 23:03:23 -0400
Subject: [PATCH 32/50] =?UTF-8?q?chore(samples):=20update=20sample=20open?=
=?UTF-8?q?=20telemetry=20dep=20to=20reduce=20#=20of=20renov=E2=80=A6=20(#?=
=?UTF-8?q?3911)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* chore(samples): update sample open telemetry dep to reduce # of renovate-bot PRs
* fix extra dep
---
samples/install-without-bom/pom.xml | 13 +++++++------
samples/snapshot/pom.xml | 6 ------
samples/snippets/pom.xml | 6 ------
3 files changed, 7 insertions(+), 18 deletions(-)
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index 4bc7f7a2b4..7cd683afd5 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -37,6 +37,7 @@
1.8
1.8
UTF-8
+ 1.52.0
@@ -62,32 +63,32 @@
io.opentelemetry
opentelemetry-api
- 1.52.0
+ ${opentelemetry.version}
io.opentelemetry
opentelemetry-context
- 1.52.0
+ ${opentelemetry.version}
io.opentelemetry
opentelemetry-sdk
- 1.48.0
+ ${opentelemetry.version}
io.opentelemetry
opentelemetry-sdk-common
- 1.48.0
+ ${opentelemetry.version}
io.opentelemetry
opentelemetry-sdk-trace
- 1.48.0
+ ${opentelemetry.version}
io.opentelemetry
opentelemetry-exporter-logging
- 1.52.0
+ ${opentelemetry.version}
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 7e2a08cab2..f94d4c4c13 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -97,32 +97,26 @@
io.opentelemetry
opentelemetry-api
- 1.52.0
io.opentelemetry
opentelemetry-context
- 1.52.0
io.opentelemetry
opentelemetry-sdk
- 1.48.0
io.opentelemetry
opentelemetry-sdk-common
- 1.48.0
io.opentelemetry
opentelemetry-sdk-trace
- 1.48.0
io.opentelemetry
opentelemetry-exporter-logging
- 1.52.0
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index da5d031b5a..d6f779c24a 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -69,32 +69,26 @@
io.opentelemetry
opentelemetry-api
- 1.52.0
io.opentelemetry
opentelemetry-context
- 1.52.0
io.opentelemetry
opentelemetry-sdk
- 1.48.0
io.opentelemetry
opentelemetry-sdk-common
- 1.48.0
io.opentelemetry
opentelemetry-sdk-trace
- 1.48.0
io.opentelemetry
opentelemetry-exporter-logging
- 1.52.0
From 82056237f194a6c99ec4fb3a4315023efdedff1b Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Thu, 31 Jul 2025 16:14:46 +0200
Subject: [PATCH 33/50] deps: update dependency
com.google.cloud:sdk-platform-java-config to v3.50.2 (#3901)
---
.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 1795d3b24a..6d5c25a0c1 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.50.1
+ uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.50.2
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 13d12ce348..bfe47cf7d5 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.50.1"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.50.2"
}
env_vars: {
diff --git a/.kokoro/continuous/graalvm-native-b.cfg b/.kokoro/continuous/graalvm-native-b.cfg
index 4696d04ef0..603c54174a 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.50.1"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.50.2"
}
env_vars: {
diff --git a/.kokoro/continuous/graalvm-native-c.cfg b/.kokoro/continuous/graalvm-native-c.cfg
index 26d39a747e..6b35d89de0 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.50.1"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.50.2"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-a.cfg b/.kokoro/presubmit/graalvm-native-a.cfg
index 13d12ce348..bfe47cf7d5 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.50.1"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.50.2"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-b.cfg b/.kokoro/presubmit/graalvm-native-b.cfg
index 4696d04ef0..603c54174a 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.50.1"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.50.2"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-c.cfg b/.kokoro/presubmit/graalvm-native-c.cfg
index 26d39a747e..6b35d89de0 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.50.1"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.50.2"
}
env_vars: {
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index c41c4c601c..90111de1a3 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.50.1
+ 3.50.2
diff --git a/pom.xml b/pom.xml
index 79a2629d01..7304158def 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,7 @@
com.google.cloud
sdk-platform-java-config
- 3.50.1
+ 3.50.2
From bb6f6dcb90b1ddf72e630c4dc64737cf2c2ebd2e Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Thu, 31 Jul 2025 17:32:25 +0200
Subject: [PATCH 34/50] chore(deps): update dependency
com.google.cloud:google-cloud-bigquerystorage-bom to v3.16.1 (#3912)
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 7304158def..e0d9c55509 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,7 +71,7 @@
com.google.cloud
google-cloud-bigquerystorage-bom
- 3.16.0
+ 3.16.1
pom
import
From 548f5b6bbb71f949ad4d1560ab28e72708e31919 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Thu, 31 Jul 2025 17:28:28 -0400
Subject: [PATCH 35/50] chore(main): release 2.54.0 (#3892)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
CHANGELOG.md | 19 +++++++++++++++++++
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, 28 insertions(+), 9 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9336a4195c..147b9c5893 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,24 @@
# Changelog
+## [2.54.0](https://github.com/googleapis/java-bigquery/compare/v2.53.0...v2.54.0) (2025-07-31)
+
+
+### Features
+
+* **bigquery:** Add OpenTelemetry Samples ([#3899](https://github.com/googleapis/java-bigquery/issues/3899)) ([e3d9ed9](https://github.com/googleapis/java-bigquery/commit/e3d9ed92ca5d9b58b5747960d74f895ed8733ebf))
+* **bigquery:** Add otel metrics to request headers ([#3900](https://github.com/googleapis/java-bigquery/issues/3900)) ([4071e4c](https://github.com/googleapis/java-bigquery/commit/4071e4cb2547b236183fd4fbb92c73f074cf2fa0))
+
+
+### Dependencies
+
+* Update dependency com.google.api.grpc:proto-google-cloud-bigqueryconnection-v1 to v2.70.0 ([#3890](https://github.com/googleapis/java-bigquery/issues/3890)) ([84207e2](https://github.com/googleapis/java-bigquery/commit/84207e297eec75bcb4f1cc1b64423d7c2ddd6c30))
+* Update dependency com.google.apis:google-api-services-bigquery to v2-rev20250706-2.0.0 ([#3910](https://github.com/googleapis/java-bigquery/issues/3910)) ([ae5c971](https://github.com/googleapis/java-bigquery/commit/ae5c97146c7076e90c000fd98b797ec8e08a9cd8))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.50.2 ([#3901](https://github.com/googleapis/java-bigquery/issues/3901)) ([8205623](https://github.com/googleapis/java-bigquery/commit/82056237f194a6c99ec4fb3a4315023efdedff1b))
+* Update dependency io.opentelemetry:opentelemetry-api to v1.52.0 ([#3902](https://github.com/googleapis/java-bigquery/issues/3902)) ([772407b](https://github.com/googleapis/java-bigquery/commit/772407b12f4da005f79eafc944d4c53f0eec5c27))
+* Update dependency io.opentelemetry:opentelemetry-bom to v1.52.0 ([#3903](https://github.com/googleapis/java-bigquery/issues/3903)) ([509a6fc](https://github.com/googleapis/java-bigquery/commit/509a6fc0bb7e7a101bf0d4334a3ff1adde2cab09))
+* Update dependency io.opentelemetry:opentelemetry-context to v1.52.0 ([#3904](https://github.com/googleapis/java-bigquery/issues/3904)) ([96c1bae](https://github.com/googleapis/java-bigquery/commit/96c1bae0fcdfdfc2dbb25dcae5007c5d02111a8c))
+* Update dependency io.opentelemetry:opentelemetry-exporter-logging to v1.52.0 ([#3905](https://github.com/googleapis/java-bigquery/issues/3905)) ([28ee4c9](https://github.com/googleapis/java-bigquery/commit/28ee4c941b99b1fe3803aefbe7a8ae57100d76cb))
+
## [2.53.0](https://github.com/googleapis/java-bigquery/compare/v2.52.0...v2.53.0) (2025-07-14)
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index 9352cc46f5..5f875493df 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -6,7 +6,7 @@
google-cloud-bigquery-parent
com.google.cloud
- 2.53.1-SNAPSHOT
+ 2.54.0
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index 90111de1a3..cefddd199b 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.53.1-SNAPSHOT
+ 2.54.0
pom
com.google.cloud
@@ -54,7 +54,7 @@
com.google.cloud
google-cloud-bigquery
- 2.53.1-SNAPSHOT
+ 2.54.0
diff --git a/google-cloud-bigquery/pom.xml b/google-cloud-bigquery/pom.xml
index b3f4461a08..058a06caa4 100644
--- a/google-cloud-bigquery/pom.xml
+++ b/google-cloud-bigquery/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.google.cloud
google-cloud-bigquery
- 2.53.1-SNAPSHOT
+ 2.54.0
jar
BigQuery
https://github.com/googleapis/java-bigquery
@@ -11,7 +11,7 @@
com.google.cloud
google-cloud-bigquery-parent
- 2.53.1-SNAPSHOT
+ 2.54.0
google-cloud-bigquery
diff --git a/pom.xml b/pom.xml
index e0d9c55509..534e91a49e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud
google-cloud-bigquery-parent
pom
- 2.53.1-SNAPSHOT
+ 2.54.0
BigQuery Parent
https://github.com/googleapis/java-bigquery
@@ -93,7 +93,7 @@
com.google.cloud
google-cloud-bigquery
- 2.53.1-SNAPSHOT
+ 2.54.0
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index f94d4c4c13..1860907149 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -56,7 +56,7 @@
com.google.cloud
google-cloud-bigquery
- 2.53.1-SNAPSHOT
+ 2.54.0
diff --git a/versions.txt b/versions.txt
index 73c78399ea..f0fee808c1 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,4 +1,4 @@
# Format:
# module:released-version:current-version
-google-cloud-bigquery:2.53.0:2.53.1-SNAPSHOT
\ No newline at end of file
+google-cloud-bigquery:2.54.0:2.54.0
\ No newline at end of file
From 3f61243a18dedd7884e46430c6f3f6815e921353 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Mon, 4 Aug 2025 04:36:10 -0400
Subject: [PATCH 36/50] chore(main): release 2.54.1-SNAPSHOT (#3919)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
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 +-
6 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index 5f875493df..9be2fa48f0 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -6,7 +6,7 @@
google-cloud-bigquery-parent
com.google.cloud
- 2.54.0
+ 2.54.1-SNAPSHOT
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index cefddd199b..c1fd66876c 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.54.0
+ 2.54.1-SNAPSHOT
pom
com.google.cloud
@@ -54,7 +54,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.0
+ 2.54.1-SNAPSHOT
diff --git a/google-cloud-bigquery/pom.xml b/google-cloud-bigquery/pom.xml
index 058a06caa4..6e226056ba 100644
--- a/google-cloud-bigquery/pom.xml
+++ b/google-cloud-bigquery/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.google.cloud
google-cloud-bigquery
- 2.54.0
+ 2.54.1-SNAPSHOT
jar
BigQuery
https://github.com/googleapis/java-bigquery
@@ -11,7 +11,7 @@
com.google.cloud
google-cloud-bigquery-parent
- 2.54.0
+ 2.54.1-SNAPSHOT
google-cloud-bigquery
diff --git a/pom.xml b/pom.xml
index 534e91a49e..06865dbbcc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud
google-cloud-bigquery-parent
pom
- 2.54.0
+ 2.54.1-SNAPSHOT
BigQuery Parent
https://github.com/googleapis/java-bigquery
@@ -93,7 +93,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.0
+ 2.54.1-SNAPSHOT
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 1860907149..ba8100b358 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -56,7 +56,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.0
+ 2.54.1-SNAPSHOT
diff --git a/versions.txt b/versions.txt
index f0fee808c1..38c5d02e9e 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,4 +1,4 @@
# Format:
# module:released-version:current-version
-google-cloud-bigquery:2.54.0:2.54.0
\ No newline at end of file
+google-cloud-bigquery:2.54.0:2.54.1-SNAPSHOT
\ No newline at end of file
From ecfabc4b70922d0e697699ec5508a7328cadacf8 Mon Sep 17 00:00:00 2001
From: Diego Marquez
Date: Tue, 12 Aug 2025 11:00:17 -0400
Subject: [PATCH 37/50] fix: adapt graalvm config to arrow update (#3928)
* fix: adapt graalvm config to arrow update
Fixes https://github.com/googleapis/java-bigquery/issues/3926
* fix: use right branch
* chore: include pom changes from debug branch, add more configs
---
google-cloud-bigquery/pom.xml | 33 +--------
.../google-cloud-bigquery/reflect-config.json | 67 ++++++++++++++++++-
.../resource-config.json | 26 ++++++-
3 files changed, 90 insertions(+), 36 deletions(-)
diff --git a/google-cloud-bigquery/pom.xml b/google-cloud-bigquery/pom.xml
index 6e226056ba..37acecdeb1 100644
--- a/google-cloud-bigquery/pom.xml
+++ b/google-cloud-bigquery/pom.xml
@@ -15,7 +15,6 @@
google-cloud-bigquery
- 4.1.119.Final
@@ -117,37 +116,6 @@
org.apache.arrow
arrow-memory-netty
-
-
-
- io.netty
- netty-common
-
-
- io.netty
- netty-buffer
-
-
- runtime
-
-
-
- io.netty
- netty-common
- ${netty.version}
- runtime
-
-
- io.netty
- netty-buffer
- ${netty.version}
- runtime
@@ -290,6 +258,7 @@
true
-J--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED
+ -J--add-opens=java.base/java.nio=java-base,ALL-UNNAMED
diff --git a/google-cloud-bigquery/src/main/resources/META-INF/native-image/com.google.cloud/google-cloud-bigquery/reflect-config.json b/google-cloud-bigquery/src/main/resources/META-INF/native-image/com.google.cloud/google-cloud-bigquery/reflect-config.json
index 8f6d928da4..921440df69 100644
--- a/google-cloud-bigquery/src/main/resources/META-INF/native-image/com.google.cloud/google-cloud-bigquery/reflect-config.json
+++ b/google-cloud-bigquery/src/main/resources/META-INF/native-image/com.google.cloud/google-cloud-bigquery/reflect-config.json
@@ -29,9 +29,62 @@
"name":"java.nio.DirectByteBuffer",
"methods":[{"name":"","parameterTypes":["long","int"] }]
},
+
+ {
+ "name":"org.apache.arrow.memory.BaseAllocator",
+ "allDeclaredFields":true,
+ "queryAllDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true
+ },
+ {
+ "name":"org.apache.arrow.memory.BaseAllocator$Config",
+ "allDeclaredFields":true,
+ "queryAllDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true
+ },
+ {
+ "name":"org.apache.arrow.memory.DefaultAllocationManagerOption",
+ "allDeclaredFields":true,
+ "queryAllDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true
+ },
+ {
+ "name":"org.apache.arrow.memory.netty.NettyAllocationManager$1",
+ "allDeclaredFields":true,
+ "queryAllDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true
+ },
+ {
+ "name":"org.apache.arrow.memory.netty.DefaultAllocationManagerFactory",
+ "allDeclaredFields":true,
+ "queryAllDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true
+ },
+ {
+ "name":"org.apache.arrow.memory.DefaultAllocationManagerFactory",
+ "allDeclaredFields":true,
+ "queryAllDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true
+ },
+ {
+ "name":"org.apache.arrow.memory.RootAllocator",
+ "allDeclaredFields":true,
+ "queryAllDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true
+ },
{
"name":"org.apache.arrow.memory.DefaultAllocationManagerFactory",
- "fields":[{"name":"FACTORY"}]
+ "allDeclaredFields":true,
+ "queryAllDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true
},
{
"name":"org.apache.arrow.vector.types.pojo.ArrowType",
@@ -50,6 +103,18 @@
"allDeclaredFields":true,
"queryAllDeclaredMethods":true
},
+ {
+ "name": "org.apache.arrow.vector.types.pojo.DictionaryEncoding",
+ "allDeclaredFields": true
+ },
+ {
+ "name": "org.apache.arrow.vector.types.pojo.Field",
+ "allDeclaredFields": true
+ },
+ {
+ "name": "org.apache.arrow.vector.types.pojo.Schema",
+ "allDeclaredFields": true
+ },
{
"name":"io.netty.buffer.AbstractReferenceCountedByteBuf",
"fields":[{"name":"refCnt"}]
diff --git a/google-cloud-bigquery/src/main/resources/META-INF/native-image/com.google.cloud/google-cloud-bigquery/resource-config.json b/google-cloud-bigquery/src/main/resources/META-INF/native-image/com.google.cloud/google-cloud-bigquery/resource-config.json
index dfdcc58c44..c4710244e2 100644
--- a/google-cloud-bigquery/src/main/resources/META-INF/native-image/com.google.cloud/google-cloud-bigquery/resource-config.json
+++ b/google-cloud-bigquery/src/main/resources/META-INF/native-image/com.google.cloud/google-cloud-bigquery/resource-config.json
@@ -1,6 +1,26 @@
{
"resources":{
- "includes":[{
- "pattern":"\\Qorg/apache/arrow/memory/DefaultAllocationManagerFactory.class\\E"
- }]}
+ "includes":[
+ {
+ "pattern":"\\Qorg/apache/arrow/memory/DefaultAllocationManagerFactory.class\\E"
+ },
+ {
+ "pattern":"\\Qorg/apache/arrow/memory/netty/DefaultAllocationManagerFactory.class\\E"
+ },
+ {
+ "pattern":"\\Qorg/apache/arrow/memory/unsafe/DefaultAllocationManagerFactory.class\\E"
+ }
+ ]
+ },
+ "globs":[
+ {
+ "glob": "org/apache/arrow/memory/DefaultAllocationManagerFactory.class"
+ },
+ {
+ "glob": "org/apache/arrow/memory/netty/DefaultAllocationManagerFactory.class"
+ },
+ {
+ "glob": "org/apache/arrow/memory/unsafe/DefaultAllocationManagerFactory.class"
+ }
+ ]
}
\ No newline at end of file
From cb66be596d1bfd0a5aed75f5a0e36d80269c7f6a Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Tue, 12 Aug 2025 21:54:08 +0200
Subject: [PATCH 38/50] deps: update dependency
com.google.cloud:sdk-platform-java-config to v3.51.0 (#3924)
---
.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 6d5c25a0c1..ffcf6b858c 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.50.2
+ uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.51.0
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 bfe47cf7d5..cba960973a 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.50.2"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.51.0"
}
env_vars: {
diff --git a/.kokoro/continuous/graalvm-native-b.cfg b/.kokoro/continuous/graalvm-native-b.cfg
index 603c54174a..7ab09090f2 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.50.2"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.51.0"
}
env_vars: {
diff --git a/.kokoro/continuous/graalvm-native-c.cfg b/.kokoro/continuous/graalvm-native-c.cfg
index 6b35d89de0..b8251a3f45 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.50.2"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.51.0"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-a.cfg b/.kokoro/presubmit/graalvm-native-a.cfg
index bfe47cf7d5..cba960973a 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.50.2"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.51.0"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-b.cfg b/.kokoro/presubmit/graalvm-native-b.cfg
index 603c54174a..7ab09090f2 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.50.2"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.51.0"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-c.cfg b/.kokoro/presubmit/graalvm-native-c.cfg
index 6b35d89de0..b8251a3f45 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.50.2"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.51.0"
}
env_vars: {
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index c1fd66876c..f18650f6cf 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.50.2
+ 3.51.0
diff --git a/pom.xml b/pom.xml
index 06865dbbcc..bf4f955fd4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,7 @@
com.google.cloud
sdk-platform-java-config
- 3.50.2
+ 3.51.0
From a3bd7e62bd305a7f4a76991e9ddd9a1a6847ca83 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Wed, 13 Aug 2025 15:55:49 +0200
Subject: [PATCH 39/50] chore(deps): update dependency
com.google.cloud:google-cloud-bigquerystorage-bom to v3.16.2 (#3927)
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index bf4f955fd4..d8d122680f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,7 +71,7 @@
com.google.cloud
google-cloud-bigquerystorage-bom
- 3.16.1
+ 3.16.2
pom
import
From 3fc065905a84c360ded2888ff5878e40a6c5c69c Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Wed, 13 Aug 2025 11:51:46 -0400
Subject: [PATCH 40/50] chore(main): release 2.54.1 (#3929)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
CHANGELOG.md | 12 ++++++++++++
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, 21 insertions(+), 9 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 147b9c5893..c0dde06f85 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,17 @@
# Changelog
+## [2.54.1](https://github.com/googleapis/java-bigquery/compare/v2.54.0...v2.54.1) (2025-08-13)
+
+
+### Bug Fixes
+
+* Adapt graalvm config to arrow update ([#3928](https://github.com/googleapis/java-bigquery/issues/3928)) ([ecfabc4](https://github.com/googleapis/java-bigquery/commit/ecfabc4b70922d0e697699ec5508a7328cadacf8))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.51.0 ([#3924](https://github.com/googleapis/java-bigquery/issues/3924)) ([cb66be5](https://github.com/googleapis/java-bigquery/commit/cb66be596d1bfd0a5aed75f5a0e36d80269c7f6a))
+
## [2.54.0](https://github.com/googleapis/java-bigquery/compare/v2.53.0...v2.54.0) (2025-07-31)
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index 9be2fa48f0..fa01ad010c 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -6,7 +6,7 @@
google-cloud-bigquery-parent
com.google.cloud
- 2.54.1-SNAPSHOT
+ 2.54.1
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index f18650f6cf..069d6dabd7 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.54.1-SNAPSHOT
+ 2.54.1
pom
com.google.cloud
@@ -54,7 +54,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.1-SNAPSHOT
+ 2.54.1
diff --git a/google-cloud-bigquery/pom.xml b/google-cloud-bigquery/pom.xml
index 37acecdeb1..465840c788 100644
--- a/google-cloud-bigquery/pom.xml
+++ b/google-cloud-bigquery/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.google.cloud
google-cloud-bigquery
- 2.54.1-SNAPSHOT
+ 2.54.1
jar
BigQuery
https://github.com/googleapis/java-bigquery
@@ -11,7 +11,7 @@
com.google.cloud
google-cloud-bigquery-parent
- 2.54.1-SNAPSHOT
+ 2.54.1
google-cloud-bigquery
diff --git a/pom.xml b/pom.xml
index d8d122680f..254aaa6596 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud
google-cloud-bigquery-parent
pom
- 2.54.1-SNAPSHOT
+ 2.54.1
BigQuery Parent
https://github.com/googleapis/java-bigquery
@@ -93,7 +93,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.1-SNAPSHOT
+ 2.54.1
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index ba8100b358..25cac93085 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -56,7 +56,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.1-SNAPSHOT
+ 2.54.1
diff --git a/versions.txt b/versions.txt
index 38c5d02e9e..de9cc8f315 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,4 +1,4 @@
# Format:
# module:released-version:current-version
-google-cloud-bigquery:2.54.0:2.54.1-SNAPSHOT
\ No newline at end of file
+google-cloud-bigquery:2.54.1:2.54.1
\ No newline at end of file
From 794bf83e84efc0712638bebde5158777b9c89397 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Wed, 20 Aug 2025 19:21:22 +0200
Subject: [PATCH 41/50] deps: update dependency
com.google.cloud:sdk-platform-java-config to v3.52.0 (#3939)
---
.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 ffcf6b858c..47fc0ec712 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.51.0
+ uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.52.0
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 cba960973a..c6dbbdc522 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.51.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.52.0"
}
env_vars: {
diff --git a/.kokoro/continuous/graalvm-native-b.cfg b/.kokoro/continuous/graalvm-native-b.cfg
index 7ab09090f2..6c66c8d835 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.51.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.52.0"
}
env_vars: {
diff --git a/.kokoro/continuous/graalvm-native-c.cfg b/.kokoro/continuous/graalvm-native-c.cfg
index b8251a3f45..2a4f45eaef 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.51.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.52.0"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-a.cfg b/.kokoro/presubmit/graalvm-native-a.cfg
index cba960973a..c6dbbdc522 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.51.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.52.0"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-b.cfg b/.kokoro/presubmit/graalvm-native-b.cfg
index 7ab09090f2..6c66c8d835 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.51.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.52.0"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-c.cfg b/.kokoro/presubmit/graalvm-native-c.cfg
index b8251a3f45..2a4f45eaef 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.51.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.52.0"
}
env_vars: {
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index 069d6dabd7..52ae5ac82a 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.51.0
+ 3.52.0
diff --git a/pom.xml b/pom.xml
index 254aaa6596..aa95f5a0ff 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,7 @@
com.google.cloud
sdk-platform-java-config
- 3.51.0
+ 3.52.0
From 672148a9e957ca48cd2c58f3468e1e037a7cf3f3 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Wed, 20 Aug 2025 13:21:37 -0400
Subject: [PATCH 42/50] chore(main): release 2.54.2-SNAPSHOT (#3936)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
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 +-
6 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index fa01ad010c..30f7bc5d67 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -6,7 +6,7 @@
google-cloud-bigquery-parent
com.google.cloud
- 2.54.1
+ 2.54.2-SNAPSHOT
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index 52ae5ac82a..484f252ab2 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.54.1
+ 2.54.2-SNAPSHOT
pom
com.google.cloud
@@ -54,7 +54,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.1
+ 2.54.2-SNAPSHOT
diff --git a/google-cloud-bigquery/pom.xml b/google-cloud-bigquery/pom.xml
index 465840c788..4d4b915f27 100644
--- a/google-cloud-bigquery/pom.xml
+++ b/google-cloud-bigquery/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.google.cloud
google-cloud-bigquery
- 2.54.1
+ 2.54.2-SNAPSHOT
jar
BigQuery
https://github.com/googleapis/java-bigquery
@@ -11,7 +11,7 @@
com.google.cloud
google-cloud-bigquery-parent
- 2.54.1
+ 2.54.2-SNAPSHOT
google-cloud-bigquery
diff --git a/pom.xml b/pom.xml
index aa95f5a0ff..df3dcd5974 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud
google-cloud-bigquery-parent
pom
- 2.54.1
+ 2.54.2-SNAPSHOT
BigQuery Parent
https://github.com/googleapis/java-bigquery
@@ -93,7 +93,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.1
+ 2.54.2-SNAPSHOT
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 25cac93085..2bcb0ec49f 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -56,7 +56,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.1
+ 2.54.2-SNAPSHOT
diff --git a/versions.txt b/versions.txt
index de9cc8f315..9853ed2570 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,4 +1,4 @@
# Format:
# module:released-version:current-version
-google-cloud-bigquery:2.54.1:2.54.1
\ No newline at end of file
+google-cloud-bigquery:2.54.1:2.54.2-SNAPSHOT
\ No newline at end of file
From 0e3753720e5143124c03e7980f2dbd93fd83a712 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Mon, 25 Aug 2025 15:43:42 +0200
Subject: [PATCH 43/50] chore(deps): update google cloud java monorepo updates
(#3915)
---
pom.xml | 4 ++--
samples/install-without-bom/pom.xml | 2 +-
samples/snapshot/pom.xml | 2 +-
samples/snippets/pom.xml | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/pom.xml b/pom.xml
index df3dcd5974..dfeedd974c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -79,7 +79,7 @@
com.google.cloud
google-cloud-datacatalog-bom
- 1.74.0
+ 1.78.0
pom
import
@@ -143,7 +143,7 @@
com.google.cloud
google-cloud-bigqueryconnection
- 2.70.0
+ 2.74.0
test
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index 7cd683afd5..cfcf9c503f 100644
--- a/samples/install-without-bom/pom.xml
+++ b/samples/install-without-bom/pom.xml
@@ -101,7 +101,7 @@
com.google.cloud
google-cloud-bigqueryconnection
- 2.70.0
+ 2.74.0
test
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 2bcb0ec49f..c6fa4062c0 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -79,7 +79,7 @@
com.google.cloud
google-cloud-bigqueryconnection
- 2.70.0
+ 2.74.0
test
diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml
index d6f779c24a..d6cbcca5d1 100644
--- a/samples/snippets/pom.xml
+++ b/samples/snippets/pom.xml
@@ -116,7 +116,7 @@
com.google.cloud
google-cloud-bigqueryconnection
- 2.70.0
+ 2.74.0
test
From 1a95417f769866d74ece50cbf3ac073f486d3fec Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Tue, 26 Aug 2025 22:29:03 +0200
Subject: [PATCH 44/50] chore(deps): update dependency
com.google.cloud:google-cloud-bigquerystorage-bom to v3.16.3 (#3943)
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index dfeedd974c..d7ceac18a3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,7 +71,7 @@
com.google.cloud
google-cloud-bigquerystorage-bom
- 3.16.2
+ 3.16.3
pom
import
From 7fce4274490de07b440d851c94c6188b30a6dc10 Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Tue, 26 Aug 2025 22:10:23 -0400
Subject: [PATCH 45/50] chore(main): release 2.54.2 (#3940)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
CHANGELOG.md | 7 +++++++
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, 16 insertions(+), 9 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c0dde06f85..27dae85f7c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## [2.54.2](https://github.com/googleapis/java-bigquery/compare/v2.54.1...v2.54.2) (2025-08-26)
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.52.0 ([#3939](https://github.com/googleapis/java-bigquery/issues/3939)) ([794bf83](https://github.com/googleapis/java-bigquery/commit/794bf83e84efc0712638bebde5158777b9c89397))
+
## [2.54.1](https://github.com/googleapis/java-bigquery/compare/v2.54.0...v2.54.1) (2025-08-13)
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index 30f7bc5d67..ac28abddf6 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -6,7 +6,7 @@
google-cloud-bigquery-parent
com.google.cloud
- 2.54.2-SNAPSHOT
+ 2.54.2
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index 484f252ab2..cabb84cb3f 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.54.2-SNAPSHOT
+ 2.54.2
pom
com.google.cloud
@@ -54,7 +54,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.2-SNAPSHOT
+ 2.54.2
diff --git a/google-cloud-bigquery/pom.xml b/google-cloud-bigquery/pom.xml
index 4d4b915f27..db8db1ad71 100644
--- a/google-cloud-bigquery/pom.xml
+++ b/google-cloud-bigquery/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.google.cloud
google-cloud-bigquery
- 2.54.2-SNAPSHOT
+ 2.54.2
jar
BigQuery
https://github.com/googleapis/java-bigquery
@@ -11,7 +11,7 @@
com.google.cloud
google-cloud-bigquery-parent
- 2.54.2-SNAPSHOT
+ 2.54.2
google-cloud-bigquery
diff --git a/pom.xml b/pom.xml
index d7ceac18a3..06fa45550b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud
google-cloud-bigquery-parent
pom
- 2.54.2-SNAPSHOT
+ 2.54.2
BigQuery Parent
https://github.com/googleapis/java-bigquery
@@ -93,7 +93,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.2-SNAPSHOT
+ 2.54.2
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index c6fa4062c0..2290d681e5 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -56,7 +56,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.2-SNAPSHOT
+ 2.54.2
diff --git a/versions.txt b/versions.txt
index 9853ed2570..e5014dcc5c 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,4 +1,4 @@
# Format:
# module:released-version:current-version
-google-cloud-bigquery:2.54.1:2.54.2-SNAPSHOT
\ No newline at end of file
+google-cloud-bigquery:2.54.2:2.54.2
\ No newline at end of file
From de0914ddbccf988294d50faf56a515e58ab3505d Mon Sep 17 00:00:00 2001
From: Liam Huffman <44932470+whuffman36@users.noreply.github.com>
Date: Fri, 29 Aug 2025 09:40:30 -0700
Subject: [PATCH 46/50] feat(bigquery): Add custom ExceptionHandler to
BigQueryOptions (#3937)
* feat(bigquery): Add custom ExceptionHandler to BigQueryOptions
* add default project id to tests
* Add dummy project id to tests
* Remove defaultInstance() from test
* add option to specify retry algo instead of just abortOn/retryOn
* fix formatting
* remove custom exception handler from bq options
---
.../cloud/bigquery/BigQueryBaseService.java | 2 +-
.../google/cloud/bigquery/BigQueryImpl.java | 62 ++++++-------
.../cloud/bigquery/BigQueryOptions.java | 17 ++++
.../google/cloud/bigquery/ConnectionImpl.java | 12 +--
.../cloud/bigquery/TableDataWriteChannel.java | 4 +-
.../cloud/bigquery/BigQueryExceptionTest.java | 91 +++++++++++++++++++
6 files changed, 148 insertions(+), 40 deletions(-)
diff --git a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryBaseService.java b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryBaseService.java
index 9760158735..bdcefb3d96 100644
--- a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryBaseService.java
+++ b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryBaseService.java
@@ -26,7 +26,7 @@ protected BigQueryBaseService(ServiceOptions options) {
super(options);
}
- public static final ExceptionHandler BIGQUERY_EXCEPTION_HANDLER =
+ public static final ExceptionHandler DEFAULT_BIGQUERY_EXCEPTION_HANDLER =
ExceptionHandler.newBuilder()
.abortOn(RuntimeException.class)
.retryOn(java.net.ConnectException.class) // retry on Connection Exception
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 a32a600c3f..088d15c09c 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
@@ -293,7 +293,7 @@ public com.google.api.services.bigquery.model.Dataset call() throws IOException
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -340,7 +340,7 @@ public com.google.api.services.bigquery.model.Table call() throws IOException {
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -396,7 +396,7 @@ public com.google.api.services.bigquery.model.Routine call() throws IOException
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -490,7 +490,7 @@ public com.google.api.services.bigquery.model.Job call() throws IOException {
? RetryOption.mergeToSettings(
getOptions().getRetrySettings(), getRetryOptions(optionsMap))
: getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
getBigQueryRetryConfig(optionsMap) != null
? getBigQueryRetryConfig(optionsMap)
@@ -586,7 +586,7 @@ public com.google.api.services.bigquery.model.Dataset call() throws IOException
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -652,7 +652,7 @@ private static Page listDatasets(
}
},
serviceOptions.getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ serviceOptions.getResultRetryAlgorithm(),
serviceOptions.getClock(),
EMPTY_RETRY_CONFIG,
serviceOptions.isOpenTelemetryTracingEnabled(),
@@ -704,7 +704,7 @@ public Boolean call() throws IOException {
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -755,7 +755,7 @@ public Boolean call() throws IOException {
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -801,7 +801,7 @@ public Boolean call() throws IOException {
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -847,7 +847,7 @@ public Boolean call() throws IOException {
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -891,7 +891,7 @@ public Boolean call() throws IOException {
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -932,7 +932,7 @@ public com.google.api.services.bigquery.model.Dataset call() throws IOException
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -979,7 +979,7 @@ public com.google.api.services.bigquery.model.Table call() throws IOException {
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -1025,7 +1025,7 @@ public com.google.api.services.bigquery.model.Model call() throws IOException {
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -1071,7 +1071,7 @@ public com.google.api.services.bigquery.model.Routine call() throws IOException
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -1125,7 +1125,7 @@ public com.google.api.services.bigquery.model.Table call() throws IOException {
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -1184,7 +1184,7 @@ public com.google.api.services.bigquery.model.Model call() throws IOException {
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -1243,7 +1243,7 @@ public com.google.api.services.bigquery.model.Routine call() throws IOException
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -1461,7 +1461,7 @@ public Tuple> cal
}
},
serviceOptions.getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ serviceOptions.getResultRetryAlgorithm(),
serviceOptions.getClock(),
EMPTY_RETRY_CONFIG,
serviceOptions.isOpenTelemetryTracingEnabled(),
@@ -1502,7 +1502,7 @@ public Tuple> cal
}
},
serviceOptions.getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ serviceOptions.getResultRetryAlgorithm(),
serviceOptions.getClock(),
EMPTY_RETRY_CONFIG,
serviceOptions.isOpenTelemetryTracingEnabled(),
@@ -1543,7 +1543,7 @@ private static Page listRoutines(
}
},
serviceOptions.getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ serviceOptions.getResultRetryAlgorithm(),
serviceOptions.getClock(),
EMPTY_RETRY_CONFIG,
serviceOptions.isOpenTelemetryTracingEnabled(),
@@ -1625,7 +1625,7 @@ public TableDataInsertAllResponse call() throws Exception {
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -1719,7 +1719,7 @@ public TableDataList call() throws IOException {
}
},
serviceOptions.getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ serviceOptions.getResultRetryAlgorithm(),
serviceOptions.getClock(),
EMPTY_RETRY_CONFIG,
serviceOptions.isOpenTelemetryTracingEnabled(),
@@ -1793,7 +1793,7 @@ public com.google.api.services.bigquery.model.Job call() throws IOException {
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -1850,7 +1850,7 @@ public Tuple> call(
}
},
serviceOptions.getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ serviceOptions.getResultRetryAlgorithm(),
serviceOptions.getClock(),
EMPTY_RETRY_CONFIG,
serviceOptions.isOpenTelemetryTracingEnabled(),
@@ -1905,7 +1905,7 @@ public Boolean call() throws IOException {
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -1992,7 +1992,7 @@ public com.google.api.services.bigquery.model.QueryResponse call()
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
DEFAULT_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -2169,7 +2169,7 @@ public GetQueryResultsResponse call() throws IOException {
}
},
serviceOptions.getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ serviceOptions.getResultRetryAlgorithm(),
serviceOptions.getClock(),
DEFAULT_RETRY_CONFIG,
serviceOptions.isOpenTelemetryTracingEnabled(),
@@ -2240,7 +2240,7 @@ public com.google.api.services.bigquery.model.Policy call() throws IOException {
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -2286,7 +2286,7 @@ public com.google.api.services.bigquery.model.Policy call() throws IOException {
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -2334,7 +2334,7 @@ public com.google.api.services.bigquery.model.TestIamPermissionsResponse call()
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
diff --git a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryOptions.java b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryOptions.java
index 36eeb20869..7adb58d3a2 100644
--- a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryOptions.java
+++ b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryOptions.java
@@ -17,6 +17,7 @@
package com.google.cloud.bigquery;
import com.google.api.core.BetaApi;
+import com.google.api.gax.retrying.ResultRetryAlgorithm;
import com.google.cloud.ServiceDefaults;
import com.google.cloud.ServiceOptions;
import com.google.cloud.ServiceRpc;
@@ -43,6 +44,7 @@ public class BigQueryOptions extends ServiceOptions {
private JobCreationMode defaultJobCreationMode = JobCreationMode.JOB_CREATION_MODE_UNSPECIFIED;
private boolean enableOpenTelemetryTracing;
private Tracer openTelemetryTracer;
+ private ResultRetryAlgorithm> resultRetryAlgorithm;
public static class DefaultBigQueryFactory implements BigQueryFactory {
@@ -70,6 +72,7 @@ public static class Builder extends ServiceOptions.Builder resultRetryAlgorithm;
private Builder() {}
@@ -118,6 +121,11 @@ public Builder setOpenTelemetryTracer(Tracer tracer) {
return this;
}
+ public Builder setResultRetryAlgorithm(ResultRetryAlgorithm> resultRetryAlgorithm) {
+ this.resultRetryAlgorithm = resultRetryAlgorithm;
+ return this;
+ }
+
@Override
public BigQueryOptions build() {
return new BigQueryOptions(this);
@@ -130,6 +138,11 @@ private BigQueryOptions(Builder builder) {
this.useInt64Timestamps = builder.useInt64Timestamps;
this.enableOpenTelemetryTracing = builder.enableOpenTelemetryTracing;
this.openTelemetryTracer = builder.openTelemetryTracer;
+ if (builder.resultRetryAlgorithm != null) {
+ this.resultRetryAlgorithm = builder.resultRetryAlgorithm;
+ } else {
+ this.resultRetryAlgorithm = BigQueryBaseService.DEFAULT_BIGQUERY_EXCEPTION_HANDLER;
+ }
}
private static class BigQueryDefaults implements ServiceDefaults {
@@ -221,6 +234,10 @@ public Tracer getOpenTelemetryTracer() {
return openTelemetryTracer;
}
+ public ResultRetryAlgorithm> getResultRetryAlgorithm() {
+ return resultRetryAlgorithm;
+ }
+
@SuppressWarnings("unchecked")
@Override
public Builder toBuilder() {
diff --git a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/ConnectionImpl.java b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/ConnectionImpl.java
index b12ad85564..c3465c33a8 100644
--- a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/ConnectionImpl.java
+++ b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/ConnectionImpl.java
@@ -474,7 +474,7 @@ private BigQueryResult queryRpc(
.getBigQueryRpcV2()
.queryRpcSkipExceptionTranslation(projectId, queryRequest),
bigQueryOptions.getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ bigQueryOptions.getResultRetryAlgorithm(),
bigQueryOptions.getClock(),
retryConfig,
false,
@@ -932,7 +932,7 @@ private Job getQueryJobRpc(JobId jobId) {
completeJobId.getJob(),
completeJobId.getLocation()),
bigQueryOptions.getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ bigQueryOptions.getResultRetryAlgorithm(),
bigQueryOptions.getClock(),
EMPTY_RETRY_CONFIG,
false,
@@ -979,7 +979,7 @@ TableDataList tableDataListRpc(TableId destinationTable, String pageToken) {
connectionSettings.getMaxResultPerPage(),
pageToken),
bigQueryOptions.getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ bigQueryOptions.getResultRetryAlgorithm(),
bigQueryOptions.getClock(),
EMPTY_RETRY_CONFIG,
false,
@@ -1212,7 +1212,7 @@ GetQueryResultsResponse getQueryResultsFirstPage(JobId jobId) {
connectionSettings.getMaxResultPerPage(),
timeoutMs),
bigQueryOptions.getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ bigQueryOptions.getResultRetryAlgorithm(),
bigQueryOptions.getClock(),
retryConfig,
false,
@@ -1477,7 +1477,7 @@ com.google.api.services.bigquery.model.Job createQueryJob(
.getBigQueryRpcV2()
.createJobForQuerySkipExceptionTranslation(jobPb),
bigQueryOptions.getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ bigQueryOptions.getResultRetryAlgorithm(),
bigQueryOptions.getClock(),
retryConfig,
false,
@@ -1522,7 +1522,7 @@ com.google.api.services.bigquery.model.Job createDryRunJob(String sql) {
.getBigQueryRpcV2()
.createJobForQuerySkipExceptionTranslation(jobPb),
bigQueryOptions.getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ bigQueryOptions.getResultRetryAlgorithm(),
bigQueryOptions.getClock(),
retryConfig,
false,
diff --git a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/TableDataWriteChannel.java b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/TableDataWriteChannel.java
index cc64ec72f5..dde4c08187 100644
--- a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/TableDataWriteChannel.java
+++ b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/TableDataWriteChannel.java
@@ -77,7 +77,7 @@ public com.google.api.services.bigquery.model.Job call() throws IOException {
}
},
getOptions().getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ getOptions().getResultRetryAlgorithm(),
getOptions().getClock(),
EMPTY_RETRY_CONFIG,
getOptions().isOpenTelemetryTracingEnabled(),
@@ -126,7 +126,7 @@ public String call() throws IOException {
}
},
options.getRetrySettings(),
- BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
+ options.getResultRetryAlgorithm(),
options.getClock(),
EMPTY_RETRY_CONFIG,
options.isOpenTelemetryTracingEnabled(),
diff --git a/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryExceptionTest.java b/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryExceptionTest.java
index 41915e2834..8a2094b558 100644
--- a/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryExceptionTest.java
+++ b/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryExceptionTest.java
@@ -21,7 +21,10 @@
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -29,9 +32,14 @@
import com.google.api.client.http.HttpHeaders;
import com.google.api.client.http.HttpResponseException;
import com.google.cloud.BaseServiceException;
+import com.google.cloud.ExceptionHandler;
import com.google.cloud.RetryHelper.RetryHelperException;
+import com.google.cloud.bigquery.spi.v2.BigQueryRpc;
+import com.google.cloud.bigquery.spi.v2.HttpBigQueryRpc;
import java.io.IOException;
import java.net.SocketTimeoutException;
+import java.util.HashMap;
+import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
@@ -158,4 +166,87 @@ public void testTranslateAndThrow() throws Exception {
verify(exceptionMock, times(2)).getCause();
}
}
+
+ @Test
+ public void testDefaultExceptionHandler() throws java.io.IOException {
+ BigQueryOptions defaultOptions =
+ BigQueryOptions.newBuilder().setProjectId("project-id").build();
+ DatasetInfo info = DatasetInfo.newBuilder("dataset").build();
+ Dataset dataset = null;
+
+ final com.google.api.services.bigquery.model.Dataset datasetPb =
+ info.setProjectId(defaultOptions.getProjectId()).toPb();
+ final Map optionsMap = new HashMap<>();
+
+ BigQueryOptions mockOptions = spy(defaultOptions);
+ HttpBigQueryRpc bigQueryRpcMock = mock(HttpBigQueryRpc.class);
+ doReturn(bigQueryRpcMock).when(mockOptions).getBigQueryRpcV2();
+ // java.net.SocketException is retry-able in the default exception handler.
+ doThrow(java.net.SocketException.class)
+ .when(bigQueryRpcMock)
+ .createSkipExceptionTranslation(datasetPb, optionsMap);
+
+ BigQuery bigquery = mockOptions.getService();
+ try {
+ dataset = bigquery.create(info);
+ } catch (BigQueryException e) {
+ assertEquals(e.getCause().getClass(), java.net.SocketException.class);
+ assertNull(dataset);
+ } finally {
+ verify(bigQueryRpcMock, times(6)).createSkipExceptionTranslation(datasetPb, optionsMap);
+ }
+ }
+
+ @Test
+ public void testCustomExceptionHandler() throws java.io.IOException {
+ BigQueryOptions defaultOptions =
+ BigQueryOptions.newBuilder()
+ .setProjectId("project-id")
+ .setResultRetryAlgorithm(
+ ExceptionHandler.newBuilder()
+ .abortOn(RuntimeException.class)
+ .retryOn(java.util.EmptyStackException.class)
+ .addInterceptors(BigQueryBaseService.EXCEPTION_HANDLER_INTERCEPTOR)
+ .build())
+ .build();
+ DatasetInfo info = DatasetInfo.newBuilder("dataset").build();
+ Dataset dataset = null;
+
+ final com.google.api.services.bigquery.model.Dataset datasetPb =
+ info.setProjectId(defaultOptions.getProjectId()).toPb();
+ final Map optionsMap = new HashMap<>();
+
+ BigQueryOptions mockOptions = spy(defaultOptions);
+ HttpBigQueryRpc bigQueryRpcRetryMock = mock(HttpBigQueryRpc.class);
+ doReturn(bigQueryRpcRetryMock).when(mockOptions).getBigQueryRpcV2();
+ doThrow(java.util.EmptyStackException.class)
+ .when(bigQueryRpcRetryMock)
+ .createSkipExceptionTranslation(datasetPb, optionsMap);
+
+ BigQuery bigquery = mockOptions.getService();
+ try {
+ dataset = bigquery.create(info);
+ } catch (BigQueryException e) {
+ assertEquals(e.getCause().getClass(), java.util.EmptyStackException.class);
+ assertNull(dataset);
+ } finally {
+ verify(bigQueryRpcRetryMock, times(6)).createSkipExceptionTranslation(datasetPb, optionsMap);
+ }
+
+ BigQueryOptions mockOptionsAbort = spy(defaultOptions);
+ HttpBigQueryRpc bigQueryRpcAbortMock = mock(HttpBigQueryRpc.class);
+ doReturn(bigQueryRpcAbortMock).when(mockOptionsAbort).getBigQueryRpcV2();
+ doThrow(RuntimeException.class)
+ .when(bigQueryRpcAbortMock)
+ .createSkipExceptionTranslation(datasetPb, optionsMap);
+ bigquery = mockOptionsAbort.getService();
+ try {
+ dataset = bigquery.create(info);
+ } catch (BigQueryException e) {
+ assertEquals(e.getCause().getClass(), RuntimeException.class);
+ assertNull(dataset);
+ } finally {
+ verify(bigQueryRpcAbortMock, times(1)).createSkipExceptionTranslation(datasetPb, optionsMap);
+ }
+ }
}
From 93bf58239f2a12438ba26c7ea9994093cd8879fc Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Tue, 2 Sep 2025 09:57:44 -0400
Subject: [PATCH 47/50] chore(main): release 2.54.3-SNAPSHOT (#3944)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
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 +-
6 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index ac28abddf6..9d6c1a3c52 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -6,7 +6,7 @@
google-cloud-bigquery-parent
com.google.cloud
- 2.54.2
+ 2.54.3-SNAPSHOT
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index cabb84cb3f..b25fdd32f7 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.54.2
+ 2.54.3-SNAPSHOT
pom
com.google.cloud
@@ -54,7 +54,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.2
+ 2.54.3-SNAPSHOT
diff --git a/google-cloud-bigquery/pom.xml b/google-cloud-bigquery/pom.xml
index db8db1ad71..f9ed181959 100644
--- a/google-cloud-bigquery/pom.xml
+++ b/google-cloud-bigquery/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.google.cloud
google-cloud-bigquery
- 2.54.2
+ 2.54.3-SNAPSHOT
jar
BigQuery
https://github.com/googleapis/java-bigquery
@@ -11,7 +11,7 @@
com.google.cloud
google-cloud-bigquery-parent
- 2.54.2
+ 2.54.3-SNAPSHOT
google-cloud-bigquery
diff --git a/pom.xml b/pom.xml
index 06fa45550b..eaf574eb59 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud
google-cloud-bigquery-parent
pom
- 2.54.2
+ 2.54.3-SNAPSHOT
BigQuery Parent
https://github.com/googleapis/java-bigquery
@@ -93,7 +93,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.2
+ 2.54.3-SNAPSHOT
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 2290d681e5..575118ca8d 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -56,7 +56,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.2
+ 2.54.3-SNAPSHOT
diff --git a/versions.txt b/versions.txt
index e5014dcc5c..0dd584253f 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,4 +1,4 @@
# Format:
# module:released-version:current-version
-google-cloud-bigquery:2.54.2:2.54.2
\ No newline at end of file
+google-cloud-bigquery:2.54.2:2.54.3-SNAPSHOT
\ No newline at end of file
From 79b7557501d318fd92b90a681036fe6a1aa1bac4 Mon Sep 17 00:00:00 2001
From: Mend Renovate
Date: Wed, 10 Sep 2025 19:14:36 +0200
Subject: [PATCH 48/50] deps: update dependency
com.google.cloud:sdk-platform-java-config to v3.52.1 (#3952)
---
.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 47fc0ec712..161d8328df 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.52.0
+ uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.52.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 c6dbbdc522..849d5dcf13 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.52.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.52.1"
}
env_vars: {
diff --git a/.kokoro/continuous/graalvm-native-b.cfg b/.kokoro/continuous/graalvm-native-b.cfg
index 6c66c8d835..c6bb73143f 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.52.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.52.1"
}
env_vars: {
diff --git a/.kokoro/continuous/graalvm-native-c.cfg b/.kokoro/continuous/graalvm-native-c.cfg
index 2a4f45eaef..62182e63f1 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.52.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.52.1"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-a.cfg b/.kokoro/presubmit/graalvm-native-a.cfg
index c6dbbdc522..849d5dcf13 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.52.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.52.1"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-b.cfg b/.kokoro/presubmit/graalvm-native-b.cfg
index 6c66c8d835..c6bb73143f 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.52.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.52.1"
}
env_vars: {
diff --git a/.kokoro/presubmit/graalvm-native-c.cfg b/.kokoro/presubmit/graalvm-native-c.cfg
index 2a4f45eaef..62182e63f1 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.52.0"
+ value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.52.1"
}
env_vars: {
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index b25fdd32f7..5440a711cb 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.52.0
+ 3.52.1
diff --git a/pom.xml b/pom.xml
index eaf574eb59..001e7d36ca 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,7 @@
com.google.cloud
sdk-platform-java-config
- 3.52.0
+ 3.52.1
From e73deed9c68a45023d02b40144c304329d6b5829 Mon Sep 17 00:00:00 2001
From: Blake Li
Date: Fri, 12 Sep 2025 12:43:55 -0400
Subject: [PATCH 49/50] deps: update dependency
com.google.cloud:google-cloud-bigquerystorage-bom to v3.17.0 (#3954)
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 001e7d36ca..cdc4d3a020 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,7 +71,7 @@
com.google.cloud
google-cloud-bigquerystorage-bom
- 3.16.3
+ 3.17.0
pom
import
From 3f84e7353d3095d7830176c4d10422c08bcb2bbf Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Fri, 12 Sep 2025 15:00:26 -0400
Subject: [PATCH 50/50] chore(main): release 2.55.0 (#3947)
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 27dae85f7c..be6007f631 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,18 @@
# Changelog
+## [2.55.0](https://github.com/googleapis/java-bigquery/compare/v2.54.2...v2.55.0) (2025-09-12)
+
+
+### Features
+
+* **bigquery:** Add custom ExceptionHandler to BigQueryOptions ([#3937](https://github.com/googleapis/java-bigquery/issues/3937)) ([de0914d](https://github.com/googleapis/java-bigquery/commit/de0914ddbccf988294d50faf56a515e58ab3505d))
+
+
+### Dependencies
+
+* Update dependency com.google.cloud:google-cloud-bigquerystorage-bom to v3.17.0 ([#3954](https://github.com/googleapis/java-bigquery/issues/3954)) ([e73deed](https://github.com/googleapis/java-bigquery/commit/e73deed9c68a45023d02b40144c304329d6b5829))
+* Update dependency com.google.cloud:sdk-platform-java-config to v3.52.1 ([#3952](https://github.com/googleapis/java-bigquery/issues/3952)) ([79b7557](https://github.com/googleapis/java-bigquery/commit/79b7557501d318fd92b90a681036fe6a1aa1bac4))
+
## [2.54.2](https://github.com/googleapis/java-bigquery/compare/v2.54.1...v2.54.2) (2025-08-26)
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index 9d6c1a3c52..688debd416 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -6,7 +6,7 @@
google-cloud-bigquery-parent
com.google.cloud
- 2.54.3-SNAPSHOT
+ 2.55.0
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index 5440a711cb..be30269f71 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.54.3-SNAPSHOT
+ 2.55.0
pom
com.google.cloud
@@ -54,7 +54,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.3-SNAPSHOT
+ 2.55.0
diff --git a/google-cloud-bigquery/pom.xml b/google-cloud-bigquery/pom.xml
index f9ed181959..2cae0f6f11 100644
--- a/google-cloud-bigquery/pom.xml
+++ b/google-cloud-bigquery/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.google.cloud
google-cloud-bigquery
- 2.54.3-SNAPSHOT
+ 2.55.0
jar
BigQuery
https://github.com/googleapis/java-bigquery
@@ -11,7 +11,7 @@
com.google.cloud
google-cloud-bigquery-parent
- 2.54.3-SNAPSHOT
+ 2.55.0
google-cloud-bigquery
diff --git a/pom.xml b/pom.xml
index cdc4d3a020..291ac9fd93 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud
google-cloud-bigquery-parent
pom
- 2.54.3-SNAPSHOT
+ 2.55.0
BigQuery Parent
https://github.com/googleapis/java-bigquery
@@ -93,7 +93,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.3-SNAPSHOT
+ 2.55.0
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 575118ca8d..c0e58826be 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -56,7 +56,7 @@
com.google.cloud
google-cloud-bigquery
- 2.54.3-SNAPSHOT
+ 2.55.0
diff --git a/versions.txt b/versions.txt
index 0dd584253f..73eeb870a4 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,4 +1,4 @@
# Format:
# module:released-version:current-version
-google-cloud-bigquery:2.54.2:2.54.3-SNAPSHOT
\ No newline at end of file
+google-cloud-bigquery:2.55.0:2.55.0
\ No newline at end of file