Skip to content

Commit 4bac009

Browse files
authored
Merge branch 'main' into repeatable_read_isolation
2 parents 353c048 + f641a40 commit 4bac009

File tree

25 files changed

+117
-72
lines changed

25 files changed

+117
-72
lines changed

benchmarks/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<parent>
2525
<groupId>com.google.cloud</groupId>
2626
<artifactId>google-cloud-spanner-parent</artifactId>
27-
<version>6.88.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
27+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
2828
</parent>
2929

3030
<properties>

google-cloud-spanner-bom/pom.xml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.google.cloud</groupId>
55
<artifactId>google-cloud-spanner-bom</artifactId>
6-
<version>6.88.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
6+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
77
<packaging>pom</packaging>
88
<parent>
99
<groupId>com.google.cloud</groupId>
@@ -53,43 +53,43 @@
5353
<dependency>
5454
<groupId>com.google.cloud</groupId>
5555
<artifactId>google-cloud-spanner</artifactId>
56-
<version>6.88.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
56+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
5757
</dependency>
5858
<dependency>
5959
<groupId>com.google.cloud</groupId>
6060
<artifactId>google-cloud-spanner</artifactId>
6161
<type>test-jar</type>
62-
<version>6.88.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
62+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
6363
</dependency>
6464
<dependency>
6565
<groupId>com.google.api.grpc</groupId>
6666
<artifactId>grpc-google-cloud-spanner-v1</artifactId>
67-
<version>6.88.0</version><!-- {x-version-update:grpc-google-cloud-spanner-v1:current} -->
67+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-v1:current} -->
6868
</dependency>
6969
<dependency>
7070
<groupId>com.google.api.grpc</groupId>
7171
<artifactId>grpc-google-cloud-spanner-admin-instance-v1</artifactId>
72-
<version>6.88.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
72+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
7373
</dependency>
7474
<dependency>
7575
<groupId>com.google.api.grpc</groupId>
7676
<artifactId>grpc-google-cloud-spanner-admin-database-v1</artifactId>
77-
<version>6.88.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
77+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
7878
</dependency>
7979
<dependency>
8080
<groupId>com.google.api.grpc</groupId>
8181
<artifactId>proto-google-cloud-spanner-admin-instance-v1</artifactId>
82-
<version>6.88.0</version><!-- {x-version-update:proto-google-cloud-spanner-admin-instance-v1:current} -->
82+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:proto-google-cloud-spanner-admin-instance-v1:current} -->
8383
</dependency>
8484
<dependency>
8585
<groupId>com.google.api.grpc</groupId>
8686
<artifactId>proto-google-cloud-spanner-v1</artifactId>
87-
<version>6.88.0</version><!-- {x-version-update:proto-google-cloud-spanner-v1:current} -->
87+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:proto-google-cloud-spanner-v1:current} -->
8888
</dependency>
8989
<dependency>
9090
<groupId>com.google.api.grpc</groupId>
9191
<artifactId>proto-google-cloud-spanner-admin-database-v1</artifactId>
92-
<version>6.88.0</version><!-- {x-version-update:proto-google-cloud-spanner-admin-database-v1:current} -->
92+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:proto-google-cloud-spanner-admin-database-v1:current} -->
9393
</dependency>
9494
</dependencies>
9595
</dependencyManagement>

google-cloud-spanner-executor/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
<modelVersion>4.0.0</modelVersion>
66
<groupId>com.google.cloud</groupId>
77
<artifactId>google-cloud-spanner-executor</artifactId>
8-
<version>6.88.0</version><!-- {x-version-update:google-cloud-spanner-executor:current} -->
8+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner-executor:current} -->
99
<packaging>jar</packaging>
1010
<name>Google Cloud Spanner Executor</name>
1111

1212
<parent>
1313
<groupId>com.google.cloud</groupId>
1414
<artifactId>google-cloud-spanner-parent</artifactId>
15-
<version>6.88.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
15+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
1616
</parent>
1717

