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