From 1dc5a3ec0ca9ea530e8691df5c2734c0a1ece559 Mon Sep 17 00:00:00 2001
From: Sakthivel Subramanian
<179120858+sakthivelmanii@users.noreply.github.com>
Date: Wed, 11 Jun 2025 21:44:47 +0530
Subject: [PATCH 01/10] feat: Support getOrNull and getOrDefault in Struct
(#3914)
* feat: Support getOrNull and getOrDefault in Struct
* Addressed comments
* Change Function interface to BiFunction
* Update clirr ignored differences
---
.../clirr-ignored-differences.xml | 20 +++++++
.../google/cloud/spanner/StructReader.java | 55 +++++++++++++++++++
.../com/google/cloud/spanner/StructTest.java | 42 ++++++++++++++
3 files changed, 117 insertions(+)
diff --git a/google-cloud-spanner/clirr-ignored-differences.xml b/google-cloud-spanner/clirr-ignored-differences.xml
index 94bb5870f81..46a11518dbb 100644
--- a/google-cloud-spanner/clirr-ignored-differences.xml
+++ b/google-cloud-spanner/clirr-ignored-differences.xml
@@ -1008,4 +1008,24 @@
com/google/cloud/spanner/TransactionManager
com.google.cloud.spanner.TransactionContext begin(com.google.cloud.spanner.AbortedException)
+
+ 7012
+ com/google/cloud/spanner/StructReader
+ java.lang.Object getOrNull(int, java.util.function.BiFunction)
+
+
+ 7012
+ com/google/cloud/spanner/StructReader
+ java.lang.Object getOrNull(java.lang.String, java.util.function.BiFunction)
+
+
+ 7012
+ com/google/cloud/spanner/StructReader
+ java.lang.Object getOrDefault(int, java.util.function.BiFunction, java.lang.Object)
+
+
+ 7012
+ com/google/cloud/spanner/StructReader
+ java.lang.Object getOrDefault(java.lang.String, java.util.function.BiFunction, java.lang.Object)
+
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/StructReader.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/StructReader.java
index f690011f389..ab645588bf1 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/StructReader.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/StructReader.java
@@ -24,6 +24,7 @@
import java.math.BigDecimal;
import java.util.List;
import java.util.UUID;
+import java.util.function.BiFunction;
import java.util.function.Function;
/**
@@ -176,6 +177,60 @@ default float getFloat(String columnName) {
*/
String getString(String columnName);
+ /**
+ * @param columnIndex index of the column
+ * @return the value of a column with type T or null if the column contains a null value
+ *
Example
+ *
{@code
+ * Struct row = ...
+ * String name = row.getOrNull(1, StructReader::getString)
+ * }
+ */
+ default T getOrNull(int columnIndex, BiFunction function) {
+ return isNull(columnIndex) ? null : function.apply(this, columnIndex);
+ }
+
+ /**
+ * @param columnName index of the column
+ * @return the value of a column with type T or null if the column contains a null value
+ * Example
+ *
{@code
+ * Struct row = ...
+ * String name = row.getOrNull("name", StructReader::getString)
+ * }
+ */
+ default T getOrNull(String columnName, BiFunction function) {
+ return isNull(columnName) ? null : function.apply(this, columnName);
+ }
+
+ /**
+ * @param columnIndex index of the column
+ * @return the value of a column with type T, or the given default if the column value is null
+ * Example
+ *
{@code
+ * Struct row = ...
+ * String name = row.getOrDefault(1, StructReader::getString, "")
+ * }
+ */
+ default T getOrDefault(
+ int columnIndex, BiFunction function, T defaultValue) {
+ return isNull(columnIndex) ? defaultValue : function.apply(this, columnIndex);
+ }
+
+ /**
+ * @param columnName name of the column
+ * @return the value of a column with type T, or the given default if the column value is null
+ * Example
+ *
{@code
+ * Struct row = ...
+ * String name = row.getOrDefault("name", StructReader::getString, "")
+ * }
+ */
+ default T getOrDefault(
+ String columnName, BiFunction function, T defaultValue) {
+ return isNull(columnName) ? defaultValue : function.apply(this, columnName);
+ }
+
/**
* @param columnIndex index of the column
* @return the value of a non-{@code NULL} column with type {@link Type#json()}.
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/StructTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/StructTest.java
index d357a14f9d0..55d066e165e 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/StructTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/StructTest.java
@@ -57,6 +57,48 @@ public void builder() {
assertThat(struct.getLong(1)).isEqualTo(2);
}
+ @Test
+ public void getOrNullTests() {
+ Struct struct =
+ Struct.newBuilder()
+ .set("f1")
+ .to("x")
+ .set("f2")
+ .to(2)
+ .set("f3")
+ .to(Value.bool(null))
+ .build();
+ String column1 = struct.getOrNull(0, StructReader::getString);
+ assertThat(column1).isEqualTo("x");
+
+ Long column2 = struct.getOrNull(1, StructReader::getLong);
+ assertThat(column2).isEqualTo(2);
+
+ String column3 = struct.getOrNull("f3", StructReader::getString);
+ assertThat(column3).isNull();
+ }
+
+ @Test
+ public void getOrDefaultTests() {
+ Struct struct =
+ Struct.newBuilder()
+ .set("f1")
+ .to("x")
+ .set("f2")
+ .to(2)
+ .set("f3")
+ .to(Value.bool(null))
+ .build();
+ String column1 = struct.getOrDefault(0, StructReader::getString, "");
+ assertThat(column1).isEqualTo("x");
+
+ Long column2 = struct.getOrDefault("f2", StructReader::getLong, -1L);
+ assertThat(column2).isEqualTo(2);
+
+ String column3 = struct.getOrDefault(2, StructReader::getString, "");
+ assertThat(column3).isEqualTo("");
+ }
+
@Test
public void duplicateFields() {
// Duplicate fields are allowed - some SQL queries produce this type of value.
From 43ea4fa68eac00801beb8e58c1eb09e9f32e5ce5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Knut=20Olav=20L=C3=B8ite?=
Date: Fri, 13 Jun 2025 12:07:53 +0200
Subject: [PATCH 02/10] fix: allow zero durations to be set for connections
(#3916)
SET statements that set a duration, e.g. max_commit_delay or statement_timeout,
did not allow setting a zero duration. This is however sometimes useful, as the
server default for max_commit_delay is not zero. This means that setting this to
zero triggers a different behavior than not setting a value, as when no value is
included in a commit request, Spanner will choose a reasonable value for the
commit delay. By explicitly setting it to zero, Spanner will always also use a
zero commit delay.
---
.../ClientSideStatementValueConverters.java | 3 +-
.../ConnectionStatementExecutorImpl.java | 2 +-
.../AbstractConnectionImplTest.java | 7 +-
.../connection/DurationConverterTest.java | 2 +-
.../connection/MaxCommitDelayTest.java | 51 ++-
.../connection/PgDurationConverterTest.java | 2 +-
.../ConnectionImplGeneratedSqlScriptTest.sql | 368 ++++++------------
.../ConnectionImplGeneratedSqlScriptTest.sql | 368 ++++++------------
8 files changed, 277 insertions(+), 526 deletions(-)
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatementValueConverters.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatementValueConverters.java
index 12a48541c59..7418c88f68d 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatementValueConverters.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ClientSideStatementValueConverters.java
@@ -248,7 +248,8 @@ public Duration convert(String value) {
} else {
duration = Duration.ofMillis(Long.parseLong(value.trim()));
}
- if (duration.isZero()) {
+ // Converters should return null for invalid values.
+ if (duration.isNegative()) {
return null;
}
return duration;
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionStatementExecutorImpl.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionStatementExecutorImpl.java
index 1f4d8f5cf22..ae88bcc6ffe 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionStatementExecutorImpl.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionStatementExecutorImpl.java
@@ -361,7 +361,7 @@ public StatementResult statementShowReturnCommitStats() {
@Override
public StatementResult statementSetMaxCommitDelay(Duration duration) {
- getConnection().setMaxCommitDelay(duration == null || duration.isZero() ? null : duration);
+ getConnection().setMaxCommitDelay(duration);
return noResult(SET_MAX_COMMIT_DELAY);
}
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractConnectionImplTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractConnectionImplTest.java
index cb959200425..0ad0588b68b 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractConnectionImplTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractConnectionImplTest.java
@@ -276,13 +276,14 @@ public void testSetStatementTimeout() {
assertThat(connection.hasStatementTimeout(), is(false));
boolean gotException = false;
try {
- log("@EXPECT EXCEPTION INVALID_ARGUMENT");
+ // log("@EXPECT EXCEPTION INVALID_ARGUMENT");
log(String.format("SET STATEMENT_TIMEOUT='0%s';", getTimeUnitAbbreviation(unit)));
- connection.setStatementTimeout(0L, unit);
+ connection.clearStatementTimeout();
+ // connection.setStatementTimeout(0L, unit);
} catch (IllegalArgumentException e) {
gotException = true;
}
- assertThat(gotException, is(true));
+ assertThat(gotException, is(false));
log(
String.format(
"@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',%s",
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/DurationConverterTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/DurationConverterTest.java
index 9e3c23cf5ce..e494f9df8b1 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/DurationConverterTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/DurationConverterTest.java
@@ -42,7 +42,7 @@ public void testConvert() throws CompileException {
DurationConverter converter = new DurationConverter(allowedValues);
assertThat(converter.convert("'100ms'"), is(equalTo(Duration.ofMillis(100L))));
assertThat(converter.convert("100"), is(equalTo(Duration.ofMillis(100))));
- assertThat(converter.convert("'0ms'"), is(nullValue()));
+ assertThat(converter.convert("'0ms'"), is(Duration.ZERO));
assertThat(converter.convert("'-100ms'"), is(nullValue()));
assertThat(
converter.convert("'315576000000000ms'"), is(equalTo(Duration.ofSeconds(315576000000L))));
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/MaxCommitDelayTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/MaxCommitDelayTest.java
index 1e22986cce2..ca7fa18e97a 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/MaxCommitDelayTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/MaxCommitDelayTest.java
@@ -83,7 +83,20 @@ public void testNoMaxCommitDelayByDefault() {
for (boolean autocommit : new boolean[] {true, false}) {
connection.setAutocommit(autocommit);
executeCommit(connection);
- assertMaxCommitDelay(Duration.getDefaultInstance());
+ assertMaxCommitDelay(Duration.getDefaultInstance(), false);
+ mockSpanner.clearRequests();
+ }
+ }
+ }
+
+ @Test
+ public void testZeroMaxCommitDelay() {
+ try (Connection connection = createConnection()) {
+ for (boolean autocommit : new boolean[] {true, false}) {
+ connection.setAutocommit(autocommit);
+ connection.setMaxCommitDelay(java.time.Duration.ZERO);
+ executeCommit(connection);
+ assertMaxCommitDelay(Duration.getDefaultInstance(), true);
mockSpanner.clearRequests();
}
}
@@ -95,7 +108,19 @@ public void testMaxCommitDelayInConnectionString() {
for (boolean autocommit : new boolean[] {true, false}) {
connection.setAutocommit(autocommit);
executeCommit(connection);
- assertMaxCommitDelay(Duration.newBuilder().setSeconds(1).build());
+ assertMaxCommitDelay(Duration.newBuilder().setSeconds(1).build(), true);
+ mockSpanner.clearRequests();
+ }
+ }
+ }
+
+ @Test
+ public void testZeroMaxCommitDelayInConnectionString() {
+ try (Connection connection = createConnection(";maxCommitDelay=0")) {
+ for (boolean autocommit : new boolean[] {true, false}) {
+ connection.setAutocommit(autocommit);
+ executeCommit(connection);
+ assertMaxCommitDelay(Duration.getDefaultInstance(), true);
mockSpanner.clearRequests();
}
}
@@ -121,20 +146,31 @@ public void testSetMaxCommitDelay() {
() -> {
executeCommit(connection);
assertMaxCommitDelay(
- Duration.newBuilder()
- .setNanos((int) TimeUnit.MILLISECONDS.toNanos(40))
- .build());
+ Duration.newBuilder().setNanos((int) TimeUnit.MILLISECONDS.toNanos(40)).build(),
+ true);
mockSpanner.clearRequests();
});
if (useSql) {
+ // This is translated to Duration.ZERO.
connection.execute(
Statement.of(String.format("set %smax_commit_delay=null", getVariablePrefix())));
} else {
connection.setMaxCommitDelay(null);
}
executeCommit(connection);
- assertMaxCommitDelay(Duration.getDefaultInstance());
+ // The SQL statement set max_commit_delay=null is translated to Duration.ZERO.
+ assertMaxCommitDelay(Duration.getDefaultInstance(), useSql);
+ mockSpanner.clearRequests();
+
+ if (useSql) {
+ connection.execute(
+ Statement.of(String.format("set %smax_commit_delay=0", getVariablePrefix())));
+ } else {
+ connection.setMaxCommitDelay(java.time.Duration.ZERO);
+ }
+ executeCommit(connection);
+ assertMaxCommitDelay(Duration.getDefaultInstance(), true);
mockSpanner.clearRequests();
}
}
@@ -150,10 +186,11 @@ void executeCommit(Connection connection) {
}
}
- private void assertMaxCommitDelay(Duration expected) {
+ private void assertMaxCommitDelay(Duration expected, boolean hasMaxCommitDelay) {
List requests = mockSpanner.getRequestsOfType(CommitRequest.class);
assertEquals(1, requests.size());
CommitRequest request = requests.get(0);
assertEquals(expected, request.getMaxCommitDelay());
+ assertEquals(hasMaxCommitDelay, request.hasMaxCommitDelay());
}
}
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/PgDurationConverterTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/PgDurationConverterTest.java
index 95bd97962a8..ca0ae403e50 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/PgDurationConverterTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/PgDurationConverterTest.java
@@ -45,7 +45,7 @@ public void testConvert() throws CompileException {
assertEquals(
Duration.ofNanos((int) TimeUnit.MILLISECONDS.toNanos(100L)), converter.convert("'100ms'"));
- assertNull(converter.convert("'0ms'"));
+ assertEquals(Duration.ZERO, converter.convert("'0ms'"));
assertNull(converter.convert("'-100ms'"));
assertEquals(Duration.ofSeconds(315576000000L), converter.convert("'315576000000000ms'"));
assertEquals(Duration.ofSeconds(1L), converter.convert("'1s'"));
diff --git a/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/ConnectionImplGeneratedSqlScriptTest.sql b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/ConnectionImplGeneratedSqlScriptTest.sql
index 0cad83a0f6a..d79dd8bf6f5 100644
--- a/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/ConnectionImplGeneratedSqlScriptTest.sql
+++ b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/ConnectionImplGeneratedSqlScriptTest.sql
@@ -160,15 +160,15 @@ NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
COMMIT;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.520000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.520000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:38.900000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:38.900000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
COMMIT;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.520000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:38.900000000Z';
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@@ -261,7 +261,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -271,7 +270,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -281,7 +279,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -291,7 +288,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -510,15 +506,15 @@ NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
SET READ_ONLY_STALENESS='EXACT_STALENESS 10s';
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.643000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.643000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.005000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.005000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
SET READ_ONLY_STALENESS='EXACT_STALENESS 10s';
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.643000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.005000000Z';
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@@ -611,7 +607,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -621,7 +616,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -631,7 +625,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -641,7 +634,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -950,8 +942,8 @@ BEGIN TRANSACTION;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
ROLLBACK;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.735000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.735000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.100000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.100000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
@@ -961,7 +953,7 @@ BEGIN TRANSACTION;
SELECT 1 AS TEST;
ROLLBACK;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.735000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.100000000Z';
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@@ -1096,7 +1088,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1106,7 +1097,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1116,7 +1106,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1126,7 +1115,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1462,8 +1450,8 @@ BEGIN TRANSACTION;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
COMMIT;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.842000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.842000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.195000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.195000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
@@ -1473,7 +1461,7 @@ BEGIN TRANSACTION;
SELECT 1 AS TEST;
COMMIT;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.842000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.195000000Z';
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@@ -1608,7 +1596,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1618,7 +1605,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1628,7 +1614,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1638,7 +1623,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1876,15 +1860,15 @@ NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
BEGIN TRANSACTION;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.941000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.941000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.290000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.290000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
BEGIN TRANSACTION;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.941000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.290000000Z';
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@@ -1977,7 +1961,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1987,7 +1970,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1997,7 +1979,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2007,7 +1988,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2243,14 +2223,14 @@ SET AUTOCOMMIT=FALSE;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.021000000Z';
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.365000000Z';
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.021000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.365000000Z';
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@@ -2355,7 +2335,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2365,7 +2344,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2375,7 +2353,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2385,7 +2362,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2600,13 +2576,13 @@ SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
SELECT 1 AS TEST;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.095000000Z';
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.444000000Z';
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
SELECT 1 AS TEST;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.095000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.444000000Z';
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@@ -2697,7 +2673,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2707,7 +2682,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2717,7 +2691,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2727,7 +2700,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2910,14 +2882,14 @@ SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.166000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.166000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.539000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.539000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.166000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.539000000Z';
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@@ -2996,7 +2968,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3006,7 +2977,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3016,7 +2986,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3026,7 +2995,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3245,15 +3213,15 @@ NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
COMMIT;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.237000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.237000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.630000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.630000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
COMMIT;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.237000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.630000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -3346,7 +3314,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3356,7 +3323,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3366,7 +3332,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3376,7 +3341,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3662,8 +3626,8 @@ SET AUTOCOMMIT=FALSE;
START BATCH DDL;
CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id);
RUN BATCH;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.293000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.293000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.702000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.702000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
@@ -3672,7 +3636,7 @@ START BATCH DDL;
CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id);
RUN BATCH;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.293000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.702000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -3793,7 +3757,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3803,7 +3766,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3813,7 +3775,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3823,7 +3784,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4081,14 +4041,14 @@ SET AUTOCOMMIT=FALSE;
START BATCH DDL;
CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id);
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.349000000Z';
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.767000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
START BATCH DDL;
CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id);
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.349000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.767000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -4193,7 +4153,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4203,7 +4162,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4213,7 +4171,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4223,7 +4180,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4438,13 +4394,13 @@ SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
START BATCH DDL;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.399000000Z';
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.826000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
START BATCH DDL;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.399000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.826000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -4535,7 +4491,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4545,7 +4500,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4555,7 +4509,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4565,7 +4518,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4877,8 +4829,8 @@ SET TRANSACTION READ ONLY;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
COMMIT;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.457000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.457000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.888000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.888000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
@@ -4888,7 +4840,7 @@ SET TRANSACTION READ ONLY;
SELECT 1 AS TEST;
COMMIT;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.457000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.888000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -5023,7 +4975,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5033,7 +4984,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5043,7 +4993,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5053,7 +5002,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5288,15 +5236,15 @@ NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
SET TRANSACTION READ ONLY;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.519000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.519000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.960000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.960000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
SET TRANSACTION READ ONLY;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.519000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.960000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -5389,7 +5337,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5399,7 +5346,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5409,7 +5355,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5419,7 +5364,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5641,15 +5585,15 @@ NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
SET READ_ONLY_STALENESS='EXACT_STALENESS 10s';
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.567000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.567000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.018000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.018000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
SET READ_ONLY_STALENESS='EXACT_STALENESS 10s';
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.567000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.018000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -5742,7 +5686,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5752,7 +5695,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5762,7 +5704,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5772,7 +5713,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -6088,8 +6028,8 @@ BEGIN TRANSACTION;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
ROLLBACK;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.620000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.620000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.091000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.091000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
@@ -6099,7 +6039,7 @@ BEGIN TRANSACTION;
SELECT 1 AS TEST;
ROLLBACK;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.620000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.091000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -6234,7 +6174,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -6244,7 +6183,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -6254,7 +6192,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -6264,7 +6201,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -6607,8 +6543,8 @@ BEGIN TRANSACTION;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
COMMIT;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.695000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.695000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.166000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.166000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
@@ -6618,7 +6554,7 @@ BEGIN TRANSACTION;
SELECT 1 AS TEST;
COMMIT;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.695000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.166000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -6753,7 +6689,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -6763,7 +6698,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -6773,7 +6707,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -6783,7 +6716,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7023,15 +6955,15 @@ NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
BEGIN TRANSACTION;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.760000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.760000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.255000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.255000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
BEGIN TRANSACTION;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.760000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.255000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -7124,7 +7056,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7134,7 +7065,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7144,7 +7074,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7154,7 +7083,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7394,14 +7322,14 @@ SET AUTOCOMMIT=FALSE;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.811000000Z';
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.372000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.811000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.372000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -7506,7 +7434,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7516,7 +7443,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7526,7 +7452,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7536,7 +7461,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7756,13 +7680,13 @@ SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
SELECT 1 AS TEST;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.869000000Z';
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.441000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
SELECT 1 AS TEST;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.869000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.441000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -7853,7 +7777,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7863,7 +7786,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7873,7 +7795,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7883,7 +7804,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8075,14 +7995,14 @@ SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.925000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.925000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.535000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.535000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.925000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.535000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -8161,7 +8081,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8171,7 +8090,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8181,7 +8099,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8191,7 +8108,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8392,13 +8308,13 @@ SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
START BATCH DDL;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.983000000Z';
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.592000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
START BATCH DDL;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.983000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.592000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
@@ -8489,7 +8405,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8499,7 +8414,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8509,7 +8423,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8519,7 +8432,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8753,8 +8665,8 @@ SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
SET TRANSACTION READ ONLY;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.034000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.034000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.651000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.651000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
@@ -8762,7 +8674,7 @@ SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
SET TRANSACTION READ ONLY;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.034000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.651000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
@@ -8869,7 +8781,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8879,7 +8790,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8889,7 +8799,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8899,7 +8808,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9200,8 +9108,8 @@ SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
UPDATE foo SET bar=1;
COMMIT;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.086000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.086000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.713000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.713000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
@@ -9209,8 +9117,8 @@ SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
UPDATE foo SET bar=1;
COMMIT;
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.086000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.086000000Z'
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.713000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:40.713000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
@@ -9333,7 +9241,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9343,7 +9250,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9353,7 +9259,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9363,7 +9268,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9596,15 +9500,15 @@ NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.141000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.141000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.781000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.781000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.141000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.781000000Z';
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
@@ -9697,7 +9601,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9707,7 +9610,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9717,7 +9619,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9727,7 +9628,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9958,15 +9858,15 @@ NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id);
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.190000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.190000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.843000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.843000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id);
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.190000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.190000000Z'
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.843000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:40.843000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
@@ -10061,7 +9961,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10071,7 +9970,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10081,7 +9979,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10091,7 +9988,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10329,15 +10225,15 @@ NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
UPDATE foo SET bar=1;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.241000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.241000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.905000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.905000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
UPDATE foo SET bar=1;
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.241000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.241000000Z'
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.905000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:40.905000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
@@ -10432,7 +10328,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10442,7 +10337,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10452,7 +10346,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10462,7 +10355,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10730,16 +10622,16 @@ SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.294000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.294000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.964000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.964000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.294000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.294000000Z'
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.964000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:40.964000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
@@ -10848,7 +10740,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10858,7 +10749,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10868,7 +10758,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10878,7 +10767,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11125,15 +11013,15 @@ NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
SELECT 1 AS TEST;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.345000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.345000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.022000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.022000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
SELECT 1 AS TEST;
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.345000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.345000000Z'
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.022000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.022000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
@@ -11228,7 +11116,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11238,7 +11125,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11248,7 +11134,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11258,7 +11143,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11466,14 +11350,14 @@ SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.396000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.396000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.080000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.080000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.396000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.396000000Z'
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.080000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.080000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=FALSE;
@@ -11554,7 +11438,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11564,7 +11447,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11574,7 +11456,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11584,7 +11465,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11796,15 +11676,15 @@ NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
SET READ_ONLY_STALENESS='MAX_STALENESS 10s';
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.441000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.441000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.139000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.139000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
SET READ_ONLY_STALENESS='MAX_STALENESS 10s';
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.441000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.441000000Z'
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.139000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.139000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
@@ -11899,7 +11779,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11909,7 +11788,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11919,7 +11797,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11929,7 +11806,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12211,8 +12087,8 @@ SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
SELECT 1 AS TEST;
COMMIT;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.490000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.490000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.195000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.195000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
@@ -12220,8 +12096,8 @@ SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
SELECT 1 AS TEST;
COMMIT;
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.490000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.490000000Z'
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.195000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.195000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
@@ -12344,7 +12220,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12354,7 +12229,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12364,7 +12238,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12374,7 +12247,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12604,15 +12476,15 @@ NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.541000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.541000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.253000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.253000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.541000000Z';
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.253000000Z';
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
@@ -12705,7 +12577,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12715,7 +12586,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12725,7 +12595,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12735,7 +12604,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12950,15 +12818,15 @@ NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
SELECT 1 AS TEST;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.588000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.588000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.307000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.307000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
SELECT 1 AS TEST;
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.588000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.588000000Z'
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.307000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.307000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
@@ -13053,7 +12921,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13063,7 +12930,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13073,7 +12939,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13083,7 +12948,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13305,15 +13169,15 @@ NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
SELECT 1 AS TEST;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.639000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.639000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.364000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.364000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
SELECT 1 AS TEST;
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.639000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.639000000Z'
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.364000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.364000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
@@ -13408,7 +13272,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13418,7 +13281,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13428,7 +13290,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13438,7 +13299,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13630,14 +13490,14 @@ SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
-SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.688000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.688000000Z'
+SET READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.418000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.418000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
-SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.688000000Z';
-@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.688000000Z'
+SET READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.418000000Z';
+@EXPECT RESULT_SET 'READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.418000000Z'
SHOW VARIABLE READ_ONLY_STALENESS;
NEW_CONNECTION;
SET READONLY=TRUE;
@@ -13718,7 +13578,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13728,7 +13587,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13738,7 +13596,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13748,7 +13605,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=null;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT',null
SHOW VARIABLE STATEMENT_TIMEOUT;
diff --git a/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/ConnectionImplGeneratedSqlScriptTest.sql b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/ConnectionImplGeneratedSqlScriptTest.sql
index 974533738a0..91c4ac3f394 100644
--- a/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/ConnectionImplGeneratedSqlScriptTest.sql
+++ b/google-cloud-spanner/src/test/resources/com/google/cloud/spanner/connection/postgresql/ConnectionImplGeneratedSqlScriptTest.sql
@@ -160,15 +160,15 @@ NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
COMMIT;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.586000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.586000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:38.957000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:38.957000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
COMMIT;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.586000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:38.957000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@@ -261,7 +261,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -271,7 +270,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -281,7 +279,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -291,7 +288,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -510,15 +506,15 @@ NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s';
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.690000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.690000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.052000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.052000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s';
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.690000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.052000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@@ -611,7 +607,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -621,7 +616,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -631,7 +625,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -641,7 +634,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -950,8 +942,8 @@ BEGIN TRANSACTION;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
ROLLBACK;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.791000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.791000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.148000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.148000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
@@ -961,7 +953,7 @@ BEGIN TRANSACTION;
SELECT 1 AS TEST;
ROLLBACK;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.791000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.148000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@@ -1096,7 +1088,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1106,7 +1097,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1116,7 +1106,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1126,7 +1115,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1462,8 +1450,8 @@ BEGIN TRANSACTION;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
COMMIT;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.896000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.896000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.239000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.239000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
@@ -1473,7 +1461,7 @@ BEGIN TRANSACTION;
SELECT 1 AS TEST;
COMMIT;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.896000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.239000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@@ -1608,7 +1596,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1618,7 +1605,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1628,7 +1614,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1638,7 +1623,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1876,15 +1860,15 @@ NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
BEGIN TRANSACTION;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:31.986000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:31.986000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.327000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.327000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
BEGIN TRANSACTION;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:31.986000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.327000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@@ -1977,7 +1961,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1987,7 +1970,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -1997,7 +1979,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2007,7 +1988,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2243,14 +2223,14 @@ SET AUTOCOMMIT=FALSE;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.060000000Z';
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.406000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.060000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.406000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@@ -2355,7 +2335,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2365,7 +2344,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2375,7 +2353,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2385,7 +2362,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2600,13 +2576,13 @@ SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
SELECT 1 AS TEST;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.126000000Z';
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.494000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
SELECT 1 AS TEST;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.126000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.494000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@@ -2697,7 +2673,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2707,7 +2682,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2717,7 +2691,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2727,7 +2700,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -2910,14 +2882,14 @@ SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.195000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.195000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.573000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.573000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.195000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.573000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=FALSE;
@@ -2996,7 +2968,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3006,7 +2977,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3016,7 +2986,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3026,7 +2995,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3245,15 +3213,15 @@ NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
COMMIT;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.266000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.266000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.666000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.666000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
COMMIT;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.266000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.666000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -3346,7 +3314,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3356,7 +3323,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3366,7 +3332,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3376,7 +3341,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3662,8 +3626,8 @@ SET AUTOCOMMIT=FALSE;
START BATCH DDL;
CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id);
RUN BATCH;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.323000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.323000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.736000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.736000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
@@ -3672,7 +3636,7 @@ START BATCH DDL;
CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id);
RUN BATCH;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.323000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.736000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -3793,7 +3757,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3803,7 +3766,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3813,7 +3775,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -3823,7 +3784,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4081,14 +4041,14 @@ SET AUTOCOMMIT=FALSE;
START BATCH DDL;
CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id);
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.373000000Z';
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.798000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
START BATCH DDL;
CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id);
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.373000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.798000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -4193,7 +4153,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4203,7 +4162,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4213,7 +4171,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4223,7 +4180,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4438,13 +4394,13 @@ SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
START BATCH DDL;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.424000000Z';
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.854000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
START BATCH DDL;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.424000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.854000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -4535,7 +4491,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4545,7 +4500,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4555,7 +4509,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4565,7 +4518,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -4877,8 +4829,8 @@ SET TRANSACTION READ ONLY;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
COMMIT;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.491000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.491000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.926000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.926000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
@@ -4888,7 +4840,7 @@ SET TRANSACTION READ ONLY;
SELECT 1 AS TEST;
COMMIT;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.491000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.926000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -5023,7 +4975,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5033,7 +4984,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5043,7 +4993,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5053,7 +5002,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5288,15 +5236,15 @@ NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
SET TRANSACTION READ ONLY;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.542000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.542000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:39.987000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:39.987000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
SET TRANSACTION READ ONLY;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.542000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:39.987000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -5389,7 +5337,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5399,7 +5346,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5409,7 +5355,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5419,7 +5364,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5641,15 +5585,15 @@ NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s';
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.591000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.591000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.054000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.054000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
SET SPANNER.READ_ONLY_STALENESS='EXACT_STALENESS 10s';
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.591000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.054000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -5742,7 +5686,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5752,7 +5695,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5762,7 +5704,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -5772,7 +5713,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -6088,8 +6028,8 @@ BEGIN TRANSACTION;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
ROLLBACK;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.656000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.656000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.126000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.126000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
@@ -6099,7 +6039,7 @@ BEGIN TRANSACTION;
SELECT 1 AS TEST;
ROLLBACK;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.656000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.126000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -6234,7 +6174,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -6244,7 +6183,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -6254,7 +6192,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -6264,7 +6201,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -6607,8 +6543,8 @@ BEGIN TRANSACTION;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
COMMIT;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.731000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.731000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.209000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.209000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
@@ -6618,7 +6554,7 @@ BEGIN TRANSACTION;
SELECT 1 AS TEST;
COMMIT;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.731000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.209000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -6753,7 +6689,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -6763,7 +6698,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -6773,7 +6707,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -6783,7 +6716,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7023,15 +6955,15 @@ NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
BEGIN TRANSACTION;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.784000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.784000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.323000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.323000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
BEGIN TRANSACTION;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.784000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.323000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -7124,7 +7056,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7134,7 +7065,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7144,7 +7074,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7154,7 +7083,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7394,14 +7322,14 @@ SET AUTOCOMMIT=FALSE;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.839000000Z';
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.407000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.839000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.407000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -7506,7 +7434,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7516,7 +7443,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7526,7 +7452,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7536,7 +7461,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7756,13 +7680,13 @@ SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
SELECT 1 AS TEST;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.898000000Z';
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.473000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
SELECT 1 AS TEST;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.898000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.473000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -7853,7 +7777,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7863,7 +7786,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7873,7 +7795,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -7883,7 +7804,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8075,14 +7995,14 @@ SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:32.958000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:32.958000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.565000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.565000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:32.958000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.565000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=FALSE;
@@ -8161,7 +8081,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8171,7 +8090,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8181,7 +8099,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8191,7 +8108,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8392,13 +8308,13 @@ SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
START BATCH DDL;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.007000000Z';
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.621000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
START BATCH DDL;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.007000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.621000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
@@ -8489,7 +8405,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8499,7 +8414,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8509,7 +8423,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8519,7 +8432,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8753,8 +8665,8 @@ SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
SET TRANSACTION READ ONLY;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.057000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.057000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.678000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.678000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
@@ -8762,7 +8674,7 @@ SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
SET TRANSACTION READ ONLY;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.057000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.678000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
@@ -8869,7 +8781,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8879,7 +8790,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8889,7 +8799,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -8899,7 +8808,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9200,8 +9108,8 @@ SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
UPDATE foo SET bar=1;
COMMIT;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.115000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.115000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.749000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.749000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
@@ -9209,8 +9117,8 @@ SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
UPDATE foo SET bar=1;
COMMIT;
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.115000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.115000000Z'
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.749000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:40.749000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
@@ -9333,7 +9241,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9343,7 +9250,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9353,7 +9259,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9363,7 +9268,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9596,15 +9500,15 @@ NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.165000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.165000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.812000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.812000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.165000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.812000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
@@ -9697,7 +9601,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9707,7 +9610,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9717,7 +9619,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9727,7 +9628,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -9958,15 +9858,15 @@ NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id);
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.216000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.216000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.876000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.876000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
CREATE TABLE foo (id INT64 NOT NULL, name STRING(100)) PRIMARY KEY (id);
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.216000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.216000000Z'
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.876000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:40.876000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
@@ -10061,7 +9961,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10071,7 +9970,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10081,7 +9979,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10091,7 +9988,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10329,15 +10225,15 @@ NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
UPDATE foo SET bar=1;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.268000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.268000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.934000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.934000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
UPDATE foo SET bar=1;
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.268000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.268000000Z'
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.934000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:40.934000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
@@ -10432,7 +10328,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10442,7 +10337,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10452,7 +10346,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10462,7 +10355,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10730,16 +10622,16 @@ SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.320000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.320000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:40.992000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:40.992000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
@EXPECT RESULT_SET 'TEST',1
SELECT 1 AS TEST;
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.320000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.320000000Z'
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:40.992000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:40.992000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
@@ -10848,7 +10740,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10858,7 +10749,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10868,7 +10758,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -10878,7 +10767,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11125,15 +11013,15 @@ NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
SELECT 1 AS TEST;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.371000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.371000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.052000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.052000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
SELECT 1 AS TEST;
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.371000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.371000000Z'
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.052000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.052000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
@@ -11228,7 +11116,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11238,7 +11125,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11248,7 +11134,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11258,7 +11143,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11466,14 +11350,14 @@ SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.419000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.419000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.108000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.108000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
SET AUTOCOMMIT=TRUE;
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.419000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.419000000Z'
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.108000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.108000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=FALSE;
@@ -11554,7 +11438,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11564,7 +11447,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11574,7 +11456,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11584,7 +11465,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11796,15 +11676,15 @@ NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s';
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.465000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.465000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.166000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.166000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
SET SPANNER.READ_ONLY_STALENESS='MAX_STALENESS 10s';
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.465000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.465000000Z'
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.166000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.166000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
@@ -11899,7 +11779,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11909,7 +11788,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11919,7 +11797,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -11929,7 +11806,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12211,8 +12087,8 @@ SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
SELECT 1 AS TEST;
COMMIT;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.517000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.517000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.226000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.226000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
@@ -12220,8 +12096,8 @@ SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
SELECT 1 AS TEST;
COMMIT;
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.517000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.517000000Z'
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.226000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.226000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
@@ -12344,7 +12220,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12354,7 +12229,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12364,7 +12238,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12374,7 +12247,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12604,15 +12476,15 @@ NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.565000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.565000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.279000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.279000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
BEGIN TRANSACTION;
@EXPECT EXCEPTION FAILED_PRECONDITION
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.565000000Z';
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.279000000Z';
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
@@ -12705,7 +12577,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12715,7 +12586,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12725,7 +12595,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12735,7 +12604,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -12950,15 +12818,15 @@ NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
SELECT 1 AS TEST;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.614000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.614000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.336000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.336000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
SELECT 1 AS TEST;
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.614000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.614000000Z'
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.336000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.336000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
@@ -13053,7 +12921,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13063,7 +12930,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13073,7 +12939,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13083,7 +12948,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13305,15 +13169,15 @@ NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
SELECT 1 AS TEST;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.664000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.664000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.392000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.392000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
SELECT 1 AS TEST;
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.664000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.664000000Z'
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.392000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.392000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
@@ -13408,7 +13272,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13418,7 +13281,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13428,7 +13290,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13438,7 +13299,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13630,14 +13490,14 @@ SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
-SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-04-08T18:15:33.710000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-04-08T18:15:33.710000000Z'
+SET SPANNER.READ_ONLY_STALENESS='READ_TIMESTAMP 2025-06-12T08:45:41.442000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','READ_TIMESTAMP 2025-06-12T08:45:41.442000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
SET AUTOCOMMIT=TRUE;
-SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-04-08T18:15:33.710000000Z';
-@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-04-08T18:15:33.710000000Z'
+SET SPANNER.READ_ONLY_STALENESS='MIN_READ_TIMESTAMP 2025-06-12T08:45:41.442000000Z';
+@EXPECT RESULT_SET 'SPANNER.READ_ONLY_STALENESS','MIN_READ_TIMESTAMP 2025-06-12T08:45:41.442000000Z'
SHOW VARIABLE SPANNER.READ_ONLY_STALENESS;
NEW_CONNECTION;
SET SPANNER.READONLY=TRUE;
@@ -13718,7 +13578,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0s';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13728,7 +13587,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ms';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13738,7 +13596,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0us';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
@@ -13748,7 +13605,6 @@ SHOW VARIABLE STATEMENT_TIMEOUT;
SET STATEMENT_TIMEOUT=DEFAULT;
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
-@EXPECT EXCEPTION INVALID_ARGUMENT
SET STATEMENT_TIMEOUT='0ns';
@EXPECT RESULT_SET 'STATEMENT_TIMEOUT','0'
SHOW VARIABLE STATEMENT_TIMEOUT;
From 7bfc62d3d9e57242e0dfddea090208f8c65f0f8e Mon Sep 17 00:00:00 2001
From: adhiggs <38925938+adhiggs@users.noreply.github.com>
Date: Tue, 17 Jun 2025 00:15:01 -0700
Subject: [PATCH 03/10] docs: Update SpannerSample.java to align with best
practices (#3625)
* Update SpannerSample.java
Encapsulates both statements in a try-with-resources statement
* Update SpannerSample.java
* Update SpannerSample.java
Fix spacing linter errors
* Update SpannerSample.java
Clear Linter errors for indent
---------
Co-authored-by: Sakthivel Subramanian <179120858+sakthivelmanii@users.noreply.github.com>
---
.../com/example/spanner/SpannerSample.java | 21 ++++++++++---------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java b/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java
index d406225c28b..a01b00c0f6c 100644
--- a/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java
+++ b/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java
@@ -679,24 +679,25 @@ static void readOnlyTransaction(DatabaseClient dbClient) {
// ReadOnlyTransaction must be closed by calling close() on it to release resources held by it.
// We use a try-with-resource block to automatically do so.
try (ReadOnlyTransaction transaction = dbClient.readOnlyTransaction()) {
- ResultSet queryResultSet =
+ try (ResultSet queryResultSet =
transaction.executeQuery(
- Statement.of("SELECT SingerId, AlbumId, AlbumTitle FROM Albums"));
- while (queryResultSet.next()) {
- System.out.printf(
- "%d %d %s\n",
- queryResultSet.getLong(0), queryResultSet.getLong(1), queryResultSet.getString(2));
- }
+ Statement.of("SELECT SingerId, AlbumId, AlbumTitle FROM Albums"))) {
+ while (queryResultSet.next()) {
+ System.out.printf(
+ "%d %d %s\n",
+ queryResultSet.getLong(0), queryResultSet.getLong(1), queryResultSet.getString(2));
+ }
+ } // queryResultSet.close() is automatically called here
try (ResultSet readResultSet =
transaction.read(
- "Albums", KeySet.all(), Arrays.asList("SingerId", "AlbumId", "AlbumTitle"))) {
+ "Albums", KeySet.all(), Arrays.asList("SingerId", "AlbumId", "AlbumTitle"))) {
while (readResultSet.next()) {
System.out.printf(
"%d %d %s\n",
readResultSet.getLong(0), readResultSet.getLong(1), readResultSet.getString(2));
}
- }
- }
+ } // readResultSet.close() is automatically called here
+ } // transaction.close() is automatically called here
}
// [END spanner_read_only_transaction]
From db0ed074b8224160331d371b788ccf778d6ec447 Mon Sep 17 00:00:00 2001
From: Emmanuel T Odeke
Date: Thu, 19 Jun 2025 22:50:27 -0600
Subject: [PATCH 04/10] chore(x-goog-spanner-request-id): add
SessionImpl.getChannel() and Options.RequestIdOption.(equals, hashCode)
(#3900)
* chore(x-goog-spanner-request-id): add SessionImpl.getChannel() and Options.RequestIdOption.(equals, hashCode)
Implements channelId retrieval that'll then be used to
plumb into x-goog-spanner-request-id's channel. Also implements
Options.RequestIdOption.(equals, hashCode)
Fixes #3899
Implement Options.RequestIdOption.(equals, hashCode)
* Return 0 for getChannel() with multiplexed sessions
---
.../com/google/cloud/spanner/Options.java | 12 ++++++++++--
.../com/google/cloud/spanner/SessionImpl.java | 19 ++++++++++++-------
.../com/google/cloud/spanner/OptionsTest.java | 16 ++++++++++++++++
3 files changed, 38 insertions(+), 9 deletions(-)
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/Options.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/Options.java
index 9771e2173f1..27ff846f67b 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/Options.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/Options.java
@@ -1088,12 +1088,20 @@ void appendToOptions(Options options) {
@Override
public int hashCode() {
- return RequestIdOption.class.hashCode();
+ return this.reqId.hashCode();
}
@Override
public boolean equals(Object o) {
- return o instanceof RequestIdOption;
+ // instanceof for a null object returns false.
+ if (!(o instanceof RequestIdOption)) {
+ return false;
+ }
+ RequestIdOption other = (RequestIdOption) o;
+ if (this.reqId == null || other.reqId == null) {
+ return this.reqId == null && other.reqId == null;
+ }
+ return this.reqId.equals(other.reqId);
}
}
}
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionImpl.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionImpl.java
index c78cfaeea3f..e206eaa4250 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionImpl.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionImpl.java
@@ -319,7 +319,7 @@ public CommitResponse writeAtLeastOnceWithOptions(
private XGoogSpannerRequestId reqIdOrFresh(Options options) {
XGoogSpannerRequestId reqId = options.reqId();
if (reqId == null) {
- reqId = this.getRequestIdCreator().nextRequestId(1 /* TODO: channelId */, 1);
+ reqId = this.getRequestIdCreator().nextRequestId(this.getChannel(), 1);
}
return reqId;
}
@@ -464,8 +464,7 @@ public AsyncTransactionManagerImpl transactionManagerAsync(TransactionOption...
@Override
public ApiFuture asyncClose() {
- XGoogSpannerRequestId reqId =
- this.getRequestIdCreator().nextRequestId(1 /* TODO: channelId */, 0);
+ XGoogSpannerRequestId reqId = this.getRequestIdCreator().nextRequestId(this.getChannel(), 0);
return spanner.getRpc().asyncDeleteSession(getName(), reqId.withOptions(getOptions()));
}
@@ -473,8 +472,7 @@ public ApiFuture asyncClose() {
public void close() {
ISpan span = tracer.spanBuilder(SpannerImpl.DELETE_SESSION);
try (IScope s = tracer.withSpan(span)) {
- XGoogSpannerRequestId reqId =
- this.getRequestIdCreator().nextRequestId(1 /* TODO: channelId */, 0);
+ XGoogSpannerRequestId reqId = this.getRequestIdCreator().nextRequestId(this.getChannel(), 0);
spanner.getRpc().deleteSession(getName(), reqId.withOptions(getOptions()));
} catch (RuntimeException e) {
span.setStatus(e);
@@ -505,8 +503,7 @@ ApiFuture beginTransactionAsync(
}
final BeginTransactionRequest request = requestBuilder.build();
final ApiFuture requestFuture;
- XGoogSpannerRequestId reqId =
- this.getRequestIdCreator().nextRequestId(1 /* TODO: channelId */, 1);
+ XGoogSpannerRequestId reqId = this.getRequestIdCreator().nextRequestId(this.getChannel(), 1);
try (IScope ignore = tracer.withSpan(span)) {
requestFuture =
spanner
@@ -597,4 +594,12 @@ public void setRequestIdCreator(XGoogSpannerRequestId.RequestIdCreator creator)
public XGoogSpannerRequestId.RequestIdCreator getRequestIdCreator() {
return this.requestIdCreator;
}
+
+ int getChannel() {
+ if (getIsMultiplexed()) {
+ return 0;
+ }
+ Long channelHint = (Long) this.getOptions().get(SpannerRpc.Option.CHANNEL_HINT);
+ return (int) (channelHint % this.spanner.getOptions().getNumChannels());
+ }
}
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OptionsTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OptionsTest.java
index f8b5304a706..67a2adf1231 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OptionsTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OptionsTest.java
@@ -900,6 +900,22 @@ public void testRequestId() {
assertThat(option3.toString()).doesNotContain("requestId");
}
+ @Test
+ public void testRequestIdOptionEqualsAndHashCode() {
+ XGoogSpannerRequestId reqId1 = XGoogSpannerRequestId.of(1, 2, 3, 4);
+ XGoogSpannerRequestId reqId2 = XGoogSpannerRequestId.of(2, 3, 4, 5);
+ Options.RequestIdOption opt1 = Options.requestId(reqId1);
+ Options.RequestIdOption opt1Prime = Options.requestId(reqId1);
+ Options.RequestIdOption opt2 = Options.requestId(reqId2);
+
+ assertTrue(opt1.equals(opt1));
+ assertTrue(opt1.equals(opt1Prime));
+ assertEquals(opt1.hashCode(), opt1Prime.hashCode());
+ assertFalse(opt1.equals(opt2));
+ assertNotEquals(opt1, opt2);
+ assertNotEquals(opt1.hashCode(), opt2.hashCode());
+ }
+
@Test
public void testOptions_WithMultipleDifferentRequestIds() {
XGoogSpannerRequestId reqId1 = XGoogSpannerRequestId.of(1, 1, 1, 1);
From 37fdc27aab4e71ac141c2a2c979f864e97395a97 Mon Sep 17 00:00:00 2001
From: Sakthivel Subramanian
<179120858+sakthivelmanii@users.noreply.github.com>
Date: Mon, 23 Jun 2025 14:26:14 +0530
Subject: [PATCH 05/10] feat: Use multiplexed sessions for read-only
transactions (#3917)
* feat: Enable Multiplex session by default
* enable new github actions
* enable regular session pipeline with emulator
* rename job names
* skip running multiplex session tests in regular session
* chore: generate libraries at Wed Jun 18 07:14:15 UTC 2025
* Skip multiplex session tests in regular session
* Fix tests
* Fix tests
* Introduce a new Kokoro job for regular sessions
---------
Co-authored-by: cloud-java-bot
---
.github/workflows/ci.yaml | 38 ++++++++++++++++++-
...gainst-emulator-with-regular-session.yaml} | 2 +-
.../integration-regular-sessions-enabled.cfg | 38 +++++++++++++++++++
.../cloud/spanner/SessionPoolOptions.java | 2 +-
...edSessionDatabaseClientMockServerTest.java | 2 +
...OpenTelemetryBuiltInMetricsTracerTest.java | 2 +
...yOnDifferentGrpcChannelMockServerTest.java | 2 +
.../cloud/spanner/SessionPoolOptionsTest.java | 2 +
.../com/google/cloud/spanner/TestHelper.java | 25 ++++++++++++
9 files changed, 110 insertions(+), 3 deletions(-)
rename .github/workflows/{integration-tests-against-emulator-with-multiplexed-session.yaml => integration-tests-against-emulator-with-regular-session.yaml} (94%)
create mode 100644 .kokoro/presubmit/integration-regular-sessions-enabled.cfg
create mode 100644 google-cloud-spanner/src/test/java/com/google/cloud/spanner/TestHelper.java
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index b2b187f4ac5..8717db17ae5 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -52,9 +52,25 @@ jobs:
- run: .kokoro/build.sh
env:
JOB_TYPE: test
- GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS: true
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_PARTITIONED_OPS: true
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_FOR_RW: true
+ units-with-regular-session:
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ java: [ 11, 17, 21 ]
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-java@v3
+ with:
+ distribution: temurin
+ java-version: ${{matrix.java}}
+ - run: java -version
+ - run: .kokoro/build.sh
+ env:
+ JOB_TYPE: test
+ GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS: false
units-java8:
# Building using Java 17 and run the tests with Java 8 runtime
name: "units (8)"
@@ -96,6 +112,26 @@ jobs:
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS: true
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_PARTITIONED_OPS: true
GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_FOR_RW: true
+ units-with-regular-session8:
+ # Building using Java 17 and run the tests with Java 8 runtime
+ name: "units-with-regular-session (8)"
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-java@v3
+ with:
+ java-version: 8
+ distribution: temurin
+ - run: echo "SUREFIRE_JVM_OPT=-Djvm=${JAVA_HOME}/bin/java" >> $GITHUB_ENV
+ shell: bash
+ - uses: actions/setup-java@v3
+ with:
+ java-version: 17
+ distribution: temurin
+ - run: .kokoro/build.sh
+ env:
+ JOB_TYPE: test
+ GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS: false
windows:
runs-on: windows-latest
steps:
diff --git a/.github/workflows/integration-tests-against-emulator-with-multiplexed-session.yaml b/.github/workflows/integration-tests-against-emulator-with-regular-session.yaml
similarity index 94%
rename from .github/workflows/integration-tests-against-emulator-with-multiplexed-session.yaml
rename to .github/workflows/integration-tests-against-emulator-with-regular-session.yaml
index 6dda467b64e..06e7e416d92 100644
--- a/.github/workflows/integration-tests-against-emulator-with-multiplexed-session.yaml
+++ b/.github/workflows/integration-tests-against-emulator-with-regular-session.yaml
@@ -39,4 +39,4 @@ jobs:
env:
JOB_TYPE: test
SPANNER_EMULATOR_HOST: localhost:9010
- GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS: true
\ No newline at end of file
+ GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS: false
\ No newline at end of file
diff --git a/.kokoro/presubmit/integration-regular-sessions-enabled.cfg b/.kokoro/presubmit/integration-regular-sessions-enabled.cfg
new file mode 100644
index 00000000000..c845c470ebc
--- /dev/null
+++ b/.kokoro/presubmit/integration-regular-sessions-enabled.cfg
@@ -0,0 +1,38 @@
+# Format: //devtools/kokoro/config/proto/build.proto
+
+# Configure the docker image for kokoro-trampoline.
+env_vars: {
+ key: "TRAMPOLINE_IMAGE"
+ value: "gcr.io/cloud-devrel-kokoro-resources/java8"
+}
+
+env_vars: {
+ key: "JOB_TYPE"
+ value: "integration"
+}
+
+# TODO: remove this after we've migrated all tests and scripts
+env_vars: {
+ key: "GCLOUD_PROJECT"
+ value: "gcloud-devel"
+}
+
+env_vars: {
+ key: "GOOGLE_CLOUD_PROJECT"
+ value: "gcloud-devel"
+}
+
+env_vars: {
+ key: "GOOGLE_APPLICATION_CREDENTIALS"
+ value: "secret_manager/java-it-service-account"
+}
+
+env_vars: {
+ key: "SECRET_MANAGER_KEYS"
+ value: "java-it-service-account"
+}
+
+env_vars: {
+ key: "GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS"
+ value: "false"
+}
\ No newline at end of file
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPoolOptions.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPoolOptions.java
index a4490c24d16..51a5ddccafd 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPoolOptions.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPoolOptions.java
@@ -613,7 +613,7 @@ public static class Builder {
// This field controls the default behavior of session management in Java client.
// Set useMultiplexedSession to true to make multiplexed session the default.
- private boolean useMultiplexedSession = false;
+ private boolean useMultiplexedSession = true;
// This field controls the default behavior of session management for RW operations in Java
// client.
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/MultiplexedSessionDatabaseClientMockServerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/MultiplexedSessionDatabaseClientMockServerTest.java
index d0841e3ac40..0448656475a 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/MultiplexedSessionDatabaseClientMockServerTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/MultiplexedSessionDatabaseClientMockServerTest.java
@@ -27,6 +27,7 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeFalse;
import com.google.api.core.ApiFuture;
import com.google.api.core.ApiFutures;
@@ -69,6 +70,7 @@ public class MultiplexedSessionDatabaseClientMockServerTest extends AbstractMock
@BeforeClass
public static void setupResults() {
+ assumeFalse(TestHelper.isMultiplexSessionDisabled());
mockSpanner.putStatementResults(
StatementResult.query(STATEMENT, new RandomResultSetGenerator(1).generate()));
mockSpanner.putStatementResult(StatementResult.update(UPDATE_STATEMENT, UPDATE_COUNT));
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetryBuiltInMetricsTracerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetryBuiltInMetricsTracerTest.java
index c3b91ad6c51..4145713c7f7 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetryBuiltInMetricsTracerTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetryBuiltInMetricsTracerTest.java
@@ -24,6 +24,7 @@
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import static org.junit.Assume.assumeFalse;
import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
import com.google.api.gax.retrying.RetrySettings;
@@ -255,6 +256,7 @@ public void testMetricsWithGaxRetryUnaryRpc() {
@Test
public void testNoNetworkConnection() {
+ assumeFalse(TestHelper.isMultiplexSessionDisabled());
// Create a Spanner instance that tries to connect to a server that does not exist.
// This simulates a bad network connection.
SpannerOptions.Builder builder = SpannerOptions.newBuilder();
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/RetryOnDifferentGrpcChannelMockServerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/RetryOnDifferentGrpcChannelMockServerTest.java
index f3e15df8189..e7ef9955d4f 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/RetryOnDifferentGrpcChannelMockServerTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/RetryOnDifferentGrpcChannelMockServerTest.java
@@ -284,6 +284,7 @@ public void testDenyListedChannelIsCleared() {
@Test
public void testSingleUseQuery_retriesOnNewChannel() {
+ assumeFalse(TestHelper.isMultiplexSessionDisabled());
SpannerOptions.Builder builder = createSpannerOptionsBuilder();
builder.setSessionPoolOption(
SessionPoolOptions.newBuilder().setUseMultiplexedSession(true).build());
@@ -312,6 +313,7 @@ public void testSingleUseQuery_retriesOnNewChannel() {
@Test
public void testSingleUseQuery_stopsRetrying() {
+ assumeFalse(TestHelper.isMultiplexSessionDisabled());
SpannerOptions.Builder builder = createSpannerOptionsBuilder();
builder.setSessionPoolOption(
SessionPoolOptions.newBuilder().setUseMultiplexedSession(true).build());
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionPoolOptionsTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionPoolOptionsTest.java
index d4b36e97488..705783d78c0 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionPoolOptionsTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/SessionPoolOptionsTest.java
@@ -283,6 +283,7 @@ public void testRandomizePositionQPSThreshold() {
@Test
public void testUseMultiplexedSession() {
+ assumeFalse(TestHelper.isMultiplexSessionDisabled());
// skip these tests since this configuration can have dual behaviour in different test-runners
assumeFalse(SessionPoolOptions.newBuilder().build().getUseMultiplexedSession());
assertEquals(false, SessionPoolOptions.newBuilder().build().getUseMultiplexedSession());
@@ -304,6 +305,7 @@ public void testUseMultiplexedSession() {
@Test
public void testUseMultiplexedSessionForRW() {
// skip these tests since this configuration can have dual behaviour in different test-runners
+ assumeFalse(TestHelper.isMultiplexSessionDisabled());
assumeFalse(
Boolean.parseBoolean(System.getenv("GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS_FOR_RW")));
assumeFalse(SessionPoolOptions.newBuilder().build().getUseMultiplexedSession());
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TestHelper.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TestHelper.java
new file mode 100644
index 00000000000..eb72238e8a5
--- /dev/null
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/TestHelper.java
@@ -0,0 +1,25 @@
+/*
+ * 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
+ *
+ * https://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.google.cloud.spanner;
+
+class TestHelper {
+
+ static boolean isMultiplexSessionDisabled() {
+ return System.getenv()
+ .getOrDefault("GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS", "")
+ .equalsIgnoreCase("false");
+ }
+}
From 5f924b7252dc851c7c9ab21fe044e7d9d273f1fc Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Mon, 23 Jun 2025 13:15:37 -0400
Subject: [PATCH 06/10] chore(main): release 6.95.2-SNAPSHOT (#3912)
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
---
benchmarks/pom.xml | 2 +-
google-cloud-spanner-bom/pom.xml | 18 ++++++++---------
google-cloud-spanner-executor/pom.xml | 4 ++--
google-cloud-spanner/pom.xml | 4 ++--
.../pom.xml | 4 ++--
.../pom.xml | 4 ++--
grpc-google-cloud-spanner-executor-v1/pom.xml | 4 ++--
grpc-google-cloud-spanner-v1/pom.xml | 4 ++--
pom.xml | 20 +++++++++----------
.../pom.xml | 4 ++--
.../pom.xml | 4 ++--
.../pom.xml | 4 ++--
proto-google-cloud-spanner-v1/pom.xml | 4 ++--
samples/snapshot/pom.xml | 2 +-
versions.txt | 20 +++++++++----------
15 files changed, 51 insertions(+), 51 deletions(-)
diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml
index b4e0c5c8ac5..6cefe336b80 100644
--- a/benchmarks/pom.xml
+++ b/benchmarks/pom.xml
@@ -24,7 +24,7 @@
com.google.cloud
google-cloud-spanner-parent
- 6.95.1
+ 6.95.2-SNAPSHOT
diff --git a/google-cloud-spanner-bom/pom.xml b/google-cloud-spanner-bom/pom.xml
index 18f9eb63391..2cce6b40241 100644
--- a/google-cloud-spanner-bom/pom.xml
+++ b/google-cloud-spanner-bom/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.google.cloud
google-cloud-spanner-bom
- 6.95.1
+ 6.95.2-SNAPSHOT
pom
com.google.cloud
@@ -53,43 +53,43 @@
com.google.cloud
google-cloud-spanner
- 6.95.1
+ 6.95.2-SNAPSHOT
com.google.cloud
google-cloud-spanner
test-jar
- 6.95.1
+ 6.95.2-SNAPSHOT
com.google.api.grpc
grpc-google-cloud-spanner-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
com.google.api.grpc
grpc-google-cloud-spanner-admin-instance-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
com.google.api.grpc
grpc-google-cloud-spanner-admin-database-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
com.google.api.grpc
proto-google-cloud-spanner-admin-instance-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
com.google.api.grpc
proto-google-cloud-spanner-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
com.google.api.grpc
proto-google-cloud-spanner-admin-database-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
diff --git a/google-cloud-spanner-executor/pom.xml b/google-cloud-spanner-executor/pom.xml
index 040199d847b..34f0b8dc2e1 100644
--- a/google-cloud-spanner-executor/pom.xml
+++ b/google-cloud-spanner-executor/pom.xml
@@ -5,14 +5,14 @@
4.0.0
com.google.cloud
google-cloud-spanner-executor
- 6.95.1
+ 6.95.2-SNAPSHOT
jar
Google Cloud Spanner Executor
com.google.cloud
google-cloud-spanner-parent
- 6.95.1
+ 6.95.2-SNAPSHOT
diff --git a/google-cloud-spanner/pom.xml b/google-cloud-spanner/pom.xml
index e0612e58d2a..c502922d0e1 100644
--- a/google-cloud-spanner/pom.xml
+++ b/google-cloud-spanner/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.google.cloud
google-cloud-spanner
- 6.95.1
+ 6.95.2-SNAPSHOT
jar
Google Cloud Spanner
https://github.com/googleapis/java-spanner
@@ -11,7 +11,7 @@
com.google.cloud
google-cloud-spanner-parent
- 6.95.1
+ 6.95.2-SNAPSHOT
google-cloud-spanner
diff --git a/grpc-google-cloud-spanner-admin-database-v1/pom.xml b/grpc-google-cloud-spanner-admin-database-v1/pom.xml
index 6f242aea60b..8976cb2657f 100644
--- a/grpc-google-cloud-spanner-admin-database-v1/pom.xml
+++ b/grpc-google-cloud-spanner-admin-database-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
grpc-google-cloud-spanner-admin-database-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
grpc-google-cloud-spanner-admin-database-v1
GRPC library for grpc-google-cloud-spanner-admin-database-v1
com.google.cloud
google-cloud-spanner-parent
- 6.95.1
+ 6.95.2-SNAPSHOT
diff --git a/grpc-google-cloud-spanner-admin-instance-v1/pom.xml b/grpc-google-cloud-spanner-admin-instance-v1/pom.xml
index a1585c36a19..d17cc2a71e9 100644
--- a/grpc-google-cloud-spanner-admin-instance-v1/pom.xml
+++ b/grpc-google-cloud-spanner-admin-instance-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
grpc-google-cloud-spanner-admin-instance-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
grpc-google-cloud-spanner-admin-instance-v1
GRPC library for grpc-google-cloud-spanner-admin-instance-v1
com.google.cloud
google-cloud-spanner-parent
- 6.95.1
+ 6.95.2-SNAPSHOT
diff --git a/grpc-google-cloud-spanner-executor-v1/pom.xml b/grpc-google-cloud-spanner-executor-v1/pom.xml
index 4c1b136ef05..9df46ece301 100644
--- a/grpc-google-cloud-spanner-executor-v1/pom.xml
+++ b/grpc-google-cloud-spanner-executor-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
grpc-google-cloud-spanner-executor-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
grpc-google-cloud-spanner-executor-v1
GRPC library for google-cloud-spanner
com.google.cloud
google-cloud-spanner-parent
- 6.95.1
+ 6.95.2-SNAPSHOT
diff --git a/grpc-google-cloud-spanner-v1/pom.xml b/grpc-google-cloud-spanner-v1/pom.xml
index 602d9b5c405..abf35aad3f1 100644
--- a/grpc-google-cloud-spanner-v1/pom.xml
+++ b/grpc-google-cloud-spanner-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
grpc-google-cloud-spanner-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
grpc-google-cloud-spanner-v1
GRPC library for grpc-google-cloud-spanner-v1
com.google.cloud
google-cloud-spanner-parent
- 6.95.1
+ 6.95.2-SNAPSHOT
diff --git a/pom.xml b/pom.xml
index e91fdf014f1..965082cb312 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud
google-cloud-spanner-parent
pom
- 6.95.1
+ 6.95.2-SNAPSHOT
Google Cloud Spanner Parent
https://github.com/googleapis/java-spanner
@@ -61,47 +61,47 @@
com.google.api.grpc
proto-google-cloud-spanner-admin-instance-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
com.google.api.grpc
proto-google-cloud-spanner-executor-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
com.google.api.grpc
grpc-google-cloud-spanner-executor-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
com.google.api.grpc
proto-google-cloud-spanner-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
com.google.api.grpc
proto-google-cloud-spanner-admin-database-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
com.google.api.grpc
grpc-google-cloud-spanner-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
com.google.api.grpc
grpc-google-cloud-spanner-admin-instance-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
com.google.api.grpc
grpc-google-cloud-spanner-admin-database-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
com.google.cloud
google-cloud-spanner
- 6.95.1
+ 6.95.2-SNAPSHOT
diff --git a/proto-google-cloud-spanner-admin-database-v1/pom.xml b/proto-google-cloud-spanner-admin-database-v1/pom.xml
index c162409c92a..4666ec36a95 100644
--- a/proto-google-cloud-spanner-admin-database-v1/pom.xml
+++ b/proto-google-cloud-spanner-admin-database-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
proto-google-cloud-spanner-admin-database-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
proto-google-cloud-spanner-admin-database-v1
PROTO library for proto-google-cloud-spanner-admin-database-v1
com.google.cloud
google-cloud-spanner-parent
- 6.95.1
+ 6.95.2-SNAPSHOT
diff --git a/proto-google-cloud-spanner-admin-instance-v1/pom.xml b/proto-google-cloud-spanner-admin-instance-v1/pom.xml
index 0ed9f0bbe43..e704f3b6380 100644
--- a/proto-google-cloud-spanner-admin-instance-v1/pom.xml
+++ b/proto-google-cloud-spanner-admin-instance-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
proto-google-cloud-spanner-admin-instance-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
proto-google-cloud-spanner-admin-instance-v1
PROTO library for proto-google-cloud-spanner-admin-instance-v1
com.google.cloud
google-cloud-spanner-parent
- 6.95.1
+ 6.95.2-SNAPSHOT
diff --git a/proto-google-cloud-spanner-executor-v1/pom.xml b/proto-google-cloud-spanner-executor-v1/pom.xml
index 7c7547780d3..1902f648052 100644
--- a/proto-google-cloud-spanner-executor-v1/pom.xml
+++ b/proto-google-cloud-spanner-executor-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
proto-google-cloud-spanner-executor-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
proto-google-cloud-spanner-executor-v1
Proto library for google-cloud-spanner
com.google.cloud
google-cloud-spanner-parent
- 6.95.1
+ 6.95.2-SNAPSHOT
diff --git a/proto-google-cloud-spanner-v1/pom.xml b/proto-google-cloud-spanner-v1/pom.xml
index 03e85b8ad1f..488ad0d891f 100644
--- a/proto-google-cloud-spanner-v1/pom.xml
+++ b/proto-google-cloud-spanner-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
proto-google-cloud-spanner-v1
- 6.95.1
+ 6.95.2-SNAPSHOT
proto-google-cloud-spanner-v1
PROTO library for proto-google-cloud-spanner-v1
com.google.cloud
google-cloud-spanner-parent
- 6.95.1
+ 6.95.2-SNAPSHOT
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index 0e5d07a29b4..b1f270d5355 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -32,7 +32,7 @@
com.google.cloud
google-cloud-spanner
- 6.95.1
+ 6.95.2-SNAPSHOT
diff --git a/versions.txt b/versions.txt
index 760e70b1b33..00aeafc5317 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,13 +1,13 @@
# Format:
# module:released-version:current-version
-proto-google-cloud-spanner-admin-instance-v1:6.95.1:6.95.1
-proto-google-cloud-spanner-v1:6.95.1:6.95.1
-proto-google-cloud-spanner-admin-database-v1:6.95.1:6.95.1
-grpc-google-cloud-spanner-v1:6.95.1:6.95.1
-grpc-google-cloud-spanner-admin-instance-v1:6.95.1:6.95.1
-grpc-google-cloud-spanner-admin-database-v1:6.95.1:6.95.1
-google-cloud-spanner:6.95.1:6.95.1
-google-cloud-spanner-executor:6.95.1:6.95.1
-proto-google-cloud-spanner-executor-v1:6.95.1:6.95.1
-grpc-google-cloud-spanner-executor-v1:6.95.1:6.95.1
+proto-google-cloud-spanner-admin-instance-v1:6.95.1:6.95.2-SNAPSHOT
+proto-google-cloud-spanner-v1:6.95.1:6.95.2-SNAPSHOT
+proto-google-cloud-spanner-admin-database-v1:6.95.1:6.95.2-SNAPSHOT
+grpc-google-cloud-spanner-v1:6.95.1:6.95.2-SNAPSHOT
+grpc-google-cloud-spanner-admin-instance-v1:6.95.1:6.95.2-SNAPSHOT
+grpc-google-cloud-spanner-admin-database-v1:6.95.1:6.95.2-SNAPSHOT
+google-cloud-spanner:6.95.1:6.95.2-SNAPSHOT
+google-cloud-spanner-executor:6.95.1:6.95.2-SNAPSHOT
+proto-google-cloud-spanner-executor-v1:6.95.1:6.95.2-SNAPSHOT
+grpc-google-cloud-spanner-executor-v1:6.95.1:6.95.2-SNAPSHOT
From ff3d212c98276c4084f44619916d0444c9652803 Mon Sep 17 00:00:00 2001
From: tlhquynh
Date: Wed, 25 Jun 2025 07:55:56 +0200
Subject: [PATCH 07/10] docs: Add snippet for Repeatable Read configuration at
client and transaction (#3908)
* docs: Add snippet for Repeatable Read configuration at client and transaction level.
* docs: Fix checkstyle violations
---------
Co-authored-by: Sakthivel Subramanian
---
.../com/example/spanner/SpannerSample.java | 48 +++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java b/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java
index a01b00c0f6c..0004f47bb02 100644
--- a/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java
+++ b/samples/snippets/src/main/java/com/example/spanner/SpannerSample.java
@@ -32,6 +32,7 @@
import com.google.cloud.spanner.KeyRange;
import com.google.cloud.spanner.KeySet;
import com.google.cloud.spanner.Mutation;
+import com.google.cloud.spanner.Options;
import com.google.cloud.spanner.ReadOnlyTransaction;
import com.google.cloud.spanner.ResultSet;
import com.google.cloud.spanner.Spanner;
@@ -39,6 +40,7 @@
import com.google.cloud.spanner.SpannerException;
import com.google.cloud.spanner.SpannerExceptionFactory;
import com.google.cloud.spanner.SpannerOptions;
+import com.google.cloud.spanner.SpannerOptions.Builder.DefaultReadWriteTransactionOptions;
import com.google.cloud.spanner.Statement;
import com.google.cloud.spanner.Struct;
import com.google.cloud.spanner.TimestampBound;
@@ -71,6 +73,7 @@
import com.google.spanner.admin.database.v1.RestoreDatabaseRequest;
import com.google.spanner.admin.database.v1.RestoreInfo;
import com.google.spanner.v1.ExecuteSqlRequest.QueryOptions;
+import com.google.spanner.v1.TransactionOptions.IsolationLevel;
import java.math.BigDecimal;
import java.time.Instant;
import java.time.ZoneId;
@@ -1552,6 +1555,47 @@ static void queryWithQueryOptions(DatabaseClient dbClient) {
}
// [END spanner_query_with_query_options]
+ // [START spanner_isolation_level_settings]
+ static void isolationLevelSetting(DatabaseId db) {
+ // The isolation level specified at the client-level will be applied to all
+ // RW transactions.
+ DefaultReadWriteTransactionOptions transactionOptions =
+ DefaultReadWriteTransactionOptions.newBuilder()
+ .setIsolationLevel(IsolationLevel.SERIALIZABLE)
+ .build();
+ SpannerOptions options =
+ SpannerOptions.newBuilder()
+ .setDefaultTransactionOptions(transactionOptions)
+ .build();
+ Spanner spanner = options.getService();
+ DatabaseClient dbClient = spanner.getDatabaseClient(db);
+ dbClient
+ // The isolation level specified at the transaction-level takes precedence
+ // over the isolation level configured at the client-level.
+ .readWriteTransaction(Options.isolationLevel(IsolationLevel.REPEATABLE_READ))
+ .run(transaction -> {
+ // Read an AlbumTitle.
+ String selectSql =
+ "SELECT AlbumTitle from Albums WHERE SingerId = 1 and AlbumId = 1";
+ ResultSet resultSet = transaction.executeQuery(Statement.of(selectSql));
+ String title = null;
+ while (resultSet.next()) {
+ title = resultSet.getString("AlbumTitle");
+ }
+ System.out.printf("Current album title: %s\n", title);
+
+ // Update the title.
+ String updateSql =
+ "UPDATE Albums "
+ + "SET AlbumTitle = 'New Album Title' "
+ + "WHERE SingerId = 1 and AlbumId = 1";
+ long rowCount = transaction.executeUpdate(Statement.of(updateSql));
+ System.out.printf("%d record updated.\n", rowCount);
+ return null;
+ });
+ }
+ // [END spanner_isolation_level_settings]
+
// [START spanner_create_backup]
static void createBackup(DatabaseAdminClient dbAdminClient, String projectId, String instanceId,
String databaseId, String backupId, Timestamp versionTime) {
@@ -2108,6 +2152,9 @@ static void run(
case "querywithqueryoptions":
queryWithQueryOptions(dbClient);
break;
+ case "isolationlevelsettings":
+ isolationLevelSetting(database);
+ break;
case "createbackup":
createBackup(dbAdminClient, database.getInstanceId().getProject(),
database.getInstanceId().getInstance(), database.getDatabase(),
@@ -2218,6 +2265,7 @@ static void printUsageAndExit() {
System.err.println(" SpannerExample querywithtimestampparameter my-instance example-db");
System.err.println(" SpannerExample clientwithqueryoptions my-instance example-db");
System.err.println(" SpannerExample querywithqueryoptions my-instance example-db");
+ System.err.println(" SpannerExample isolationlevelsettings my-instance example-db");
System.err.println(" SpannerExample createbackup my-instance example-db");
System.err.println(" SpannerExample listbackups my-instance example-db");
System.err.println(" SpannerExample listbackupoperations my-instance example-db backup-id");
From 393a80df854949018f228738a11a104de799f8b1 Mon Sep 17 00:00:00 2001
From: Sakthivel Subramanian
<179120858+sakthivelmanii@users.noreply.github.com>
Date: Fri, 27 Jun 2025 11:03:05 +0530
Subject: [PATCH 08/10] feat: Allow JDBC to configure directpath for connection
(#3927)
* feat: Allow JDBC to configure directpath for connection
* Update JDBC connection property description
---
.../com/google/cloud/spanner/SpannerOptions.java | 8 +++++++-
.../spanner/connection/ConnectionOptions.java | 5 +++++
.../spanner/connection/ConnectionProperties.java | 14 ++++++++++++++
.../cloud/spanner/connection/SpannerPool.java | 11 +++++++++--
.../cloud/spanner/spi/v1/GapicSpannerRpc.java | 2 +-
.../spanner/connection/ConnectionOptionsTest.java | 13 +++++++++++++
6 files changed, 49 insertions(+), 4 deletions(-)
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java
index 790c602d45b..c3e9215a20e 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java
@@ -1000,7 +1000,7 @@ public static class Builder
private String compressorName;
private String emulatorHost = System.getenv("SPANNER_EMULATOR_HOST");
private boolean leaderAwareRoutingEnabled = true;
- private boolean attemptDirectPath = true;
+ private boolean attemptDirectPath = false;
private DirectedReadOptions directedReadOptions;
private boolean useVirtualThreads = false;
private OpenTelemetry openTelemetry;
@@ -1604,6 +1604,12 @@ public Builder disableLeaderAwareRouting() {
return this;
}
+ @BetaApi
+ public Builder enableDirectPath() {
+ this.attemptDirectPath = true;
+ return this;
+ }
+
@BetaApi
public Builder disableDirectPath() {
this.attemptDirectPath = false;
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionOptions.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionOptions.java
index 58b2c78fb2f..d9ba873b412 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionOptions.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionOptions.java
@@ -16,6 +16,7 @@
package com.google.cloud.spanner.connection;
+import static com.google.cloud.spanner.connection.ConnectionProperties.ATTEMPT_DIRECT_PATH;
import static com.google.cloud.spanner.connection.ConnectionProperties.AUTOCOMMIT;
import static com.google.cloud.spanner.connection.ConnectionProperties.AUTO_CONFIG_EMULATOR;
import static com.google.cloud.spanner.connection.ConnectionProperties.AUTO_PARTITION_MODE;
@@ -1081,6 +1082,10 @@ boolean isExperimentalHost() {
return getInitialConnectionPropertyValue(IS_EXPERIMENTAL_HOST);
}
+ boolean isAttemptDirectPath() {
+ return getInitialConnectionPropertyValue(ATTEMPT_DIRECT_PATH);
+ }
+
String getClientCertificate() {
return getInitialConnectionPropertyValue(CLIENT_CERTIFICATE);
}
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionProperties.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionProperties.java
index d9610a5a08a..042d7217586 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionProperties.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionProperties.java
@@ -183,6 +183,20 @@ public class ConnectionProperties {
BOOLEANS,
BooleanConverter.INSTANCE,
Context.STARTUP);
+ static final ConnectionProperty ATTEMPT_DIRECT_PATH =
+ create(
+ "attemptDirectPath",
+ "Configure the connection to try to connect to Spanner using "
+ + "DirectPath (true/false). The client will try to connect to Spanner "
+ + "using a direct Google network connection. DirectPath will work only "
+ + "if the client is trying to establish a connection from a Google Cloud VM. "
+ + "Otherwise it will automatically fallback to the standard network path. "
+ + "NOTE: The default for this property is currently false, "
+ + "but this could be changed in the future.",
+ false,
+ BOOLEANS,
+ BooleanConverter.INSTANCE,
+ Context.STARTUP);
static final ConnectionProperty USE_AUTO_SAVEPOINTS_FOR_EMULATOR =
create(
"useAutoSavepointsForEmulator",
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/SpannerPool.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/SpannerPool.java
index 8c521b7500e..ea76b727dbb 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/SpannerPool.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/SpannerPool.java
@@ -164,6 +164,7 @@ static class SpannerPoolKey {
private final String clientCertificate;
private final String clientCertificateKey;
private final boolean isExperimentalHost;
+ private final boolean attemptDirectPath;
@VisibleForTesting
static SpannerPoolKey of(ConnectionOptions options) {
@@ -198,6 +199,7 @@ private SpannerPoolKey(ConnectionOptions options) throws IOException {
this.clientCertificate = options.getClientCertificate();
this.clientCertificateKey = options.getClientCertificateKey();
this.isExperimentalHost = options.isExperimentalHost();
+ this.attemptDirectPath = options.isAttemptDirectPath();
}
@Override
@@ -223,7 +225,8 @@ public boolean equals(Object o) {
&& Objects.equals(this.enableEndToEndTracing, other.enableEndToEndTracing)
&& Objects.equals(this.clientCertificate, other.clientCertificate)
&& Objects.equals(this.clientCertificateKey, other.clientCertificateKey)
- && Objects.equals(this.isExperimentalHost, other.isExperimentalHost);
+ && Objects.equals(this.isExperimentalHost, other.isExperimentalHost)
+ && Objects.equals(this.attemptDirectPath, other.attemptDirectPath);
}
@Override
@@ -245,7 +248,8 @@ public int hashCode() {
this.enableEndToEndTracing,
this.clientCertificate,
this.clientCertificateKey,
- this.isExperimentalHost);
+ this.isExperimentalHost,
+ this.attemptDirectPath);
}
}
@@ -412,6 +416,9 @@ Spanner createSpanner(SpannerPoolKey key, ConnectionOptions options) {
if (key.isExperimentalHost) {
builder.setExperimentalHost(key.host);
}
+ if (key.attemptDirectPath) {
+ builder.enableDirectPath();
+ }
if (options.getConfigurator() != null) {
options.getConfigurator().configure(builder);
}
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java
index 09aec6f3ebe..1a83a195cec 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java
@@ -365,7 +365,7 @@ public GapicSpannerRpc(final SpannerOptions options) {
.withEncoding(compressorName))
.setHeaderProvider(headerProviderWithUserAgent)
.setAllowNonDefaultServiceAccount(true);
- boolean isAttemptDirectPathXds = isEnableDirectPathXdsEnv();
+ boolean isAttemptDirectPathXds = isEnableDirectPathXdsEnv() || options.isAttemptDirectPath();
if (isAttemptDirectPathXds) {
defaultChannelProviderBuilder.setAttemptDirectPath(true);
// This will let the credentials try to fetch a hard-bound access token if the runtime
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionOptionsTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionOptionsTest.java
index af391a745f4..9fb6adea6ef 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionOptionsTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionOptionsTest.java
@@ -1311,4 +1311,17 @@ public void testExperimentalHost() {
.getSessionPoolOptions()
.getUseMultiplexedSessionPartitionedOps());
}
+
+ @Test
+ public void testAttemptDirectPath() {
+ ConnectionOptions.Builder builderWithoutDirectPathParam = ConnectionOptions.newBuilder();
+ builderWithoutDirectPathParam.setUri(
+ "spanner://localhost:15000/instances/default/databases/singers-db;usePlainText=true");
+ assertFalse(builderWithoutDirectPathParam.build().isAttemptDirectPath());
+
+ ConnectionOptions.Builder builderWithDirectPathParam = ConnectionOptions.newBuilder();
+ builderWithDirectPathParam.setUri(
+ "spanner://localhost:15000/projects/default/instances/default/databases/singers-db;usePlainText=true;attemptDirectPath=true");
+ assertTrue(builderWithDirectPathParam.build().isAttemptDirectPath());
+ }
}
From d754f1f99294d86ec881583f217fa09f291a3d7a Mon Sep 17 00:00:00 2001
From: Sakthivel Subramanian
<179120858+sakthivelmanii@users.noreply.github.com>
Date: Fri, 27 Jun 2025 12:39:10 +0530
Subject: [PATCH 09/10] feat: Allow JDBC to configure directpath for connection
(#3929)
* feat: Allow JDBC to configure directpath for connection
* Add the new public method to clirr-ignored-differences
* Addressed comments
---
.../clirr-ignored-differences.xml | 5 +++
google-cloud-spanner/pom.xml | 2 +-
.../google/cloud/spanner/SpannerOptions.java | 36 ++++++++++++++-----
.../spanner/connection/ConnectionOptions.java | 6 ++--
.../connection/ConnectionProperties.java | 6 ++--
.../cloud/spanner/connection/SpannerPool.java | 12 +++----
.../cloud/spanner/spi/v1/GapicSpannerRpc.java | 6 ++--
.../cloud/spanner/GceTestEnvConfig.java | 8 ++---
.../connection/ConnectionOptionsTest.java | 13 ++++---
.../connection/CredentialsProviderTest.java | 4 +--
.../spanner/it/ITDirectPathFallback.java | 4 +--
.../spanner/spi/v1/GapicSpannerRpcTest.java | 2 +-
.../cloud/spanner/spi/v1/GfeLatencyTest.java | 2 +-
13 files changed, 67 insertions(+), 39 deletions(-)
diff --git a/google-cloud-spanner/clirr-ignored-differences.xml b/google-cloud-spanner/clirr-ignored-differences.xml
index 46a11518dbb..12657dd15b1 100644
--- a/google-cloud-spanner/clirr-ignored-differences.xml
+++ b/google-cloud-spanner/clirr-ignored-differences.xml
@@ -1028,4 +1028,9 @@
com/google/cloud/spanner/StructReader
java.lang.Object getOrDefault(java.lang.String, java.util.function.BiFunction, java.lang.Object)
+
+ 7012
+ com/google/cloud/spanner/SpannerOptions$SpannerEnvironment
+ boolean isEnableDirectAccess()
+
diff --git a/google-cloud-spanner/pom.xml b/google-cloud-spanner/pom.xml
index c502922d0e1..172d2e045fb 100644
--- a/google-cloud-spanner/pom.xml
+++ b/google-cloud-spanner/pom.xml
@@ -592,7 +592,7 @@
com.google.cloud.spanner.GceTestEnvConfig
projects/directpath-prod-manual-testing/instances/spanner-testing
directpath-prod-manual-testing
- true
+ true
ipv4
3000
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java
index c3e9215a20e..e8941c52756 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java
@@ -175,7 +175,7 @@ public class SpannerOptions extends ServiceOptions {
private final CloseableExecutorProvider asyncExecutorProvider;
private final String compressorName;
private final boolean leaderAwareRoutingEnabled;
- private final boolean attemptDirectPath;
+ private final boolean enableDirectAccess;
private final DirectedReadOptions directedReadOptions;
private final boolean useVirtualThreads;
private final OpenTelemetry openTelemetry;
@@ -806,7 +806,7 @@ protected SpannerOptions(Builder builder) {
asyncExecutorProvider = builder.asyncExecutorProvider;
compressorName = builder.compressorName;
leaderAwareRoutingEnabled = builder.leaderAwareRoutingEnabled;
- attemptDirectPath = builder.attemptDirectPath;
+ enableDirectAccess = builder.enableDirectAccess;
directedReadOptions = builder.directedReadOptions;
useVirtualThreads = builder.useVirtualThreads;
openTelemetry = builder.openTelemetry;
@@ -849,6 +849,10 @@ default boolean isEnableApiTracing() {
return false;
}
+ default boolean isEnableDirectAccess() {
+ return false;
+ }
+
default boolean isEnableBuiltInMetrics() {
return true;
}
@@ -884,6 +888,8 @@ private static class SpannerEnvironmentImpl implements SpannerEnvironment {
"SPANNER_OPTIMIZER_STATISTICS_PACKAGE";
private static final String SPANNER_ENABLE_EXTENDED_TRACING = "SPANNER_ENABLE_EXTENDED_TRACING";
private static final String SPANNER_ENABLE_API_TRACING = "SPANNER_ENABLE_API_TRACING";
+ private static final String GOOGLE_SPANNER_ENABLE_DIRECT_ACCESS =
+ "GOOGLE_SPANNER_ENABLE_DIRECT_ACCESS";
private static final String SPANNER_ENABLE_END_TO_END_TRACING =
"SPANNER_ENABLE_END_TO_END_TRACING";
private static final String SPANNER_DISABLE_BUILTIN_METRICS = "SPANNER_DISABLE_BUILTIN_METRICS";
@@ -916,6 +922,11 @@ public boolean isEnableApiTracing() {
return Boolean.parseBoolean(System.getenv(SPANNER_ENABLE_API_TRACING));
}
+ @Override
+ public boolean isEnableDirectAccess() {
+ return Boolean.parseBoolean(System.getenv(GOOGLE_SPANNER_ENABLE_DIRECT_ACCESS));
+ }
+
@Override
public boolean isEnableBuiltInMetrics() {
return !Boolean.parseBoolean(System.getenv(SPANNER_DISABLE_BUILTIN_METRICS));
@@ -1000,7 +1011,7 @@ public static class Builder
private String compressorName;
private String emulatorHost = System.getenv("SPANNER_EMULATOR_HOST");
private boolean leaderAwareRoutingEnabled = true;
- private boolean attemptDirectPath = false;
+ private boolean enableDirectAccess = SpannerOptions.environment.isEnableDirectAccess();
private DirectedReadOptions directedReadOptions;
private boolean useVirtualThreads = false;
private OpenTelemetry openTelemetry;
@@ -1072,7 +1083,7 @@ protected Builder() {
this.channelProvider = options.channelProvider;
this.channelConfigurator = options.channelConfigurator;
this.interceptorProvider = options.interceptorProvider;
- this.attemptDirectPath = options.attemptDirectPath;
+ this.enableDirectAccess = options.enableDirectAccess;
this.directedReadOptions = options.directedReadOptions;
this.useVirtualThreads = options.useVirtualThreads;
this.enableApiTracing = options.enableApiTracing;
@@ -1605,14 +1616,15 @@ public Builder disableLeaderAwareRouting() {
}
@BetaApi
- public Builder enableDirectPath() {
- this.attemptDirectPath = true;
+ public Builder setEnableDirectAccess(boolean enableDirectAccess) {
+ this.enableDirectAccess = enableDirectAccess;
return this;
}
- @BetaApi
+ @ObsoleteApi("Use setEnableDirectAccess(false) instead")
+ @Deprecated
public Builder disableDirectPath() {
- this.attemptDirectPath = false;
+ this.enableDirectAccess = false;
return this;
}
@@ -1980,8 +1992,14 @@ public DirectedReadOptions getDirectedReadOptions() {
}
@BetaApi
+ public Boolean isEnableDirectAccess() {
+ return enableDirectAccess;
+ }
+
+ @ObsoleteApi("Use isEnableDirectAccess() instead")
+ @Deprecated
public boolean isAttemptDirectPath() {
- return attemptDirectPath;
+ return enableDirectAccess;
}
/**
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionOptions.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionOptions.java
index d9ba873b412..2c86192443d 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionOptions.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionOptions.java
@@ -16,7 +16,6 @@
package com.google.cloud.spanner.connection;
-import static com.google.cloud.spanner.connection.ConnectionProperties.ATTEMPT_DIRECT_PATH;
import static com.google.cloud.spanner.connection.ConnectionProperties.AUTOCOMMIT;
import static com.google.cloud.spanner.connection.ConnectionProperties.AUTO_CONFIG_EMULATOR;
import static com.google.cloud.spanner.connection.ConnectionProperties.AUTO_PARTITION_MODE;
@@ -29,6 +28,7 @@
import static com.google.cloud.spanner.connection.ConnectionProperties.DATA_BOOST_ENABLED;
import static com.google.cloud.spanner.connection.ConnectionProperties.DIALECT;
import static com.google.cloud.spanner.connection.ConnectionProperties.ENABLE_API_TRACING;
+import static com.google.cloud.spanner.connection.ConnectionProperties.ENABLE_DIRECT_ACCESS;
import static com.google.cloud.spanner.connection.ConnectionProperties.ENABLE_END_TO_END_TRACING;
import static com.google.cloud.spanner.connection.ConnectionProperties.ENABLE_EXTENDED_TRACING;
import static com.google.cloud.spanner.connection.ConnectionProperties.ENCODED_CREDENTIALS;
@@ -1082,8 +1082,8 @@ boolean isExperimentalHost() {
return getInitialConnectionPropertyValue(IS_EXPERIMENTAL_HOST);
}
- boolean isAttemptDirectPath() {
- return getInitialConnectionPropertyValue(ATTEMPT_DIRECT_PATH);
+ Boolean isEnableDirectAccess() {
+ return getInitialConnectionPropertyValue(ENABLE_DIRECT_ACCESS);
}
String getClientCertificate() {
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionProperties.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionProperties.java
index 042d7217586..ac53b800bb5 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionProperties.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/ConnectionProperties.java
@@ -183,9 +183,9 @@ public class ConnectionProperties {
BOOLEANS,
BooleanConverter.INSTANCE,
Context.STARTUP);
- static final ConnectionProperty ATTEMPT_DIRECT_PATH =
+ static final ConnectionProperty ENABLE_DIRECT_ACCESS =
create(
- "attemptDirectPath",
+ "enableDirectAccess",
"Configure the connection to try to connect to Spanner using "
+ "DirectPath (true/false). The client will try to connect to Spanner "
+ "using a direct Google network connection. DirectPath will work only "
@@ -193,7 +193,7 @@ public class ConnectionProperties {
+ "Otherwise it will automatically fallback to the standard network path. "
+ "NOTE: The default for this property is currently false, "
+ "but this could be changed in the future.",
- false,
+ null,
BOOLEANS,
BooleanConverter.INSTANCE,
Context.STARTUP);
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/SpannerPool.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/SpannerPool.java
index ea76b727dbb..b21e8c84db0 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/SpannerPool.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/connection/SpannerPool.java
@@ -164,7 +164,7 @@ static class SpannerPoolKey {
private final String clientCertificate;
private final String clientCertificateKey;
private final boolean isExperimentalHost;
- private final boolean attemptDirectPath;
+ private final Boolean enableDirectAccess;
@VisibleForTesting
static SpannerPoolKey of(ConnectionOptions options) {
@@ -199,7 +199,7 @@ private SpannerPoolKey(ConnectionOptions options) throws IOException {
this.clientCertificate = options.getClientCertificate();
this.clientCertificateKey = options.getClientCertificateKey();
this.isExperimentalHost = options.isExperimentalHost();
- this.attemptDirectPath = options.isAttemptDirectPath();
+ this.enableDirectAccess = options.isEnableDirectAccess();
}
@Override
@@ -226,7 +226,7 @@ public boolean equals(Object o) {
&& Objects.equals(this.clientCertificate, other.clientCertificate)
&& Objects.equals(this.clientCertificateKey, other.clientCertificateKey)
&& Objects.equals(this.isExperimentalHost, other.isExperimentalHost)
- && Objects.equals(this.attemptDirectPath, other.attemptDirectPath);
+ && Objects.equals(this.enableDirectAccess, other.enableDirectAccess);
}
@Override
@@ -249,7 +249,7 @@ public int hashCode() {
this.clientCertificate,
this.clientCertificateKey,
this.isExperimentalHost,
- this.attemptDirectPath);
+ this.enableDirectAccess);
}
}
@@ -416,8 +416,8 @@ Spanner createSpanner(SpannerPoolKey key, ConnectionOptions options) {
if (key.isExperimentalHost) {
builder.setExperimentalHost(key.host);
}
- if (key.attemptDirectPath) {
- builder.enableDirectPath();
+ if (key.enableDirectAccess != null) {
+ builder.setEnableDirectAccess(key.enableDirectAccess);
}
if (options.getConfigurator() != null) {
options.getConfigurator().configure(builder);
diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java
index 1a83a195cec..5abf3ea98e7 100644
--- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java
+++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java
@@ -365,8 +365,8 @@ public GapicSpannerRpc(final SpannerOptions options) {
.withEncoding(compressorName))
.setHeaderProvider(headerProviderWithUserAgent)
.setAllowNonDefaultServiceAccount(true);
- boolean isAttemptDirectPathXds = isEnableDirectPathXdsEnv() || options.isAttemptDirectPath();
- if (isAttemptDirectPathXds) {
+ boolean isEnableDirectAccess = options.isEnableDirectAccess();
+ if (isEnableDirectAccess) {
defaultChannelProviderBuilder.setAttemptDirectPath(true);
// This will let the credentials try to fetch a hard-bound access token if the runtime
// environment supports it.
@@ -426,7 +426,7 @@ public GapicSpannerRpc(final SpannerOptions options) {
spannerStubSettings, clientContext);
DIRECTPATH_CHANNEL_CREATED =
((GrpcTransportChannel) clientContext.getTransportChannel()).isDirectPath()
- && isAttemptDirectPathXds;
+ && isEnableDirectAccess;
this.readRetrySettings =
options.getSpannerStubSettings().streamingReadSettings().getRetrySettings();
this.readRetryableCodes =
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/GceTestEnvConfig.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/GceTestEnvConfig.java
index efb012ba8e2..fab0e453f5a 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/GceTestEnvConfig.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/GceTestEnvConfig.java
@@ -46,7 +46,7 @@ public class GceTestEnvConfig implements TestEnvConfig {
public static final String GCE_CREDENTIALS_FILE = "spanner.gce.config.credentials_file";
public static final String GCE_STREAM_BROKEN_PROBABILITY =
"spanner.gce.config.stream_broken_probability";
- public static final String ATTEMPT_DIRECT_PATH = "spanner.attempt_directpath";
+ public static final String ENABLE_DIRECT_ACCESS = "spanner.enable_direct_access";
public static final String DIRECT_PATH_TEST_SCENARIO = "spanner.directpath_test_scenario";
// IP address prefixes allocated for DirectPath backends.
@@ -64,7 +64,7 @@ public GceTestEnvConfig() {
double errorProbability =
Double.parseDouble(System.getProperty(GCE_STREAM_BROKEN_PROBABILITY, "0.0"));
checkState(errorProbability <= 1.0);
- boolean attemptDirectPath = Boolean.getBoolean(ATTEMPT_DIRECT_PATH);
+ boolean enableDirectAccess = Boolean.getBoolean(ENABLE_DIRECT_ACCESS);
String directPathTestScenario = System.getProperty(DIRECT_PATH_TEST_SCENARIO, "");
SpannerOptions.Builder builder =
SpannerOptions.newBuilder()
@@ -85,7 +85,7 @@ public GceTestEnvConfig() {
}
SpannerInterceptorProvider interceptorProvider =
SpannerInterceptorProvider.createDefault().with(new GrpcErrorInjector(errorProbability));
- if (attemptDirectPath) {
+ if (enableDirectAccess) {
interceptorProvider =
interceptorProvider.with(new DirectPathAddressCheckInterceptor(directPathTestScenario));
}
@@ -93,7 +93,7 @@ public GceTestEnvConfig() {
// DirectPath tests need to set a custom endpoint to the ChannelProvider
InstantiatingGrpcChannelProvider.Builder customChannelProviderBuilder =
InstantiatingGrpcChannelProvider.newBuilder();
- if (attemptDirectPath) {
+ if (enableDirectAccess) {
customChannelProviderBuilder
.setEndpoint(DIRECT_PATH_ENDPOINT)
.setAttemptDirectPath(true)
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionOptionsTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionOptionsTest.java
index 9fb6adea6ef..e274c0e6c04 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionOptionsTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionOptionsTest.java
@@ -1313,15 +1313,20 @@ public void testExperimentalHost() {
}
@Test
- public void testAttemptDirectPath() {
+ public void testEnableDirectAccess() {
ConnectionOptions.Builder builderWithoutDirectPathParam = ConnectionOptions.newBuilder();
builderWithoutDirectPathParam.setUri(
"spanner://localhost:15000/instances/default/databases/singers-db;usePlainText=true");
- assertFalse(builderWithoutDirectPathParam.build().isAttemptDirectPath());
+ assertNull(builderWithoutDirectPathParam.build().isEnableDirectAccess());
+
+ ConnectionOptions.Builder builderWithDirectPathParamFalse = ConnectionOptions.newBuilder();
+ builderWithDirectPathParamFalse.setUri(
+ "spanner://localhost:15000/instances/default/databases/singers-db;usePlainText=true;enableDirectAccess=false");
+ assertFalse(builderWithDirectPathParamFalse.build().isEnableDirectAccess());
ConnectionOptions.Builder builderWithDirectPathParam = ConnectionOptions.newBuilder();
builderWithDirectPathParam.setUri(
- "spanner://localhost:15000/projects/default/instances/default/databases/singers-db;usePlainText=true;attemptDirectPath=true");
- assertTrue(builderWithDirectPathParam.build().isAttemptDirectPath());
+ "spanner://localhost:15000/projects/default/instances/default/databases/singers-db;usePlainText=true;enableDirectAccess=true");
+ assertTrue(builderWithDirectPathParam.build().isEnableDirectAccess());
}
}
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/CredentialsProviderTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/CredentialsProviderTest.java
index 9e2979e1aaf..f082fa7042a 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/CredentialsProviderTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/CredentialsProviderTest.java
@@ -93,7 +93,7 @@ public void testCredentialsProvider() throws Throwable {
.setConfigurator(
spannerOptions -> {
spannerOptions.setChannelConfigurator(ManagedChannelBuilder::usePlaintext);
- spannerOptions.disableDirectPath();
+ spannerOptions.setEnableDirectAccess(false);
})
.build();
@@ -135,7 +135,7 @@ public void testCredentialsProvider() throws Throwable {
.setConfigurator(
spannerOptions -> {
spannerOptions.setChannelConfigurator(ManagedChannelBuilder::usePlaintext);
- spannerOptions.disableDirectPath();
+ spannerOptions.setEnableDirectAccess(false);
})
.build();
try (Connection connection = options.getConnection()) {
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDirectPathFallback.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDirectPathFallback.java
index 9cc2ebc450e..bf6c1450973 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDirectPathFallback.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITDirectPathFallback.java
@@ -100,7 +100,7 @@ public class ITDirectPathFallback {
// TODO(mohanli): Remove this temporary endpoint once DirectPath goes to public beta.
private static final String DIRECT_PATH_ENDPOINT = "aa423245250f2bbf.sandbox.googleapis.com:443";
- private static final String ATTEMPT_DIRECT_PATH = "spanner.attempt_directpath";
+ private static final String ENABLE_DIRECT_ACCESS = "spanner.enable_direct_access";
public ITDirectPathFallback() {
// Create a transport channel provider that can intercept ipv6 packets.
@@ -112,7 +112,7 @@ public ITDirectPathFallback() {
public void setup() {
assume()
.withMessage("DirectPath integration tests can only run against DirectPathEnv")
- .that(Boolean.getBoolean(ATTEMPT_DIRECT_PATH))
+ .that(Boolean.getBoolean(ENABLE_DIRECT_ACCESS))
.isTrue();
// Get default spanner options for Ingetration test
SpannerOptions.Builder builder = env.getTestHelper().getOptions().toBuilder();
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpcTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpcTest.java
index 24b09d56f83..e46f61a8ce7 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpcTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpcTest.java
@@ -879,7 +879,7 @@ private SpannerOptions createSpannerOptions() {
.setProjectId("[PROJECT]")
// Set a custom channel configurator to allow http instead of https.
.setChannelConfigurator(ManagedChannelBuilder::usePlaintext)
- .disableDirectPath()
+ .setEnableDirectAccess(false)
.setHost("http://" + endpoint)
// Set static credentials that will return the static OAuth test token.
.setCredentials(STATIC_CREDENTIALS)
diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GfeLatencyTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GfeLatencyTest.java
index 908a4ad5573..f2d8a07538c 100644
--- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GfeLatencyTest.java
+++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/spi/v1/GfeLatencyTest.java
@@ -290,7 +290,7 @@ private static SpannerOptions createSpannerOptions(InetSocketAddress address, Se
.setProjectId("[PROJECT]")
// Set a custom channel configurator to allow http instead of https.
.setChannelConfigurator(ManagedChannelBuilder::usePlaintext)
- .disableDirectPath()
+ .setEnableDirectAccess(false)
.setHost("http://" + endpoint)
// Set static credentials that will return the static OAuth test token.
.setCredentials(STATIC_CREDENTIALS)
From cf6941a9c691b84e5bae451d87bac767464d59af Mon Sep 17 00:00:00 2001
From: "release-please[bot]"
<55107282+release-please[bot]@users.noreply.github.com>
Date: Fri, 27 Jun 2025 15:22:52 +0530
Subject: [PATCH 10/10] chore(main): release 6.96.0 (#3923)
* chore(main): release 6.96.0
* chore: generate libraries at Fri Jun 27 07:17:41 UTC 2025
---------
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: cloud-java-bot
---
CHANGELOG.md | 20 +++++++++++++++++++
README.md | 6 +++---
benchmarks/pom.xml | 2 +-
google-cloud-spanner-bom/pom.xml | 18 ++++++++---------
google-cloud-spanner-executor/pom.xml | 4 ++--
google-cloud-spanner/pom.xml | 4 ++--
.../pom.xml | 4 ++--
.../pom.xml | 4 ++--
grpc-google-cloud-spanner-executor-v1/pom.xml | 4 ++--
grpc-google-cloud-spanner-v1/pom.xml | 4 ++--
pom.xml | 20 +++++++++----------
.../pom.xml | 4 ++--
.../pom.xml | 4 ++--
.../pom.xml | 4 ++--
proto-google-cloud-spanner-v1/pom.xml | 4 ++--
samples/snapshot/pom.xml | 2 +-
versions.txt | 20 +++++++++----------
17 files changed, 74 insertions(+), 54 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5abe3d2adf2..cd12ee1eb3d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,25 @@
# Changelog
+## [6.96.0](https://github.com/googleapis/java-spanner/compare/v6.95.1...v6.96.0) (2025-06-27)
+
+
+### Features
+
+* Allow JDBC to configure directpath for connection ([#3929](https://github.com/googleapis/java-spanner/issues/3929)) ([d754f1f](https://github.com/googleapis/java-spanner/commit/d754f1f99294d86ec881583f217fa09f291a3d7a))
+* Support getOrNull and getOrDefault in Struct ([#3914](https://github.com/googleapis/java-spanner/issues/3914)) ([1dc5a3e](https://github.com/googleapis/java-spanner/commit/1dc5a3ec0ca9ea530e8691df5c2734c0a1ece559))
+* Use multiplexed sessions for read-only transactions ([#3917](https://github.com/googleapis/java-spanner/issues/3917)) ([37fdc27](https://github.com/googleapis/java-spanner/commit/37fdc27aab4e71ac141c2a2c979f864e97395a97))
+
+
+### Bug Fixes
+
+* Allow zero durations to be set for connections ([#3916](https://github.com/googleapis/java-spanner/issues/3916)) ([43ea4fa](https://github.com/googleapis/java-spanner/commit/43ea4fa68eac00801beb8e58c1eb09e9f32e5ce5))
+
+
+### Documentation
+
+* Add snippet for Repeatable Read configuration at client and transaction ([#3908](https://github.com/googleapis/java-spanner/issues/3908)) ([ff3d212](https://github.com/googleapis/java-spanner/commit/ff3d212c98276c4084f44619916d0444c9652803))
+* Update SpannerSample.java to align with best practices ([#3625](https://github.com/googleapis/java-spanner/issues/3625)) ([7bfc62d](https://github.com/googleapis/java-spanner/commit/7bfc62d3d9e57242e0dfddea090208f8c65f0f8e))
+
## [6.95.1](https://github.com/googleapis/java-spanner/compare/v6.95.0...v6.95.1) (2025-06-06)
diff --git a/README.md b/README.md
index 3087f0df703..d3072b66884 100644
--- a/README.md
+++ b/README.md
@@ -56,13 +56,13 @@ implementation 'com.google.cloud:google-cloud-spanner'
If you are using Gradle without BOM, add this to your dependencies:
```Groovy
-implementation 'com.google.cloud:google-cloud-spanner:6.95.1'
+implementation 'com.google.cloud:google-cloud-spanner:6.96.0'
```
If you are using SBT, add this to your dependencies:
```Scala
-libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.95.1"
+libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.96.0"
```
## Authentication
@@ -731,7 +731,7 @@ Java is a registered trademark of Oracle and/or its affiliates.
[kokoro-badge-link-5]: http://storage.googleapis.com/cloud-devrel-public/java/badges/java-spanner/java11.html
[stability-image]: https://img.shields.io/badge/stability-stable-green
[maven-version-image]: https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-spanner.svg
-[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-spanner/6.95.1
+[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-spanner/6.96.0
[authentication]: https://github.com/googleapis/google-cloud-java#authentication
[auth-scopes]: https://developers.google.com/identity/protocols/oauth2/scopes
[predefined-iam-roles]: https://cloud.google.com/iam/docs/understanding-roles#predefined_roles
diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml
index 6cefe336b80..afacf46db4a 100644
--- a/benchmarks/pom.xml
+++ b/benchmarks/pom.xml
@@ -24,7 +24,7 @@
com.google.cloud
google-cloud-spanner-parent
- 6.95.2-SNAPSHOT
+ 6.96.0
diff --git a/google-cloud-spanner-bom/pom.xml b/google-cloud-spanner-bom/pom.xml
index 2cce6b40241..da925c10189 100644
--- a/google-cloud-spanner-bom/pom.xml
+++ b/google-cloud-spanner-bom/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.google.cloud
google-cloud-spanner-bom
- 6.95.2-SNAPSHOT
+ 6.96.0
pom
com.google.cloud
@@ -53,43 +53,43 @@
com.google.cloud
google-cloud-spanner
- 6.95.2-SNAPSHOT
+ 6.96.0
com.google.cloud
google-cloud-spanner
test-jar
- 6.95.2-SNAPSHOT
+ 6.96.0
com.google.api.grpc
grpc-google-cloud-spanner-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
com.google.api.grpc
grpc-google-cloud-spanner-admin-instance-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
com.google.api.grpc
grpc-google-cloud-spanner-admin-database-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
com.google.api.grpc
proto-google-cloud-spanner-admin-instance-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
com.google.api.grpc
proto-google-cloud-spanner-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
com.google.api.grpc
proto-google-cloud-spanner-admin-database-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
diff --git a/google-cloud-spanner-executor/pom.xml b/google-cloud-spanner-executor/pom.xml
index 34f0b8dc2e1..2b5520887c9 100644
--- a/google-cloud-spanner-executor/pom.xml
+++ b/google-cloud-spanner-executor/pom.xml
@@ -5,14 +5,14 @@
4.0.0
com.google.cloud
google-cloud-spanner-executor
- 6.95.2-SNAPSHOT
+ 6.96.0
jar
Google Cloud Spanner Executor
com.google.cloud
google-cloud-spanner-parent
- 6.95.2-SNAPSHOT
+ 6.96.0
diff --git a/google-cloud-spanner/pom.xml b/google-cloud-spanner/pom.xml
index 172d2e045fb..598af22a010 100644
--- a/google-cloud-spanner/pom.xml
+++ b/google-cloud-spanner/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.google.cloud
google-cloud-spanner
- 6.95.2-SNAPSHOT
+ 6.96.0
jar
Google Cloud Spanner
https://github.com/googleapis/java-spanner
@@ -11,7 +11,7 @@
com.google.cloud
google-cloud-spanner-parent
- 6.95.2-SNAPSHOT
+ 6.96.0
google-cloud-spanner
diff --git a/grpc-google-cloud-spanner-admin-database-v1/pom.xml b/grpc-google-cloud-spanner-admin-database-v1/pom.xml
index 8976cb2657f..4bda5a7d90e 100644
--- a/grpc-google-cloud-spanner-admin-database-v1/pom.xml
+++ b/grpc-google-cloud-spanner-admin-database-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
grpc-google-cloud-spanner-admin-database-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
grpc-google-cloud-spanner-admin-database-v1
GRPC library for grpc-google-cloud-spanner-admin-database-v1
com.google.cloud
google-cloud-spanner-parent
- 6.95.2-SNAPSHOT
+ 6.96.0
diff --git a/grpc-google-cloud-spanner-admin-instance-v1/pom.xml b/grpc-google-cloud-spanner-admin-instance-v1/pom.xml
index d17cc2a71e9..aafc0fc88e6 100644
--- a/grpc-google-cloud-spanner-admin-instance-v1/pom.xml
+++ b/grpc-google-cloud-spanner-admin-instance-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
grpc-google-cloud-spanner-admin-instance-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
grpc-google-cloud-spanner-admin-instance-v1
GRPC library for grpc-google-cloud-spanner-admin-instance-v1
com.google.cloud
google-cloud-spanner-parent
- 6.95.2-SNAPSHOT
+ 6.96.0
diff --git a/grpc-google-cloud-spanner-executor-v1/pom.xml b/grpc-google-cloud-spanner-executor-v1/pom.xml
index 9df46ece301..888c6da5749 100644
--- a/grpc-google-cloud-spanner-executor-v1/pom.xml
+++ b/grpc-google-cloud-spanner-executor-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
grpc-google-cloud-spanner-executor-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
grpc-google-cloud-spanner-executor-v1
GRPC library for google-cloud-spanner
com.google.cloud
google-cloud-spanner-parent
- 6.95.2-SNAPSHOT
+ 6.96.0
diff --git a/grpc-google-cloud-spanner-v1/pom.xml b/grpc-google-cloud-spanner-v1/pom.xml
index abf35aad3f1..0b67799f416 100644
--- a/grpc-google-cloud-spanner-v1/pom.xml
+++ b/grpc-google-cloud-spanner-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
grpc-google-cloud-spanner-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
grpc-google-cloud-spanner-v1
GRPC library for grpc-google-cloud-spanner-v1
com.google.cloud
google-cloud-spanner-parent
- 6.95.2-SNAPSHOT
+ 6.96.0
diff --git a/pom.xml b/pom.xml
index 965082cb312..b16b7994007 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
com.google.cloud
google-cloud-spanner-parent
pom
- 6.95.2-SNAPSHOT
+ 6.96.0
Google Cloud Spanner Parent
https://github.com/googleapis/java-spanner
@@ -61,47 +61,47 @@
com.google.api.grpc
proto-google-cloud-spanner-admin-instance-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
com.google.api.grpc
proto-google-cloud-spanner-executor-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
com.google.api.grpc
grpc-google-cloud-spanner-executor-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
com.google.api.grpc
proto-google-cloud-spanner-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
com.google.api.grpc
proto-google-cloud-spanner-admin-database-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
com.google.api.grpc
grpc-google-cloud-spanner-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
com.google.api.grpc
grpc-google-cloud-spanner-admin-instance-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
com.google.api.grpc
grpc-google-cloud-spanner-admin-database-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
com.google.cloud
google-cloud-spanner
- 6.95.2-SNAPSHOT
+ 6.96.0
diff --git a/proto-google-cloud-spanner-admin-database-v1/pom.xml b/proto-google-cloud-spanner-admin-database-v1/pom.xml
index 4666ec36a95..3ab3f7d41bc 100644
--- a/proto-google-cloud-spanner-admin-database-v1/pom.xml
+++ b/proto-google-cloud-spanner-admin-database-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
proto-google-cloud-spanner-admin-database-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
proto-google-cloud-spanner-admin-database-v1
PROTO library for proto-google-cloud-spanner-admin-database-v1
com.google.cloud
google-cloud-spanner-parent
- 6.95.2-SNAPSHOT
+ 6.96.0
diff --git a/proto-google-cloud-spanner-admin-instance-v1/pom.xml b/proto-google-cloud-spanner-admin-instance-v1/pom.xml
index e704f3b6380..c6b014344b3 100644
--- a/proto-google-cloud-spanner-admin-instance-v1/pom.xml
+++ b/proto-google-cloud-spanner-admin-instance-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
proto-google-cloud-spanner-admin-instance-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
proto-google-cloud-spanner-admin-instance-v1
PROTO library for proto-google-cloud-spanner-admin-instance-v1
com.google.cloud
google-cloud-spanner-parent
- 6.95.2-SNAPSHOT
+ 6.96.0
diff --git a/proto-google-cloud-spanner-executor-v1/pom.xml b/proto-google-cloud-spanner-executor-v1/pom.xml
index 1902f648052..22b14061e87 100644
--- a/proto-google-cloud-spanner-executor-v1/pom.xml
+++ b/proto-google-cloud-spanner-executor-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
proto-google-cloud-spanner-executor-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
proto-google-cloud-spanner-executor-v1
Proto library for google-cloud-spanner
com.google.cloud
google-cloud-spanner-parent
- 6.95.2-SNAPSHOT
+ 6.96.0
diff --git a/proto-google-cloud-spanner-v1/pom.xml b/proto-google-cloud-spanner-v1/pom.xml
index 488ad0d891f..b7fa4f17723 100644
--- a/proto-google-cloud-spanner-v1/pom.xml
+++ b/proto-google-cloud-spanner-v1/pom.xml
@@ -4,13 +4,13 @@
4.0.0
com.google.api.grpc
proto-google-cloud-spanner-v1
- 6.95.2-SNAPSHOT
+ 6.96.0
proto-google-cloud-spanner-v1
PROTO library for proto-google-cloud-spanner-v1
com.google.cloud
google-cloud-spanner-parent
- 6.95.2-SNAPSHOT
+ 6.96.0
diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml
index b1f270d5355..02ca5e99bff 100644
--- a/samples/snapshot/pom.xml
+++ b/samples/snapshot/pom.xml
@@ -32,7 +32,7 @@
com.google.cloud
google-cloud-spanner
- 6.95.2-SNAPSHOT
+ 6.96.0
diff --git a/versions.txt b/versions.txt
index 00aeafc5317..9f97d4eab10 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,13 +1,13 @@
# Format:
# module:released-version:current-version
-proto-google-cloud-spanner-admin-instance-v1:6.95.1:6.95.2-SNAPSHOT
-proto-google-cloud-spanner-v1:6.95.1:6.95.2-SNAPSHOT
-proto-google-cloud-spanner-admin-database-v1:6.95.1:6.95.2-SNAPSHOT
-grpc-google-cloud-spanner-v1:6.95.1:6.95.2-SNAPSHOT
-grpc-google-cloud-spanner-admin-instance-v1:6.95.1:6.95.2-SNAPSHOT
-grpc-google-cloud-spanner-admin-database-v1:6.95.1:6.95.2-SNAPSHOT
-google-cloud-spanner:6.95.1:6.95.2-SNAPSHOT
-google-cloud-spanner-executor:6.95.1:6.95.2-SNAPSHOT
-proto-google-cloud-spanner-executor-v1:6.95.1:6.95.2-SNAPSHOT
-grpc-google-cloud-spanner-executor-v1:6.95.1:6.95.2-SNAPSHOT
+proto-google-cloud-spanner-admin-instance-v1:6.96.0:6.96.0
+proto-google-cloud-spanner-v1:6.96.0:6.96.0
+proto-google-cloud-spanner-admin-database-v1:6.96.0:6.96.0
+grpc-google-cloud-spanner-v1:6.96.0:6.96.0
+grpc-google-cloud-spanner-admin-instance-v1:6.96.0:6.96.0
+grpc-google-cloud-spanner-admin-database-v1:6.96.0:6.96.0
+google-cloud-spanner:6.96.0:6.96.0
+google-cloud-spanner-executor:6.96.0:6.96.0
+proto-google-cloud-spanner-executor-v1:6.96.0:6.96.0
+grpc-google-cloud-spanner-executor-v1:6.96.0:6.96.0