1818
<properties>

google-cloud-spanner/clirr-ignored-differences.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -828,6 +828,16 @@
828828
<className>com/google/cloud/spanner/SpannerOptions$SpannerEnvironment</className>
829829
<method>com.google.auth.oauth2.GoogleCredentials getDefaultExperimentalHostCredentials()</method>
830830
</difference>
831+
<difference>
832+
<differenceType>7002</differenceType>
833+
<className>com/google/cloud/spanner/SpannerOptions$SpannerEnvironment</className>
834+
<method>com.google.auth.oauth2.GoogleCredentials getDefaultExternalHostCredentials()</method>
835+
</difference>
836+
<difference>
837+
<differenceType>7002</differenceType>
838+
<className>com/google/cloud/spanner/SpannerOptions</className>
839+
<method>com.google.auth.oauth2.GoogleCredentials getDefaultExternalHostCredentialsFromSysEnv()</method>
840+
</difference>
831841

832842
<!-- Default sequence kind -->
833843
<difference>

google-cloud-spanner/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.google.cloud</groupId>
55
<artifactId>google-cloud-spanner</artifactId>
6-
<version>6.88.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
6+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
77
<packaging>jar</packaging>
88
<name>Google Cloud Spanner</name>
99
<url>https://github.com/googleapis/java-spanner</url>
1010
<description>Java idiomatic client for Google Cloud Spanner.</description>
1111
<parent>
1212
<groupId>com.google.cloud</groupId>
1313
<artifactId>google-cloud-spanner-parent</artifactId>
14-
<version>6.88.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
14+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
1515
</parent>
1616
<properties>
1717
<site.installationModule>google-cloud-spanner</site.installationModule>

