diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6215a1465..fb2cbc21b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## [2.43.0](https://github.com/googleapis/java-bigquery/compare/v2.42.4...v2.43.0) (2024-10-01)
+
+
+### Features
+
+* Add max staleness to ExternalTableDefinition ([#3499](https://github.com/googleapis/java-bigquery/issues/3499)) ([f1ebd5b](https://github.com/googleapis/java-bigquery/commit/f1ebd5be5877a68f76efafc30e3b5b0763f343c5))
+
## [2.42.4](https://github.com/googleapis/java-bigquery/compare/v2.42.3...v2.42.4) (2024-09-30)
diff --git a/benchmark/pom.xml b/benchmark/pom.xml
index 4d0539e0d..ee61a3203 100644
--- a/benchmark/pom.xml
+++ b/benchmark/pom.xml
@@ -6,7 +6,7 @@
google-cloud-bigquery-parent
com.google.cloud
- 2.42.4
+ 2.43.0
diff --git a/google-cloud-bigquery-bom/pom.xml b/google-cloud-bigquery-bom/pom.xml
index a4bba7434..51f0dd1c6 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.42.4
+ 2.43.0
pom
com.google.cloud
@@ -54,7 +54,7 @@
com.google.cloud
google-cloud-bigquery
- 2.42.4
+ 2.43.0
diff --git a/google-cloud-bigquery/pom.xml b/google-cloud-bigquery/pom.xml
index 7d3a4ddc0..6425692d9 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.42.4
+ 2.43.0
jar
BigQuery
https://github.com/googleapis/java-bigquery
@@ -11,7 +11,7 @@
com.google.cloud
google-cloud-bigquery-parent
- 2.42.4
+ 2.43.0
google-cloud-bigquery
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 363f9507e..5af3085e2 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
@@ -200,6 +200,20 @@ public Builder setMetadataCacheMode(String metadataCacheMode) {
abstract Builder setMetadataCacheModeInner(String metadataCacheMode);
+ /**
+ * [Optional] Metadata Cache Mode for the table. Set this to enable caching of metadata from
+ * external data source.
+ *
+ * @see
+ * MaxStaleness
+ */
+ public Builder setMaxStaleness(String maxStaleness) {
+ return setMaxStalenessInner(maxStaleness);
+ }
+
+ abstract Builder setMaxStalenessInner(String maxStaleness);
+
/** Creates an {@code ExternalTableDefinition} object. */
@Override
public abstract ExternalTableDefinition build();
@@ -305,6 +319,22 @@ public String getMetadataCacheMode() {
@Nullable
abstract String getMetadataCacheModeInner();
+ /**
+ * Returns the maximum staleness of data that could be returned when the table is queried.
+ * Staleness encoded as a string encoding of sql IntervalValue type.
+ *
+ * @see
+ * MaxStaleness
+ */
+ @Nullable
+ public String getMaxStaleness() {
+ return getMaxStalenessInner();
+ }
+
+ @Nullable
+ abstract String getMaxStalenessInner();
+
/**
* Returns the source format, and possibly some parsing options, of the external data. Supported
* formats are {@code CSV} and {@code NEWLINE_DELIMITED_JSON}.
@@ -351,6 +381,9 @@ public HivePartitioningOptions getHivePartitioningOptions() {
com.google.api.services.bigquery.model.Table toPb() {
Table tablePb = super.toPb();
tablePb.setExternalDataConfiguration(toExternalDataConfigurationPb());
+ if (getMaxStaleness() != null) {
+ tablePb.setMaxStaleness(getMaxStaleness());
+ }
return tablePb;
}
@@ -616,6 +649,9 @@ static ExternalTableDefinition fromPb(Table tablePb) {
if (externalDataConfiguration.getMetadataCacheMode() != null) {
builder.setMetadataCacheMode(externalDataConfiguration.getMetadataCacheMode());
}
+ if (tablePb.getMaxStaleness() != null) {
+ builder.setMaxStaleness(tablePb.getMaxStaleness());
+ }
}
return builder.build();
}
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 2562e1763..e6e7e0fcc 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
@@ -59,8 +59,8 @@ public class ExternalTableDefinitionTest {
.setSourceUriPrefix(SOURCE_URIS.get(0))
.build();
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 ExternalTableDefinition EXTERNAL_TABLE_DEFINITION =
ExternalTableDefinition.newBuilder(SOURCE_URIS, TABLE_SCHEMA, CSV_OPTIONS)
.setFileSetSpecType("FILE_SET_SPEC_TYPE_FILE_SYSTEM_MATCH")
@@ -73,6 +73,7 @@ public class ExternalTableDefinitionTest {
.setHivePartitioningOptions(HIVE_PARTITIONING_OPTIONS)
.setObjectMetadata(OBJECT_METADATA)
.setMetadataCacheMode(METADATA_CACHE_MODE)
+ .setMaxStaleness(MAX_STALENESS)
.build();
private static final ExternalTableDefinition EXTERNAL_TABLE_DEFINITION_AVRO =
@@ -174,5 +175,6 @@ private void compareExternalTableDefinition(
assertEquals(expected.getHivePartitioningOptions(), value.getHivePartitioningOptions());
assertEquals(expected.getObjectMetadata(), value.getObjectMetadata());
assertEquals(expected.getMetadataCacheMode(), value.getMetadataCacheMode());
+ assertEquals(expected.getMaxStaleness(), value.getMaxStaleness());
}
}
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 15fe5eb8c..b1cb8d845 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
@@ -2111,9 +2111,13 @@ public void testCreateAndGetTableWithSelectedField() {
public void testCreateExternalTable() throws InterruptedException {
String tableName = "test_create_external_table";
TableId tableId = TableId.of(DATASET, tableName);
+
ExternalTableDefinition externalTableDefinition =
ExternalTableDefinition.of(
- "gs://" + BUCKET + "/" + JSON_LOAD_FILE, TABLE_SCHEMA, FormatOptions.json());
+ "gs://" + BUCKET + "/" + JSON_LOAD_FILE, TABLE_SCHEMA, FormatOptions.json())
+ .toBuilder()
+ .setMaxStaleness("INTERVAL 15 MINUTE")
+ .build();
TableInfo tableInfo = TableInfo.of(tableId, externalTableDefinition);
Table createdTable = bigquery.create(tableInfo);
assertNotNull(createdTable);
diff --git a/pom.xml b/pom.xml
index 53e4b5b9a..1caff5398 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud
google-cloud-bigquery-parent
pom
- 2.42.4
+ 2.43.0
BigQuery Parent
https://github.com/googleapis/java-bigquery
@@ -93,7 +93,7 @@
com.google.cloud
google-cloud-bigquery
- 2.42.4
+ 2.43.0
diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml
index 8d3d0e4d5..2b950de1a 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.42.3
+ 2.42.4
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index be36735e9..14e69ed83 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -44,7 +44,7 @@
com.google.cloud
google-cloud-bigquery
- 2.42.4
+ 2.43.0
diff --git a/versions.txt b/versions.txt
index 5ab44bc13..4f2cdbe2a 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,4 +1,4 @@
# Format:
# module:released-version:current-version
-google-cloud-bigquery:2.42.4:2.42.4
\ No newline at end of file
+google-cloud-bigquery:2.43.0:2.43.0
\ No newline at end of file