Skip to content
This repository was archived by the owner on Apr 7, 2026. It is now read-only.

Commit 3f93b8a

Browse files
committed
Merge branch 'main' into PR #4026 to update
2 parents 0d9d2ea + 4092a98 commit 3f93b8a

20 files changed

Lines changed: 235 additions & 102 deletions

File tree

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
# Changelog
22

3+
## [6.109.0](https://github.com/googleapis/java-spanner/compare/v6.108.0...v6.109.0) (2026-02-02)
4+
5+
6+
### Features
7+
8+
* Adding Send and Ack Mutation Support for Cloud Spanner Queue ([#4298](https://github.com/googleapis/java-spanner/issues/4298)) ([4b637ac](https://github.com/googleapis/java-spanner/commit/4b637ac0e4d6d696f3da8ae7fbac31c877aceba9))
9+
10+
11+
### Documentation
12+
13+
* Add snippet for ReadLockMode configuration at client and transaction ([#4305](https://github.com/googleapis/java-spanner/issues/4305)) ([0fd4098](https://github.com/googleapis/java-spanner/commit/0fd40983b3bbb2f753e07036cedea9e7b9e26132))
14+
315
## [6.108.0](https://github.com/googleapis/java-spanner/compare/v6.107.0...v6.108.0) (2026-01-28)
416

517

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@ implementation 'com.google.cloud:google-cloud-spanner'
5656
If you are using Gradle without BOM, add this to your dependencies:
5757

5858
```Groovy
59-
implementation 'com.google.cloud:google-cloud-spanner:6.108.0'
59+
implementation 'com.google.cloud:google-cloud-spanner:6.109.0'
6060
```
6161

6262
If you are using SBT, add this to your dependencies:
6363

6464
```Scala
65-
libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.108.0"
65+
libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.109.0"
6666
```
6767

6868
## Authentication
@@ -374,6 +374,7 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-spanner/tree/
374374
| Get Database Ddl Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/GetDatabaseDdlSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/GetDatabaseDdlSample.java) |
375375
| Get Instance Config Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/GetInstanceConfigSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/GetInstanceConfigSample.java) |
376376
| Insert Using Dml Returning Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/InsertUsingDmlReturningSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/InsertUsingDmlReturningSample.java) |
377+
| Isolation Level And Read Lock Mode Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/IsolationLevelAndReadLockModeSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/IsolationLevelAndReadLockModeSample.java) |
377378
| Last Statement Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/LastStatementSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/LastStatementSample.java) |
378379
| List Backup Schedules Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/ListBackupSchedulesSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/ListBackupSchedulesSample.java) |
379380
| List Database Roles | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/ListDatabaseRoles.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/ListDatabaseRoles.java) |
@@ -548,7 +549,7 @@ Java is a registered trademark of Oracle and/or its affiliates.
548549
[javadocs]: https://cloud.google.com/java/docs/reference/google-cloud-spanner/latest/history
549550
[stability-image]: https://img.shields.io/badge/stability-stable-green
550551
[maven-version-image]: https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-spanner.svg
551-
[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-spanner/6.108.0
552+
[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-spanner/6.109.0
552553
[authentication]: https://github.com/googleapis/google-cloud-java#authentication
553554
[auth-scopes]: https://developers.google.com/identity/protocols/oauth2/scopes
554555
[predefined-iam-roles]: https://cloud.google.com/iam/docs/understanding-roles#predefined_roles

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.108.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
27+
<version>6.109.0</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.108.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
6+
<version>6.109.0</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.108.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
56+
<version>6.109.0</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.108.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
62+
<version>6.109.0</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.108.0</version><!-- {x-version-update:grpc-google-cloud-spanner-v1:current} -->
67+
<version>6.109.0</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.108.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
72+
<version>6.109.0</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.108.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
77+
<version>6.109.0</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.108.0</version><!-- {x-version-update:proto-google-cloud-spanner-admin-instance-v1:current} -->
82+
<version>6.109.0</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.108.0</version><!-- {x-version-update:proto-google-cloud-spanner-v1:current} -->
87+
<version>6.109.0</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.108.0</version><!-- {x-version-update:proto-google-cloud-spanner-admin-database-v1:current} -->
92+
<version>6.109.0</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.108.0</version><!-- {x-version-update:google-cloud-spanner-executor:current} -->
8+
<version>6.109.0</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.108.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
15+
<version>6.109.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
1616
</parent>
1717

1818
<properties>

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.108.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
6+
<version>6.109.0</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.108.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
14+
<version>6.109.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
1515
</parent>
1616
<properties>
1717
<site.installationModule>google-cloud-spanner</site.installationModule>

google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITTransactionTest.java

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@
4141
import com.google.cloud.spanner.ReadContext;
4242
import com.google.cloud.spanner.ReadOnlyTransaction;
4343
import com.google.cloud.spanner.ResultSet;
44+
import com.google.cloud.spanner.Spanner;
4445
import com.google.cloud.spanner.SpannerException;
46+
import com.google.cloud.spanner.SpannerOptions;
47+
import com.google.cloud.spanner.SpannerOptions.Builder.DefaultReadWriteTransactionOptions;
4548
import com.google.cloud.spanner.Statement;
4649
import com.google.cloud.spanner.Struct;
4750
import com.google.cloud.spanner.TimestampBound;
@@ -52,6 +55,8 @@
5255
import com.google.common.collect.Sets;
5356
import com.google.common.util.concurrent.SettableFuture;
5457
import com.google.common.util.concurrent.Uninterruptibles;
58+
import com.google.spanner.v1.TransactionOptions.IsolationLevel;
59+
import com.google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode;
5560
import java.util.ArrayList;
5661
import java.util.Arrays;
5762
import java.util.Collections;
@@ -213,6 +218,54 @@ public void basicsUsingQuery() throws InterruptedException {
213218
});
214219
}
215220