google-cloud-spanner/src/main/java/com/google/cloud/spanner/AbstractMultiplexedSessionDatabaseClient.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,6 @@
2626
*/
2727
abstract class AbstractMultiplexedSessionDatabaseClient implements DatabaseClient {
2828

29-
@Override
30-
public Dialect getDialect() {
31-
throw new UnsupportedOperationException();
32-
}
33-
3429
@Override
3530
public String getDatabaseRole() {
3631
throw new UnsupportedOperationException();

google-cloud-spanner/src/main/java/com/google/cloud/spanner/DatabaseClientImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,10 @@ private boolean canUseMultiplexedSessionsForPartitionedOps() {
132132

133133
@Override
134134
public Dialect getDialect() {
135+
MultiplexedSessionDatabaseClient client = getMultiplexedSessionDatabaseClient();
136+
if (client != null) {
137+
return client.getDialect();
138+
}
135139
return pool.getDialect();
136140
}
137141

google-cloud-spanner/src/main/java/com/google/cloud/spanner/MultiplexedSessionDatabaseClient.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,13 @@ public void onSessionReady(SessionImpl session) {
277277
.getSkipVerifyBeginTransactionForMuxRW()) {
278278
verifyBeginTransactionWithRWOnMultiplexedSessionAsync(session.getName());
279279
}
280+
if (sessionClient
281+
.getSpanner()
282+
.getOptions()
283+
.getSessionPoolOptions()
284+
.isAutoDetectDialect()) {
285+
MAINTAINER_SERVICE.submit(() -> getDialect());
286+
}
280287
}
281288

282289
@Override
@@ -513,6 +520,30 @@ private int getSingleUseChannelHint() {
513520
}
514521
}
515522

523+
private final AbstractLazyInitializer<Dialect> dialectSupplier =
524+
new AbstractLazyInitializer<Dialect>() {
525+
@Override
526+
protected Dialect initialize() {
527+
try (ResultSet dialectResultSet =
528+
singleUse().executeQuery(SessionPool.DETERMINE_DIALECT_STATEMENT)) {
529+
if (dialectResultSet.next()) {
530+
return Dialect.fromName(dialectResultSet.getString(0));
531+
}
532+
}
533+
// This should not really happen, but it is the safest fallback value.
534+
return Dialect.GOOGLE_STANDARD_SQL;
535+
}
536+
};
537+
538+
@Override
539+
public Dialect getDialect() {
540+
try {
541+
return dialectSupplier.get();
542+
} catch (Exception exception) {
543+
throw SpannerExceptionFactory.asSpannerException(exception);
544+
}
545+
}
546+
516547
@Override
517548
public Timestamp write(Iterable<Mutation> mutations) throws SpannerException {
518549
return createMultiplexedSessionTransaction(/* singleUse = */ false).write(mutations);

google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2256,13 +2256,9 @@ enum Position {
22562256
@VisibleForTesting
22572257
static final Statement DETERMINE_DIALECT_STATEMENT =
22582258
Statement.newBuilder(
2259-
"SELECT 'POSTGRESQL' AS DIALECT\n"
2260-
+ "FROM INFORMATION_SCHEMA.SCHEMATA\n"
2261-
+ "WHERE SCHEMA_NAME='information_schema'\n"
2262-
+ "UNION ALL\n"
2263-
+ "SELECT 'GOOGLE_STANDARD_SQL' AS DIALECT\n"
2264-
+ "FROM INFORMATION_SCHEMA.SCHEMATA\n"
2265-
+ "WHERE SCHEMA_NAME='INFORMATION_SCHEMA' AND CATALOG_NAME=''")
2259+
"select option_value "
2260+
+ "from information_schema.database_options "
2261+
+ "where option_name='database_dialect'")
22662262
.build();
22672263

22682264
private final SessionPoolOptions options;
@@ -3211,7 +3207,9 @@ public void onSessionReady(SessionImpl session) {
32113207
if (allSessions.size() >= minSessions) {
32123208
waitOnMinSessionsLatch.countDown();
32133209
}
3214-
if (options.isAutoDetectDialect() && !detectDialectStarted) {
3210+
if (options.isAutoDetectDialect()
3211+
&& !detectDialectStarted
3212+
&& !options.getUseMultiplexedSession()) {
32153213
// Get the dialect of the underlying database if that has not yet been done. Note that
32163214
// this method will release the session into the pool once it is done.
32173215
detectDialectStarted = true;

google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,6 @@
193193
import java.nio.charset.Charset;
194194
import java.nio.charset.StandardCharsets;
195195
import java.time.Duration;
196-
import java.util.Collections;
197196
import java.util.Comparator;
198197
import java.util.HashMap;
199198
import java.util.List;
@@ -369,10 +368,6 @@ public GapicSpannerRpc(final SpannerOptions options) {
369368
boolean isAttemptDirectPathXds = Boolean.parseBoolean(directPathXdsEnv);
370369
if (isAttemptDirectPathXds) {
371370
defaultChannelProviderBuilder.setAttemptDirectPath(true);
372-
// This will let the credentials try to fetch a hard-bound access token if the runtime
373-
// environment supports it.
374-
defaultChannelProviderBuilder.setAllowHardBoundTokenTypes(
375-
Collections.singletonList(InstantiatingGrpcChannelProvider.HardBoundTokenTypes.ALTS));
376371
defaultChannelProviderBuilder.setAttemptDirectPathXds();
377372
}
378373
if (options.isUseVirtualThreads()) {

google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3909,7 +3909,7 @@ public void testCreateSessionsFailure_shouldNotPropagateToCloseMethod() {
39093909
try {
39103910
// Simulate session creation failures on the backend.
39113911
mockSpanner.setCreateSessionExecutionTime(
3912-
SimulatedExecutionTime.ofStickyException(Status.RESOURCE_EXHAUSTED.asRuntimeException()));
3912+
SimulatedExecutionTime.ofStickyException(Status.PERMISSION_DENIED.asRuntimeException()));
39133913
// This will not cause any failure as getting a session from the pool is guaranteed to be
39143914
// non-blocking, and any exceptions will be delayed until actual query execution.
39153915
mockSpanner.freeze();
@@ -3918,8 +3918,8 @@ public void testCreateSessionsFailure_shouldNotPropagateToCloseMethod() {
39183918
DatabaseId.of(TEST_PROJECT, TEST_INSTANCE, TEST_DATABASE));
39193919
try (ResultSet rs = client.singleUse().executeQuery(SELECT1)) {
39203920
mockSpanner.unfreeze();
3921-
SpannerException e = assertThrows(SpannerException.class, rs::next);
3922-
assertThat(e.getErrorCode()).isEqualTo(ErrorCode.RESOURCE_EXHAUSTED);
3921+
SpannerException exception = assertThrows(SpannerException.class, rs::next);
3922+
assertEquals(ErrorCode.PERMISSION_DENIED, exception.getErrorCode());
39233923
}
39243924
} finally {
39253925
mockSpanner.setCreateSessionExecutionTime(SimulatedExecutionTime.none());
@@ -4400,6 +4400,8 @@ public void testGetDialectPostgreSQLPreloaded() {
44004400
public void testGetDialect_FailsDirectlyIfDatabaseNotFound() {
44014401
mockSpanner.setBatchCreateSessionsExecutionTime(
44024402
SimulatedExecutionTime.stickyDatabaseNotFoundException("invalid-database"));
4403+
mockSpanner.setCreateSessionExecutionTime(
4404+
SimulatedExecutionTime.stickyDatabaseNotFoundException("invalid-database"));
44034405
DatabaseClient client =
44044406
spanner.getDatabaseClient(DatabaseId.of(TEST_PROJECT, TEST_INSTANCE, TEST_DATABASE));
44054407

@@ -4416,6 +4418,8 @@ public void testGetDialect_FailsDirectlyIfDatabaseNotFound() {
44164418
public void testGetDialectDefaultPreloaded_FailsDirectlyIfDatabaseNotFound() {
44174419
mockSpanner.setBatchCreateSessionsExecutionTime(
44184420
SimulatedExecutionTime.stickyDatabaseNotFoundException("invalid-database"));
4421+
mockSpanner.setCreateSessionExecutionTime(
4422+
SimulatedExecutionTime.stickyDatabaseNotFoundException("invalid-database"));
44194423
try (Spanner spanner =
44204424
this.spanner
44214425
.getOptions()

google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AbstractMockServerTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.google.cloud.spanner.connection;
1818

19+
import com.google.cloud.spanner.Dialect;
1920
import com.google.cloud.spanner.ForceCloseSpannerFunction;
2021
import com.google.cloud.spanner.MockSpannerServiceImpl;
2122
import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult;
@@ -198,6 +199,8 @@ public void getOperation(
198199
mockSpanner.putStatementResult(
199200
StatementResult.query(SELECT_RANDOM_STATEMENT, RANDOM_RESULT_SET));
200201
mockSpanner.putStatementResult(StatementResult.query(SELECT1_STATEMENT, SELECT1_RESULTSET));
202+
mockSpanner.putStatementResult(
203+
StatementResult.detectDialectResult(Dialect.GOOGLE_STANDARD_SQL));
201204

202205
futureParentHandlers = Logger.getLogger(AbstractFuture.class.getName()).getUseParentHandlers();
203206
exceptionRunnableParentHandlers =

google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/ConnectionTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,8 @@ public void testPostgreSQLGetDialect() {
674674
public void testGetDialect_DatabaseNotFound() throws Exception {
675675
mockSpanner.setBatchCreateSessionsExecutionTime(
676676
SimulatedExecutionTime.stickyDatabaseNotFoundException("invalid-database"));
677+
mockSpanner.setCreateSessionExecutionTime(
678+
SimulatedExecutionTime.stickyDatabaseNotFoundException("invalid-database"));
677679
try (Connection connection = createConnection()) {
678680
SpannerException exception = assertThrows(SpannerException.class, connection::getDialect);
679681
assertEquals(ErrorCode.NOT_FOUND, exception.getErrorCode());

google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/StatementTimeoutTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import static org.junit.Assert.assertThrows;
2525
import static org.junit.Assert.assertTrue;
2626
import static org.junit.Assume.assumeFalse;
27+
import static org.junit.Assume.assumeTrue;
2728

2829
import com.google.api.core.SettableApiFuture;
2930
import com.google.api.gax.longrunning.OperationTimedPollAlgorithm;
@@ -662,6 +663,8 @@ public void testCancelReadOnlyAutocommitMultipleStatements() {
662663
assumeFalse(
663664
"Direct executor does not yet support cancelling statements",
664665
statementExecutorType == StatementExecutorType.DIRECT_EXECUTOR);
666+
// TODO: Look into this for multiplexed sessions.
667+
assumeTrue(System.getenv("GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS") == null);
665668

666669
mockSpanner.setExecuteStreamingSqlExecutionTime(
667670
SimulatedExecutionTime.ofMinimumAndRandomTime(EXECUTION_TIME_SLOW_STATEMENT, 0));

grpc-google-cloud-spanner-admin-database-v1/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.google.api.grpc</groupId>
66
<artifactId>grpc-google-cloud-spanner-admin-database-v1</artifactId>
7-
<version>6.88.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
7+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
88
<name>grpc-google-cloud-spanner-admin-database-v1</name>
99
<description>GRPC library for grpc-google-cloud-spanner-admin-database-v1</description>
1010
<parent>
1111
<groupId>com.google.cloud</groupId>
1212
<artifactId>google-cloud-spanner-parent</artifactId>
13-
<version>6.88.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
13+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
1414
</parent>
1515
<dependencies>
1616
<dependency>

grpc-google-cloud-spanner-admin-instance-v1/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.google.api.grpc</groupId>
66
<artifactId>grpc-google-cloud-spanner-admin-instance-v1</artifactId>
7-
<version>6.88.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
7+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
88
<name>grpc-google-cloud-spanner-admin-instance-v1</name>
99
<description>GRPC library for grpc-google-cloud-spanner-admin-instance-v1</description>
1010
<parent>
1111
<groupId>com.google.cloud</groupId>
1212
<artifactId>google-cloud-spanner-parent</artifactId>
13-
<version>6.88.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
13+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
1414
</parent>
1515
<dependencies>
1616
<dependency>

grpc-google-cloud-spanner-executor-v1/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.google.api.grpc</groupId>
66
<artifactId>grpc-google-cloud-spanner-executor-v1</artifactId>
7-
<version>6.88.0</version><!-- {x-version-update:grpc-google-cloud-spanner-executor-v1:current} -->
7+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-executor-v1:current} -->
88
<name>grpc-google-cloud-spanner-executor-v1</name>
99
<description>GRPC library for google-cloud-spanner</description>
1010
<parent>
1111
<groupId>com.google.cloud</groupId>
1212
<artifactId>google-cloud-spanner-parent</artifactId>
13-
<version>6.88.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
13+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
1414
</parent>
1515
<dependencies>
1616
<dependency>

grpc-google-cloud-spanner-v1/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.google.api.grpc</groupId>
66
<artifactId>grpc-google-cloud-spanner-v1</artifactId>
7-
<version>6.88.0</version><!-- {x-version-update:grpc-google-cloud-spanner-v1:current} -->
7+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:grpc-google-cloud-spanner-v1:current} -->
88
<name>grpc-google-cloud-spanner-v1</name>
99
<description>GRPC library for grpc-google-cloud-spanner-v1</description>
1010
<parent>
1111
<groupId>com.google.cloud</groupId>
1212
<artifactId>google-cloud-spanner-parent</artifactId>
13-
<version>6.88.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
13+
<version>6.88.1-SNAPSHOT</version><!-- {x-version-update:google-cloud-spanner:current} -->
1414
</parent>
1515
<dependencies>
1616
<dependency>

0 commit comments

Comments
 (0)