221+
@Test
222+
public void isolationLevelAndReadLockModeSetAtClientLevelTest() {
223+
SpannerOptions options =
224+
env.getTestHelper().getOptions().toBuilder()
225+
.setDefaultTransactionOptions(
226+
DefaultReadWriteTransactionOptions.newBuilder()
227+
.setIsolationLevel(IsolationLevel.REPEATABLE_READ)
228+
.setReadLockMode(ReadLockMode.OPTIMISTIC)
229+
.build())
230+
.build();
231+
try (Spanner spanner = options.getService()) {
232+
DatabaseClient client = spanner.getDatabaseClient(db.getId());
233+
Long updatedRows =
234+
client
235+
.readWriteTransaction()
236+
.run(
237+
transaction ->
238+
transaction.executeUpdate(
239+
Statement.of("INSERT INTO T (K, V) VALUES ('test1', 2)")));
240+
assertThat(updatedRows).isEqualTo(1L);
241+
}
242+
}
243+
244+
@Test
245+
public void isolationLevelAndReadLockModeSetAtClientAndTxnLevelTest() {
246+
SpannerOptions options =
247+
env.getTestHelper().getOptions().toBuilder()
248+
.setDefaultTransactionOptions(
249+
DefaultReadWriteTransactionOptions.newBuilder()
250+
.setIsolationLevel(IsolationLevel.REPEATABLE_READ)
251+
.setReadLockMode(ReadLockMode.OPTIMISTIC)
252+
.build())
253+
.build();
254+
try (Spanner spanner = options.getService()) {
255+
DatabaseClient client = spanner.getDatabaseClient(db.getId());
256+
Long updatedRows =
257+
client
258+
.readWriteTransaction(
259+
Options.isolationLevel(IsolationLevel.SERIALIZABLE),
260+
Options.readLockMode(ReadLockMode.PESSIMISTIC))
261+
.run(
262+
transaction ->
263+
transaction.executeUpdate(
264+
Statement.of("INSERT INTO T (K, V) VALUES ('test1', 2)")));
265+
assertThat(updatedRows).isEqualTo(1L);
266+
}
267+
}
268+
216269
@Test
217270
public void userExceptionPreventsCommit() {
218271
class UserException extends Exception {

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.108.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-database-v1:current} -->
7+
<version>6.109.0</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.108.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
13+
<version>6.109.0</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.108.0</version><!-- {x-version-update:grpc-google-cloud-spanner-admin-instance-v1:current} -->
7+
<version>6.109.0</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.108.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
13+
<version>6.109.0</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.108.0</version><!-- {x-version-update:grpc-google-cloud-spanner-executor-v1:current} -->
7+
<version>6.109.0</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.108.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
13+
<version>6.109.0</version><!-- {x-version-update:google-cloud-spanner:current} -->
1414
</parent>
1515
<dependencies>
1616
<dependency>

0 commit comments

Comments
 (0)