From 961aa7894be41ff87f1b460aa374ee2ed75a163b Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Sat, 2 Dec 2023 00:02:58 +0530 Subject: [PATCH] fix(deps): Update the Java code generator (gapic-generator-java) to 2.30.0 (#2703) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add PG.OID type cod annotation PiperOrigin-RevId: 577053414 Source-Link: https://github.com/googleapis/googleapis/commit/727c286eca5aa03d3354d6406a67f6a294c15f1c Source-Link: https://github.com/googleapis/googleapis-gen/commit/2015275a7dda2ad3d1609f06c4208125c7de8a9d Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMjAxNTI3NWE3ZGRhMmFkM2QxNjA5ZjA2YzQyMDgxMjVjN2RlOGE5ZCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * feat(spanner): add directed_read_option in spanner.proto docs(spanner): updated comment formatting PiperOrigin-RevId: 578551679 Source-Link: https://github.com/googleapis/googleapis/commit/7c80b961d092ff59576df0eba672958b4954bc4b Source-Link: https://github.com/googleapis/googleapis-gen/commit/7b1172ba5e020eaef7de75062a576a11b8e117e4 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiN2IxMTcyYmE1ZTAyMGVhZWY3ZGU3NTA2MmE1NzZhMTFiOGUxMTdlNCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * fix(deps): Update the Java code generator (gapic-generator-java) to 2.30.0 PiperOrigin-RevId: 586674624 Source-Link: https://github.com/googleapis/googleapis/commit/53ff6ca415214bad38df2bae80a3840468065e8a Source-Link: https://github.com/googleapis/googleapis-gen/commit/07fedaca77917547e1d29bbe7ebfdcb6ebe562b0 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMDdmZWRhY2E3NzkxNzU0N2UxZDI5YmJlN2ViZmRjYjZlYmU1NjJiMCJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * fix(deps): Update the Java code generator (gapic-generator-java) to 2.30.0 PiperOrigin-RevId: 586734351 Source-Link: https://github.com/googleapis/googleapis/commit/5fa9214bb886e75f7bb80624dc3897cfcc013659 Source-Link: https://github.com/googleapis/googleapis-gen/commit/3d5069b1de6cb9106b55ce4521b9b749a0e6a395 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiM2Q1MDY5YjFkZTZjYjkxMDZiNTVjZTQ1MjFiOWI3NDlhMGU2YTM5NSJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot --- .../cloud/spanner/v1/SpannerClient.java | 6 + .../reflect-config.json | 81 + .../spanner/v1/SpannerClientHttpJsonTest.java | 5 + .../cloud/spanner/v1/SpannerClientTest.java | 11 + .../com/google/spanner/v1/SpannerGrpc.java | 248 +- .../v1/BatchCreateSessionsRequest.java | 18 +- .../BatchCreateSessionsRequestOrBuilder.java | 3 +- .../v1/BatchCreateSessionsResponse.java | 6 +- .../spanner/v1/BeginTransactionRequest.java | 6 +- .../com/google/spanner/v1/CommitRequest.java | 16 +- .../spanner/v1/CommitRequestOrBuilder.java | 4 +- .../spanner/v1/DirectedReadOptions.java | 4467 +++++++++++++++++ .../v1/DirectedReadOptionsOrBuilder.java | 112 + .../spanner/v1/ExecuteBatchDmlRequest.java | 272 +- .../v1/ExecuteBatchDmlRequestOrBuilder.java | 46 +- .../spanner/v1/ExecuteBatchDmlResponse.java | 416 +- .../v1/ExecuteBatchDmlResponseOrBuilder.java | 80 +- .../google/spanner/v1/ExecuteSqlRequest.java | 407 +- .../v1/ExecuteSqlRequestOrBuilder.java | 76 +- .../spanner/v1/ListSessionsRequest.java | 21 +- .../v1/ListSessionsRequestOrBuilder.java | 6 +- .../spanner/v1/ListSessionsResponse.java | 28 +- .../v1/ListSessionsResponseOrBuilder.java | 8 +- .../spanner/v1/PartitionQueryRequest.java | 166 +- .../v1/PartitionQueryRequestOrBuilder.java | 53 +- .../spanner/v1/PartitionReadRequest.java | 199 +- .../v1/PartitionReadRequestOrBuilder.java | 55 +- .../com/google/spanner/v1/ReadRequest.java | 672 ++- .../spanner/v1/ReadRequestOrBuilder.java | 139 +- .../com/google/spanner/v1/SpannerProto.java | 471 +- .../google/spanner/v1/TypeAnnotationCode.java | 26 + .../java/com/google/spanner/v1/TypeProto.java | 13 +- .../proto/google/spanner/v1/spanner.proto | 399 +- .../main/proto/google/spanner/v1/type.proto | 7 +- 34 files changed, 7217 insertions(+), 1326 deletions(-) create mode 100644 proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DirectedReadOptions.java create mode 100644 proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DirectedReadOptionsOrBuilder.java diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerClient.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerClient.java index 4f7266a0cee..7358e4adcf9 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerClient.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerClient.java @@ -942,6 +942,7 @@ public final UnaryCallable deleteSessionCallable() * .setSeqno(109325920) * .setQueryOptions(ExecuteSqlRequest.QueryOptions.newBuilder().build()) * .setRequestOptions(RequestOptions.newBuilder().build()) + * .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) * .setDataBoostEnabled(true) * .build(); * ResultSet response = spannerClient.executeSql(request); @@ -990,6 +991,7 @@ public final ResultSet executeSql(ExecuteSqlRequest request) { * .setSeqno(109325920) * .setQueryOptions(ExecuteSqlRequest.QueryOptions.newBuilder().build()) * .setRequestOptions(RequestOptions.newBuilder().build()) + * .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) * .setDataBoostEnabled(true) * .build(); * ApiFuture future = spannerClient.executeSqlCallable().futureCall(request); @@ -1031,6 +1033,7 @@ public final UnaryCallable executeSqlCallable() { * .setSeqno(109325920) * .setQueryOptions(ExecuteSqlRequest.QueryOptions.newBuilder().build()) * .setRequestOptions(RequestOptions.newBuilder().build()) + * .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) * .setDataBoostEnabled(true) * .build(); * ServerStream stream = @@ -1167,6 +1170,7 @@ public final ExecuteBatchDmlResponse executeBatchDml(ExecuteBatchDmlRequest requ * .setResumeToken(ByteString.EMPTY) * .setPartitionToken(ByteString.EMPTY) * .setRequestOptions(RequestOptions.newBuilder().build()) + * .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) * .setDataBoostEnabled(true) * .build(); * ResultSet response = spannerClient.read(request); @@ -1216,6 +1220,7 @@ public final ResultSet read(ReadRequest request) { * .setResumeToken(ByteString.EMPTY) * .setPartitionToken(ByteString.EMPTY) * .setRequestOptions(RequestOptions.newBuilder().build()) + * .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) * .setDataBoostEnabled(true) * .build(); * ApiFuture future = spannerClient.readCallable().futureCall(request); @@ -1257,6 +1262,7 @@ public final UnaryCallable readCallable() { * .setResumeToken(ByteString.EMPTY) * .setPartitionToken(ByteString.EMPTY) * .setRequestOptions(RequestOptions.newBuilder().build()) + * .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) * .setDataBoostEnabled(true) * .build(); * ServerStream stream = spannerClient.streamingReadCallable().call(request); diff --git a/google-cloud-spanner/src/main/resources/META-INF/native-image/com.google.cloud.spanner.v1/reflect-config.json b/google-cloud-spanner/src/main/resources/META-INF/native-image/com.google.cloud.spanner.v1/reflect-config.json index 85f59304a2e..98b78b4ff22 100644 --- a/google-cloud-spanner/src/main/resources/META-INF/native-image/com.google.cloud.spanner.v1/reflect-config.json +++ b/google-cloud-spanner/src/main/resources/META-INF/native-image/com.google.cloud.spanner.v1/reflect-config.json @@ -1322,6 +1322,87 @@ "allDeclaredClasses": true, "allPublicClasses": true }, + { + "name": "com.google.spanner.v1.DirectedReadOptions", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.DirectedReadOptions$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.DirectedReadOptions$ExcludeReplicas", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.DirectedReadOptions$ExcludeReplicas$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.DirectedReadOptions$IncludeReplicas", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.DirectedReadOptions$IncludeReplicas$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.DirectedReadOptions$ReplicaSelection", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.DirectedReadOptions$ReplicaSelection$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.DirectedReadOptions$ReplicaSelection$Type", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, { "name": "com.google.spanner.v1.ExecuteBatchDmlRequest", "queryAllDeclaredConstructors": true, diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientHttpJsonTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientHttpJsonTest.java index 8f022126bbb..aa49c3bb8fb 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientHttpJsonTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientHttpJsonTest.java @@ -38,6 +38,7 @@ import com.google.spanner.v1.BatchCreateSessionsResponse; import com.google.spanner.v1.CommitResponse; import com.google.spanner.v1.DatabaseName; +import com.google.spanner.v1.DirectedReadOptions; import com.google.spanner.v1.ExecuteBatchDmlRequest; import com.google.spanner.v1.ExecuteBatchDmlResponse; import com.google.spanner.v1.ExecuteSqlRequest; @@ -598,6 +599,7 @@ public void executeSqlTest() throws Exception { .setSeqno(109325920) .setQueryOptions(ExecuteSqlRequest.QueryOptions.newBuilder().build()) .setRequestOptions(RequestOptions.newBuilder().build()) + .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) .setDataBoostEnabled(true) .build(); @@ -640,6 +642,7 @@ public void executeSqlExceptionTest() throws Exception { .setSeqno(109325920) .setQueryOptions(ExecuteSqlRequest.QueryOptions.newBuilder().build()) .setRequestOptions(RequestOptions.newBuilder().build()) + .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) .setDataBoostEnabled(true) .build(); client.executeSql(request); @@ -744,6 +747,7 @@ public void readTest() throws Exception { .setResumeToken(ByteString.EMPTY) .setPartitionToken(ByteString.EMPTY) .setRequestOptions(RequestOptions.newBuilder().build()) + .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) .setDataBoostEnabled(true) .build(); @@ -786,6 +790,7 @@ public void readExceptionTest() throws Exception { .setResumeToken(ByteString.EMPTY) .setPartitionToken(ByteString.EMPTY) .setRequestOptions(RequestOptions.newBuilder().build()) + .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) .setDataBoostEnabled(true) .build(); client.read(request); diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java index 62fc1dc6658..730a0636cce 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/SpannerClientTest.java @@ -47,6 +47,7 @@ import com.google.spanner.v1.CreateSessionRequest; import com.google.spanner.v1.DatabaseName; import com.google.spanner.v1.DeleteSessionRequest; +import com.google.spanner.v1.DirectedReadOptions; import com.google.spanner.v1.ExecuteBatchDmlRequest; import com.google.spanner.v1.ExecuteBatchDmlResponse; import com.google.spanner.v1.ExecuteSqlRequest; @@ -556,6 +557,7 @@ public void executeSqlTest() throws Exception { .setSeqno(109325920) .setQueryOptions(ExecuteSqlRequest.QueryOptions.newBuilder().build()) .setRequestOptions(RequestOptions.newBuilder().build()) + .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) .setDataBoostEnabled(true) .build(); @@ -577,6 +579,7 @@ public void executeSqlTest() throws Exception { Assert.assertEquals(request.getSeqno(), actualRequest.getSeqno()); Assert.assertEquals(request.getQueryOptions(), actualRequest.getQueryOptions()); Assert.assertEquals(request.getRequestOptions(), actualRequest.getRequestOptions()); + Assert.assertEquals(request.getDirectedReadOptions(), actualRequest.getDirectedReadOptions()); Assert.assertEquals(request.getDataBoostEnabled(), actualRequest.getDataBoostEnabled()); Assert.assertTrue( channelProvider.isHeaderSent( @@ -603,6 +606,7 @@ public void executeSqlExceptionTest() throws Exception { .setSeqno(109325920) .setQueryOptions(ExecuteSqlRequest.QueryOptions.newBuilder().build()) .setRequestOptions(RequestOptions.newBuilder().build()) + .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) .setDataBoostEnabled(true) .build(); client.executeSql(request); @@ -636,6 +640,7 @@ public void executeStreamingSqlTest() throws Exception { .setSeqno(109325920) .setQueryOptions(ExecuteSqlRequest.QueryOptions.newBuilder().build()) .setRequestOptions(RequestOptions.newBuilder().build()) + .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) .setDataBoostEnabled(true) .build(); @@ -667,6 +672,7 @@ public void executeStreamingSqlExceptionTest() throws Exception { .setSeqno(109325920) .setQueryOptions(ExecuteSqlRequest.QueryOptions.newBuilder().build()) .setRequestOptions(RequestOptions.newBuilder().build()) + .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) .setDataBoostEnabled(true) .build(); @@ -768,6 +774,7 @@ public void readTest() throws Exception { .setResumeToken(ByteString.EMPTY) .setPartitionToken(ByteString.EMPTY) .setRequestOptions(RequestOptions.newBuilder().build()) + .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) .setDataBoostEnabled(true) .build(); @@ -788,6 +795,7 @@ public void readTest() throws Exception { Assert.assertEquals(request.getResumeToken(), actualRequest.getResumeToken()); Assert.assertEquals(request.getPartitionToken(), actualRequest.getPartitionToken()); Assert.assertEquals(request.getRequestOptions(), actualRequest.getRequestOptions()); + Assert.assertEquals(request.getDirectedReadOptions(), actualRequest.getDirectedReadOptions()); Assert.assertEquals(request.getDataBoostEnabled(), actualRequest.getDataBoostEnabled()); Assert.assertTrue( channelProvider.isHeaderSent( @@ -814,6 +822,7 @@ public void readExceptionTest() throws Exception { .setResumeToken(ByteString.EMPTY) .setPartitionToken(ByteString.EMPTY) .setRequestOptions(RequestOptions.newBuilder().build()) + .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) .setDataBoostEnabled(true) .build(); client.read(request); @@ -847,6 +856,7 @@ public void streamingReadTest() throws Exception { .setResumeToken(ByteString.EMPTY) .setPartitionToken(ByteString.EMPTY) .setRequestOptions(RequestOptions.newBuilder().build()) + .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) .setDataBoostEnabled(true) .build(); @@ -878,6 +888,7 @@ public void streamingReadExceptionTest() throws Exception { .setResumeToken(ByteString.EMPTY) .setPartitionToken(ByteString.EMPTY) .setRequestOptions(RequestOptions.newBuilder().build()) + .setDirectedReadOptions(DirectedReadOptions.newBuilder().build()) .setDataBoostEnabled(true) .build(); diff --git a/grpc-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerGrpc.java b/grpc-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerGrpc.java index 0c3d9f8e806..d8e401457af 100644 --- a/grpc-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerGrpc.java +++ b/grpc-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerGrpc.java @@ -845,9 +845,11 @@ default void deleteSession( * a `FAILED_PRECONDITION` error. * Operations inside read-write transactions might return `ABORTED`. If * this occurs, the application should restart the transaction from - * the beginning. See [Transaction][google.spanner.v1.Transaction] for more details. + * the beginning. See [Transaction][google.spanner.v1.Transaction] for more + * details. * Larger result sets can be fetched in streaming fashion by calling - * [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] instead. + * [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] + * instead. * */ default void executeSql( @@ -860,11 +862,11 @@ default void executeSql( * * *
-     * Like [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], except returns the result
-     * set as a stream. Unlike [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], there
-     * is no limit on the size of the returned result set. However, no
-     * individual row in the result set can exceed 100 MiB, and no
-     * column value can exceed 10 MiB.
+     * Like [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], except returns the
+     * result set as a stream. Unlike
+     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], there is no limit on
+     * the size of the returned result set. However, no individual row in the
+     * result set can exceed 100 MiB, and no column value can exceed 10 MiB.
      * 
*/ default void executeStreamingSql( @@ -882,9 +884,10 @@ default void executeStreamingSql( * to be run with lower latency than submitting them sequentially with * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql]. * Statements are executed in sequential order. A request can succeed even if - * a statement fails. The [ExecuteBatchDmlResponse.status][google.spanner.v1.ExecuteBatchDmlResponse.status] field in the - * response provides information about the statement that failed. Clients must - * inspect this field to determine whether an error occurred. + * a statement fails. The + * [ExecuteBatchDmlResponse.status][google.spanner.v1.ExecuteBatchDmlResponse.status] + * field in the response provides information about the statement that failed. + * Clients must inspect this field to determine whether an error occurred. * Execution stops after the first failed statement; the remaining statements * are not executed. * @@ -903,13 +906,14 @@ default void executeBatchDml( *
      * Reads rows from the database using key lookups and scans, as a
      * simple key/value style alternative to
-     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql].  This method cannot be used to
-     * return a result set larger than 10 MiB; if the read matches more
+     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql].  This method cannot be
+     * used to return a result set larger than 10 MiB; if the read matches more
      * data than that, the read fails with a `FAILED_PRECONDITION`
      * error.
      * Reads inside read-write transactions might return `ABORTED`. If
      * this occurs, the application should restart the transaction from
-     * the beginning. See [Transaction][google.spanner.v1.Transaction] for more details.
+     * the beginning. See [Transaction][google.spanner.v1.Transaction] for more
+     * details.
      * Larger result sets can be yielded in streaming fashion by calling
      * [StreamingRead][google.spanner.v1.Spanner.StreamingRead] instead.
      * 
@@ -924,9 +928,9 @@ default void read( * * *
-     * Like [Read][google.spanner.v1.Spanner.Read], except returns the result set as a
-     * stream. Unlike [Read][google.spanner.v1.Spanner.Read], there is no limit on the
-     * size of the returned result set. However, no individual row in
+     * Like [Read][google.spanner.v1.Spanner.Read], except returns the result set
+     * as a stream. Unlike [Read][google.spanner.v1.Spanner.Read], there is no
+     * limit on the size of the returned result set. However, no individual row in
      * the result set can exceed 100 MiB, and no column value can exceed
      * 10 MiB.
      * 
@@ -943,7 +947,8 @@ default void streamingRead( * *
      * Begins a new transaction. This step can often be skipped:
-     * [Read][google.spanner.v1.Spanner.Read], [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] and
+     * [Read][google.spanner.v1.Spanner.Read],
+     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] and
      * [Commit][google.spanner.v1.Spanner.Commit] can begin a new transaction as a
      * side-effect.
      * 
@@ -985,8 +990,9 @@ default void commit( *
      * Rolls back a transaction, releasing any locks it holds. It is a good
      * idea to call this for any transaction that includes one or more
-     * [Read][google.spanner.v1.Spanner.Read] or [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] requests and
-     * ultimately decides not to commit.
+     * [Read][google.spanner.v1.Spanner.Read] or
+     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] requests and ultimately
+     * decides not to commit.
      * `Rollback` returns `OK` if it successfully aborts the transaction, the
      * transaction was already aborted, or the transaction is not
      * found. `Rollback` never returns `ABORTED`.
@@ -1004,10 +1010,11 @@ default void rollback(
      * 
      * Creates a set of partition tokens that can be used to execute a query
      * operation in parallel.  Each of the returned partition tokens can be used
-     * by [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] to specify a subset
-     * of the query result to read.  The same session and read-only transaction
-     * must be used by the PartitionQueryRequest used to create the
-     * partition tokens and the ExecuteSqlRequests that use the partition tokens.
+     * by [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] to
+     * specify a subset of the query result to read.  The same session and
+     * read-only transaction must be used by the PartitionQueryRequest used to
+     * create the partition tokens and the ExecuteSqlRequests that use the
+     * partition tokens.
      * Partition tokens become invalid when the session used to create them
      * is deleted, is idle for too long, begins a new transaction, or becomes too
      * old.  When any of these happen, it is not possible to resume the query, and
@@ -1027,12 +1034,13 @@ default void partitionQuery(
      * 
      * Creates a set of partition tokens that can be used to execute a read
      * operation in parallel.  Each of the returned partition tokens can be used
-     * by [StreamingRead][google.spanner.v1.Spanner.StreamingRead] to specify a subset of the read
-     * result to read.  The same session and read-only transaction must be used by
-     * the PartitionReadRequest used to create the partition tokens and the
-     * ReadRequests that use the partition tokens.  There are no ordering
-     * guarantees on rows returned among the returned partition tokens, or even
-     * within each individual StreamingRead call issued with a partition_token.
+     * by [StreamingRead][google.spanner.v1.Spanner.StreamingRead] to specify a
+     * subset of the read result to read.  The same session and read-only
+     * transaction must be used by the PartitionReadRequest used to create the
+     * partition tokens and the ReadRequests that use the partition tokens.  There
+     * are no ordering guarantees on rows returned among the returned partition
+     * tokens, or even within each individual StreamingRead call issued with a
+     * partition_token.
      * Partition tokens become invalid when the session used to create them
      * is deleted, is idle for too long, begins a new transaction, or becomes too
      * old.  When any of these happen, it is not possible to resume the read, and
@@ -1219,9 +1227,11 @@ public void deleteSession(
      * a `FAILED_PRECONDITION` error.
      * Operations inside read-write transactions might return `ABORTED`. If
      * this occurs, the application should restart the transaction from
-     * the beginning. See [Transaction][google.spanner.v1.Transaction] for more details.
+     * the beginning. See [Transaction][google.spanner.v1.Transaction] for more
+     * details.
      * Larger result sets can be fetched in streaming fashion by calling
-     * [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] instead.
+     * [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql]
+     * instead.
      * 
*/ public void executeSql( @@ -1235,11 +1245,11 @@ public void executeSql( * * *
-     * Like [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], except returns the result
-     * set as a stream. Unlike [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], there
-     * is no limit on the size of the returned result set. However, no
-     * individual row in the result set can exceed 100 MiB, and no
-     * column value can exceed 10 MiB.
+     * Like [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], except returns the
+     * result set as a stream. Unlike
+     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], there is no limit on
+     * the size of the returned result set. However, no individual row in the
+     * result set can exceed 100 MiB, and no column value can exceed 10 MiB.
      * 
*/ public void executeStreamingSql( @@ -1259,9 +1269,10 @@ public void executeStreamingSql( * to be run with lower latency than submitting them sequentially with * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql]. * Statements are executed in sequential order. A request can succeed even if - * a statement fails. The [ExecuteBatchDmlResponse.status][google.spanner.v1.ExecuteBatchDmlResponse.status] field in the - * response provides information about the statement that failed. Clients must - * inspect this field to determine whether an error occurred. + * a statement fails. The + * [ExecuteBatchDmlResponse.status][google.spanner.v1.ExecuteBatchDmlResponse.status] + * field in the response provides information about the statement that failed. + * Clients must inspect this field to determine whether an error occurred. * Execution stops after the first failed statement; the remaining statements * are not executed. *
@@ -1282,13 +1293,14 @@ public void executeBatchDml( *
      * Reads rows from the database using key lookups and scans, as a
      * simple key/value style alternative to
-     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql].  This method cannot be used to
-     * return a result set larger than 10 MiB; if the read matches more
+     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql].  This method cannot be
+     * used to return a result set larger than 10 MiB; if the read matches more
      * data than that, the read fails with a `FAILED_PRECONDITION`
      * error.
      * Reads inside read-write transactions might return `ABORTED`. If
      * this occurs, the application should restart the transaction from
-     * the beginning. See [Transaction][google.spanner.v1.Transaction] for more details.
+     * the beginning. See [Transaction][google.spanner.v1.Transaction] for more
+     * details.
      * Larger result sets can be yielded in streaming fashion by calling
      * [StreamingRead][google.spanner.v1.Spanner.StreamingRead] instead.
      * 
@@ -1304,9 +1316,9 @@ public void read( * * *
-     * Like [Read][google.spanner.v1.Spanner.Read], except returns the result set as a
-     * stream. Unlike [Read][google.spanner.v1.Spanner.Read], there is no limit on the
-     * size of the returned result set. However, no individual row in
+     * Like [Read][google.spanner.v1.Spanner.Read], except returns the result set
+     * as a stream. Unlike [Read][google.spanner.v1.Spanner.Read], there is no
+     * limit on the size of the returned result set. However, no individual row in
      * the result set can exceed 100 MiB, and no column value can exceed
      * 10 MiB.
      * 
@@ -1325,7 +1337,8 @@ public void streamingRead( * *
      * Begins a new transaction. This step can often be skipped:
-     * [Read][google.spanner.v1.Spanner.Read], [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] and
+     * [Read][google.spanner.v1.Spanner.Read],
+     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] and
      * [Commit][google.spanner.v1.Spanner.Commit] can begin a new transaction as a
      * side-effect.
      * 
@@ -1370,8 +1383,9 @@ public void commit( *
      * Rolls back a transaction, releasing any locks it holds. It is a good
      * idea to call this for any transaction that includes one or more
-     * [Read][google.spanner.v1.Spanner.Read] or [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] requests and
-     * ultimately decides not to commit.
+     * [Read][google.spanner.v1.Spanner.Read] or
+     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] requests and ultimately
+     * decides not to commit.
      * `Rollback` returns `OK` if it successfully aborts the transaction, the
      * transaction was already aborted, or the transaction is not
      * found. `Rollback` never returns `ABORTED`.
@@ -1390,10 +1404,11 @@ public void rollback(
      * 
      * Creates a set of partition tokens that can be used to execute a query
      * operation in parallel.  Each of the returned partition tokens can be used
-     * by [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] to specify a subset
-     * of the query result to read.  The same session and read-only transaction
-     * must be used by the PartitionQueryRequest used to create the
-     * partition tokens and the ExecuteSqlRequests that use the partition tokens.
+     * by [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] to
+     * specify a subset of the query result to read.  The same session and
+     * read-only transaction must be used by the PartitionQueryRequest used to
+     * create the partition tokens and the ExecuteSqlRequests that use the
+     * partition tokens.
      * Partition tokens become invalid when the session used to create them
      * is deleted, is idle for too long, begins a new transaction, or becomes too
      * old.  When any of these happen, it is not possible to resume the query, and
@@ -1415,12 +1430,13 @@ public void partitionQuery(
      * 
      * Creates a set of partition tokens that can be used to execute a read
      * operation in parallel.  Each of the returned partition tokens can be used
-     * by [StreamingRead][google.spanner.v1.Spanner.StreamingRead] to specify a subset of the read
-     * result to read.  The same session and read-only transaction must be used by
-     * the PartitionReadRequest used to create the partition tokens and the
-     * ReadRequests that use the partition tokens.  There are no ordering
-     * guarantees on rows returned among the returned partition tokens, or even
-     * within each individual StreamingRead call issued with a partition_token.
+     * by [StreamingRead][google.spanner.v1.Spanner.StreamingRead] to specify a
+     * subset of the read result to read.  The same session and read-only
+     * transaction must be used by the PartitionReadRequest used to create the
+     * partition tokens and the ReadRequests that use the partition tokens.  There
+     * are no ordering guarantees on rows returned among the returned partition
+     * tokens, or even within each individual StreamingRead call issued with a
+     * partition_token.
      * Partition tokens become invalid when the session used to create them
      * is deleted, is idle for too long, begins a new transaction, or becomes too
      * old.  When any of these happen, it is not possible to resume the read, and
@@ -1580,9 +1596,11 @@ public com.google.protobuf.Empty deleteSession(
      * a `FAILED_PRECONDITION` error.
      * Operations inside read-write transactions might return `ABORTED`. If
      * this occurs, the application should restart the transaction from
-     * the beginning. See [Transaction][google.spanner.v1.Transaction] for more details.
+     * the beginning. See [Transaction][google.spanner.v1.Transaction] for more
+     * details.
      * Larger result sets can be fetched in streaming fashion by calling
-     * [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] instead.
+     * [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql]
+     * instead.
      * 
*/ public com.google.spanner.v1.ResultSet executeSql( @@ -1595,11 +1613,11 @@ public com.google.spanner.v1.ResultSet executeSql( * * *
-     * Like [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], except returns the result
-     * set as a stream. Unlike [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], there
-     * is no limit on the size of the returned result set. However, no
-     * individual row in the result set can exceed 100 MiB, and no
-     * column value can exceed 10 MiB.
+     * Like [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], except returns the
+     * result set as a stream. Unlike
+     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], there is no limit on
+     * the size of the returned result set. However, no individual row in the
+     * result set can exceed 100 MiB, and no column value can exceed 10 MiB.
      * 
*/ public java.util.Iterator executeStreamingSql( @@ -1616,9 +1634,10 @@ public java.util.Iterator executeStreami * to be run with lower latency than submitting them sequentially with * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql]. * Statements are executed in sequential order. A request can succeed even if - * a statement fails. The [ExecuteBatchDmlResponse.status][google.spanner.v1.ExecuteBatchDmlResponse.status] field in the - * response provides information about the statement that failed. Clients must - * inspect this field to determine whether an error occurred. + * a statement fails. The + * [ExecuteBatchDmlResponse.status][google.spanner.v1.ExecuteBatchDmlResponse.status] + * field in the response provides information about the statement that failed. + * Clients must inspect this field to determine whether an error occurred. * Execution stops after the first failed statement; the remaining statements * are not executed. *
@@ -1635,13 +1654,14 @@ public com.google.spanner.v1.ExecuteBatchDmlResponse executeBatchDml( *
      * Reads rows from the database using key lookups and scans, as a
      * simple key/value style alternative to
-     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql].  This method cannot be used to
-     * return a result set larger than 10 MiB; if the read matches more
+     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql].  This method cannot be
+     * used to return a result set larger than 10 MiB; if the read matches more
      * data than that, the read fails with a `FAILED_PRECONDITION`
      * error.
      * Reads inside read-write transactions might return `ABORTED`. If
      * this occurs, the application should restart the transaction from
-     * the beginning. See [Transaction][google.spanner.v1.Transaction] for more details.
+     * the beginning. See [Transaction][google.spanner.v1.Transaction] for more
+     * details.
      * Larger result sets can be yielded in streaming fashion by calling
      * [StreamingRead][google.spanner.v1.Spanner.StreamingRead] instead.
      * 
@@ -1655,9 +1675,9 @@ public com.google.spanner.v1.ResultSet read(com.google.spanner.v1.ReadRequest re * * *
-     * Like [Read][google.spanner.v1.Spanner.Read], except returns the result set as a
-     * stream. Unlike [Read][google.spanner.v1.Spanner.Read], there is no limit on the
-     * size of the returned result set. However, no individual row in
+     * Like [Read][google.spanner.v1.Spanner.Read], except returns the result set
+     * as a stream. Unlike [Read][google.spanner.v1.Spanner.Read], there is no
+     * limit on the size of the returned result set. However, no individual row in
      * the result set can exceed 100 MiB, and no column value can exceed
      * 10 MiB.
      * 
@@ -1673,7 +1693,8 @@ public java.util.Iterator streamingRead( * *
      * Begins a new transaction. This step can often be skipped:
-     * [Read][google.spanner.v1.Spanner.Read], [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] and
+     * [Read][google.spanner.v1.Spanner.Read],
+     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] and
      * [Commit][google.spanner.v1.Spanner.Commit] can begin a new transaction as a
      * side-effect.
      * 
@@ -1714,8 +1735,9 @@ public com.google.spanner.v1.CommitResponse commit( *
      * Rolls back a transaction, releasing any locks it holds. It is a good
      * idea to call this for any transaction that includes one or more
-     * [Read][google.spanner.v1.Spanner.Read] or [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] requests and
-     * ultimately decides not to commit.
+     * [Read][google.spanner.v1.Spanner.Read] or
+     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] requests and ultimately
+     * decides not to commit.
      * `Rollback` returns `OK` if it successfully aborts the transaction, the
      * transaction was already aborted, or the transaction is not
      * found. `Rollback` never returns `ABORTED`.
@@ -1732,10 +1754,11 @@ public com.google.protobuf.Empty rollback(com.google.spanner.v1.RollbackRequest
      * 
      * Creates a set of partition tokens that can be used to execute a query
      * operation in parallel.  Each of the returned partition tokens can be used
-     * by [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] to specify a subset
-     * of the query result to read.  The same session and read-only transaction
-     * must be used by the PartitionQueryRequest used to create the
-     * partition tokens and the ExecuteSqlRequests that use the partition tokens.
+     * by [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] to
+     * specify a subset of the query result to read.  The same session and
+     * read-only transaction must be used by the PartitionQueryRequest used to
+     * create the partition tokens and the ExecuteSqlRequests that use the
+     * partition tokens.
      * Partition tokens become invalid when the session used to create them
      * is deleted, is idle for too long, begins a new transaction, or becomes too
      * old.  When any of these happen, it is not possible to resume the query, and
@@ -1754,12 +1777,13 @@ public com.google.spanner.v1.PartitionResponse partitionQuery(
      * 
      * Creates a set of partition tokens that can be used to execute a read
      * operation in parallel.  Each of the returned partition tokens can be used
-     * by [StreamingRead][google.spanner.v1.Spanner.StreamingRead] to specify a subset of the read
-     * result to read.  The same session and read-only transaction must be used by
-     * the PartitionReadRequest used to create the partition tokens and the
-     * ReadRequests that use the partition tokens.  There are no ordering
-     * guarantees on rows returned among the returned partition tokens, or even
-     * within each individual StreamingRead call issued with a partition_token.
+     * by [StreamingRead][google.spanner.v1.Spanner.StreamingRead] to specify a
+     * subset of the read result to read.  The same session and read-only
+     * transaction must be used by the PartitionReadRequest used to create the
+     * partition tokens and the ReadRequests that use the partition tokens.  There
+     * are no ordering guarantees on rows returned among the returned partition
+     * tokens, or even within each individual StreamingRead call issued with a
+     * partition_token.
      * Partition tokens become invalid when the session used to create them
      * is deleted, is idle for too long, begins a new transaction, or becomes too
      * old.  When any of these happen, it is not possible to resume the read, and
@@ -1917,9 +1941,11 @@ protected SpannerFutureStub build(io.grpc.Channel channel, io.grpc.CallOptions c
      * a `FAILED_PRECONDITION` error.
      * Operations inside read-write transactions might return `ABORTED`. If
      * this occurs, the application should restart the transaction from
-     * the beginning. See [Transaction][google.spanner.v1.Transaction] for more details.
+     * the beginning. See [Transaction][google.spanner.v1.Transaction] for more
+     * details.
      * Larger result sets can be fetched in streaming fashion by calling
-     * [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] instead.
+     * [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql]
+     * instead.
      * 
*/ public com.google.common.util.concurrent.ListenableFuture @@ -1936,9 +1962,10 @@ protected SpannerFutureStub build(io.grpc.Channel channel, io.grpc.CallOptions c * to be run with lower latency than submitting them sequentially with * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql]. * Statements are executed in sequential order. A request can succeed even if - * a statement fails. The [ExecuteBatchDmlResponse.status][google.spanner.v1.ExecuteBatchDmlResponse.status] field in the - * response provides information about the statement that failed. Clients must - * inspect this field to determine whether an error occurred. + * a statement fails. The + * [ExecuteBatchDmlResponse.status][google.spanner.v1.ExecuteBatchDmlResponse.status] + * field in the response provides information about the statement that failed. + * Clients must inspect this field to determine whether an error occurred. * Execution stops after the first failed statement; the remaining statements * are not executed. *
@@ -1956,13 +1983,14 @@ protected SpannerFutureStub build(io.grpc.Channel channel, io.grpc.CallOptions c *
      * Reads rows from the database using key lookups and scans, as a
      * simple key/value style alternative to
-     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql].  This method cannot be used to
-     * return a result set larger than 10 MiB; if the read matches more
+     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql].  This method cannot be
+     * used to return a result set larger than 10 MiB; if the read matches more
      * data than that, the read fails with a `FAILED_PRECONDITION`
      * error.
      * Reads inside read-write transactions might return `ABORTED`. If
      * this occurs, the application should restart the transaction from
-     * the beginning. See [Transaction][google.spanner.v1.Transaction] for more details.
+     * the beginning. See [Transaction][google.spanner.v1.Transaction] for more
+     * details.
      * Larger result sets can be yielded in streaming fashion by calling
      * [StreamingRead][google.spanner.v1.Spanner.StreamingRead] instead.
      * 
@@ -1978,7 +2006,8 @@ public com.google.common.util.concurrent.ListenableFuture * Begins a new transaction. This step can often be skipped: - * [Read][google.spanner.v1.Spanner.Read], [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] and + * [Read][google.spanner.v1.Spanner.Read], + * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] and * [Commit][google.spanner.v1.Spanner.Commit] can begin a new transaction as a * side-effect. *
@@ -2019,8 +2048,9 @@ public com.google.common.util.concurrent.ListenableFuture * Rolls back a transaction, releasing any locks it holds. It is a good * idea to call this for any transaction that includes one or more - * [Read][google.spanner.v1.Spanner.Read] or [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] requests and - * ultimately decides not to commit. + * [Read][google.spanner.v1.Spanner.Read] or + * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] requests and ultimately + * decides not to commit. * `Rollback` returns `OK` if it successfully aborts the transaction, the * transaction was already aborted, or the transaction is not * found. `Rollback` never returns `ABORTED`. @@ -2038,10 +2068,11 @@ public com.google.common.util.concurrent.ListenableFuture * Creates a set of partition tokens that can be used to execute a query * operation in parallel. Each of the returned partition tokens can be used - * by [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] to specify a subset - * of the query result to read. The same session and read-only transaction - * must be used by the PartitionQueryRequest used to create the - * partition tokens and the ExecuteSqlRequests that use the partition tokens. + * by [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] to + * specify a subset of the query result to read. The same session and + * read-only transaction must be used by the PartitionQueryRequest used to + * create the partition tokens and the ExecuteSqlRequests that use the + * partition tokens. * Partition tokens become invalid when the session used to create them * is deleted, is idle for too long, begins a new transaction, or becomes too * old. When any of these happen, it is not possible to resume the query, and @@ -2061,12 +2092,13 @@ public com.google.common.util.concurrent.ListenableFuture * Creates a set of partition tokens that can be used to execute a read * operation in parallel. Each of the returned partition tokens can be used - * by [StreamingRead][google.spanner.v1.Spanner.StreamingRead] to specify a subset of the read - * result to read. The same session and read-only transaction must be used by - * the PartitionReadRequest used to create the partition tokens and the - * ReadRequests that use the partition tokens. There are no ordering - * guarantees on rows returned among the returned partition tokens, or even - * within each individual StreamingRead call issued with a partition_token. + * by [StreamingRead][google.spanner.v1.Spanner.StreamingRead] to specify a + * subset of the read result to read. The same session and read-only + * transaction must be used by the PartitionReadRequest used to create the + * partition tokens and the ReadRequests that use the partition tokens. There + * are no ordering guarantees on rows returned among the returned partition + * tokens, or even within each individual StreamingRead call issued with a + * partition_token. * Partition tokens become invalid when the session used to create them * is deleted, is idle for too long, begins a new transaction, or becomes too * old. When any of these happen, it is not possible to resume the read, and diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsRequest.java index 1bb2c97bf87..ad23fd19b8c 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsRequest.java @@ -22,7 +22,8 @@ * * *
- * The request for [BatchCreateSessions][google.spanner.v1.Spanner.BatchCreateSessions].
+ * The request for
+ * [BatchCreateSessions][google.spanner.v1.Spanner.BatchCreateSessions].
  * 
* * Protobuf type {@code google.spanner.v1.BatchCreateSessionsRequest} @@ -177,7 +178,8 @@ public com.google.spanner.v1.SessionOrBuilder getSessionTemplateOrBuilder() { * The API may return fewer than the requested number of sessions. If a * specific number of sessions are desired, the client can make additional * calls to BatchCreateSessions (adjusting - * [session_count][google.spanner.v1.BatchCreateSessionsRequest.session_count] as necessary). + * [session_count][google.spanner.v1.BatchCreateSessionsRequest.session_count] + * as necessary). *
* * int32 session_count = 3 [(.google.api.field_behavior) = REQUIRED]; @@ -375,7 +377,8 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build * * *
-   * The request for [BatchCreateSessions][google.spanner.v1.Spanner.BatchCreateSessions].
+   * The request for
+   * [BatchCreateSessions][google.spanner.v1.Spanner.BatchCreateSessions].
    * 
* * Protobuf type {@code google.spanner.v1.BatchCreateSessionsRequest} @@ -893,7 +896,8 @@ public com.google.spanner.v1.SessionOrBuilder getSessionTemplateOrBuilder() { * The API may return fewer than the requested number of sessions. If a * specific number of sessions are desired, the client can make additional * calls to BatchCreateSessions (adjusting - * [session_count][google.spanner.v1.BatchCreateSessionsRequest.session_count] as necessary). + * [session_count][google.spanner.v1.BatchCreateSessionsRequest.session_count] + * as necessary). *
* * int32 session_count = 3 [(.google.api.field_behavior) = REQUIRED]; @@ -912,7 +916,8 @@ public int getSessionCount() { * The API may return fewer than the requested number of sessions. If a * specific number of sessions are desired, the client can make additional * calls to BatchCreateSessions (adjusting - * [session_count][google.spanner.v1.BatchCreateSessionsRequest.session_count] as necessary). + * [session_count][google.spanner.v1.BatchCreateSessionsRequest.session_count] + * as necessary). * * * int32 session_count = 3 [(.google.api.field_behavior) = REQUIRED]; @@ -935,7 +940,8 @@ public Builder setSessionCount(int value) { * The API may return fewer than the requested number of sessions. If a * specific number of sessions are desired, the client can make additional * calls to BatchCreateSessions (adjusting - * [session_count][google.spanner.v1.BatchCreateSessionsRequest.session_count] as necessary). + * [session_count][google.spanner.v1.BatchCreateSessionsRequest.session_count] + * as necessary). * * * int32 session_count = 3 [(.google.api.field_behavior) = REQUIRED]; diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsRequestOrBuilder.java index 3a1183555c1..e4dc50f286d 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsRequestOrBuilder.java @@ -95,7 +95,8 @@ public interface BatchCreateSessionsRequestOrBuilder * The API may return fewer than the requested number of sessions. If a * specific number of sessions are desired, the client can make additional * calls to BatchCreateSessions (adjusting - * [session_count][google.spanner.v1.BatchCreateSessionsRequest.session_count] as necessary). + * [session_count][google.spanner.v1.BatchCreateSessionsRequest.session_count] + * as necessary). * * * int32 session_count = 3 [(.google.api.field_behavior) = REQUIRED]; diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsResponse.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsResponse.java index 8bc814aad56..f5f7a7e031b 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsResponse.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BatchCreateSessionsResponse.java @@ -22,7 +22,8 @@ * * *
- * The response for [BatchCreateSessions][google.spanner.v1.Spanner.BatchCreateSessions].
+ * The response for
+ * [BatchCreateSessions][google.spanner.v1.Spanner.BatchCreateSessions].
  * 
* * Protobuf type {@code google.spanner.v1.BatchCreateSessionsResponse} @@ -298,7 +299,8 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build * * *
-   * The response for [BatchCreateSessions][google.spanner.v1.Spanner.BatchCreateSessions].
+   * The response for
+   * [BatchCreateSessions][google.spanner.v1.Spanner.BatchCreateSessions].
    * 
* * Protobuf type {@code google.spanner.v1.BatchCreateSessionsResponse} diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BeginTransactionRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BeginTransactionRequest.java index 36768bd8d30..f097d007ecd 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BeginTransactionRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BeginTransactionRequest.java @@ -22,7 +22,8 @@ * * *
- * The request for [BeginTransaction][google.spanner.v1.Spanner.BeginTransaction].
+ * The request for
+ * [BeginTransaction][google.spanner.v1.Spanner.BeginTransaction].
  * 
* * Protobuf type {@code google.spanner.v1.BeginTransactionRequest} @@ -426,7 +427,8 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build * * *
-   * The request for [BeginTransaction][google.spanner.v1.Spanner.BeginTransaction].
+   * The request for
+   * [BeginTransaction][google.spanner.v1.Spanner.BeginTransaction].
    * 
* * Protobuf type {@code google.spanner.v1.BeginTransactionRequest} diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitRequest.java index 70873e5129a..3858c140451 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitRequest.java @@ -365,8 +365,8 @@ public com.google.spanner.v1.MutationOrBuilder getMutationsOrBuilder(int index) * *
    * If `true`, then statistics related to the transaction will be included in
-   * the [CommitResponse][google.spanner.v1.CommitResponse.commit_stats]. Default value is
-   * `false`.
+   * the [CommitResponse][google.spanner.v1.CommitResponse.commit_stats].
+   * Default value is `false`.
    * 
* * bool return_commit_stats = 5; @@ -1843,8 +1843,8 @@ public java.util.List getMutationsBuilde * *
      * If `true`, then statistics related to the transaction will be included in
-     * the [CommitResponse][google.spanner.v1.CommitResponse.commit_stats]. Default value is
-     * `false`.
+     * the [CommitResponse][google.spanner.v1.CommitResponse.commit_stats].
+     * Default value is `false`.
      * 
* * bool return_commit_stats = 5; @@ -1860,8 +1860,8 @@ public boolean getReturnCommitStats() { * *
      * If `true`, then statistics related to the transaction will be included in
-     * the [CommitResponse][google.spanner.v1.CommitResponse.commit_stats]. Default value is
-     * `false`.
+     * the [CommitResponse][google.spanner.v1.CommitResponse.commit_stats].
+     * Default value is `false`.
      * 
* * bool return_commit_stats = 5; @@ -1881,8 +1881,8 @@ public Builder setReturnCommitStats(boolean value) { * *
      * If `true`, then statistics related to the transaction will be included in
-     * the [CommitResponse][google.spanner.v1.CommitResponse.commit_stats]. Default value is
-     * `false`.
+     * the [CommitResponse][google.spanner.v1.CommitResponse.commit_stats].
+     * Default value is `false`.
      * 
* * bool return_commit_stats = 5; diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitRequestOrBuilder.java index dae8af33200..70f16028376 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitRequestOrBuilder.java @@ -202,8 +202,8 @@ public interface CommitRequestOrBuilder * *
    * If `true`, then statistics related to the transaction will be included in
-   * the [CommitResponse][google.spanner.v1.CommitResponse.commit_stats]. Default value is
-   * `false`.
+   * the [CommitResponse][google.spanner.v1.CommitResponse.commit_stats].
+   * Default value is `false`.
    * 
* * bool return_commit_stats = 5; diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DirectedReadOptions.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DirectedReadOptions.java new file mode 100644 index 00000000000..dcdd4ba12a2 --- /dev/null +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DirectedReadOptions.java @@ -0,0 +1,4467 @@ +/* + * Copyright 2023 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. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/v1/spanner.proto + +package com.google.spanner.v1; + +/** + * + * + *
+ * The DirectedReadOptions can be used to indicate which replicas or regions
+ * should be used for non-transactional reads or queries.
+ *
+ * DirectedReadOptions may only be specified for a read-only transaction,
+ * otherwise the API will return an `INVALID_ARGUMENT` error.
+ * 
+ * + * Protobuf type {@code google.spanner.v1.DirectedReadOptions} + */ +public final class DirectedReadOptions extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.DirectedReadOptions) + DirectedReadOptionsOrBuilder { + private static final long serialVersionUID = 0L; + // Use DirectedReadOptions.newBuilder() to construct. + private DirectedReadOptions(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private DirectedReadOptions() {} + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new DirectedReadOptions(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.DirectedReadOptions.class, + com.google.spanner.v1.DirectedReadOptions.Builder.class); + } + + public interface ReplicaSelectionOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.DirectedReadOptions.ReplicaSelection) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+     * The location or region of the serving requests, e.g. "us-east1".
+     * 
+ * + * string location = 1; + * + * @return The location. + */ + java.lang.String getLocation(); + /** + * + * + *
+     * The location or region of the serving requests, e.g. "us-east1".
+     * 
+ * + * string location = 1; + * + * @return The bytes for location. + */ + com.google.protobuf.ByteString getLocationBytes(); + + /** + * + * + *
+     * The type of replica.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type type = 2; + * + * @return The enum numeric value on the wire for type. + */ + int getTypeValue(); + /** + * + * + *
+     * The type of replica.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type type = 2; + * + * @return The type. + */ + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type getType(); + } + /** + * + * + *
+   * The directed read replica selector.
+   * Callers must provide one or more of the following fields for replica
+   * selection:
+   *
+   *   * `location` - The location must be one of the regions within the
+   *      multi-region configuration of your database.
+   *   * `type` - The type of the replica.
+   *
+   * Some examples of using replica_selectors are:
+   *
+   *   * `location:us-east1` --> The "us-east1" replica(s) of any available type
+   *                             will be used to process the request.
+   *   * `type:READ_ONLY`    --> The "READ_ONLY" type replica(s) in nearest
+   * .                            available location will be used to process the
+   *                             request.
+   *   * `location:us-east1 type:READ_ONLY` --> The "READ_ONLY" type replica(s)
+   *                          in location "us-east1" will be used to process
+   *                          the request.
+   * 
+ * + * Protobuf type {@code google.spanner.v1.DirectedReadOptions.ReplicaSelection} + */ + public static final class ReplicaSelection extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.DirectedReadOptions.ReplicaSelection) + ReplicaSelectionOrBuilder { + private static final long serialVersionUID = 0L; + // Use ReplicaSelection.newBuilder() to construct. + private ReplicaSelection(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ReplicaSelection() { + location_ = ""; + type_ = 0; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new ReplicaSelection(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_ReplicaSelection_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_ReplicaSelection_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.class, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder.class); + } + + /** + * + * + *
+     * Indicates the type of replica.
+     * 
+ * + * Protobuf enum {@code google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type} + */ + public enum Type implements com.google.protobuf.ProtocolMessageEnum { + /** + * + * + *
+       * Not specified.
+       * 
+ * + * TYPE_UNSPECIFIED = 0; + */ + TYPE_UNSPECIFIED(0), + /** + * + * + *
+       * Read-write replicas support both reads and writes.
+       * 
+ * + * READ_WRITE = 1; + */ + READ_WRITE(1), + /** + * + * + *
+       * Read-only replicas only support reads (not writes).
+       * 
+ * + * READ_ONLY = 2; + */ + READ_ONLY(2), + UNRECOGNIZED(-1), + ; + + /** + * + * + *
+       * Not specified.
+       * 
+ * + * TYPE_UNSPECIFIED = 0; + */ + public static final int TYPE_UNSPECIFIED_VALUE = 0; + /** + * + * + *
+       * Read-write replicas support both reads and writes.
+       * 
+ * + * READ_WRITE = 1; + */ + public static final int READ_WRITE_VALUE = 1; + /** + * + * + *
+       * Read-only replicas only support reads (not writes).
+       * 
+ * + * READ_ONLY = 2; + */ + public static final int READ_ONLY_VALUE = 2; + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static Type valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static Type forNumber(int value) { + switch (value) { + case 0: + return TYPE_UNSPECIFIED; + case 1: + return READ_WRITE; + case 2: + return READ_ONLY; + default: + return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { + return internalValueMap; + } + + private static final com.google.protobuf.Internal.EnumLiteMap internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public Type findValueByNumber(int number) { + return Type.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + + public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() { + return getDescriptor(); + } + + public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { + return com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.getDescriptor() + .getEnumTypes() + .get(0); + } + + private static final Type[] VALUES = values(); + + public static Type valueOf(com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException("EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private Type(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type) + } + + public static final int LOCATION_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private volatile java.lang.Object location_ = ""; + /** + * + * + *
+     * The location or region of the serving requests, e.g. "us-east1".
+     * 
+ * + * string location = 1; + * + * @return The location. + */ + @java.lang.Override + public java.lang.String getLocation() { + java.lang.Object ref = location_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + location_ = s; + return s; + } + } + /** + * + * + *
+     * The location or region of the serving requests, e.g. "us-east1".
+     * 
+ * + * string location = 1; + * + * @return The bytes for location. + */ + @java.lang.Override + public com.google.protobuf.ByteString getLocationBytes() { + java.lang.Object ref = location_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + location_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TYPE_FIELD_NUMBER = 2; + private int type_ = 0; + /** + * + * + *
+     * The type of replica.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type type = 2; + * + * @return The enum numeric value on the wire for type. + */ + @java.lang.Override + public int getTypeValue() { + return type_; + } + /** + * + * + *
+     * The type of replica.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type type = 2; + * + * @return The type. + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type getType() { + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type result = + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type.forNumber(type_); + return result == null + ? com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type.UNRECOGNIZED + : result; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(location_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, location_); + } + if (type_ + != com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type.TYPE_UNSPECIFIED + .getNumber()) { + output.writeEnum(2, type_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(location_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, location_); + } + if (type_ + != com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type.TYPE_UNSPECIFIED + .getNumber()) { + size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, type_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.v1.DirectedReadOptions.ReplicaSelection)) { + return super.equals(obj); + } + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection other = + (com.google.spanner.v1.DirectedReadOptions.ReplicaSelection) obj; + + if (!getLocation().equals(other.getLocation())) return false; + if (type_ != other.type_) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + LOCATION_FIELD_NUMBER; + hash = (53 * hash) + getLocation().hashCode(); + hash = (37 * hash) + TYPE_FIELD_NUMBER; + hash = (53 * hash) + type_; + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.DirectedReadOptions.ReplicaSelection parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.DirectedReadOptions.ReplicaSelection parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions.ReplicaSelection parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.DirectedReadOptions.ReplicaSelection parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions.ReplicaSelection parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.DirectedReadOptions.ReplicaSelection parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions.ReplicaSelection parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.DirectedReadOptions.ReplicaSelection parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions.ReplicaSelection parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.DirectedReadOptions.ReplicaSelection parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions.ReplicaSelection parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.DirectedReadOptions.ReplicaSelection parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * The directed read replica selector.
+     * Callers must provide one or more of the following fields for replica
+     * selection:
+     *
+     *   * `location` - The location must be one of the regions within the
+     *      multi-region configuration of your database.
+     *   * `type` - The type of the replica.
+     *
+     * Some examples of using replica_selectors are:
+     *
+     *   * `location:us-east1` --> The "us-east1" replica(s) of any available type
+     *                             will be used to process the request.
+     *   * `type:READ_ONLY`    --> The "READ_ONLY" type replica(s) in nearest
+     * .                            available location will be used to process the
+     *                             request.
+     *   * `location:us-east1 type:READ_ONLY` --> The "READ_ONLY" type replica(s)
+     *                          in location "us-east1" will be used to process
+     *                          the request.
+     * 
+ * + * Protobuf type {@code google.spanner.v1.DirectedReadOptions.ReplicaSelection} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.DirectedReadOptions.ReplicaSelection) + com.google.spanner.v1.DirectedReadOptions.ReplicaSelectionOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_ReplicaSelection_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_ReplicaSelection_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.class, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder.class); + } + + // Construct using com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + location_ = ""; + type_ = 0; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_ReplicaSelection_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelection + getDefaultInstanceForType() { + return com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelection build() { + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelection buildPartial() { + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection result = + new com.google.spanner.v1.DirectedReadOptions.ReplicaSelection(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0( + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.location_ = location_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.type_ = type_; + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.v1.DirectedReadOptions.ReplicaSelection) { + return mergeFrom((com.google.spanner.v1.DirectedReadOptions.ReplicaSelection) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.spanner.v1.DirectedReadOptions.ReplicaSelection other) { + if (other + == com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.getDefaultInstance()) + return this; + if (!other.getLocation().isEmpty()) { + location_ = other.location_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (other.type_ != 0) { + setTypeValue(other.getTypeValue()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + location_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 16: + { + type_ = input.readEnum(); + bitField0_ |= 0x00000002; + break; + } // case 16 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private java.lang.Object location_ = ""; + /** + * + * + *
+       * The location or region of the serving requests, e.g. "us-east1".
+       * 
+ * + * string location = 1; + * + * @return The location. + */ + public java.lang.String getLocation() { + java.lang.Object ref = location_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + location_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+       * The location or region of the serving requests, e.g. "us-east1".
+       * 
+ * + * string location = 1; + * + * @return The bytes for location. + */ + public com.google.protobuf.ByteString getLocationBytes() { + java.lang.Object ref = location_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + location_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+       * The location or region of the serving requests, e.g. "us-east1".
+       * 
+ * + * string location = 1; + * + * @param value The location to set. + * @return This builder for chaining. + */ + public Builder setLocation(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + location_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+       * The location or region of the serving requests, e.g. "us-east1".
+       * 
+ * + * string location = 1; + * + * @return This builder for chaining. + */ + public Builder clearLocation() { + location_ = getDefaultInstance().getLocation(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * + * + *
+       * The location or region of the serving requests, e.g. "us-east1".
+       * 
+ * + * string location = 1; + * + * @param value The bytes for location to set. + * @return This builder for chaining. + */ + public Builder setLocationBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + location_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private int type_ = 0; + /** + * + * + *
+       * The type of replica.
+       * 
+ * + * .google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type type = 2; + * + * @return The enum numeric value on the wire for type. + */ + @java.lang.Override + public int getTypeValue() { + return type_; + } + /** + * + * + *
+       * The type of replica.
+       * 
+ * + * .google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type type = 2; + * + * @param value The enum numeric value on the wire for type to set. + * @return This builder for chaining. + */ + public Builder setTypeValue(int value) { + type_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+       * The type of replica.
+       * 
+ * + * .google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type type = 2; + * + * @return The type. + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type getType() { + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type result = + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type.forNumber(type_); + return result == null + ? com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type.UNRECOGNIZED + : result; + } + /** + * + * + *
+       * The type of replica.
+       * 
+ * + * .google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type type = 2; + * + * @param value The type to set. + * @return This builder for chaining. + */ + public Builder setType( + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + type_ = value.getNumber(); + onChanged(); + return this; + } + /** + * + * + *
+       * The type of replica.
+       * 
+ * + * .google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type type = 2; + * + * @return This builder for chaining. + */ + public Builder clearType() { + bitField0_ = (bitField0_ & ~0x00000002); + type_ = 0; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.DirectedReadOptions.ReplicaSelection) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.DirectedReadOptions.ReplicaSelection) + private static final com.google.spanner.v1.DirectedReadOptions.ReplicaSelection + DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.v1.DirectedReadOptions.ReplicaSelection(); + } + + public static com.google.spanner.v1.DirectedReadOptions.ReplicaSelection getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ReplicaSelection parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelection getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface IncludeReplicasOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.DirectedReadOptions.IncludeReplicas) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + java.util.List + getReplicaSelectionsList(); + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection getReplicaSelections(int index); + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + int getReplicaSelectionsCount(); + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + java.util.List + getReplicaSelectionsOrBuilderList(); + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + com.google.spanner.v1.DirectedReadOptions.ReplicaSelectionOrBuilder + getReplicaSelectionsOrBuilder(int index); + + /** + * + * + *
+     * If true, Spanner will not route requests to a replica outside the
+     * include_replicas list when all of the specified replicas are unavailable
+     * or unhealthy. Default value is `false`.
+     * 
+ * + * bool auto_failover_disabled = 2; + * + * @return The autoFailoverDisabled. + */ + boolean getAutoFailoverDisabled(); + } + /** + * + * + *
+   * An IncludeReplicas contains a repeated set of ReplicaSelection which
+   * indicates the order in which replicas should be considered.
+   * 
+ * + * Protobuf type {@code google.spanner.v1.DirectedReadOptions.IncludeReplicas} + */ + public static final class IncludeReplicas extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.DirectedReadOptions.IncludeReplicas) + IncludeReplicasOrBuilder { + private static final long serialVersionUID = 0L; + // Use IncludeReplicas.newBuilder() to construct. + private IncludeReplicas(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private IncludeReplicas() { + replicaSelections_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new IncludeReplicas(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_IncludeReplicas_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_IncludeReplicas_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.class, + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.Builder.class); + } + + public static final int REPLICA_SELECTIONS_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private java.util.List + replicaSelections_; + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + @java.lang.Override + public java.util.List + getReplicaSelectionsList() { + return replicaSelections_; + } + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + @java.lang.Override + public java.util.List< + ? extends com.google.spanner.v1.DirectedReadOptions.ReplicaSelectionOrBuilder> + getReplicaSelectionsOrBuilderList() { + return replicaSelections_; + } + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + @java.lang.Override + public int getReplicaSelectionsCount() { + return replicaSelections_.size(); + } + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelection getReplicaSelections( + int index) { + return replicaSelections_.get(index); + } + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelectionOrBuilder + getReplicaSelectionsOrBuilder(int index) { + return replicaSelections_.get(index); + } + + public static final int AUTO_FAILOVER_DISABLED_FIELD_NUMBER = 2; + private boolean autoFailoverDisabled_ = false; + /** + * + * + *
+     * If true, Spanner will not route requests to a replica outside the
+     * include_replicas list when all of the specified replicas are unavailable
+     * or unhealthy. Default value is `false`.
+     * 
+ * + * bool auto_failover_disabled = 2; + * + * @return The autoFailoverDisabled. + */ + @java.lang.Override + public boolean getAutoFailoverDisabled() { + return autoFailoverDisabled_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + for (int i = 0; i < replicaSelections_.size(); i++) { + output.writeMessage(1, replicaSelections_.get(i)); + } + if (autoFailoverDisabled_ != false) { + output.writeBool(2, autoFailoverDisabled_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < replicaSelections_.size(); i++) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize(1, replicaSelections_.get(i)); + } + if (autoFailoverDisabled_ != false) { + size += com.google.protobuf.CodedOutputStream.computeBoolSize(2, autoFailoverDisabled_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.v1.DirectedReadOptions.IncludeReplicas)) { + return super.equals(obj); + } + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas other = + (com.google.spanner.v1.DirectedReadOptions.IncludeReplicas) obj; + + if (!getReplicaSelectionsList().equals(other.getReplicaSelectionsList())) return false; + if (getAutoFailoverDisabled() != other.getAutoFailoverDisabled()) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getReplicaSelectionsCount() > 0) { + hash = (37 * hash) + REPLICA_SELECTIONS_FIELD_NUMBER; + hash = (53 * hash) + getReplicaSelectionsList().hashCode(); + } + hash = (37 * hash) + AUTO_FAILOVER_DISABLED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getAutoFailoverDisabled()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.DirectedReadOptions.IncludeReplicas parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.DirectedReadOptions.IncludeReplicas parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions.IncludeReplicas parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.DirectedReadOptions.IncludeReplicas parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions.IncludeReplicas parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.DirectedReadOptions.IncludeReplicas parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions.IncludeReplicas parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.DirectedReadOptions.IncludeReplicas parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions.IncludeReplicas parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.DirectedReadOptions.IncludeReplicas parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions.IncludeReplicas parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.DirectedReadOptions.IncludeReplicas parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * An IncludeReplicas contains a repeated set of ReplicaSelection which
+     * indicates the order in which replicas should be considered.
+     * 
+ * + * Protobuf type {@code google.spanner.v1.DirectedReadOptions.IncludeReplicas} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.DirectedReadOptions.IncludeReplicas) + com.google.spanner.v1.DirectedReadOptions.IncludeReplicasOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_IncludeReplicas_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_IncludeReplicas_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.class, + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.Builder.class); + } + + // Construct using com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (replicaSelectionsBuilder_ == null) { + replicaSelections_ = java.util.Collections.emptyList(); + } else { + replicaSelections_ = null; + replicaSelectionsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + autoFailoverDisabled_ = false; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_IncludeReplicas_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.IncludeReplicas getDefaultInstanceForType() { + return com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.IncludeReplicas build() { + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.IncludeReplicas buildPartial() { + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas result = + new com.google.spanner.v1.DirectedReadOptions.IncludeReplicas(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields( + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas result) { + if (replicaSelectionsBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + replicaSelections_ = java.util.Collections.unmodifiableList(replicaSelections_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.replicaSelections_ = replicaSelections_; + } else { + result.replicaSelections_ = replicaSelectionsBuilder_.build(); + } + } + + private void buildPartial0(com.google.spanner.v1.DirectedReadOptions.IncludeReplicas result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000002) != 0)) { + result.autoFailoverDisabled_ = autoFailoverDisabled_; + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.v1.DirectedReadOptions.IncludeReplicas) { + return mergeFrom((com.google.spanner.v1.DirectedReadOptions.IncludeReplicas) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.spanner.v1.DirectedReadOptions.IncludeReplicas other) { + if (other == com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.getDefaultInstance()) + return this; + if (replicaSelectionsBuilder_ == null) { + if (!other.replicaSelections_.isEmpty()) { + if (replicaSelections_.isEmpty()) { + replicaSelections_ = other.replicaSelections_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureReplicaSelectionsIsMutable(); + replicaSelections_.addAll(other.replicaSelections_); + } + onChanged(); + } + } else { + if (!other.replicaSelections_.isEmpty()) { + if (replicaSelectionsBuilder_.isEmpty()) { + replicaSelectionsBuilder_.dispose(); + replicaSelectionsBuilder_ = null; + replicaSelections_ = other.replicaSelections_; + bitField0_ = (bitField0_ & ~0x00000001); + replicaSelectionsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getReplicaSelectionsFieldBuilder() + : null; + } else { + replicaSelectionsBuilder_.addAllMessages(other.replicaSelections_); + } + } + } + if (other.getAutoFailoverDisabled() != false) { + setAutoFailoverDisabled(other.getAutoFailoverDisabled()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection m = + input.readMessage( + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.parser(), + extensionRegistry); + if (replicaSelectionsBuilder_ == null) { + ensureReplicaSelectionsIsMutable(); + replicaSelections_.add(m); + } else { + replicaSelectionsBuilder_.addMessage(m); + } + break; + } // case 10 + case 16: + { + autoFailoverDisabled_ = input.readBool(); + bitField0_ |= 0x00000002; + break; + } // case 16 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private java.util.List + replicaSelections_ = java.util.Collections.emptyList(); + + private void ensureReplicaSelectionsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + replicaSelections_ = + new java.util.ArrayList( + replicaSelections_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelectionOrBuilder> + replicaSelectionsBuilder_; + + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public java.util.List + getReplicaSelectionsList() { + if (replicaSelectionsBuilder_ == null) { + return java.util.Collections.unmodifiableList(replicaSelections_); + } else { + return replicaSelectionsBuilder_.getMessageList(); + } + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public int getReplicaSelectionsCount() { + if (replicaSelectionsBuilder_ == null) { + return replicaSelections_.size(); + } else { + return replicaSelectionsBuilder_.getCount(); + } + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelection getReplicaSelections( + int index) { + if (replicaSelectionsBuilder_ == null) { + return replicaSelections_.get(index); + } else { + return replicaSelectionsBuilder_.getMessage(index); + } + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder setReplicaSelections( + int index, com.google.spanner.v1.DirectedReadOptions.ReplicaSelection value) { + if (replicaSelectionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureReplicaSelectionsIsMutable(); + replicaSelections_.set(index, value); + onChanged(); + } else { + replicaSelectionsBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder setReplicaSelections( + int index, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder builderForValue) { + if (replicaSelectionsBuilder_ == null) { + ensureReplicaSelectionsIsMutable(); + replicaSelections_.set(index, builderForValue.build()); + onChanged(); + } else { + replicaSelectionsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder addReplicaSelections( + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection value) { + if (replicaSelectionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureReplicaSelectionsIsMutable(); + replicaSelections_.add(value); + onChanged(); + } else { + replicaSelectionsBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder addReplicaSelections( + int index, com.google.spanner.v1.DirectedReadOptions.ReplicaSelection value) { + if (replicaSelectionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureReplicaSelectionsIsMutable(); + replicaSelections_.add(index, value); + onChanged(); + } else { + replicaSelectionsBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder addReplicaSelections( + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder builderForValue) { + if (replicaSelectionsBuilder_ == null) { + ensureReplicaSelectionsIsMutable(); + replicaSelections_.add(builderForValue.build()); + onChanged(); + } else { + replicaSelectionsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder addReplicaSelections( + int index, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder builderForValue) { + if (replicaSelectionsBuilder_ == null) { + ensureReplicaSelectionsIsMutable(); + replicaSelections_.add(index, builderForValue.build()); + onChanged(); + } else { + replicaSelectionsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder addAllReplicaSelections( + java.lang.Iterable + values) { + if (replicaSelectionsBuilder_ == null) { + ensureReplicaSelectionsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, replicaSelections_); + onChanged(); + } else { + replicaSelectionsBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder clearReplicaSelections() { + if (replicaSelectionsBuilder_ == null) { + replicaSelections_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + replicaSelectionsBuilder_.clear(); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder removeReplicaSelections(int index) { + if (replicaSelectionsBuilder_ == null) { + ensureReplicaSelectionsIsMutable(); + replicaSelections_.remove(index); + onChanged(); + } else { + replicaSelectionsBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder + getReplicaSelectionsBuilder(int index) { + return getReplicaSelectionsFieldBuilder().getBuilder(index); + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelectionOrBuilder + getReplicaSelectionsOrBuilder(int index) { + if (replicaSelectionsBuilder_ == null) { + return replicaSelections_.get(index); + } else { + return replicaSelectionsBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public java.util.List< + ? extends com.google.spanner.v1.DirectedReadOptions.ReplicaSelectionOrBuilder> + getReplicaSelectionsOrBuilderList() { + if (replicaSelectionsBuilder_ != null) { + return replicaSelectionsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(replicaSelections_); + } + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder + addReplicaSelectionsBuilder() { + return getReplicaSelectionsFieldBuilder() + .addBuilder( + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.getDefaultInstance()); + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder + addReplicaSelectionsBuilder(int index) { + return getReplicaSelectionsFieldBuilder() + .addBuilder( + index, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.getDefaultInstance()); + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public java.util.List + getReplicaSelectionsBuilderList() { + return getReplicaSelectionsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelectionOrBuilder> + getReplicaSelectionsFieldBuilder() { + if (replicaSelectionsBuilder_ == null) { + replicaSelectionsBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelectionOrBuilder>( + replicaSelections_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + replicaSelections_ = null; + } + return replicaSelectionsBuilder_; + } + + private boolean autoFailoverDisabled_; + /** + * + * + *
+       * If true, Spanner will not route requests to a replica outside the
+       * include_replicas list when all of the specified replicas are unavailable
+       * or unhealthy. Default value is `false`.
+       * 
+ * + * bool auto_failover_disabled = 2; + * + * @return The autoFailoverDisabled. + */ + @java.lang.Override + public boolean getAutoFailoverDisabled() { + return autoFailoverDisabled_; + } + /** + * + * + *
+       * If true, Spanner will not route requests to a replica outside the
+       * include_replicas list when all of the specified replicas are unavailable
+       * or unhealthy. Default value is `false`.
+       * 
+ * + * bool auto_failover_disabled = 2; + * + * @param value The autoFailoverDisabled to set. + * @return This builder for chaining. + */ + public Builder setAutoFailoverDisabled(boolean value) { + + autoFailoverDisabled_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+       * If true, Spanner will not route requests to a replica outside the
+       * include_replicas list when all of the specified replicas are unavailable
+       * or unhealthy. Default value is `false`.
+       * 
+ * + * bool auto_failover_disabled = 2; + * + * @return This builder for chaining. + */ + public Builder clearAutoFailoverDisabled() { + bitField0_ = (bitField0_ & ~0x00000002); + autoFailoverDisabled_ = false; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.DirectedReadOptions.IncludeReplicas) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.DirectedReadOptions.IncludeReplicas) + private static final com.google.spanner.v1.DirectedReadOptions.IncludeReplicas DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.v1.DirectedReadOptions.IncludeReplicas(); + } + + public static com.google.spanner.v1.DirectedReadOptions.IncludeReplicas getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public IncludeReplicas parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.IncludeReplicas getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + public interface ExcludeReplicasOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.DirectedReadOptions.ExcludeReplicas) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + java.util.List + getReplicaSelectionsList(); + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection getReplicaSelections(int index); + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + int getReplicaSelectionsCount(); + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + java.util.List + getReplicaSelectionsOrBuilderList(); + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + com.google.spanner.v1.DirectedReadOptions.ReplicaSelectionOrBuilder + getReplicaSelectionsOrBuilder(int index); + } + /** + * + * + *
+   * An ExcludeReplicas contains a repeated set of ReplicaSelection that should
+   * be excluded from serving requests.
+   * 
+ * + * Protobuf type {@code google.spanner.v1.DirectedReadOptions.ExcludeReplicas} + */ + public static final class ExcludeReplicas extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.DirectedReadOptions.ExcludeReplicas) + ExcludeReplicasOrBuilder { + private static final long serialVersionUID = 0L; + // Use ExcludeReplicas.newBuilder() to construct. + private ExcludeReplicas(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ExcludeReplicas() { + replicaSelections_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new ExcludeReplicas(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_ExcludeReplicas_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_ExcludeReplicas_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.class, + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.Builder.class); + } + + public static final int REPLICA_SELECTIONS_FIELD_NUMBER = 1; + + @SuppressWarnings("serial") + private java.util.List + replicaSelections_; + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + @java.lang.Override + public java.util.List + getReplicaSelectionsList() { + return replicaSelections_; + } + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + @java.lang.Override + public java.util.List< + ? extends com.google.spanner.v1.DirectedReadOptions.ReplicaSelectionOrBuilder> + getReplicaSelectionsOrBuilderList() { + return replicaSelections_; + } + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + @java.lang.Override + public int getReplicaSelectionsCount() { + return replicaSelections_.size(); + } + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelection getReplicaSelections( + int index) { + return replicaSelections_.get(index); + } + /** + * + * + *
+     * The directed read replica selector.
+     * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelectionOrBuilder + getReplicaSelectionsOrBuilder(int index) { + return replicaSelections_.get(index); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + for (int i = 0; i < replicaSelections_.size(); i++) { + output.writeMessage(1, replicaSelections_.get(i)); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < replicaSelections_.size(); i++) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize(1, replicaSelections_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas)) { + return super.equals(obj); + } + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas other = + (com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas) obj; + + if (!getReplicaSelectionsList().equals(other.getReplicaSelectionsList())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getReplicaSelectionsCount() > 0) { + hash = (37 * hash) + REPLICA_SELECTIONS_FIELD_NUMBER; + hash = (53 * hash) + getReplicaSelectionsList().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * An ExcludeReplicas contains a repeated set of ReplicaSelection that should
+     * be excluded from serving requests.
+     * 
+ * + * Protobuf type {@code google.spanner.v1.DirectedReadOptions.ExcludeReplicas} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.DirectedReadOptions.ExcludeReplicas) + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicasOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_ExcludeReplicas_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_ExcludeReplicas_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.class, + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.Builder.class); + } + + // Construct using com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (replicaSelectionsBuilder_ == null) { + replicaSelections_ = java.util.Collections.emptyList(); + } else { + replicaSelections_ = null; + replicaSelectionsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_ExcludeReplicas_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas getDefaultInstanceForType() { + return com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas build() { + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas buildPartial() { + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas result = + new com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas(this); + buildPartialRepeatedFields(result); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartialRepeatedFields( + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas result) { + if (replicaSelectionsBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0)) { + replicaSelections_ = java.util.Collections.unmodifiableList(replicaSelections_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.replicaSelections_ = replicaSelections_; + } else { + result.replicaSelections_ = replicaSelectionsBuilder_.build(); + } + } + + private void buildPartial0(com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas result) { + int from_bitField0_ = bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas) { + return mergeFrom((com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas other) { + if (other == com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.getDefaultInstance()) + return this; + if (replicaSelectionsBuilder_ == null) { + if (!other.replicaSelections_.isEmpty()) { + if (replicaSelections_.isEmpty()) { + replicaSelections_ = other.replicaSelections_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureReplicaSelectionsIsMutable(); + replicaSelections_.addAll(other.replicaSelections_); + } + onChanged(); + } + } else { + if (!other.replicaSelections_.isEmpty()) { + if (replicaSelectionsBuilder_.isEmpty()) { + replicaSelectionsBuilder_.dispose(); + replicaSelectionsBuilder_ = null; + replicaSelections_ = other.replicaSelections_; + bitField0_ = (bitField0_ & ~0x00000001); + replicaSelectionsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getReplicaSelectionsFieldBuilder() + : null; + } else { + replicaSelectionsBuilder_.addAllMessages(other.replicaSelections_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection m = + input.readMessage( + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.parser(), + extensionRegistry); + if (replicaSelectionsBuilder_ == null) { + ensureReplicaSelectionsIsMutable(); + replicaSelections_.add(m); + } else { + replicaSelectionsBuilder_.addMessage(m); + } + break; + } // case 10 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private java.util.List + replicaSelections_ = java.util.Collections.emptyList(); + + private void ensureReplicaSelectionsIsMutable() { + if (!((bitField0_ & 0x00000001) != 0)) { + replicaSelections_ = + new java.util.ArrayList( + replicaSelections_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelectionOrBuilder> + replicaSelectionsBuilder_; + + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public java.util.List + getReplicaSelectionsList() { + if (replicaSelectionsBuilder_ == null) { + return java.util.Collections.unmodifiableList(replicaSelections_); + } else { + return replicaSelectionsBuilder_.getMessageList(); + } + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public int getReplicaSelectionsCount() { + if (replicaSelectionsBuilder_ == null) { + return replicaSelections_.size(); + } else { + return replicaSelectionsBuilder_.getCount(); + } + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelection getReplicaSelections( + int index) { + if (replicaSelectionsBuilder_ == null) { + return replicaSelections_.get(index); + } else { + return replicaSelectionsBuilder_.getMessage(index); + } + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder setReplicaSelections( + int index, com.google.spanner.v1.DirectedReadOptions.ReplicaSelection value) { + if (replicaSelectionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureReplicaSelectionsIsMutable(); + replicaSelections_.set(index, value); + onChanged(); + } else { + replicaSelectionsBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder setReplicaSelections( + int index, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder builderForValue) { + if (replicaSelectionsBuilder_ == null) { + ensureReplicaSelectionsIsMutable(); + replicaSelections_.set(index, builderForValue.build()); + onChanged(); + } else { + replicaSelectionsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder addReplicaSelections( + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection value) { + if (replicaSelectionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureReplicaSelectionsIsMutable(); + replicaSelections_.add(value); + onChanged(); + } else { + replicaSelectionsBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder addReplicaSelections( + int index, com.google.spanner.v1.DirectedReadOptions.ReplicaSelection value) { + if (replicaSelectionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureReplicaSelectionsIsMutable(); + replicaSelections_.add(index, value); + onChanged(); + } else { + replicaSelectionsBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder addReplicaSelections( + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder builderForValue) { + if (replicaSelectionsBuilder_ == null) { + ensureReplicaSelectionsIsMutable(); + replicaSelections_.add(builderForValue.build()); + onChanged(); + } else { + replicaSelectionsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder addReplicaSelections( + int index, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder builderForValue) { + if (replicaSelectionsBuilder_ == null) { + ensureReplicaSelectionsIsMutable(); + replicaSelections_.add(index, builderForValue.build()); + onChanged(); + } else { + replicaSelectionsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder addAllReplicaSelections( + java.lang.Iterable + values) { + if (replicaSelectionsBuilder_ == null) { + ensureReplicaSelectionsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, replicaSelections_); + onChanged(); + } else { + replicaSelectionsBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder clearReplicaSelections() { + if (replicaSelectionsBuilder_ == null) { + replicaSelections_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + replicaSelectionsBuilder_.clear(); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public Builder removeReplicaSelections(int index) { + if (replicaSelectionsBuilder_ == null) { + ensureReplicaSelectionsIsMutable(); + replicaSelections_.remove(index); + onChanged(); + } else { + replicaSelectionsBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder + getReplicaSelectionsBuilder(int index) { + return getReplicaSelectionsFieldBuilder().getBuilder(index); + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelectionOrBuilder + getReplicaSelectionsOrBuilder(int index) { + if (replicaSelectionsBuilder_ == null) { + return replicaSelections_.get(index); + } else { + return replicaSelectionsBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public java.util.List< + ? extends com.google.spanner.v1.DirectedReadOptions.ReplicaSelectionOrBuilder> + getReplicaSelectionsOrBuilderList() { + if (replicaSelectionsBuilder_ != null) { + return replicaSelectionsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(replicaSelections_); + } + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder + addReplicaSelectionsBuilder() { + return getReplicaSelectionsFieldBuilder() + .addBuilder( + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.getDefaultInstance()); + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder + addReplicaSelectionsBuilder(int index) { + return getReplicaSelectionsFieldBuilder() + .addBuilder( + index, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.getDefaultInstance()); + } + /** + * + * + *
+       * The directed read replica selector.
+       * 
+ * + * + * repeated .google.spanner.v1.DirectedReadOptions.ReplicaSelection replica_selections = 1; + * + */ + public java.util.List + getReplicaSelectionsBuilderList() { + return getReplicaSelectionsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelectionOrBuilder> + getReplicaSelectionsFieldBuilder() { + if (replicaSelectionsBuilder_ == null) { + replicaSelectionsBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Builder, + com.google.spanner.v1.DirectedReadOptions.ReplicaSelectionOrBuilder>( + replicaSelections_, + ((bitField0_ & 0x00000001) != 0), + getParentForChildren(), + isClean()); + replicaSelections_ = null; + } + return replicaSelectionsBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.DirectedReadOptions.ExcludeReplicas) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.DirectedReadOptions.ExcludeReplicas) + private static final com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas(); + } + + public static com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ExcludeReplicas parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException() + .setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + private int replicasCase_ = 0; + + @SuppressWarnings("serial") + private java.lang.Object replicas_; + + public enum ReplicasCase + implements + com.google.protobuf.Internal.EnumLite, + com.google.protobuf.AbstractMessage.InternalOneOfEnum { + INCLUDE_REPLICAS(1), + EXCLUDE_REPLICAS(2), + REPLICAS_NOT_SET(0); + private final int value; + + private ReplicasCase(int value) { + this.value = value; + } + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static ReplicasCase valueOf(int value) { + return forNumber(value); + } + + public static ReplicasCase forNumber(int value) { + switch (value) { + case 1: + return INCLUDE_REPLICAS; + case 2: + return EXCLUDE_REPLICAS; + case 0: + return REPLICAS_NOT_SET; + default: + return null; + } + } + + public int getNumber() { + return this.value; + } + }; + + public ReplicasCase getReplicasCase() { + return ReplicasCase.forNumber(replicasCase_); + } + + public static final int INCLUDE_REPLICAS_FIELD_NUMBER = 1; + /** + * + * + *
+   * Include_replicas indicates the order of replicas (as they appear in
+   * this list) to process the request. If auto_failover_disabled is set to
+   * true and all replicas are exhausted without finding a healthy replica,
+   * Spanner will wait for a replica in the list to become available, requests
+   * may fail due to `DEADLINE_EXCEEDED` errors.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions.IncludeReplicas include_replicas = 1; + * + * @return Whether the includeReplicas field is set. + */ + @java.lang.Override + public boolean hasIncludeReplicas() { + return replicasCase_ == 1; + } + /** + * + * + *
+   * Include_replicas indicates the order of replicas (as they appear in
+   * this list) to process the request. If auto_failover_disabled is set to
+   * true and all replicas are exhausted without finding a healthy replica,
+   * Spanner will wait for a replica in the list to become available, requests
+   * may fail due to `DEADLINE_EXCEEDED` errors.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions.IncludeReplicas include_replicas = 1; + * + * @return The includeReplicas. + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.IncludeReplicas getIncludeReplicas() { + if (replicasCase_ == 1) { + return (com.google.spanner.v1.DirectedReadOptions.IncludeReplicas) replicas_; + } + return com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.getDefaultInstance(); + } + /** + * + * + *
+   * Include_replicas indicates the order of replicas (as they appear in
+   * this list) to process the request. If auto_failover_disabled is set to
+   * true and all replicas are exhausted without finding a healthy replica,
+   * Spanner will wait for a replica in the list to become available, requests
+   * may fail due to `DEADLINE_EXCEEDED` errors.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions.IncludeReplicas include_replicas = 1; + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.IncludeReplicasOrBuilder + getIncludeReplicasOrBuilder() { + if (replicasCase_ == 1) { + return (com.google.spanner.v1.DirectedReadOptions.IncludeReplicas) replicas_; + } + return com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.getDefaultInstance(); + } + + public static final int EXCLUDE_REPLICAS_FIELD_NUMBER = 2; + /** + * + * + *
+   * Exclude_replicas indicates that should be excluded from serving
+   * requests. Spanner will not route requests to the replicas in this list.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions.ExcludeReplicas exclude_replicas = 2; + * + * @return Whether the excludeReplicas field is set. + */ + @java.lang.Override + public boolean hasExcludeReplicas() { + return replicasCase_ == 2; + } + /** + * + * + *
+   * Exclude_replicas indicates that should be excluded from serving
+   * requests. Spanner will not route requests to the replicas in this list.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions.ExcludeReplicas exclude_replicas = 2; + * + * @return The excludeReplicas. + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas getExcludeReplicas() { + if (replicasCase_ == 2) { + return (com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas) replicas_; + } + return com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.getDefaultInstance(); + } + /** + * + * + *
+   * Exclude_replicas indicates that should be excluded from serving
+   * requests. Spanner will not route requests to the replicas in this list.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions.ExcludeReplicas exclude_replicas = 2; + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ExcludeReplicasOrBuilder + getExcludeReplicasOrBuilder() { + if (replicasCase_ == 2) { + return (com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas) replicas_; + } + return com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.getDefaultInstance(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (replicasCase_ == 1) { + output.writeMessage(1, (com.google.spanner.v1.DirectedReadOptions.IncludeReplicas) replicas_); + } + if (replicasCase_ == 2) { + output.writeMessage(2, (com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas) replicas_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (replicasCase_ == 1) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 1, (com.google.spanner.v1.DirectedReadOptions.IncludeReplicas) replicas_); + } + if (replicasCase_ == 2) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 2, (com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas) replicas_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.v1.DirectedReadOptions)) { + return super.equals(obj); + } + com.google.spanner.v1.DirectedReadOptions other = + (com.google.spanner.v1.DirectedReadOptions) obj; + + if (!getReplicasCase().equals(other.getReplicasCase())) return false; + switch (replicasCase_) { + case 1: + if (!getIncludeReplicas().equals(other.getIncludeReplicas())) return false; + break; + case 2: + if (!getExcludeReplicas().equals(other.getExcludeReplicas())) return false; + break; + case 0: + default: + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + switch (replicasCase_) { + case 1: + hash = (37 * hash) + INCLUDE_REPLICAS_FIELD_NUMBER; + hash = (53 * hash) + getIncludeReplicas().hashCode(); + break; + case 2: + hash = (37 * hash) + EXCLUDE_REPLICAS_FIELD_NUMBER; + hash = (53 * hash) + getExcludeReplicas().hashCode(); + break; + case 0: + default: + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.DirectedReadOptions parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.DirectedReadOptions parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.DirectedReadOptions parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.DirectedReadOptions parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.DirectedReadOptions parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.DirectedReadOptions parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.DirectedReadOptions parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.DirectedReadOptions parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.spanner.v1.DirectedReadOptions prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * The DirectedReadOptions can be used to indicate which replicas or regions
+   * should be used for non-transactional reads or queries.
+   *
+   * DirectedReadOptions may only be specified for a read-only transaction,
+   * otherwise the API will return an `INVALID_ARGUMENT` error.
+   * 
+ * + * Protobuf type {@code google.spanner.v1.DirectedReadOptions} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.DirectedReadOptions) + com.google.spanner.v1.DirectedReadOptionsOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.DirectedReadOptions.class, + com.google.spanner.v1.DirectedReadOptions.Builder.class); + } + + // Construct using com.google.spanner.v1.DirectedReadOptions.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + if (includeReplicasBuilder_ != null) { + includeReplicasBuilder_.clear(); + } + if (excludeReplicasBuilder_ != null) { + excludeReplicasBuilder_.clear(); + } + replicasCase_ = 0; + replicas_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_DirectedReadOptions_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions getDefaultInstanceForType() { + return com.google.spanner.v1.DirectedReadOptions.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions build() { + com.google.spanner.v1.DirectedReadOptions result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions buildPartial() { + com.google.spanner.v1.DirectedReadOptions result = + new com.google.spanner.v1.DirectedReadOptions(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + buildPartialOneofs(result); + onBuilt(); + return result; + } + + private void buildPartial0(com.google.spanner.v1.DirectedReadOptions result) { + int from_bitField0_ = bitField0_; + } + + private void buildPartialOneofs(com.google.spanner.v1.DirectedReadOptions result) { + result.replicasCase_ = replicasCase_; + result.replicas_ = this.replicas_; + if (replicasCase_ == 1 && includeReplicasBuilder_ != null) { + result.replicas_ = includeReplicasBuilder_.build(); + } + if (replicasCase_ == 2 && excludeReplicasBuilder_ != null) { + result.replicas_ = excludeReplicasBuilder_.build(); + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.v1.DirectedReadOptions) { + return mergeFrom((com.google.spanner.v1.DirectedReadOptions) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.spanner.v1.DirectedReadOptions other) { + if (other == com.google.spanner.v1.DirectedReadOptions.getDefaultInstance()) return this; + switch (other.getReplicasCase()) { + case INCLUDE_REPLICAS: + { + mergeIncludeReplicas(other.getIncludeReplicas()); + break; + } + case EXCLUDE_REPLICAS: + { + mergeExcludeReplicas(other.getExcludeReplicas()); + break; + } + case REPLICAS_NOT_SET: + { + break; + } + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + input.readMessage(getIncludeReplicasFieldBuilder().getBuilder(), extensionRegistry); + replicasCase_ = 1; + break; + } // case 10 + case 18: + { + input.readMessage(getExcludeReplicasFieldBuilder().getBuilder(), extensionRegistry); + replicasCase_ = 2; + break; + } // case 18 + default: + { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int replicasCase_ = 0; + private java.lang.Object replicas_; + + public ReplicasCase getReplicasCase() { + return ReplicasCase.forNumber(replicasCase_); + } + + public Builder clearReplicas() { + replicasCase_ = 0; + replicas_ = null; + onChanged(); + return this; + } + + private int bitField0_; + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas, + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.Builder, + com.google.spanner.v1.DirectedReadOptions.IncludeReplicasOrBuilder> + includeReplicasBuilder_; + /** + * + * + *
+     * Include_replicas indicates the order of replicas (as they appear in
+     * this list) to process the request. If auto_failover_disabled is set to
+     * true and all replicas are exhausted without finding a healthy replica,
+     * Spanner will wait for a replica in the list to become available, requests
+     * may fail due to `DEADLINE_EXCEEDED` errors.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.IncludeReplicas include_replicas = 1; + * + * @return Whether the includeReplicas field is set. + */ + @java.lang.Override + public boolean hasIncludeReplicas() { + return replicasCase_ == 1; + } + /** + * + * + *
+     * Include_replicas indicates the order of replicas (as they appear in
+     * this list) to process the request. If auto_failover_disabled is set to
+     * true and all replicas are exhausted without finding a healthy replica,
+     * Spanner will wait for a replica in the list to become available, requests
+     * may fail due to `DEADLINE_EXCEEDED` errors.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.IncludeReplicas include_replicas = 1; + * + * @return The includeReplicas. + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.IncludeReplicas getIncludeReplicas() { + if (includeReplicasBuilder_ == null) { + if (replicasCase_ == 1) { + return (com.google.spanner.v1.DirectedReadOptions.IncludeReplicas) replicas_; + } + return com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.getDefaultInstance(); + } else { + if (replicasCase_ == 1) { + return includeReplicasBuilder_.getMessage(); + } + return com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.getDefaultInstance(); + } + } + /** + * + * + *
+     * Include_replicas indicates the order of replicas (as they appear in
+     * this list) to process the request. If auto_failover_disabled is set to
+     * true and all replicas are exhausted without finding a healthy replica,
+     * Spanner will wait for a replica in the list to become available, requests
+     * may fail due to `DEADLINE_EXCEEDED` errors.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.IncludeReplicas include_replicas = 1; + */ + public Builder setIncludeReplicas( + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas value) { + if (includeReplicasBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + replicas_ = value; + onChanged(); + } else { + includeReplicasBuilder_.setMessage(value); + } + replicasCase_ = 1; + return this; + } + /** + * + * + *
+     * Include_replicas indicates the order of replicas (as they appear in
+     * this list) to process the request. If auto_failover_disabled is set to
+     * true and all replicas are exhausted without finding a healthy replica,
+     * Spanner will wait for a replica in the list to become available, requests
+     * may fail due to `DEADLINE_EXCEEDED` errors.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.IncludeReplicas include_replicas = 1; + */ + public Builder setIncludeReplicas( + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.Builder builderForValue) { + if (includeReplicasBuilder_ == null) { + replicas_ = builderForValue.build(); + onChanged(); + } else { + includeReplicasBuilder_.setMessage(builderForValue.build()); + } + replicasCase_ = 1; + return this; + } + /** + * + * + *
+     * Include_replicas indicates the order of replicas (as they appear in
+     * this list) to process the request. If auto_failover_disabled is set to
+     * true and all replicas are exhausted without finding a healthy replica,
+     * Spanner will wait for a replica in the list to become available, requests
+     * may fail due to `DEADLINE_EXCEEDED` errors.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.IncludeReplicas include_replicas = 1; + */ + public Builder mergeIncludeReplicas( + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas value) { + if (includeReplicasBuilder_ == null) { + if (replicasCase_ == 1 + && replicas_ + != com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.getDefaultInstance()) { + replicas_ = + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.newBuilder( + (com.google.spanner.v1.DirectedReadOptions.IncludeReplicas) replicas_) + .mergeFrom(value) + .buildPartial(); + } else { + replicas_ = value; + } + onChanged(); + } else { + if (replicasCase_ == 1) { + includeReplicasBuilder_.mergeFrom(value); + } else { + includeReplicasBuilder_.setMessage(value); + } + } + replicasCase_ = 1; + return this; + } + /** + * + * + *
+     * Include_replicas indicates the order of replicas (as they appear in
+     * this list) to process the request. If auto_failover_disabled is set to
+     * true and all replicas are exhausted without finding a healthy replica,
+     * Spanner will wait for a replica in the list to become available, requests
+     * may fail due to `DEADLINE_EXCEEDED` errors.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.IncludeReplicas include_replicas = 1; + */ + public Builder clearIncludeReplicas() { + if (includeReplicasBuilder_ == null) { + if (replicasCase_ == 1) { + replicasCase_ = 0; + replicas_ = null; + onChanged(); + } + } else { + if (replicasCase_ == 1) { + replicasCase_ = 0; + replicas_ = null; + } + includeReplicasBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Include_replicas indicates the order of replicas (as they appear in
+     * this list) to process the request. If auto_failover_disabled is set to
+     * true and all replicas are exhausted without finding a healthy replica,
+     * Spanner will wait for a replica in the list to become available, requests
+     * may fail due to `DEADLINE_EXCEEDED` errors.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.IncludeReplicas include_replicas = 1; + */ + public com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.Builder + getIncludeReplicasBuilder() { + return getIncludeReplicasFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Include_replicas indicates the order of replicas (as they appear in
+     * this list) to process the request. If auto_failover_disabled is set to
+     * true and all replicas are exhausted without finding a healthy replica,
+     * Spanner will wait for a replica in the list to become available, requests
+     * may fail due to `DEADLINE_EXCEEDED` errors.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.IncludeReplicas include_replicas = 1; + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.IncludeReplicasOrBuilder + getIncludeReplicasOrBuilder() { + if ((replicasCase_ == 1) && (includeReplicasBuilder_ != null)) { + return includeReplicasBuilder_.getMessageOrBuilder(); + } else { + if (replicasCase_ == 1) { + return (com.google.spanner.v1.DirectedReadOptions.IncludeReplicas) replicas_; + } + return com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.getDefaultInstance(); + } + } + /** + * + * + *
+     * Include_replicas indicates the order of replicas (as they appear in
+     * this list) to process the request. If auto_failover_disabled is set to
+     * true and all replicas are exhausted without finding a healthy replica,
+     * Spanner will wait for a replica in the list to become available, requests
+     * may fail due to `DEADLINE_EXCEEDED` errors.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.IncludeReplicas include_replicas = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas, + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.Builder, + com.google.spanner.v1.DirectedReadOptions.IncludeReplicasOrBuilder> + getIncludeReplicasFieldBuilder() { + if (includeReplicasBuilder_ == null) { + if (!(replicasCase_ == 1)) { + replicas_ = + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.getDefaultInstance(); + } + includeReplicasBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas, + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas.Builder, + com.google.spanner.v1.DirectedReadOptions.IncludeReplicasOrBuilder>( + (com.google.spanner.v1.DirectedReadOptions.IncludeReplicas) replicas_, + getParentForChildren(), + isClean()); + replicas_ = null; + } + replicasCase_ = 1; + onChanged(); + return includeReplicasBuilder_; + } + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas, + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.Builder, + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicasOrBuilder> + excludeReplicasBuilder_; + /** + * + * + *
+     * Exclude_replicas indicates that should be excluded from serving
+     * requests. Spanner will not route requests to the replicas in this list.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.ExcludeReplicas exclude_replicas = 2; + * + * @return Whether the excludeReplicas field is set. + */ + @java.lang.Override + public boolean hasExcludeReplicas() { + return replicasCase_ == 2; + } + /** + * + * + *
+     * Exclude_replicas indicates that should be excluded from serving
+     * requests. Spanner will not route requests to the replicas in this list.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.ExcludeReplicas exclude_replicas = 2; + * + * @return The excludeReplicas. + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas getExcludeReplicas() { + if (excludeReplicasBuilder_ == null) { + if (replicasCase_ == 2) { + return (com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas) replicas_; + } + return com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.getDefaultInstance(); + } else { + if (replicasCase_ == 2) { + return excludeReplicasBuilder_.getMessage(); + } + return com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.getDefaultInstance(); + } + } + /** + * + * + *
+     * Exclude_replicas indicates that should be excluded from serving
+     * requests. Spanner will not route requests to the replicas in this list.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.ExcludeReplicas exclude_replicas = 2; + */ + public Builder setExcludeReplicas( + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas value) { + if (excludeReplicasBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + replicas_ = value; + onChanged(); + } else { + excludeReplicasBuilder_.setMessage(value); + } + replicasCase_ = 2; + return this; + } + /** + * + * + *
+     * Exclude_replicas indicates that should be excluded from serving
+     * requests. Spanner will not route requests to the replicas in this list.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.ExcludeReplicas exclude_replicas = 2; + */ + public Builder setExcludeReplicas( + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.Builder builderForValue) { + if (excludeReplicasBuilder_ == null) { + replicas_ = builderForValue.build(); + onChanged(); + } else { + excludeReplicasBuilder_.setMessage(builderForValue.build()); + } + replicasCase_ = 2; + return this; + } + /** + * + * + *
+     * Exclude_replicas indicates that should be excluded from serving
+     * requests. Spanner will not route requests to the replicas in this list.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.ExcludeReplicas exclude_replicas = 2; + */ + public Builder mergeExcludeReplicas( + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas value) { + if (excludeReplicasBuilder_ == null) { + if (replicasCase_ == 2 + && replicas_ + != com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.getDefaultInstance()) { + replicas_ = + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.newBuilder( + (com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas) replicas_) + .mergeFrom(value) + .buildPartial(); + } else { + replicas_ = value; + } + onChanged(); + } else { + if (replicasCase_ == 2) { + excludeReplicasBuilder_.mergeFrom(value); + } else { + excludeReplicasBuilder_.setMessage(value); + } + } + replicasCase_ = 2; + return this; + } + /** + * + * + *
+     * Exclude_replicas indicates that should be excluded from serving
+     * requests. Spanner will not route requests to the replicas in this list.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.ExcludeReplicas exclude_replicas = 2; + */ + public Builder clearExcludeReplicas() { + if (excludeReplicasBuilder_ == null) { + if (replicasCase_ == 2) { + replicasCase_ = 0; + replicas_ = null; + onChanged(); + } + } else { + if (replicasCase_ == 2) { + replicasCase_ = 0; + replicas_ = null; + } + excludeReplicasBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Exclude_replicas indicates that should be excluded from serving
+     * requests. Spanner will not route requests to the replicas in this list.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.ExcludeReplicas exclude_replicas = 2; + */ + public com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.Builder + getExcludeReplicasBuilder() { + return getExcludeReplicasFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Exclude_replicas indicates that should be excluded from serving
+     * requests. Spanner will not route requests to the replicas in this list.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.ExcludeReplicas exclude_replicas = 2; + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions.ExcludeReplicasOrBuilder + getExcludeReplicasOrBuilder() { + if ((replicasCase_ == 2) && (excludeReplicasBuilder_ != null)) { + return excludeReplicasBuilder_.getMessageOrBuilder(); + } else { + if (replicasCase_ == 2) { + return (com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas) replicas_; + } + return com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.getDefaultInstance(); + } + } + /** + * + * + *
+     * Exclude_replicas indicates that should be excluded from serving
+     * requests. Spanner will not route requests to the replicas in this list.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions.ExcludeReplicas exclude_replicas = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas, + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.Builder, + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicasOrBuilder> + getExcludeReplicasFieldBuilder() { + if (excludeReplicasBuilder_ == null) { + if (!(replicasCase_ == 2)) { + replicas_ = + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.getDefaultInstance(); + } + excludeReplicasBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas, + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas.Builder, + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicasOrBuilder>( + (com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas) replicas_, + getParentForChildren(), + isClean()); + replicas_ = null; + } + replicasCase_ = 2; + onChanged(); + return excludeReplicasBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.DirectedReadOptions) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.DirectedReadOptions) + private static final com.google.spanner.v1.DirectedReadOptions DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.v1.DirectedReadOptions(); + } + + public static com.google.spanner.v1.DirectedReadOptions getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DirectedReadOptions parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DirectedReadOptionsOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DirectedReadOptionsOrBuilder.java new file mode 100644 index 00000000000..1fe6a3fdee4 --- /dev/null +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/DirectedReadOptionsOrBuilder.java @@ -0,0 +1,112 @@ +/* + * Copyright 2023 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. + */ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/v1/spanner.proto + +package com.google.spanner.v1; + +public interface DirectedReadOptionsOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.DirectedReadOptions) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Include_replicas indicates the order of replicas (as they appear in
+   * this list) to process the request. If auto_failover_disabled is set to
+   * true and all replicas are exhausted without finding a healthy replica,
+   * Spanner will wait for a replica in the list to become available, requests
+   * may fail due to `DEADLINE_EXCEEDED` errors.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions.IncludeReplicas include_replicas = 1; + * + * @return Whether the includeReplicas field is set. + */ + boolean hasIncludeReplicas(); + /** + * + * + *
+   * Include_replicas indicates the order of replicas (as they appear in
+   * this list) to process the request. If auto_failover_disabled is set to
+   * true and all replicas are exhausted without finding a healthy replica,
+   * Spanner will wait for a replica in the list to become available, requests
+   * may fail due to `DEADLINE_EXCEEDED` errors.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions.IncludeReplicas include_replicas = 1; + * + * @return The includeReplicas. + */ + com.google.spanner.v1.DirectedReadOptions.IncludeReplicas getIncludeReplicas(); + /** + * + * + *
+   * Include_replicas indicates the order of replicas (as they appear in
+   * this list) to process the request. If auto_failover_disabled is set to
+   * true and all replicas are exhausted without finding a healthy replica,
+   * Spanner will wait for a replica in the list to become available, requests
+   * may fail due to `DEADLINE_EXCEEDED` errors.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions.IncludeReplicas include_replicas = 1; + */ + com.google.spanner.v1.DirectedReadOptions.IncludeReplicasOrBuilder getIncludeReplicasOrBuilder(); + + /** + * + * + *
+   * Exclude_replicas indicates that should be excluded from serving
+   * requests. Spanner will not route requests to the replicas in this list.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions.ExcludeReplicas exclude_replicas = 2; + * + * @return Whether the excludeReplicas field is set. + */ + boolean hasExcludeReplicas(); + /** + * + * + *
+   * Exclude_replicas indicates that should be excluded from serving
+   * requests. Spanner will not route requests to the replicas in this list.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions.ExcludeReplicas exclude_replicas = 2; + * + * @return The excludeReplicas. + */ + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicas getExcludeReplicas(); + /** + * + * + *
+   * Exclude_replicas indicates that should be excluded from serving
+   * requests. Spanner will not route requests to the replicas in this list.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions.ExcludeReplicas exclude_replicas = 2; + */ + com.google.spanner.v1.DirectedReadOptions.ExcludeReplicasOrBuilder getExcludeReplicasOrBuilder(); + + com.google.spanner.v1.DirectedReadOptions.ReplicasCase getReplicasCase(); +} diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequest.java index 29f1262ff2f..c1ba384a7de 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequest.java @@ -167,7 +167,9 @@ public interface StatementOrBuilder *
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as
+     * JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL statement parameters. See the
@@ -184,7 +186,9 @@ public interface StatementOrBuilder
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as
+     * JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL statement parameters. See the
@@ -204,7 +208,9 @@ public interface StatementOrBuilder
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as
+     * JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL statement parameters. See the
@@ -221,7 +227,9 @@ public interface StatementOrBuilder
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as
+     * JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL statement parameters. See the
@@ -242,7 +250,9 @@ com.google.spanner.v1.Type getParamTypesOrDefault(
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as
+     * JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL statement parameters. See the
@@ -475,7 +485,9 @@ public int getParamTypesCount() {
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as
+     * JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL statement parameters. See the
@@ -504,7 +516,9 @@ public java.util.Map getParamTypes
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as
+     * JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL statement parameters. See the
@@ -524,7 +538,9 @@ public java.util.Map getParamTypes
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as
+     * JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL statement parameters. See the
@@ -552,7 +568,9 @@ public java.util.Map getParamTypes
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as
+     * JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL statement parameters. See the
@@ -1429,7 +1447,9 @@ public int getParamTypesCount() {
        * 
        * It is not always possible for Cloud Spanner to infer the right SQL type
        * from a JSON value.  For example, values of type `BYTES` and values
-       * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+       * of type `STRING` both appear in
+       * [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as
+       * JSON strings.
        *
        * In these cases, `param_types` can be used to specify the exact
        * SQL type for some or all of the SQL statement parameters. See the
@@ -1458,7 +1478,9 @@ public java.util.Map getParamTypes
        * 
        * It is not always possible for Cloud Spanner to infer the right SQL type
        * from a JSON value.  For example, values of type `BYTES` and values
-       * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+       * of type `STRING` both appear in
+       * [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as
+       * JSON strings.
        *
        * In these cases, `param_types` can be used to specify the exact
        * SQL type for some or all of the SQL statement parameters. See the
@@ -1478,7 +1500,9 @@ public java.util.Map getParamTypes
        * 
        * It is not always possible for Cloud Spanner to infer the right SQL type
        * from a JSON value.  For example, values of type `BYTES` and values
-       * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+       * of type `STRING` both appear in
+       * [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as
+       * JSON strings.
        *
        * In these cases, `param_types` can be used to specify the exact
        * SQL type for some or all of the SQL statement parameters. See the
@@ -1506,7 +1530,9 @@ public java.util.Map getParamTypes
        * 
        * It is not always possible for Cloud Spanner to infer the right SQL type
        * from a JSON value.  For example, values of type `BYTES` and values
-       * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+       * of type `STRING` both appear in
+       * [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as
+       * JSON strings.
        *
        * In these cases, `param_types` can be used to specify the exact
        * SQL type for some or all of the SQL statement parameters. See the
@@ -1540,7 +1566,9 @@ public Builder clearParamTypes() {
        * 
        * It is not always possible for Cloud Spanner to infer the right SQL type
        * from a JSON value.  For example, values of type `BYTES` and values
-       * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+       * of type `STRING` both appear in
+       * [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as
+       * JSON strings.
        *
        * In these cases, `param_types` can be used to specify the exact
        * SQL type for some or all of the SQL statement parameters. See the
@@ -1569,7 +1597,9 @@ public java.util.Map getMutablePar
        * 
        * It is not always possible for Cloud Spanner to infer the right SQL type
        * from a JSON value.  For example, values of type `BYTES` and values
-       * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+       * of type `STRING` both appear in
+       * [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as
+       * JSON strings.
        *
        * In these cases, `param_types` can be used to specify the exact
        * SQL type for some or all of the SQL statement parameters. See the
@@ -1596,7 +1626,9 @@ public Builder putParamTypes(java.lang.String key, com.google.spanner.v1.Type va
        * 
        * It is not always possible for Cloud Spanner to infer the right SQL type
        * from a JSON value.  For example, values of type `BYTES` and values
-       * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+       * of type `STRING` both appear in
+       * [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as
+       * JSON strings.
        *
        * In these cases, `param_types` can be used to specify the exact
        * SQL type for some or all of the SQL statement parameters. See the
@@ -1808,10 +1840,10 @@ public com.google.spanner.v1.TransactionSelectorOrBuilder getTransactionOrBuilde
    *
    *
    * 
-   * Required. The list of statements to execute in this batch. Statements are executed
-   * serially, such that the effects of statement `i` are visible to statement
-   * `i+1`. Each statement must be a DML statement. Execution stops at the
-   * first failed statement; the remaining statements are not executed.
+   * Required. The list of statements to execute in this batch. Statements are
+   * executed serially, such that the effects of statement `i` are visible to
+   * statement `i+1`. Each statement must be a DML statement. Execution stops at
+   * the first failed statement; the remaining statements are not executed.
    *
    * Callers must provide at least one statement.
    * 
@@ -1829,10 +1861,10 @@ public com.google.spanner.v1.TransactionSelectorOrBuilder getTransactionOrBuilde * * *
-   * Required. The list of statements to execute in this batch. Statements are executed
-   * serially, such that the effects of statement `i` are visible to statement
-   * `i+1`. Each statement must be a DML statement. Execution stops at the
-   * first failed statement; the remaining statements are not executed.
+   * Required. The list of statements to execute in this batch. Statements are
+   * executed serially, such that the effects of statement `i` are visible to
+   * statement `i+1`. Each statement must be a DML statement. Execution stops at
+   * the first failed statement; the remaining statements are not executed.
    *
    * Callers must provide at least one statement.
    * 
@@ -1850,10 +1882,10 @@ public com.google.spanner.v1.TransactionSelectorOrBuilder getTransactionOrBuilde * * *
-   * Required. The list of statements to execute in this batch. Statements are executed
-   * serially, such that the effects of statement `i` are visible to statement
-   * `i+1`. Each statement must be a DML statement. Execution stops at the
-   * first failed statement; the remaining statements are not executed.
+   * Required. The list of statements to execute in this batch. Statements are
+   * executed serially, such that the effects of statement `i` are visible to
+   * statement `i+1`. Each statement must be a DML statement. Execution stops at
+   * the first failed statement; the remaining statements are not executed.
    *
    * Callers must provide at least one statement.
    * 
@@ -1870,10 +1902,10 @@ public int getStatementsCount() { * * *
-   * Required. The list of statements to execute in this batch. Statements are executed
-   * serially, such that the effects of statement `i` are visible to statement
-   * `i+1`. Each statement must be a DML statement. Execution stops at the
-   * first failed statement; the remaining statements are not executed.
+   * Required. The list of statements to execute in this batch. Statements are
+   * executed serially, such that the effects of statement `i` are visible to
+   * statement `i+1`. Each statement must be a DML statement. Execution stops at
+   * the first failed statement; the remaining statements are not executed.
    *
    * Callers must provide at least one statement.
    * 
@@ -1890,10 +1922,10 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement getStatements(int * * *
-   * Required. The list of statements to execute in this batch. Statements are executed
-   * serially, such that the effects of statement `i` are visible to statement
-   * `i+1`. Each statement must be a DML statement. Execution stops at the
-   * first failed statement; the remaining statements are not executed.
+   * Required. The list of statements to execute in this batch. Statements are
+   * executed serially, such that the effects of statement `i` are visible to
+   * statement `i+1`. Each statement must be a DML statement. Execution stops at
+   * the first failed statement; the remaining statements are not executed.
    *
    * Callers must provide at least one statement.
    * 
@@ -1914,9 +1946,9 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.StatementOrBuilder getStatem * * *
-   * Required. A per-transaction sequence number used to identify this request. This field
-   * makes each request idempotent such that if the request is received multiple
-   * times, at most one will succeed.
+   * Required. A per-transaction sequence number used to identify this request.
+   * This field makes each request idempotent such that if the request is
+   * received multiple times, at most one will succeed.
    *
    * The sequence number must be monotonically increasing within the
    * transaction. If a request arrives for the first time with an out-of-order
@@ -2858,10 +2890,10 @@ private void ensureStatementsIsMutable() {
      *
      *
      * 
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -2882,10 +2914,10 @@ private void ensureStatementsIsMutable() { * * *
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -2905,10 +2937,10 @@ public int getStatementsCount() { * * *
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -2928,10 +2960,10 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement getStatements(int * * *
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -2958,10 +2990,10 @@ public Builder setStatements( * * *
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -2985,10 +3017,10 @@ public Builder setStatements( * * *
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -3014,10 +3046,10 @@ public Builder addStatements(com.google.spanner.v1.ExecuteBatchDmlRequest.Statem * * *
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -3044,10 +3076,10 @@ public Builder addStatements( * * *
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -3071,10 +3103,10 @@ public Builder addStatements( * * *
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -3098,10 +3130,10 @@ public Builder addStatements( * * *
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -3126,10 +3158,10 @@ public Builder addAllStatements( * * *
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -3152,10 +3184,10 @@ public Builder clearStatements() { * * *
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -3178,10 +3210,10 @@ public Builder removeStatements(int index) { * * *
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -3198,10 +3230,10 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder getStateme * * *
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -3222,10 +3254,10 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.StatementOrBuilder getStatem * * *
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -3246,10 +3278,10 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.StatementOrBuilder getStatem * * *
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -3266,10 +3298,10 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder addStateme * * *
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -3288,10 +3320,10 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder addStateme * * *
-     * Required. The list of statements to execute in this batch. Statements are executed
-     * serially, such that the effects of statement `i` are visible to statement
-     * `i+1`. Each statement must be a DML statement. Execution stops at the
-     * first failed statement; the remaining statements are not executed.
+     * Required. The list of statements to execute in this batch. Statements are
+     * executed serially, such that the effects of statement `i` are visible to
+     * statement `i+1`. Each statement must be a DML statement. Execution stops at
+     * the first failed statement; the remaining statements are not executed.
      *
      * Callers must provide at least one statement.
      * 
@@ -3327,9 +3359,9 @@ public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder addStateme * * *
-     * Required. A per-transaction sequence number used to identify this request. This field
-     * makes each request idempotent such that if the request is received multiple
-     * times, at most one will succeed.
+     * Required. A per-transaction sequence number used to identify this request.
+     * This field makes each request idempotent such that if the request is
+     * received multiple times, at most one will succeed.
      *
      * The sequence number must be monotonically increasing within the
      * transaction. If a request arrives for the first time with an out-of-order
@@ -3349,9 +3381,9 @@ public long getSeqno() {
      *
      *
      * 
-     * Required. A per-transaction sequence number used to identify this request. This field
-     * makes each request idempotent such that if the request is received multiple
-     * times, at most one will succeed.
+     * Required. A per-transaction sequence number used to identify this request.
+     * This field makes each request idempotent such that if the request is
+     * received multiple times, at most one will succeed.
      *
      * The sequence number must be monotonically increasing within the
      * transaction. If a request arrives for the first time with an out-of-order
@@ -3375,9 +3407,9 @@ public Builder setSeqno(long value) {
      *
      *
      * 
-     * Required. A per-transaction sequence number used to identify this request. This field
-     * makes each request idempotent such that if the request is received multiple
-     * times, at most one will succeed.
+     * Required. A per-transaction sequence number used to identify this request.
+     * This field makes each request idempotent such that if the request is
+     * received multiple times, at most one will succeed.
      *
      * The sequence number must be monotonically increasing within the
      * transaction. If a request arrives for the first time with an out-of-order
diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequestOrBuilder.java
index 7715f9e4029..1e19f95d84e 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequestOrBuilder.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequestOrBuilder.java
@@ -109,10 +109,10 @@ public interface ExecuteBatchDmlRequestOrBuilder
    *
    *
    * 
-   * Required. The list of statements to execute in this batch. Statements are executed
-   * serially, such that the effects of statement `i` are visible to statement
-   * `i+1`. Each statement must be a DML statement. Execution stops at the
-   * first failed statement; the remaining statements are not executed.
+   * Required. The list of statements to execute in this batch. Statements are
+   * executed serially, such that the effects of statement `i` are visible to
+   * statement `i+1`. Each statement must be a DML statement. Execution stops at
+   * the first failed statement; the remaining statements are not executed.
    *
    * Callers must provide at least one statement.
    * 
@@ -126,10 +126,10 @@ public interface ExecuteBatchDmlRequestOrBuilder * * *
-   * Required. The list of statements to execute in this batch. Statements are executed
-   * serially, such that the effects of statement `i` are visible to statement
-   * `i+1`. Each statement must be a DML statement. Execution stops at the
-   * first failed statement; the remaining statements are not executed.
+   * Required. The list of statements to execute in this batch. Statements are
+   * executed serially, such that the effects of statement `i` are visible to
+   * statement `i+1`. Each statement must be a DML statement. Execution stops at
+   * the first failed statement; the remaining statements are not executed.
    *
    * Callers must provide at least one statement.
    * 
@@ -143,10 +143,10 @@ public interface ExecuteBatchDmlRequestOrBuilder * * *
-   * Required. The list of statements to execute in this batch. Statements are executed
-   * serially, such that the effects of statement `i` are visible to statement
-   * `i+1`. Each statement must be a DML statement. Execution stops at the
-   * first failed statement; the remaining statements are not executed.
+   * Required. The list of statements to execute in this batch. Statements are
+   * executed serially, such that the effects of statement `i` are visible to
+   * statement `i+1`. Each statement must be a DML statement. Execution stops at
+   * the first failed statement; the remaining statements are not executed.
    *
    * Callers must provide at least one statement.
    * 
@@ -160,10 +160,10 @@ public interface ExecuteBatchDmlRequestOrBuilder * * *
-   * Required. The list of statements to execute in this batch. Statements are executed
-   * serially, such that the effects of statement `i` are visible to statement
-   * `i+1`. Each statement must be a DML statement. Execution stops at the
-   * first failed statement; the remaining statements are not executed.
+   * Required. The list of statements to execute in this batch. Statements are
+   * executed serially, such that the effects of statement `i` are visible to
+   * statement `i+1`. Each statement must be a DML statement. Execution stops at
+   * the first failed statement; the remaining statements are not executed.
    *
    * Callers must provide at least one statement.
    * 
@@ -178,10 +178,10 @@ public interface ExecuteBatchDmlRequestOrBuilder * * *
-   * Required. The list of statements to execute in this batch. Statements are executed
-   * serially, such that the effects of statement `i` are visible to statement
-   * `i+1`. Each statement must be a DML statement. Execution stops at the
-   * first failed statement; the remaining statements are not executed.
+   * Required. The list of statements to execute in this batch. Statements are
+   * executed serially, such that the effects of statement `i` are visible to
+   * statement `i+1`. Each statement must be a DML statement. Execution stops at
+   * the first failed statement; the remaining statements are not executed.
    *
    * Callers must provide at least one statement.
    * 
@@ -196,9 +196,9 @@ public interface ExecuteBatchDmlRequestOrBuilder * * *
-   * Required. A per-transaction sequence number used to identify this request. This field
-   * makes each request idempotent such that if the request is received multiple
-   * times, at most one will succeed.
+   * Required. A per-transaction sequence number used to identify this request.
+   * This field makes each request idempotent such that if the request is
+   * received multiple times, at most one will succeed.
    *
    * The sequence number must be monotonically increasing within the
    * transaction. If a request arrives for the first time with an out-of-order
diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponse.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponse.java
index d6632adca4a..f1ab37d5e57 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponse.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponse.java
@@ -22,30 +22,37 @@
  *
  *
  * 
- * The response for [ExecuteBatchDml][google.spanner.v1.Spanner.ExecuteBatchDml]. Contains a list
- * of [ResultSet][google.spanner.v1.ResultSet] messages, one for each DML statement that has successfully
- * executed, in the same order as the statements in the request. If a statement
- * fails, the status in the response body identifies the cause of the failure.
+ * The response for
+ * [ExecuteBatchDml][google.spanner.v1.Spanner.ExecuteBatchDml]. Contains a list
+ * of [ResultSet][google.spanner.v1.ResultSet] messages, one for each DML
+ * statement that has successfully executed, in the same order as the statements
+ * in the request. If a statement fails, the status in the response body
+ * identifies the cause of the failure.
  *
  * To check for DML statements that failed, use the following approach:
  *
- * 1. Check the status in the response message. The [google.rpc.Code][google.rpc.Code] enum
+ * 1. Check the status in the response message. The
+ * [google.rpc.Code][google.rpc.Code] enum
  *    value `OK` indicates that all statements were executed successfully.
  * 2. If the status was not `OK`, check the number of result sets in the
- *    response. If the response contains `N` [ResultSet][google.spanner.v1.ResultSet] messages, then
- *    statement `N+1` in the request failed.
+ *    response. If the response contains `N`
+ *    [ResultSet][google.spanner.v1.ResultSet] messages, then statement `N+1` in
+ *    the request failed.
  *
  * Example 1:
  *
  * * Request: 5 DML statements, all executed successfully.
- * * Response: 5 [ResultSet][google.spanner.v1.ResultSet] messages, with the status `OK`.
+ * * Response: 5 [ResultSet][google.spanner.v1.ResultSet] messages, with the
+ * status `OK`.
  *
  * Example 2:
  *
  * * Request: 5 DML statements. The third statement has a syntax error.
- * * Response: 2 [ResultSet][google.spanner.v1.ResultSet] messages, and a syntax error (`INVALID_ARGUMENT`)
- *   status. The number of [ResultSet][google.spanner.v1.ResultSet] messages indicates that the third
- *   statement failed, and the fourth and fifth statements were not executed.
+ * * Response: 2 [ResultSet][google.spanner.v1.ResultSet] messages, and a syntax
+ * error (`INVALID_ARGUMENT`)
+ *   status. The number of [ResultSet][google.spanner.v1.ResultSet] messages
+ *   indicates that the third statement failed, and the fourth and fifth
+ *   statements were not executed.
  * 
* * Protobuf type {@code google.spanner.v1.ExecuteBatchDmlResponse} @@ -93,13 +100,15 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { * * *
-   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-   * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-   * the number of rows modified by the statement.
+   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+   * request that ran successfully, in the same order as the statements in the
+   * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+   * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+   * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+   * modified by the statement.
    *
-   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+   * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
    * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -112,13 +121,15 @@ public java.util.List getResultSetsList() { * * *
-   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-   * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-   * the number of rows modified by the statement.
+   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+   * request that ran successfully, in the same order as the statements in the
+   * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+   * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+   * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+   * modified by the statement.
    *
-   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+   * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
    * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -132,13 +143,15 @@ public java.util.List getResultSetsList() { * * *
-   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-   * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-   * the number of rows modified by the statement.
+   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+   * request that ran successfully, in the same order as the statements in the
+   * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+   * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+   * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+   * modified by the statement.
    *
-   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+   * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
    * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -151,13 +164,15 @@ public int getResultSetsCount() { * * *
-   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-   * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-   * the number of rows modified by the statement.
+   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+   * request that ran successfully, in the same order as the statements in the
+   * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+   * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+   * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+   * modified by the statement.
    *
-   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+   * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
    * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -170,13 +185,15 @@ public com.google.spanner.v1.ResultSet getResultSets(int index) { * * *
-   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-   * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-   * the number of rows modified by the statement.
+   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+   * request that ran successfully, in the same order as the statements in the
+   * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+   * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+   * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+   * modified by the statement.
    *
-   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+   * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
    * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -414,30 +431,37 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build * * *
-   * The response for [ExecuteBatchDml][google.spanner.v1.Spanner.ExecuteBatchDml]. Contains a list
-   * of [ResultSet][google.spanner.v1.ResultSet] messages, one for each DML statement that has successfully
-   * executed, in the same order as the statements in the request. If a statement
-   * fails, the status in the response body identifies the cause of the failure.
+   * The response for
+   * [ExecuteBatchDml][google.spanner.v1.Spanner.ExecuteBatchDml]. Contains a list
+   * of [ResultSet][google.spanner.v1.ResultSet] messages, one for each DML
+   * statement that has successfully executed, in the same order as the statements
+   * in the request. If a statement fails, the status in the response body
+   * identifies the cause of the failure.
    *
    * To check for DML statements that failed, use the following approach:
    *
-   * 1. Check the status in the response message. The [google.rpc.Code][google.rpc.Code] enum
+   * 1. Check the status in the response message. The
+   * [google.rpc.Code][google.rpc.Code] enum
    *    value `OK` indicates that all statements were executed successfully.
    * 2. If the status was not `OK`, check the number of result sets in the
-   *    response. If the response contains `N` [ResultSet][google.spanner.v1.ResultSet] messages, then
-   *    statement `N+1` in the request failed.
+   *    response. If the response contains `N`
+   *    [ResultSet][google.spanner.v1.ResultSet] messages, then statement `N+1` in
+   *    the request failed.
    *
    * Example 1:
    *
    * * Request: 5 DML statements, all executed successfully.
-   * * Response: 5 [ResultSet][google.spanner.v1.ResultSet] messages, with the status `OK`.
+   * * Response: 5 [ResultSet][google.spanner.v1.ResultSet] messages, with the
+   * status `OK`.
    *
    * Example 2:
    *
    * * Request: 5 DML statements. The third statement has a syntax error.
-   * * Response: 2 [ResultSet][google.spanner.v1.ResultSet] messages, and a syntax error (`INVALID_ARGUMENT`)
-   *   status. The number of [ResultSet][google.spanner.v1.ResultSet] messages indicates that the third
-   *   statement failed, and the fourth and fifth statements were not executed.
+   * * Response: 2 [ResultSet][google.spanner.v1.ResultSet] messages, and a syntax
+   * error (`INVALID_ARGUMENT`)
+   *   status. The number of [ResultSet][google.spanner.v1.ResultSet] messages
+   *   indicates that the third statement failed, and the fourth and fifth
+   *   statements were not executed.
    * 
* * Protobuf type {@code google.spanner.v1.ExecuteBatchDmlResponse} @@ -696,13 +720,15 @@ private void ensureResultSetsIsMutable() { * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -718,13 +744,15 @@ public java.util.List getResultSetsList() { * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -740,13 +768,15 @@ public int getResultSetsCount() { * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -762,13 +792,15 @@ public com.google.spanner.v1.ResultSet getResultSets(int index) { * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -790,13 +822,15 @@ public Builder setResultSets(int index, com.google.spanner.v1.ResultSet value) { * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -816,13 +850,15 @@ public Builder setResultSets( * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -844,13 +880,15 @@ public Builder addResultSets(com.google.spanner.v1.ResultSet value) { * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -872,13 +910,15 @@ public Builder addResultSets(int index, com.google.spanner.v1.ResultSet value) { * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -897,13 +937,15 @@ public Builder addResultSets(com.google.spanner.v1.ResultSet.Builder builderForV * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -923,13 +965,15 @@ public Builder addResultSets( * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -949,13 +993,15 @@ public Builder addAllResultSets( * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -974,13 +1020,15 @@ public Builder clearResultSets() { * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -999,13 +1047,15 @@ public Builder removeResultSets(int index) { * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -1017,13 +1067,15 @@ public com.google.spanner.v1.ResultSet.Builder getResultSetsBuilder(int index) { * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -1039,13 +1091,15 @@ public com.google.spanner.v1.ResultSetOrBuilder getResultSetsOrBuilder(int index * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -1062,13 +1116,15 @@ public com.google.spanner.v1.ResultSetOrBuilder getResultSetsOrBuilder(int index * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -1081,13 +1137,15 @@ public com.google.spanner.v1.ResultSet.Builder addResultSetsBuilder() { * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -1100,13 +1158,15 @@ public com.google.spanner.v1.ResultSet.Builder addResultSetsBuilder(int index) { * * *
-     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-     * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-     * the number of rows modified by the statement.
-     *
-     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+     * request that ran successfully, in the same order as the statements in the
+     * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+     * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+     * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+     * modified by the statement.
+     *
+     * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+     * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
      * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponseOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponseOrBuilder.java index 297c8b2e34c..eff5a0dc0ab 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponseOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponseOrBuilder.java @@ -27,13 +27,15 @@ public interface ExecuteBatchDmlResponseOrBuilder * * *
-   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-   * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-   * the number of rows modified by the statement.
-   *
-   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+   * request that ran successfully, in the same order as the statements in the
+   * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+   * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+   * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+   * modified by the statement.
+   *
+   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+   * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
    * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -43,13 +45,15 @@ public interface ExecuteBatchDmlResponseOrBuilder * * *
-   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-   * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-   * the number of rows modified by the statement.
-   *
-   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+   * request that ran successfully, in the same order as the statements in the
+   * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+   * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+   * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+   * modified by the statement.
+   *
+   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+   * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
    * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -59,13 +63,15 @@ public interface ExecuteBatchDmlResponseOrBuilder * * *
-   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-   * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-   * the number of rows modified by the statement.
-   *
-   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+   * request that ran successfully, in the same order as the statements in the
+   * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+   * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+   * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+   * modified by the statement.
+   *
+   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+   * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
    * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -75,13 +81,15 @@ public interface ExecuteBatchDmlResponseOrBuilder * * *
-   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-   * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-   * the number of rows modified by the statement.
-   *
-   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+   * request that ran successfully, in the same order as the statements in the
+   * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+   * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+   * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+   * modified by the statement.
+   *
+   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+   * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
    * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; @@ -91,13 +99,15 @@ public interface ExecuteBatchDmlResponseOrBuilder * * *
-   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully,
-   * in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does
-   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain
-   * the number of rows modified by the statement.
-   *
-   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid
-   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * One [ResultSet][google.spanner.v1.ResultSet] for each statement in the
+   * request that ran successfully, in the same order as the statements in the
+   * request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any
+   * rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each
+   * [ResultSet][google.spanner.v1.ResultSet] contain the number of rows
+   * modified by the statement.
+   *
+   * Only the first [ResultSet][google.spanner.v1.ResultSet] in the response
+   * contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
    * 
* * repeated .google.spanner.v1.ResultSet result_sets = 1; diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequest.java index cb16f3cac6f..fcbb077b944 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequest.java @@ -1787,7 +1787,8 @@ public int getParamTypesCount() { *
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL statement parameters. See the
@@ -1816,7 +1817,8 @@ public java.util.Map getParamTypes
    * 
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL statement parameters. See the
@@ -1836,7 +1838,8 @@ public java.util.Map getParamTypes
    * 
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL statement parameters. See the
@@ -1864,7 +1867,8 @@ public java.util.Map getParamTypes
    * 
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL statement parameters. See the
@@ -1895,10 +1899,10 @@ public com.google.spanner.v1.Type getParamTypesOrThrow(java.lang.String key) {
    * 
    * If this request is resuming a previously interrupted SQL statement
    * execution, `resume_token` should be copied from the last
-   * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the interruption. Doing this
-   * enables the new SQL statement execution to resume where the last one left
-   * off. The rest of the request parameters must exactly match the
-   * request that yielded this token.
+   * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the
+   * interruption. Doing this enables the new SQL statement execution to resume
+   * where the last one left off. The rest of the request parameters must
+   * exactly match the request that yielded this token.
    * 
* * bytes resume_token = 6; @@ -1917,8 +1921,11 @@ public com.google.protobuf.ByteString getResumeToken() { * *
    * Used to control the amount of debugging information returned in
-   * [ResultSetStats][google.spanner.v1.ResultSetStats]. If [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
-   * be set to [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
+   * [ResultSetStats][google.spanner.v1.ResultSetStats]. If
+   * [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is
+   * set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
+   * be set to
+   * [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
    * 
* * .google.spanner.v1.ExecuteSqlRequest.QueryMode query_mode = 7; @@ -1934,8 +1941,11 @@ public int getQueryModeValue() { * *
    * Used to control the amount of debugging information returned in
-   * [ResultSetStats][google.spanner.v1.ResultSetStats]. If [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
-   * be set to [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
+   * [ResultSetStats][google.spanner.v1.ResultSetStats]. If
+   * [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is
+   * set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
+   * be set to
+   * [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
    * 
* * .google.spanner.v1.ExecuteSqlRequest.QueryMode query_mode = 7; @@ -2097,6 +2107,56 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder( : requestOptions_; } + public static final int DIRECTED_READ_OPTIONS_FIELD_NUMBER = 15; + private com.google.spanner.v1.DirectedReadOptions directedReadOptions_; + /** + * + * + *
+   * Directed read options for this request.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 15; + * + * @return Whether the directedReadOptions field is set. + */ + @java.lang.Override + public boolean hasDirectedReadOptions() { + return directedReadOptions_ != null; + } + /** + * + * + *
+   * Directed read options for this request.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 15; + * + * @return The directedReadOptions. + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions getDirectedReadOptions() { + return directedReadOptions_ == null + ? com.google.spanner.v1.DirectedReadOptions.getDefaultInstance() + : directedReadOptions_; + } + /** + * + * + *
+   * Directed read options for this request.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 15; + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptionsOrBuilder getDirectedReadOptionsOrBuilder() { + return directedReadOptions_ == null + ? com.google.spanner.v1.DirectedReadOptions.getDefaultInstance() + : directedReadOptions_; + } + public static final int DATA_BOOST_ENABLED_FIELD_NUMBER = 16; private boolean dataBoostEnabled_ = false; /** @@ -2104,10 +2164,10 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder( * *
    * If this is for a partitioned query and this field is set to `true`, the
-   * request will be executed via Spanner independent compute resources.
+   * request is executed with Spanner Data Boost independent compute resources.
    *
    * If the field is set to `true` but the request does not set
-   * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
+   * `partition_token`, the API returns an `INVALID_ARGUMENT` error.
    * 
* * bool data_boost_enabled = 16; @@ -2165,6 +2225,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (requestOptions_ != null) { output.writeMessage(11, getRequestOptions()); } + if (directedReadOptions_ != null) { + output.writeMessage(15, getDirectedReadOptions()); + } if (dataBoostEnabled_ != false) { output.writeBool(16, dataBoostEnabled_); } @@ -2217,6 +2280,10 @@ public int getSerializedSize() { if (requestOptions_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(11, getRequestOptions()); } + if (directedReadOptions_ != null) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize(15, getDirectedReadOptions()); + } if (dataBoostEnabled_ != false) { size += com.google.protobuf.CodedOutputStream.computeBoolSize(16, dataBoostEnabled_); } @@ -2258,6 +2325,10 @@ public boolean equals(final java.lang.Object obj) { if (hasRequestOptions()) { if (!getRequestOptions().equals(other.getRequestOptions())) return false; } + if (hasDirectedReadOptions() != other.hasDirectedReadOptions()) return false; + if (hasDirectedReadOptions()) { + if (!getDirectedReadOptions().equals(other.getDirectedReadOptions())) return false; + } if (getDataBoostEnabled() != other.getDataBoostEnabled()) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; @@ -2302,6 +2373,10 @@ public int hashCode() { hash = (37 * hash) + REQUEST_OPTIONS_FIELD_NUMBER; hash = (53 * hash) + getRequestOptions().hashCode(); } + if (hasDirectedReadOptions()) { + hash = (37 * hash) + DIRECTED_READ_OPTIONS_FIELD_NUMBER; + hash = (53 * hash) + getDirectedReadOptions().hashCode(); + } hash = (37 * hash) + DATA_BOOST_ENABLED_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getDataBoostEnabled()); hash = (29 * hash) + getUnknownFields().hashCode(); @@ -2491,6 +2566,11 @@ public Builder clear() { requestOptionsBuilder_.dispose(); requestOptionsBuilder_ = null; } + directedReadOptions_ = null; + if (directedReadOptionsBuilder_ != null) { + directedReadOptionsBuilder_.dispose(); + directedReadOptionsBuilder_ = null; + } dataBoostEnabled_ = false; return this; } @@ -2566,6 +2646,12 @@ private void buildPartial0(com.google.spanner.v1.ExecuteSqlRequest result) { requestOptionsBuilder_ == null ? requestOptions_ : requestOptionsBuilder_.build(); } if (((from_bitField0_ & 0x00000800) != 0)) { + result.directedReadOptions_ = + directedReadOptionsBuilder_ == null + ? directedReadOptions_ + : directedReadOptionsBuilder_.build(); + } + if (((from_bitField0_ & 0x00001000) != 0)) { result.dataBoostEnabled_ = dataBoostEnabled_; } } @@ -2651,6 +2737,9 @@ public Builder mergeFrom(com.google.spanner.v1.ExecuteSqlRequest other) { if (other.hasRequestOptions()) { mergeRequestOptions(other.getRequestOptions()); } + if (other.hasDirectedReadOptions()) { + mergeDirectedReadOptions(other.getDirectedReadOptions()); + } if (other.getDataBoostEnabled() != false) { setDataBoostEnabled(other.getDataBoostEnabled()); } @@ -2753,10 +2842,17 @@ public Builder mergeFrom( bitField0_ |= 0x00000400; break; } // case 90 + case 122: + { + input.readMessage( + getDirectedReadOptionsFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000800; + break; + } // case 122 case 128: { dataBoostEnabled_ = input.readBool(); - bitField0_ |= 0x00000800; + bitField0_ |= 0x00001000; break; } // case 128 default: @@ -3586,7 +3682,8 @@ public int getParamTypesCount() { *
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL statement parameters. See the
@@ -3615,7 +3712,8 @@ public java.util.Map getParamTypes
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL statement parameters. See the
@@ -3635,7 +3733,8 @@ public java.util.Map getParamTypes
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL statement parameters. See the
@@ -3663,7 +3762,8 @@ public java.util.Map getParamTypes
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL statement parameters. See the
@@ -3697,7 +3797,8 @@ public Builder clearParamTypes() {
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL statement parameters. See the
@@ -3726,7 +3827,8 @@ public java.util.Map getMutablePar
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL statement parameters. See the
@@ -3753,7 +3855,8 @@ public Builder putParamTypes(java.lang.String key, com.google.spanner.v1.Type va
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL statement parameters. See the
@@ -3777,10 +3880,10 @@ public Builder putAllParamTypes(
      * 
      * If this request is resuming a previously interrupted SQL statement
      * execution, `resume_token` should be copied from the last
-     * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the interruption. Doing this
-     * enables the new SQL statement execution to resume where the last one left
-     * off. The rest of the request parameters must exactly match the
-     * request that yielded this token.
+     * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the
+     * interruption. Doing this enables the new SQL statement execution to resume
+     * where the last one left off. The rest of the request parameters must
+     * exactly match the request that yielded this token.
      * 
* * bytes resume_token = 6; @@ -3797,10 +3900,10 @@ public com.google.protobuf.ByteString getResumeToken() { *
      * If this request is resuming a previously interrupted SQL statement
      * execution, `resume_token` should be copied from the last
-     * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the interruption. Doing this
-     * enables the new SQL statement execution to resume where the last one left
-     * off. The rest of the request parameters must exactly match the
-     * request that yielded this token.
+     * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the
+     * interruption. Doing this enables the new SQL statement execution to resume
+     * where the last one left off. The rest of the request parameters must
+     * exactly match the request that yielded this token.
      * 
* * bytes resume_token = 6; @@ -3823,10 +3926,10 @@ public Builder setResumeToken(com.google.protobuf.ByteString value) { *
      * If this request is resuming a previously interrupted SQL statement
      * execution, `resume_token` should be copied from the last
-     * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the interruption. Doing this
-     * enables the new SQL statement execution to resume where the last one left
-     * off. The rest of the request parameters must exactly match the
-     * request that yielded this token.
+     * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the
+     * interruption. Doing this enables the new SQL statement execution to resume
+     * where the last one left off. The rest of the request parameters must
+     * exactly match the request that yielded this token.
      * 
* * bytes resume_token = 6; @@ -3846,8 +3949,11 @@ public Builder clearResumeToken() { * *
      * Used to control the amount of debugging information returned in
-     * [ResultSetStats][google.spanner.v1.ResultSetStats]. If [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
-     * be set to [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
+     * [ResultSetStats][google.spanner.v1.ResultSetStats]. If
+     * [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is
+     * set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
+     * be set to
+     * [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
      * 
* * .google.spanner.v1.ExecuteSqlRequest.QueryMode query_mode = 7; @@ -3863,8 +3969,11 @@ public int getQueryModeValue() { * *
      * Used to control the amount of debugging information returned in
-     * [ResultSetStats][google.spanner.v1.ResultSetStats]. If [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
-     * be set to [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
+     * [ResultSetStats][google.spanner.v1.ResultSetStats]. If
+     * [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is
+     * set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
+     * be set to
+     * [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
      * 
* * .google.spanner.v1.ExecuteSqlRequest.QueryMode query_mode = 7; @@ -3883,8 +3992,11 @@ public Builder setQueryModeValue(int value) { * *
      * Used to control the amount of debugging information returned in
-     * [ResultSetStats][google.spanner.v1.ResultSetStats]. If [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
-     * be set to [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
+     * [ResultSetStats][google.spanner.v1.ResultSetStats]. If
+     * [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is
+     * set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
+     * be set to
+     * [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
      * 
* * .google.spanner.v1.ExecuteSqlRequest.QueryMode query_mode = 7; @@ -3904,8 +4016,11 @@ public com.google.spanner.v1.ExecuteSqlRequest.QueryMode getQueryMode() { * *
      * Used to control the amount of debugging information returned in
-     * [ResultSetStats][google.spanner.v1.ResultSetStats]. If [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
-     * be set to [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
+     * [ResultSetStats][google.spanner.v1.ResultSetStats]. If
+     * [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is
+     * set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
+     * be set to
+     * [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
      * 
* * .google.spanner.v1.ExecuteSqlRequest.QueryMode query_mode = 7; @@ -3927,8 +4042,11 @@ public Builder setQueryMode(com.google.spanner.v1.ExecuteSqlRequest.QueryMode va * *
      * Used to control the amount of debugging information returned in
-     * [ResultSetStats][google.spanner.v1.ResultSetStats]. If [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
-     * be set to [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
+     * [ResultSetStats][google.spanner.v1.ResultSetStats]. If
+     * [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is
+     * set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
+     * be set to
+     * [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
      * 
* * .google.spanner.v1.ExecuteSqlRequest.QueryMode query_mode = 7; @@ -4455,16 +4573,201 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder( return requestOptionsBuilder_; } + private com.google.spanner.v1.DirectedReadOptions directedReadOptions_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions, + com.google.spanner.v1.DirectedReadOptions.Builder, + com.google.spanner.v1.DirectedReadOptionsOrBuilder> + directedReadOptionsBuilder_; + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 15; + * + * @return Whether the directedReadOptions field is set. + */ + public boolean hasDirectedReadOptions() { + return ((bitField0_ & 0x00000800) != 0); + } + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 15; + * + * @return The directedReadOptions. + */ + public com.google.spanner.v1.DirectedReadOptions getDirectedReadOptions() { + if (directedReadOptionsBuilder_ == null) { + return directedReadOptions_ == null + ? com.google.spanner.v1.DirectedReadOptions.getDefaultInstance() + : directedReadOptions_; + } else { + return directedReadOptionsBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 15; + */ + public Builder setDirectedReadOptions(com.google.spanner.v1.DirectedReadOptions value) { + if (directedReadOptionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + directedReadOptions_ = value; + } else { + directedReadOptionsBuilder_.setMessage(value); + } + bitField0_ |= 0x00000800; + onChanged(); + return this; + } + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 15; + */ + public Builder setDirectedReadOptions( + com.google.spanner.v1.DirectedReadOptions.Builder builderForValue) { + if (directedReadOptionsBuilder_ == null) { + directedReadOptions_ = builderForValue.build(); + } else { + directedReadOptionsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000800; + onChanged(); + return this; + } + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 15; + */ + public Builder mergeDirectedReadOptions(com.google.spanner.v1.DirectedReadOptions value) { + if (directedReadOptionsBuilder_ == null) { + if (((bitField0_ & 0x00000800) != 0) + && directedReadOptions_ != null + && directedReadOptions_ + != com.google.spanner.v1.DirectedReadOptions.getDefaultInstance()) { + getDirectedReadOptionsBuilder().mergeFrom(value); + } else { + directedReadOptions_ = value; + } + } else { + directedReadOptionsBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000800; + onChanged(); + return this; + } + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 15; + */ + public Builder clearDirectedReadOptions() { + bitField0_ = (bitField0_ & ~0x00000800); + directedReadOptions_ = null; + if (directedReadOptionsBuilder_ != null) { + directedReadOptionsBuilder_.dispose(); + directedReadOptionsBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 15; + */ + public com.google.spanner.v1.DirectedReadOptions.Builder getDirectedReadOptionsBuilder() { + bitField0_ |= 0x00000800; + onChanged(); + return getDirectedReadOptionsFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 15; + */ + public com.google.spanner.v1.DirectedReadOptionsOrBuilder getDirectedReadOptionsOrBuilder() { + if (directedReadOptionsBuilder_ != null) { + return directedReadOptionsBuilder_.getMessageOrBuilder(); + } else { + return directedReadOptions_ == null + ? com.google.spanner.v1.DirectedReadOptions.getDefaultInstance() + : directedReadOptions_; + } + } + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 15; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions, + com.google.spanner.v1.DirectedReadOptions.Builder, + com.google.spanner.v1.DirectedReadOptionsOrBuilder> + getDirectedReadOptionsFieldBuilder() { + if (directedReadOptionsBuilder_ == null) { + directedReadOptionsBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions, + com.google.spanner.v1.DirectedReadOptions.Builder, + com.google.spanner.v1.DirectedReadOptionsOrBuilder>( + getDirectedReadOptions(), getParentForChildren(), isClean()); + directedReadOptions_ = null; + } + return directedReadOptionsBuilder_; + } + private boolean dataBoostEnabled_; /** * * *
      * If this is for a partitioned query and this field is set to `true`, the
-     * request will be executed via Spanner independent compute resources.
+     * request is executed with Spanner Data Boost independent compute resources.
      *
      * If the field is set to `true` but the request does not set
-     * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
+     * `partition_token`, the API returns an `INVALID_ARGUMENT` error.
      * 
* * bool data_boost_enabled = 16; @@ -4480,10 +4783,10 @@ public boolean getDataBoostEnabled() { * *
      * If this is for a partitioned query and this field is set to `true`, the
-     * request will be executed via Spanner independent compute resources.
+     * request is executed with Spanner Data Boost independent compute resources.
      *
      * If the field is set to `true` but the request does not set
-     * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
+     * `partition_token`, the API returns an `INVALID_ARGUMENT` error.
      * 
* * bool data_boost_enabled = 16; @@ -4494,7 +4797,7 @@ public boolean getDataBoostEnabled() { public Builder setDataBoostEnabled(boolean value) { dataBoostEnabled_ = value; - bitField0_ |= 0x00000800; + bitField0_ |= 0x00001000; onChanged(); return this; } @@ -4503,10 +4806,10 @@ public Builder setDataBoostEnabled(boolean value) { * *
      * If this is for a partitioned query and this field is set to `true`, the
-     * request will be executed via Spanner independent compute resources.
+     * request is executed with Spanner Data Boost independent compute resources.
      *
      * If the field is set to `true` but the request does not set
-     * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
+     * `partition_token`, the API returns an `INVALID_ARGUMENT` error.
      * 
* * bool data_boost_enabled = 16; @@ -4514,7 +4817,7 @@ public Builder setDataBoostEnabled(boolean value) { * @return This builder for chaining. */ public Builder clearDataBoostEnabled() { - bitField0_ = (bitField0_ & ~0x00000800); + bitField0_ = (bitField0_ & ~0x00001000); dataBoostEnabled_ = false; onChanged(); return this; diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequestOrBuilder.java index 6d677bca846..6ab39195f10 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequestOrBuilder.java @@ -216,7 +216,8 @@ public interface ExecuteSqlRequestOrBuilder *
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL statement parameters. See the
@@ -233,7 +234,8 @@ public interface ExecuteSqlRequestOrBuilder
    * 
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL statement parameters. See the
@@ -253,7 +255,8 @@ public interface ExecuteSqlRequestOrBuilder
    * 
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL statement parameters. See the
@@ -270,7 +273,8 @@ public interface ExecuteSqlRequestOrBuilder
    * 
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL statement parameters. See the
@@ -291,7 +295,8 @@ com.google.spanner.v1.Type getParamTypesOrDefault(
    * 
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL statement parameters. See the
@@ -309,10 +314,10 @@ com.google.spanner.v1.Type getParamTypesOrDefault(
    * 
    * If this request is resuming a previously interrupted SQL statement
    * execution, `resume_token` should be copied from the last
-   * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the interruption. Doing this
-   * enables the new SQL statement execution to resume where the last one left
-   * off. The rest of the request parameters must exactly match the
-   * request that yielded this token.
+   * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the
+   * interruption. Doing this enables the new SQL statement execution to resume
+   * where the last one left off. The rest of the request parameters must
+   * exactly match the request that yielded this token.
    * 
* * bytes resume_token = 6; @@ -326,8 +331,11 @@ com.google.spanner.v1.Type getParamTypesOrDefault( * *
    * Used to control the amount of debugging information returned in
-   * [ResultSetStats][google.spanner.v1.ResultSetStats]. If [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
-   * be set to [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
+   * [ResultSetStats][google.spanner.v1.ResultSetStats]. If
+   * [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is
+   * set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
+   * be set to
+   * [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
    * 
* * .google.spanner.v1.ExecuteSqlRequest.QueryMode query_mode = 7; @@ -340,8 +348,11 @@ com.google.spanner.v1.Type getParamTypesOrDefault( * *
    * Used to control the amount of debugging information returned in
-   * [ResultSetStats][google.spanner.v1.ResultSetStats]. If [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
-   * be set to [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
+   * [ResultSetStats][google.spanner.v1.ResultSetStats]. If
+   * [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is
+   * set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only
+   * be set to
+   * [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].
    * 
* * .google.spanner.v1.ExecuteSqlRequest.QueryMode query_mode = 7; @@ -458,15 +469,50 @@ com.google.spanner.v1.Type getParamTypesOrDefault( */ com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder(); + /** + * + * + *
+   * Directed read options for this request.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 15; + * + * @return Whether the directedReadOptions field is set. + */ + boolean hasDirectedReadOptions(); + /** + * + * + *
+   * Directed read options for this request.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 15; + * + * @return The directedReadOptions. + */ + com.google.spanner.v1.DirectedReadOptions getDirectedReadOptions(); + /** + * + * + *
+   * Directed read options for this request.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 15; + */ + com.google.spanner.v1.DirectedReadOptionsOrBuilder getDirectedReadOptionsOrBuilder(); + /** * * *
    * If this is for a partitioned query and this field is set to `true`, the
-   * request will be executed via Spanner independent compute resources.
+   * request is executed with Spanner Data Boost independent compute resources.
    *
    * If the field is set to `true` but the request does not set
-   * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
+   * `partition_token`, the API returns an `INVALID_ARGUMENT` error.
    * 
* * bool data_boost_enabled = 16; diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsRequest.java index 270677ecec4..eca16a1e187 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsRequest.java @@ -147,7 +147,8 @@ public int getPageSize() { * *
    * If non-empty, `page_token` should contain a
-   * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token] from a previous
+   * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token]
+   * from a previous
    * [ListSessionsResponse][google.spanner.v1.ListSessionsResponse].
    * 
* @@ -172,7 +173,8 @@ public java.lang.String getPageToken() { * *
    * If non-empty, `page_token` should contain a
-   * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token] from a previous
+   * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token]
+   * from a previous
    * [ListSessionsResponse][google.spanner.v1.ListSessionsResponse].
    * 
* @@ -851,7 +853,8 @@ public Builder clearPageSize() { * *
      * If non-empty, `page_token` should contain a
-     * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token] from a previous
+     * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token]
+     * from a previous
      * [ListSessionsResponse][google.spanner.v1.ListSessionsResponse].
      * 
* @@ -875,7 +878,8 @@ public java.lang.String getPageToken() { * *
      * If non-empty, `page_token` should contain a
-     * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token] from a previous
+     * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token]
+     * from a previous
      * [ListSessionsResponse][google.spanner.v1.ListSessionsResponse].
      * 
* @@ -899,7 +903,8 @@ public com.google.protobuf.ByteString getPageTokenBytes() { * *
      * If non-empty, `page_token` should contain a
-     * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token] from a previous
+     * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token]
+     * from a previous
      * [ListSessionsResponse][google.spanner.v1.ListSessionsResponse].
      * 
* @@ -922,7 +927,8 @@ public Builder setPageToken(java.lang.String value) { * *
      * If non-empty, `page_token` should contain a
-     * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token] from a previous
+     * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token]
+     * from a previous
      * [ListSessionsResponse][google.spanner.v1.ListSessionsResponse].
      * 
* @@ -941,7 +947,8 @@ public Builder clearPageToken() { * *
      * If non-empty, `page_token` should contain a
-     * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token] from a previous
+     * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token]
+     * from a previous
      * [ListSessionsResponse][google.spanner.v1.ListSessionsResponse].
      * 
* diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsRequestOrBuilder.java index fc3024b4159..ad370bb1147 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsRequestOrBuilder.java @@ -71,7 +71,8 @@ public interface ListSessionsRequestOrBuilder * *
    * If non-empty, `page_token` should contain a
-   * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token] from a previous
+   * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token]
+   * from a previous
    * [ListSessionsResponse][google.spanner.v1.ListSessionsResponse].
    * 
* @@ -85,7 +86,8 @@ public interface ListSessionsRequestOrBuilder * *
    * If non-empty, `page_token` should contain a
-   * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token] from a previous
+   * [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token]
+   * from a previous
    * [ListSessionsResponse][google.spanner.v1.ListSessionsResponse].
    * 
* diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsResponse.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsResponse.java index f0b342c7deb..99a23a3b878 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsResponse.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsResponse.java @@ -143,8 +143,8 @@ public com.google.spanner.v1.SessionOrBuilder getSessionsOrBuilder(int index) { * *
    * `next_page_token` can be sent in a subsequent
-   * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more of the matching
-   * sessions.
+   * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more
+   * of the matching sessions.
    * 
* * string next_page_token = 2; @@ -168,8 +168,8 @@ public java.lang.String getNextPageToken() { * *
    * `next_page_token` can be sent in a subsequent
-   * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more of the matching
-   * sessions.
+   * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more
+   * of the matching sessions.
    * 
* * string next_page_token = 2; @@ -952,8 +952,8 @@ public java.util.List getSessionsBuilderL * *
      * `next_page_token` can be sent in a subsequent
-     * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more of the matching
-     * sessions.
+     * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more
+     * of the matching sessions.
      * 
* * string next_page_token = 2; @@ -976,8 +976,8 @@ public java.lang.String getNextPageToken() { * *
      * `next_page_token` can be sent in a subsequent
-     * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more of the matching
-     * sessions.
+     * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more
+     * of the matching sessions.
      * 
* * string next_page_token = 2; @@ -1000,8 +1000,8 @@ public com.google.protobuf.ByteString getNextPageTokenBytes() { * *
      * `next_page_token` can be sent in a subsequent
-     * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more of the matching
-     * sessions.
+     * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more
+     * of the matching sessions.
      * 
* * string next_page_token = 2; @@ -1023,8 +1023,8 @@ public Builder setNextPageToken(java.lang.String value) { * *
      * `next_page_token` can be sent in a subsequent
-     * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more of the matching
-     * sessions.
+     * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more
+     * of the matching sessions.
      * 
* * string next_page_token = 2; @@ -1042,8 +1042,8 @@ public Builder clearNextPageToken() { * *
      * `next_page_token` can be sent in a subsequent
-     * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more of the matching
-     * sessions.
+     * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more
+     * of the matching sessions.
      * 
* * string next_page_token = 2; diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsResponseOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsResponseOrBuilder.java index 5850d1e55e8..19f27332c0b 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsResponseOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ListSessionsResponseOrBuilder.java @@ -79,8 +79,8 @@ public interface ListSessionsResponseOrBuilder * *
    * `next_page_token` can be sent in a subsequent
-   * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more of the matching
-   * sessions.
+   * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more
+   * of the matching sessions.
    * 
* * string next_page_token = 2; @@ -93,8 +93,8 @@ public interface ListSessionsResponseOrBuilder * *
    * `next_page_token` can be sent in a subsequent
-   * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more of the matching
-   * sessions.
+   * [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more
+   * of the matching sessions.
    * 
* * string next_page_token = 2; diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionQueryRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionQueryRequest.java index af550f5488d..c07eebde669 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionQueryRequest.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionQueryRequest.java @@ -190,15 +190,16 @@ public com.google.spanner.v1.TransactionSelectorOrBuilder getTransactionOrBuilde * * *
-   * Required. The query request to generate partitions for. The request will fail if
-   * the query is not root partitionable. The query plan of a root
-   * partitionable query has a single distributed union operator. A distributed
-   * union operator conceptually divides one or more tables into multiple
-   * splits, remotely evaluates a subquery independently on each split, and
-   * then unions all results.
-   *
-   * This must not contain DML commands, such as INSERT, UPDATE, or
-   * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
+   * Required. The query request to generate partitions for. The request will
+   * fail if the query is not root partitionable. For a query to be root
+   * partitionable, it needs to satisfy a few conditions. For example, the first
+   * operator in the query execution plan must be a distributed union operator.
+   * For more information about other conditions, see [Read data in
+   * parallel](https://cloud.google.com/spanner/docs/reads#read_data_in_parallel).
+   *
+   * The query request must not contain DML commands, such as INSERT, UPDATE, or
+   * DELETE. Use
+   * [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
    * PartitionedDml transaction for large, partition-friendly DML operations.
    * 
* @@ -222,15 +223,16 @@ public java.lang.String getSql() { * * *
-   * Required. The query request to generate partitions for. The request will fail if
-   * the query is not root partitionable. The query plan of a root
-   * partitionable query has a single distributed union operator. A distributed
-   * union operator conceptually divides one or more tables into multiple
-   * splits, remotely evaluates a subquery independently on each split, and
-   * then unions all results.
-   *
-   * This must not contain DML commands, such as INSERT, UPDATE, or
-   * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
+   * Required. The query request to generate partitions for. The request will
+   * fail if the query is not root partitionable. For a query to be root
+   * partitionable, it needs to satisfy a few conditions. For example, the first
+   * operator in the query execution plan must be a distributed union operator.
+   * For more information about other conditions, see [Read data in
+   * parallel](https://cloud.google.com/spanner/docs/reads#read_data_in_parallel).
+   *
+   * The query request must not contain DML commands, such as INSERT, UPDATE, or
+   * DELETE. Use
+   * [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
    * PartitionedDml transaction for large, partition-friendly DML operations.
    * 
* @@ -365,7 +367,8 @@ public int getParamTypesCount() { *
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL query parameters. See the
@@ -394,7 +397,8 @@ public java.util.Map getParamTypes
    * 
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL query parameters. See the
@@ -414,7 +418,8 @@ public java.util.Map getParamTypes
    * 
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL query parameters. See the
@@ -442,7 +447,8 @@ public java.util.Map getParamTypes
    * 
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL query parameters. See the
@@ -1347,15 +1353,16 @@ public com.google.spanner.v1.TransactionSelectorOrBuilder getTransactionOrBuilde
      *
      *
      * 
-     * Required. The query request to generate partitions for. The request will fail if
-     * the query is not root partitionable. The query plan of a root
-     * partitionable query has a single distributed union operator. A distributed
-     * union operator conceptually divides one or more tables into multiple
-     * splits, remotely evaluates a subquery independently on each split, and
-     * then unions all results.
-     *
-     * This must not contain DML commands, such as INSERT, UPDATE, or
-     * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
+     * Required. The query request to generate partitions for. The request will
+     * fail if the query is not root partitionable. For a query to be root
+     * partitionable, it needs to satisfy a few conditions. For example, the first
+     * operator in the query execution plan must be a distributed union operator.
+     * For more information about other conditions, see [Read data in
+     * parallel](https://cloud.google.com/spanner/docs/reads#read_data_in_parallel).
+     *
+     * The query request must not contain DML commands, such as INSERT, UPDATE, or
+     * DELETE. Use
+     * [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
      * PartitionedDml transaction for large, partition-friendly DML operations.
      * 
* @@ -1378,15 +1385,16 @@ public java.lang.String getSql() { * * *
-     * Required. The query request to generate partitions for. The request will fail if
-     * the query is not root partitionable. The query plan of a root
-     * partitionable query has a single distributed union operator. A distributed
-     * union operator conceptually divides one or more tables into multiple
-     * splits, remotely evaluates a subquery independently on each split, and
-     * then unions all results.
-     *
-     * This must not contain DML commands, such as INSERT, UPDATE, or
-     * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
+     * Required. The query request to generate partitions for. The request will
+     * fail if the query is not root partitionable. For a query to be root
+     * partitionable, it needs to satisfy a few conditions. For example, the first
+     * operator in the query execution plan must be a distributed union operator.
+     * For more information about other conditions, see [Read data in
+     * parallel](https://cloud.google.com/spanner/docs/reads#read_data_in_parallel).
+     *
+     * The query request must not contain DML commands, such as INSERT, UPDATE, or
+     * DELETE. Use
+     * [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
      * PartitionedDml transaction for large, partition-friendly DML operations.
      * 
* @@ -1409,15 +1417,16 @@ public com.google.protobuf.ByteString getSqlBytes() { * * *
-     * Required. The query request to generate partitions for. The request will fail if
-     * the query is not root partitionable. The query plan of a root
-     * partitionable query has a single distributed union operator. A distributed
-     * union operator conceptually divides one or more tables into multiple
-     * splits, remotely evaluates a subquery independently on each split, and
-     * then unions all results.
-     *
-     * This must not contain DML commands, such as INSERT, UPDATE, or
-     * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
+     * Required. The query request to generate partitions for. The request will
+     * fail if the query is not root partitionable. For a query to be root
+     * partitionable, it needs to satisfy a few conditions. For example, the first
+     * operator in the query execution plan must be a distributed union operator.
+     * For more information about other conditions, see [Read data in
+     * parallel](https://cloud.google.com/spanner/docs/reads#read_data_in_parallel).
+     *
+     * The query request must not contain DML commands, such as INSERT, UPDATE, or
+     * DELETE. Use
+     * [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
      * PartitionedDml transaction for large, partition-friendly DML operations.
      * 
* @@ -1439,15 +1448,16 @@ public Builder setSql(java.lang.String value) { * * *
-     * Required. The query request to generate partitions for. The request will fail if
-     * the query is not root partitionable. The query plan of a root
-     * partitionable query has a single distributed union operator. A distributed
-     * union operator conceptually divides one or more tables into multiple
-     * splits, remotely evaluates a subquery independently on each split, and
-     * then unions all results.
-     *
-     * This must not contain DML commands, such as INSERT, UPDATE, or
-     * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
+     * Required. The query request to generate partitions for. The request will
+     * fail if the query is not root partitionable. For a query to be root
+     * partitionable, it needs to satisfy a few conditions. For example, the first
+     * operator in the query execution plan must be a distributed union operator.
+     * For more information about other conditions, see [Read data in
+     * parallel](https://cloud.google.com/spanner/docs/reads#read_data_in_parallel).
+     *
+     * The query request must not contain DML commands, such as INSERT, UPDATE, or
+     * DELETE. Use
+     * [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
      * PartitionedDml transaction for large, partition-friendly DML operations.
      * 
* @@ -1465,15 +1475,16 @@ public Builder clearSql() { * * *
-     * Required. The query request to generate partitions for. The request will fail if
-     * the query is not root partitionable. The query plan of a root
-     * partitionable query has a single distributed union operator. A distributed
-     * union operator conceptually divides one or more tables into multiple
-     * splits, remotely evaluates a subquery independently on each split, and
-     * then unions all results.
-     *
-     * This must not contain DML commands, such as INSERT, UPDATE, or
-     * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
+     * Required. The query request to generate partitions for. The request will
+     * fail if the query is not root partitionable. For a query to be root
+     * partitionable, it needs to satisfy a few conditions. For example, the first
+     * operator in the query execution plan must be a distributed union operator.
+     * For more information about other conditions, see [Read data in
+     * parallel](https://cloud.google.com/spanner/docs/reads#read_data_in_parallel).
+     *
+     * The query request must not contain DML commands, such as INSERT, UPDATE, or
+     * DELETE. Use
+     * [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
      * PartitionedDml transaction for large, partition-friendly DML operations.
      * 
* @@ -1805,7 +1816,8 @@ public int getParamTypesCount() { *
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL query parameters. See the
@@ -1834,7 +1846,8 @@ public java.util.Map getParamTypes
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL query parameters. See the
@@ -1854,7 +1867,8 @@ public java.util.Map getParamTypes
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL query parameters. See the
@@ -1882,7 +1896,8 @@ public java.util.Map getParamTypes
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL query parameters. See the
@@ -1916,7 +1931,8 @@ public Builder clearParamTypes() {
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL query parameters. See the
@@ -1945,7 +1961,8 @@ public java.util.Map getMutablePar
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL query parameters. See the
@@ -1972,7 +1989,8 @@ public Builder putParamTypes(java.lang.String key, com.google.spanner.v1.Type va
      * 
      * It is not always possible for Cloud Spanner to infer the right SQL type
      * from a JSON value.  For example, values of type `BYTES` and values
-     * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
+     * of type `STRING` both appear in
+     * [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
      *
      * In these cases, `param_types` can be used to specify the exact
      * SQL type for some or all of the SQL query parameters. See the
diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionQueryRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionQueryRequestOrBuilder.java
index 0527cd263ce..5a0e5a44a1b 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionQueryRequestOrBuilder.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionQueryRequestOrBuilder.java
@@ -94,15 +94,16 @@ public interface PartitionQueryRequestOrBuilder
    *
    *
    * 
-   * Required. The query request to generate partitions for. The request will fail if
-   * the query is not root partitionable. The query plan of a root
-   * partitionable query has a single distributed union operator. A distributed
-   * union operator conceptually divides one or more tables into multiple
-   * splits, remotely evaluates a subquery independently on each split, and
-   * then unions all results.
-   *
-   * This must not contain DML commands, such as INSERT, UPDATE, or
-   * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
+   * Required. The query request to generate partitions for. The request will
+   * fail if the query is not root partitionable. For a query to be root
+   * partitionable, it needs to satisfy a few conditions. For example, the first
+   * operator in the query execution plan must be a distributed union operator.
+   * For more information about other conditions, see [Read data in
+   * parallel](https://cloud.google.com/spanner/docs/reads#read_data_in_parallel).
+   *
+   * The query request must not contain DML commands, such as INSERT, UPDATE, or
+   * DELETE. Use
+   * [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
    * PartitionedDml transaction for large, partition-friendly DML operations.
    * 
* @@ -115,15 +116,16 @@ public interface PartitionQueryRequestOrBuilder * * *
-   * Required. The query request to generate partitions for. The request will fail if
-   * the query is not root partitionable. The query plan of a root
-   * partitionable query has a single distributed union operator. A distributed
-   * union operator conceptually divides one or more tables into multiple
-   * splits, remotely evaluates a subquery independently on each split, and
-   * then unions all results.
-   *
-   * This must not contain DML commands, such as INSERT, UPDATE, or
-   * DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
+   * Required. The query request to generate partitions for. The request will
+   * fail if the query is not root partitionable. For a query to be root
+   * partitionable, it needs to satisfy a few conditions. For example, the first
+   * operator in the query execution plan must be a distributed union operator.
+   * For more information about other conditions, see [Read data in
+   * parallel](https://cloud.google.com/spanner/docs/reads#read_data_in_parallel).
+   *
+   * The query request must not contain DML commands, such as INSERT, UPDATE, or
+   * DELETE. Use
+   * [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a
    * PartitionedDml transaction for large, partition-friendly DML operations.
    * 
* @@ -207,7 +209,8 @@ public interface PartitionQueryRequestOrBuilder *
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL query parameters. See the
@@ -224,7 +227,8 @@ public interface PartitionQueryRequestOrBuilder
    * 
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL query parameters. See the
@@ -244,7 +248,8 @@ public interface PartitionQueryRequestOrBuilder
    * 
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL query parameters. See the
@@ -261,7 +266,8 @@ public interface PartitionQueryRequestOrBuilder
    * 
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL query parameters. See the
@@ -282,7 +288,8 @@ com.google.spanner.v1.Type getParamTypesOrDefault(
    * 
    * It is not always possible for Cloud Spanner to infer the right SQL type
    * from a JSON value.  For example, values of type `BYTES` and values
-   * of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
+   * of type `STRING` both appear in
+   * [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings.
    *
    * In these cases, `param_types` can be used to specify the exact
    * SQL type for some or all of the SQL query parameters. See the
diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionReadRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionReadRequest.java
index 2b8e5562dba..e43bc079369 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionReadRequest.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionReadRequest.java
@@ -232,9 +232,12 @@ public com.google.protobuf.ByteString getTableBytes() {
    *
    *
    * 
-   * If non-empty, the name of an index on [table][google.spanner.v1.PartitionReadRequest.table]. This index is
-   * used instead of the table primary key when interpreting [key_set][google.spanner.v1.PartitionReadRequest.key_set]
-   * and sorting result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set] for further information.
+   * If non-empty, the name of an index on
+   * [table][google.spanner.v1.PartitionReadRequest.table]. This index is used
+   * instead of the table primary key when interpreting
+   * [key_set][google.spanner.v1.PartitionReadRequest.key_set] and sorting
+   * result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set]
+   * for further information.
    * 
* * string index = 4; @@ -257,9 +260,12 @@ public java.lang.String getIndex() { * * *
-   * If non-empty, the name of an index on [table][google.spanner.v1.PartitionReadRequest.table]. This index is
-   * used instead of the table primary key when interpreting [key_set][google.spanner.v1.PartitionReadRequest.key_set]
-   * and sorting result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set] for further information.
+   * If non-empty, the name of an index on
+   * [table][google.spanner.v1.PartitionReadRequest.table]. This index is used
+   * instead of the table primary key when interpreting
+   * [key_set][google.spanner.v1.PartitionReadRequest.key_set] and sorting
+   * result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set]
+   * for further information.
    * 
* * string index = 4; @@ -288,8 +294,8 @@ public com.google.protobuf.ByteString getIndexBytes() { * * *
-   * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
-   * this request.
+   * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be
+   * returned for each row matching this request.
    * 
* * repeated string columns = 5; @@ -303,8 +309,8 @@ public com.google.protobuf.ProtocolStringList getColumnsList() { * * *
-   * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
-   * this request.
+   * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be
+   * returned for each row matching this request.
    * 
* * repeated string columns = 5; @@ -318,8 +324,8 @@ public int getColumnsCount() { * * *
-   * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
-   * this request.
+   * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be
+   * returned for each row matching this request.
    * 
* * repeated string columns = 5; @@ -334,8 +340,8 @@ public java.lang.String getColumns(int index) { * * *
-   * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
-   * this request.
+   * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be
+   * returned for each row matching this request.
    * 
* * repeated string columns = 5; @@ -354,8 +360,11 @@ public com.google.protobuf.ByteString getColumnsBytes(int index) { * *
    * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-   * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index]
-   * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
+   * primary keys of the rows in
+   * [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless
+   * [index][google.spanner.v1.PartitionReadRequest.index] is present. If
+   * [index][google.spanner.v1.PartitionReadRequest.index] is present, then
+   * [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
    * index keys in [index][google.spanner.v1.PartitionReadRequest.index].
    *
    * It is not an error for the `key_set` to name rows that do not
@@ -375,8 +384,11 @@ public boolean hasKeySet() {
    *
    * 
    * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-   * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index]
-   * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
+   * primary keys of the rows in
+   * [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless
+   * [index][google.spanner.v1.PartitionReadRequest.index] is present. If
+   * [index][google.spanner.v1.PartitionReadRequest.index] is present, then
+   * [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
    * index keys in [index][google.spanner.v1.PartitionReadRequest.index].
    *
    * It is not an error for the `key_set` to name rows that do not
@@ -396,8 +408,11 @@ public com.google.spanner.v1.KeySet getKeySet() {
    *
    * 
    * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-   * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index]
-   * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
+   * primary keys of the rows in
+   * [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless
+   * [index][google.spanner.v1.PartitionReadRequest.index] is present. If
+   * [index][google.spanner.v1.PartitionReadRequest.index] is present, then
+   * [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
    * index keys in [index][google.spanner.v1.PartitionReadRequest.index].
    *
    * It is not an error for the `key_set` to name rows that do not
@@ -1404,9 +1419,12 @@ public Builder setTableBytes(com.google.protobuf.ByteString value) {
      *
      *
      * 
-     * If non-empty, the name of an index on [table][google.spanner.v1.PartitionReadRequest.table]. This index is
-     * used instead of the table primary key when interpreting [key_set][google.spanner.v1.PartitionReadRequest.key_set]
-     * and sorting result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set] for further information.
+     * If non-empty, the name of an index on
+     * [table][google.spanner.v1.PartitionReadRequest.table]. This index is used
+     * instead of the table primary key when interpreting
+     * [key_set][google.spanner.v1.PartitionReadRequest.key_set] and sorting
+     * result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set]
+     * for further information.
      * 
* * string index = 4; @@ -1428,9 +1446,12 @@ public java.lang.String getIndex() { * * *
-     * If non-empty, the name of an index on [table][google.spanner.v1.PartitionReadRequest.table]. This index is
-     * used instead of the table primary key when interpreting [key_set][google.spanner.v1.PartitionReadRequest.key_set]
-     * and sorting result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set] for further information.
+     * If non-empty, the name of an index on
+     * [table][google.spanner.v1.PartitionReadRequest.table]. This index is used
+     * instead of the table primary key when interpreting
+     * [key_set][google.spanner.v1.PartitionReadRequest.key_set] and sorting
+     * result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set]
+     * for further information.
      * 
* * string index = 4; @@ -1452,9 +1473,12 @@ public com.google.protobuf.ByteString getIndexBytes() { * * *
-     * If non-empty, the name of an index on [table][google.spanner.v1.PartitionReadRequest.table]. This index is
-     * used instead of the table primary key when interpreting [key_set][google.spanner.v1.PartitionReadRequest.key_set]
-     * and sorting result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set] for further information.
+     * If non-empty, the name of an index on
+     * [table][google.spanner.v1.PartitionReadRequest.table]. This index is used
+     * instead of the table primary key when interpreting
+     * [key_set][google.spanner.v1.PartitionReadRequest.key_set] and sorting
+     * result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set]
+     * for further information.
      * 
* * string index = 4; @@ -1475,9 +1499,12 @@ public Builder setIndex(java.lang.String value) { * * *
-     * If non-empty, the name of an index on [table][google.spanner.v1.PartitionReadRequest.table]. This index is
-     * used instead of the table primary key when interpreting [key_set][google.spanner.v1.PartitionReadRequest.key_set]
-     * and sorting result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set] for further information.
+     * If non-empty, the name of an index on
+     * [table][google.spanner.v1.PartitionReadRequest.table]. This index is used
+     * instead of the table primary key when interpreting
+     * [key_set][google.spanner.v1.PartitionReadRequest.key_set] and sorting
+     * result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set]
+     * for further information.
      * 
* * string index = 4; @@ -1494,9 +1521,12 @@ public Builder clearIndex() { * * *
-     * If non-empty, the name of an index on [table][google.spanner.v1.PartitionReadRequest.table]. This index is
-     * used instead of the table primary key when interpreting [key_set][google.spanner.v1.PartitionReadRequest.key_set]
-     * and sorting result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set] for further information.
+     * If non-empty, the name of an index on
+     * [table][google.spanner.v1.PartitionReadRequest.table]. This index is used
+     * instead of the table primary key when interpreting
+     * [key_set][google.spanner.v1.PartitionReadRequest.key_set] and sorting
+     * result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set]
+     * for further information.
      * 
* * string index = 4; @@ -1528,8 +1558,8 @@ private void ensureColumnsIsMutable() { * * *
-     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
-     * this request.
+     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5; @@ -1544,8 +1574,8 @@ public com.google.protobuf.ProtocolStringList getColumnsList() { * * *
-     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
-     * this request.
+     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5; @@ -1559,8 +1589,8 @@ public int getColumnsCount() { * * *
-     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
-     * this request.
+     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5; @@ -1575,8 +1605,8 @@ public java.lang.String getColumns(int index) { * * *
-     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
-     * this request.
+     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5; @@ -1591,8 +1621,8 @@ public com.google.protobuf.ByteString getColumnsBytes(int index) { * * *
-     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
-     * this request.
+     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5; @@ -1615,8 +1645,8 @@ public Builder setColumns(int index, java.lang.String value) { * * *
-     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
-     * this request.
+     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5; @@ -1638,8 +1668,8 @@ public Builder addColumns(java.lang.String value) { * * *
-     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
-     * this request.
+     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5; @@ -1658,8 +1688,8 @@ public Builder addAllColumns(java.lang.Iterable values) { * * *
-     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
-     * this request.
+     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5; @@ -1677,8 +1707,8 @@ public Builder clearColumns() { * * *
-     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
-     * this request.
+     * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5; @@ -1709,8 +1739,11 @@ public Builder addColumnsBytes(com.google.protobuf.ByteString value) { * *
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index]
-     * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
+     * primary keys of the rows in
+     * [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present. If
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
      * index keys in [index][google.spanner.v1.PartitionReadRequest.index].
      *
      * It is not an error for the `key_set` to name rows that do not
@@ -1729,8 +1762,11 @@ public boolean hasKeySet() {
      *
      * 
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index]
-     * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
+     * primary keys of the rows in
+     * [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present. If
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
      * index keys in [index][google.spanner.v1.PartitionReadRequest.index].
      *
      * It is not an error for the `key_set` to name rows that do not
@@ -1753,8 +1789,11 @@ public com.google.spanner.v1.KeySet getKeySet() {
      *
      * 
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index]
-     * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
+     * primary keys of the rows in
+     * [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present. If
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
      * index keys in [index][google.spanner.v1.PartitionReadRequest.index].
      *
      * It is not an error for the `key_set` to name rows that do not
@@ -1781,8 +1820,11 @@ public Builder setKeySet(com.google.spanner.v1.KeySet value) {
      *
      * 
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index]
-     * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
+     * primary keys of the rows in
+     * [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present. If
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
      * index keys in [index][google.spanner.v1.PartitionReadRequest.index].
      *
      * It is not an error for the `key_set` to name rows that do not
@@ -1806,8 +1848,11 @@ public Builder setKeySet(com.google.spanner.v1.KeySet.Builder builderForValue) {
      *
      * 
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index]
-     * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
+     * primary keys of the rows in
+     * [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present. If
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
      * index keys in [index][google.spanner.v1.PartitionReadRequest.index].
      *
      * It is not an error for the `key_set` to name rows that do not
@@ -1837,8 +1882,11 @@ public Builder mergeKeySet(com.google.spanner.v1.KeySet value) {
      *
      * 
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index]
-     * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
+     * primary keys of the rows in
+     * [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present. If
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
      * index keys in [index][google.spanner.v1.PartitionReadRequest.index].
      *
      * It is not an error for the `key_set` to name rows that do not
@@ -1862,8 +1910,11 @@ public Builder clearKeySet() {
      *
      * 
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index]
-     * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
+     * primary keys of the rows in
+     * [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present. If
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
      * index keys in [index][google.spanner.v1.PartitionReadRequest.index].
      *
      * It is not an error for the `key_set` to name rows that do not
@@ -1882,8 +1933,11 @@ public com.google.spanner.v1.KeySet.Builder getKeySetBuilder() {
      *
      * 
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index]
-     * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
+     * primary keys of the rows in
+     * [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present. If
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
      * index keys in [index][google.spanner.v1.PartitionReadRequest.index].
      *
      * It is not an error for the `key_set` to name rows that do not
@@ -1904,8 +1958,11 @@ public com.google.spanner.v1.KeySetOrBuilder getKeySetOrBuilder() {
      *
      * 
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index]
-     * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
+     * primary keys of the rows in
+     * [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present. If
+     * [index][google.spanner.v1.PartitionReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
      * index keys in [index][google.spanner.v1.PartitionReadRequest.index].
      *
      * It is not an error for the `key_set` to name rows that do not
diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionReadRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionReadRequestOrBuilder.java
index 0f78440f96d..64b9832eba3 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionReadRequestOrBuilder.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartitionReadRequestOrBuilder.java
@@ -119,9 +119,12 @@ public interface PartitionReadRequestOrBuilder
    *
    *
    * 
-   * If non-empty, the name of an index on [table][google.spanner.v1.PartitionReadRequest.table]. This index is
-   * used instead of the table primary key when interpreting [key_set][google.spanner.v1.PartitionReadRequest.key_set]
-   * and sorting result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set] for further information.
+   * If non-empty, the name of an index on
+   * [table][google.spanner.v1.PartitionReadRequest.table]. This index is used
+   * instead of the table primary key when interpreting
+   * [key_set][google.spanner.v1.PartitionReadRequest.key_set] and sorting
+   * result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set]
+   * for further information.
    * 
* * string index = 4; @@ -133,9 +136,12 @@ public interface PartitionReadRequestOrBuilder * * *
-   * If non-empty, the name of an index on [table][google.spanner.v1.PartitionReadRequest.table]. This index is
-   * used instead of the table primary key when interpreting [key_set][google.spanner.v1.PartitionReadRequest.key_set]
-   * and sorting result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set] for further information.
+   * If non-empty, the name of an index on
+   * [table][google.spanner.v1.PartitionReadRequest.table]. This index is used
+   * instead of the table primary key when interpreting
+   * [key_set][google.spanner.v1.PartitionReadRequest.key_set] and sorting
+   * result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set]
+   * for further information.
    * 
* * string index = 4; @@ -148,8 +154,8 @@ public interface PartitionReadRequestOrBuilder * * *
-   * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
-   * this request.
+   * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be
+   * returned for each row matching this request.
    * 
* * repeated string columns = 5; @@ -161,8 +167,8 @@ public interface PartitionReadRequestOrBuilder * * *
-   * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
-   * this request.
+   * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be
+   * returned for each row matching this request.
    * 
* * repeated string columns = 5; @@ -174,8 +180,8 @@ public interface PartitionReadRequestOrBuilder * * *
-   * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
-   * this request.
+   * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be
+   * returned for each row matching this request.
    * 
* * repeated string columns = 5; @@ -188,8 +194,8 @@ public interface PartitionReadRequestOrBuilder * * *
-   * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching
-   * this request.
+   * The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be
+   * returned for each row matching this request.
    * 
* * repeated string columns = 5; @@ -204,8 +210,11 @@ public interface PartitionReadRequestOrBuilder * *
    * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-   * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index]
-   * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
+   * primary keys of the rows in
+   * [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless
+   * [index][google.spanner.v1.PartitionReadRequest.index] is present. If
+   * [index][google.spanner.v1.PartitionReadRequest.index] is present, then
+   * [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
    * index keys in [index][google.spanner.v1.PartitionReadRequest.index].
    *
    * It is not an error for the `key_set` to name rows that do not
@@ -222,8 +231,11 @@ public interface PartitionReadRequestOrBuilder
    *
    * 
    * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-   * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index]
-   * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
+   * primary keys of the rows in
+   * [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless
+   * [index][google.spanner.v1.PartitionReadRequest.index] is present. If
+   * [index][google.spanner.v1.PartitionReadRequest.index] is present, then
+   * [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
    * index keys in [index][google.spanner.v1.PartitionReadRequest.index].
    *
    * It is not an error for the `key_set` to name rows that do not
@@ -240,8 +252,11 @@ public interface PartitionReadRequestOrBuilder
    *
    * 
    * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-   * primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index]
-   * is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
+   * primary keys of the rows in
+   * [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless
+   * [index][google.spanner.v1.PartitionReadRequest.index] is present. If
+   * [index][google.spanner.v1.PartitionReadRequest.index] is present, then
+   * [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names
    * index keys in [index][google.spanner.v1.PartitionReadRequest.index].
    *
    * It is not an error for the `key_set` to name rows that do not
diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequest.java
index 9a22689648f..f367b772f22 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequest.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequest.java
@@ -235,9 +235,12 @@ public com.google.protobuf.ByteString getTableBytes() {
    *
    *
    * 
-   * If non-empty, the name of an index on [table][google.spanner.v1.ReadRequest.table]. This index is
-   * used instead of the table primary key when interpreting [key_set][google.spanner.v1.ReadRequest.key_set]
-   * and sorting result rows. See [key_set][google.spanner.v1.ReadRequest.key_set] for further information.
+   * If non-empty, the name of an index on
+   * [table][google.spanner.v1.ReadRequest.table]. This index is used instead of
+   * the table primary key when interpreting
+   * [key_set][google.spanner.v1.ReadRequest.key_set] and sorting result rows.
+   * See [key_set][google.spanner.v1.ReadRequest.key_set] for further
+   * information.
    * 
* * string index = 4; @@ -260,9 +263,12 @@ public java.lang.String getIndex() { * * *
-   * If non-empty, the name of an index on [table][google.spanner.v1.ReadRequest.table]. This index is
-   * used instead of the table primary key when interpreting [key_set][google.spanner.v1.ReadRequest.key_set]
-   * and sorting result rows. See [key_set][google.spanner.v1.ReadRequest.key_set] for further information.
+   * If non-empty, the name of an index on
+   * [table][google.spanner.v1.ReadRequest.table]. This index is used instead of
+   * the table primary key when interpreting
+   * [key_set][google.spanner.v1.ReadRequest.key_set] and sorting result rows.
+   * See [key_set][google.spanner.v1.ReadRequest.key_set] for further
+   * information.
    * 
* * string index = 4; @@ -291,8 +297,8 @@ public com.google.protobuf.ByteString getIndexBytes() { * * *
-   * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching
-   * this request.
+   * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be
+   * returned for each row matching this request.
    * 
* * repeated string columns = 5 [(.google.api.field_behavior) = REQUIRED]; @@ -306,8 +312,8 @@ public com.google.protobuf.ProtocolStringList getColumnsList() { * * *
-   * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching
-   * this request.
+   * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be
+   * returned for each row matching this request.
    * 
* * repeated string columns = 5 [(.google.api.field_behavior) = REQUIRED]; @@ -321,8 +327,8 @@ public int getColumnsCount() { * * *
-   * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching
-   * this request.
+   * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be
+   * returned for each row matching this request.
    * 
* * repeated string columns = 5 [(.google.api.field_behavior) = REQUIRED]; @@ -337,8 +343,8 @@ public java.lang.String getColumns(int index) { * * *
-   * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching
-   * this request.
+   * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be
+   * returned for each row matching this request.
    * 
* * repeated string columns = 5 [(.google.api.field_behavior) = REQUIRED]; @@ -357,14 +363,18 @@ public com.google.protobuf.ByteString getColumnsBytes(int index) { * *
    * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-   * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index]
-   * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names
-   * index keys in [index][google.spanner.v1.ReadRequest.index].
-   *
-   * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded
-   * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
-   * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not
-   * empty, rows will be yielded in an unspecified order.
+   * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to
+   * be yielded, unless [index][google.spanner.v1.ReadRequest.index] is present.
+   * If [index][google.spanner.v1.ReadRequest.index] is present, then
+   * [key_set][google.spanner.v1.ReadRequest.key_set] instead names index keys
+   * in [index][google.spanner.v1.ReadRequest.index].
+   *
+   * If the [partition_token][google.spanner.v1.ReadRequest.partition_token]
+   * field is empty, rows are yielded in table primary key order (if
+   * [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
+   * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the
+   * [partition_token][google.spanner.v1.ReadRequest.partition_token] field is
+   * not empty, rows will be yielded in an unspecified order.
    *
    * It is not an error for the `key_set` to name rows that do not
    * exist in the database. Read yields nothing for nonexistent rows.
@@ -383,14 +393,18 @@ public boolean hasKeySet() {
    *
    * 
    * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-   * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index]
-   * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names
-   * index keys in [index][google.spanner.v1.ReadRequest.index].
-   *
-   * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded
-   * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
-   * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not
-   * empty, rows will be yielded in an unspecified order.
+   * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to
+   * be yielded, unless [index][google.spanner.v1.ReadRequest.index] is present.
+   * If [index][google.spanner.v1.ReadRequest.index] is present, then
+   * [key_set][google.spanner.v1.ReadRequest.key_set] instead names index keys
+   * in [index][google.spanner.v1.ReadRequest.index].
+   *
+   * If the [partition_token][google.spanner.v1.ReadRequest.partition_token]
+   * field is empty, rows are yielded in table primary key order (if
+   * [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
+   * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the
+   * [partition_token][google.spanner.v1.ReadRequest.partition_token] field is
+   * not empty, rows will be yielded in an unspecified order.
    *
    * It is not an error for the `key_set` to name rows that do not
    * exist in the database. Read yields nothing for nonexistent rows.
@@ -409,14 +423,18 @@ public com.google.spanner.v1.KeySet getKeySet() {
    *
    * 
    * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-   * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index]
-   * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names
-   * index keys in [index][google.spanner.v1.ReadRequest.index].
-   *
-   * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded
-   * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
-   * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not
-   * empty, rows will be yielded in an unspecified order.
+   * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to
+   * be yielded, unless [index][google.spanner.v1.ReadRequest.index] is present.
+   * If [index][google.spanner.v1.ReadRequest.index] is present, then
+   * [key_set][google.spanner.v1.ReadRequest.key_set] instead names index keys
+   * in [index][google.spanner.v1.ReadRequest.index].
+   *
+   * If the [partition_token][google.spanner.v1.ReadRequest.partition_token]
+   * field is empty, rows are yielded in table primary key order (if
+   * [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
+   * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the
+   * [partition_token][google.spanner.v1.ReadRequest.partition_token] field is
+   * not empty, rows will be yielded in an unspecified order.
    *
    * It is not an error for the `key_set` to name rows that do not
    * exist in the database. Read yields nothing for nonexistent rows.
@@ -457,9 +475,9 @@ public long getLimit() {
    * 
    * If this request is resuming a previously interrupted read,
    * `resume_token` should be copied from the last
-   * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the interruption. Doing this
-   * enables the new read to resume where the last read left off. The
-   * rest of the request parameters must exactly match the request
+   * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the
+   * interruption. Doing this enables the new read to resume where the last read
+   * left off. The rest of the request parameters must exactly match the request
    * that yielded this token.
    * 
* @@ -543,6 +561,56 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder( : requestOptions_; } + public static final int DIRECTED_READ_OPTIONS_FIELD_NUMBER = 14; + private com.google.spanner.v1.DirectedReadOptions directedReadOptions_; + /** + * + * + *
+   * Directed read options for this request.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 14; + * + * @return Whether the directedReadOptions field is set. + */ + @java.lang.Override + public boolean hasDirectedReadOptions() { + return directedReadOptions_ != null; + } + /** + * + * + *
+   * Directed read options for this request.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 14; + * + * @return The directedReadOptions. + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptions getDirectedReadOptions() { + return directedReadOptions_ == null + ? com.google.spanner.v1.DirectedReadOptions.getDefaultInstance() + : directedReadOptions_; + } + /** + * + * + *
+   * Directed read options for this request.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 14; + */ + @java.lang.Override + public com.google.spanner.v1.DirectedReadOptionsOrBuilder getDirectedReadOptionsOrBuilder() { + return directedReadOptions_ == null + ? com.google.spanner.v1.DirectedReadOptions.getDefaultInstance() + : directedReadOptions_; + } + public static final int DATA_BOOST_ENABLED_FIELD_NUMBER = 15; private boolean dataBoostEnabled_ = false; /** @@ -550,10 +618,10 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder( * *
    * If this is for a partitioned read and this field is set to `true`, the
-   * request will be executed via Spanner independent compute resources.
+   * request is executed with Spanner Data Boost independent compute resources.
    *
    * If the field is set to `true` but the request does not set
-   * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
+   * `partition_token`, the API returns an `INVALID_ARGUMENT` error.
    * 
* * bool data_boost_enabled = 15; @@ -609,6 +677,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (requestOptions_ != null) { output.writeMessage(11, getRequestOptions()); } + if (directedReadOptions_ != null) { + output.writeMessage(14, getDirectedReadOptions()); + } if (dataBoostEnabled_ != false) { output.writeBool(15, dataBoostEnabled_); } @@ -656,6 +727,10 @@ public int getSerializedSize() { if (requestOptions_ != null) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(11, getRequestOptions()); } + if (directedReadOptions_ != null) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize(14, getDirectedReadOptions()); + } if (dataBoostEnabled_ != false) { size += com.google.protobuf.CodedOutputStream.computeBoolSize(15, dataBoostEnabled_); } @@ -693,6 +768,10 @@ public boolean equals(final java.lang.Object obj) { if (hasRequestOptions()) { if (!getRequestOptions().equals(other.getRequestOptions())) return false; } + if (hasDirectedReadOptions() != other.hasDirectedReadOptions()) return false; + if (hasDirectedReadOptions()) { + if (!getDirectedReadOptions().equals(other.getDirectedReadOptions())) return false; + } if (getDataBoostEnabled() != other.getDataBoostEnabled()) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; @@ -733,6 +812,10 @@ public int hashCode() { hash = (37 * hash) + REQUEST_OPTIONS_FIELD_NUMBER; hash = (53 * hash) + getRequestOptions().hashCode(); } + if (hasDirectedReadOptions()) { + hash = (37 * hash) + DIRECTED_READ_OPTIONS_FIELD_NUMBER; + hash = (53 * hash) + getDirectedReadOptions().hashCode(); + } hash = (37 * hash) + DATA_BOOST_ENABLED_FIELD_NUMBER; hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getDataBoostEnabled()); hash = (29 * hash) + getUnknownFields().hashCode(); @@ -896,6 +979,11 @@ public Builder clear() { requestOptionsBuilder_.dispose(); requestOptionsBuilder_ = null; } + directedReadOptions_ = null; + if (directedReadOptionsBuilder_ != null) { + directedReadOptionsBuilder_.dispose(); + directedReadOptionsBuilder_ = null; + } dataBoostEnabled_ = false; return this; } @@ -966,6 +1054,12 @@ private void buildPartial0(com.google.spanner.v1.ReadRequest result) { requestOptionsBuilder_ == null ? requestOptions_ : requestOptionsBuilder_.build(); } if (((from_bitField0_ & 0x00000400) != 0)) { + result.directedReadOptions_ = + directedReadOptionsBuilder_ == null + ? directedReadOptions_ + : directedReadOptionsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000800) != 0)) { result.dataBoostEnabled_ = dataBoostEnabled_; } } @@ -1058,6 +1152,9 @@ public Builder mergeFrom(com.google.spanner.v1.ReadRequest other) { if (other.hasRequestOptions()) { mergeRequestOptions(other.getRequestOptions()); } + if (other.hasDirectedReadOptions()) { + mergeDirectedReadOptions(other.getDirectedReadOptions()); + } if (other.getDataBoostEnabled() != false) { setDataBoostEnabled(other.getDataBoostEnabled()); } @@ -1148,10 +1245,17 @@ public Builder mergeFrom( bitField0_ |= 0x00000200; break; } // case 90 + case 114: + { + input.readMessage( + getDirectedReadOptionsFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000400; + break; + } // case 114 case 120: { dataBoostEnabled_ = input.readBool(); - bitField0_ |= 0x00000400; + bitField0_ |= 0x00000800; break; } // case 120 default: @@ -1593,9 +1697,12 @@ public Builder setTableBytes(com.google.protobuf.ByteString value) { * * *
-     * If non-empty, the name of an index on [table][google.spanner.v1.ReadRequest.table]. This index is
-     * used instead of the table primary key when interpreting [key_set][google.spanner.v1.ReadRequest.key_set]
-     * and sorting result rows. See [key_set][google.spanner.v1.ReadRequest.key_set] for further information.
+     * If non-empty, the name of an index on
+     * [table][google.spanner.v1.ReadRequest.table]. This index is used instead of
+     * the table primary key when interpreting
+     * [key_set][google.spanner.v1.ReadRequest.key_set] and sorting result rows.
+     * See [key_set][google.spanner.v1.ReadRequest.key_set] for further
+     * information.
      * 
* * string index = 4; @@ -1617,9 +1724,12 @@ public java.lang.String getIndex() { * * *
-     * If non-empty, the name of an index on [table][google.spanner.v1.ReadRequest.table]. This index is
-     * used instead of the table primary key when interpreting [key_set][google.spanner.v1.ReadRequest.key_set]
-     * and sorting result rows. See [key_set][google.spanner.v1.ReadRequest.key_set] for further information.
+     * If non-empty, the name of an index on
+     * [table][google.spanner.v1.ReadRequest.table]. This index is used instead of
+     * the table primary key when interpreting
+     * [key_set][google.spanner.v1.ReadRequest.key_set] and sorting result rows.
+     * See [key_set][google.spanner.v1.ReadRequest.key_set] for further
+     * information.
      * 
* * string index = 4; @@ -1641,9 +1751,12 @@ public com.google.protobuf.ByteString getIndexBytes() { * * *
-     * If non-empty, the name of an index on [table][google.spanner.v1.ReadRequest.table]. This index is
-     * used instead of the table primary key when interpreting [key_set][google.spanner.v1.ReadRequest.key_set]
-     * and sorting result rows. See [key_set][google.spanner.v1.ReadRequest.key_set] for further information.
+     * If non-empty, the name of an index on
+     * [table][google.spanner.v1.ReadRequest.table]. This index is used instead of
+     * the table primary key when interpreting
+     * [key_set][google.spanner.v1.ReadRequest.key_set] and sorting result rows.
+     * See [key_set][google.spanner.v1.ReadRequest.key_set] for further
+     * information.
      * 
* * string index = 4; @@ -1664,9 +1777,12 @@ public Builder setIndex(java.lang.String value) { * * *
-     * If non-empty, the name of an index on [table][google.spanner.v1.ReadRequest.table]. This index is
-     * used instead of the table primary key when interpreting [key_set][google.spanner.v1.ReadRequest.key_set]
-     * and sorting result rows. See [key_set][google.spanner.v1.ReadRequest.key_set] for further information.
+     * If non-empty, the name of an index on
+     * [table][google.spanner.v1.ReadRequest.table]. This index is used instead of
+     * the table primary key when interpreting
+     * [key_set][google.spanner.v1.ReadRequest.key_set] and sorting result rows.
+     * See [key_set][google.spanner.v1.ReadRequest.key_set] for further
+     * information.
      * 
* * string index = 4; @@ -1683,9 +1799,12 @@ public Builder clearIndex() { * * *
-     * If non-empty, the name of an index on [table][google.spanner.v1.ReadRequest.table]. This index is
-     * used instead of the table primary key when interpreting [key_set][google.spanner.v1.ReadRequest.key_set]
-     * and sorting result rows. See [key_set][google.spanner.v1.ReadRequest.key_set] for further information.
+     * If non-empty, the name of an index on
+     * [table][google.spanner.v1.ReadRequest.table]. This index is used instead of
+     * the table primary key when interpreting
+     * [key_set][google.spanner.v1.ReadRequest.key_set] and sorting result rows.
+     * See [key_set][google.spanner.v1.ReadRequest.key_set] for further
+     * information.
      * 
* * string index = 4; @@ -1717,8 +1836,8 @@ private void ensureColumnsIsMutable() { * * *
-     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching
-     * this request.
+     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5 [(.google.api.field_behavior) = REQUIRED]; @@ -1733,8 +1852,8 @@ public com.google.protobuf.ProtocolStringList getColumnsList() { * * *
-     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching
-     * this request.
+     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5 [(.google.api.field_behavior) = REQUIRED]; @@ -1748,8 +1867,8 @@ public int getColumnsCount() { * * *
-     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching
-     * this request.
+     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5 [(.google.api.field_behavior) = REQUIRED]; @@ -1764,8 +1883,8 @@ public java.lang.String getColumns(int index) { * * *
-     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching
-     * this request.
+     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5 [(.google.api.field_behavior) = REQUIRED]; @@ -1780,8 +1899,8 @@ public com.google.protobuf.ByteString getColumnsBytes(int index) { * * *
-     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching
-     * this request.
+     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5 [(.google.api.field_behavior) = REQUIRED]; @@ -1804,8 +1923,8 @@ public Builder setColumns(int index, java.lang.String value) { * * *
-     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching
-     * this request.
+     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5 [(.google.api.field_behavior) = REQUIRED]; @@ -1827,8 +1946,8 @@ public Builder addColumns(java.lang.String value) { * * *
-     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching
-     * this request.
+     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5 [(.google.api.field_behavior) = REQUIRED]; @@ -1847,8 +1966,8 @@ public Builder addAllColumns(java.lang.Iterable values) { * * *
-     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching
-     * this request.
+     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5 [(.google.api.field_behavior) = REQUIRED]; @@ -1866,8 +1985,8 @@ public Builder clearColumns() { * * *
-     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching
-     * this request.
+     * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be
+     * returned for each row matching this request.
      * 
* * repeated string columns = 5 [(.google.api.field_behavior) = REQUIRED]; @@ -1898,14 +2017,18 @@ public Builder addColumnsBytes(com.google.protobuf.ByteString value) { * *
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index]
-     * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names
-     * index keys in [index][google.spanner.v1.ReadRequest.index].
-     *
-     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded
-     * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
-     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not
-     * empty, rows will be yielded in an unspecified order.
+     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to
+     * be yielded, unless [index][google.spanner.v1.ReadRequest.index] is present.
+     * If [index][google.spanner.v1.ReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.ReadRequest.key_set] instead names index keys
+     * in [index][google.spanner.v1.ReadRequest.index].
+     *
+     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token]
+     * field is empty, rows are yielded in table primary key order (if
+     * [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
+     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the
+     * [partition_token][google.spanner.v1.ReadRequest.partition_token] field is
+     * not empty, rows will be yielded in an unspecified order.
      *
      * It is not an error for the `key_set` to name rows that do not
      * exist in the database. Read yields nothing for nonexistent rows.
@@ -1923,14 +2046,18 @@ public boolean hasKeySet() {
      *
      * 
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index]
-     * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names
-     * index keys in [index][google.spanner.v1.ReadRequest.index].
-     *
-     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded
-     * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
-     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not
-     * empty, rows will be yielded in an unspecified order.
+     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to
+     * be yielded, unless [index][google.spanner.v1.ReadRequest.index] is present.
+     * If [index][google.spanner.v1.ReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.ReadRequest.key_set] instead names index keys
+     * in [index][google.spanner.v1.ReadRequest.index].
+     *
+     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token]
+     * field is empty, rows are yielded in table primary key order (if
+     * [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
+     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the
+     * [partition_token][google.spanner.v1.ReadRequest.partition_token] field is
+     * not empty, rows will be yielded in an unspecified order.
      *
      * It is not an error for the `key_set` to name rows that do not
      * exist in the database. Read yields nothing for nonexistent rows.
@@ -1952,14 +2079,18 @@ public com.google.spanner.v1.KeySet getKeySet() {
      *
      * 
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index]
-     * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names
-     * index keys in [index][google.spanner.v1.ReadRequest.index].
-     *
-     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded
-     * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
-     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not
-     * empty, rows will be yielded in an unspecified order.
+     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to
+     * be yielded, unless [index][google.spanner.v1.ReadRequest.index] is present.
+     * If [index][google.spanner.v1.ReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.ReadRequest.key_set] instead names index keys
+     * in [index][google.spanner.v1.ReadRequest.index].
+     *
+     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token]
+     * field is empty, rows are yielded in table primary key order (if
+     * [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
+     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the
+     * [partition_token][google.spanner.v1.ReadRequest.partition_token] field is
+     * not empty, rows will be yielded in an unspecified order.
      *
      * It is not an error for the `key_set` to name rows that do not
      * exist in the database. Read yields nothing for nonexistent rows.
@@ -1985,14 +2116,18 @@ public Builder setKeySet(com.google.spanner.v1.KeySet value) {
      *
      * 
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index]
-     * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names
-     * index keys in [index][google.spanner.v1.ReadRequest.index].
-     *
-     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded
-     * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
-     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not
-     * empty, rows will be yielded in an unspecified order.
+     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to
+     * be yielded, unless [index][google.spanner.v1.ReadRequest.index] is present.
+     * If [index][google.spanner.v1.ReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.ReadRequest.key_set] instead names index keys
+     * in [index][google.spanner.v1.ReadRequest.index].
+     *
+     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token]
+     * field is empty, rows are yielded in table primary key order (if
+     * [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
+     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the
+     * [partition_token][google.spanner.v1.ReadRequest.partition_token] field is
+     * not empty, rows will be yielded in an unspecified order.
      *
      * It is not an error for the `key_set` to name rows that do not
      * exist in the database. Read yields nothing for nonexistent rows.
@@ -2015,14 +2150,18 @@ public Builder setKeySet(com.google.spanner.v1.KeySet.Builder builderForValue) {
      *
      * 
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index]
-     * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names
-     * index keys in [index][google.spanner.v1.ReadRequest.index].
-     *
-     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded
-     * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
-     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not
-     * empty, rows will be yielded in an unspecified order.
+     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to
+     * be yielded, unless [index][google.spanner.v1.ReadRequest.index] is present.
+     * If [index][google.spanner.v1.ReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.ReadRequest.key_set] instead names index keys
+     * in [index][google.spanner.v1.ReadRequest.index].
+     *
+     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token]
+     * field is empty, rows are yielded in table primary key order (if
+     * [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
+     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the
+     * [partition_token][google.spanner.v1.ReadRequest.partition_token] field is
+     * not empty, rows will be yielded in an unspecified order.
      *
      * It is not an error for the `key_set` to name rows that do not
      * exist in the database. Read yields nothing for nonexistent rows.
@@ -2051,14 +2190,18 @@ public Builder mergeKeySet(com.google.spanner.v1.KeySet value) {
      *
      * 
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index]
-     * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names
-     * index keys in [index][google.spanner.v1.ReadRequest.index].
-     *
-     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded
-     * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
-     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not
-     * empty, rows will be yielded in an unspecified order.
+     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to
+     * be yielded, unless [index][google.spanner.v1.ReadRequest.index] is present.
+     * If [index][google.spanner.v1.ReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.ReadRequest.key_set] instead names index keys
+     * in [index][google.spanner.v1.ReadRequest.index].
+     *
+     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token]
+     * field is empty, rows are yielded in table primary key order (if
+     * [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
+     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the
+     * [partition_token][google.spanner.v1.ReadRequest.partition_token] field is
+     * not empty, rows will be yielded in an unspecified order.
      *
      * It is not an error for the `key_set` to name rows that do not
      * exist in the database. Read yields nothing for nonexistent rows.
@@ -2081,14 +2224,18 @@ public Builder clearKeySet() {
      *
      * 
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index]
-     * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names
-     * index keys in [index][google.spanner.v1.ReadRequest.index].
-     *
-     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded
-     * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
-     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not
-     * empty, rows will be yielded in an unspecified order.
+     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to
+     * be yielded, unless [index][google.spanner.v1.ReadRequest.index] is present.
+     * If [index][google.spanner.v1.ReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.ReadRequest.key_set] instead names index keys
+     * in [index][google.spanner.v1.ReadRequest.index].
+     *
+     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token]
+     * field is empty, rows are yielded in table primary key order (if
+     * [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
+     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the
+     * [partition_token][google.spanner.v1.ReadRequest.partition_token] field is
+     * not empty, rows will be yielded in an unspecified order.
      *
      * It is not an error for the `key_set` to name rows that do not
      * exist in the database. Read yields nothing for nonexistent rows.
@@ -2106,14 +2253,18 @@ public com.google.spanner.v1.KeySet.Builder getKeySetBuilder() {
      *
      * 
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index]
-     * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names
-     * index keys in [index][google.spanner.v1.ReadRequest.index].
-     *
-     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded
-     * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
-     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not
-     * empty, rows will be yielded in an unspecified order.
+     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to
+     * be yielded, unless [index][google.spanner.v1.ReadRequest.index] is present.
+     * If [index][google.spanner.v1.ReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.ReadRequest.key_set] instead names index keys
+     * in [index][google.spanner.v1.ReadRequest.index].
+     *
+     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token]
+     * field is empty, rows are yielded in table primary key order (if
+     * [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
+     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the
+     * [partition_token][google.spanner.v1.ReadRequest.partition_token] field is
+     * not empty, rows will be yielded in an unspecified order.
      *
      * It is not an error for the `key_set` to name rows that do not
      * exist in the database. Read yields nothing for nonexistent rows.
@@ -2133,14 +2284,18 @@ public com.google.spanner.v1.KeySetOrBuilder getKeySetOrBuilder() {
      *
      * 
      * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index]
-     * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names
-     * index keys in [index][google.spanner.v1.ReadRequest.index].
-     *
-     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded
-     * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
-     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not
-     * empty, rows will be yielded in an unspecified order.
+     * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to
+     * be yielded, unless [index][google.spanner.v1.ReadRequest.index] is present.
+     * If [index][google.spanner.v1.ReadRequest.index] is present, then
+     * [key_set][google.spanner.v1.ReadRequest.key_set] instead names index keys
+     * in [index][google.spanner.v1.ReadRequest.index].
+     *
+     * If the [partition_token][google.spanner.v1.ReadRequest.partition_token]
+     * field is empty, rows are yielded in table primary key order (if
+     * [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
+     * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the
+     * [partition_token][google.spanner.v1.ReadRequest.partition_token] field is
+     * not empty, rows will be yielded in an unspecified order.
      *
      * It is not an error for the `key_set` to name rows that do not
      * exist in the database. Read yields nothing for nonexistent rows.
@@ -2231,9 +2386,9 @@ public Builder clearLimit() {
      * 
      * If this request is resuming a previously interrupted read,
      * `resume_token` should be copied from the last
-     * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the interruption. Doing this
-     * enables the new read to resume where the last read left off. The
-     * rest of the request parameters must exactly match the request
+     * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the
+     * interruption. Doing this enables the new read to resume where the last read
+     * left off. The rest of the request parameters must exactly match the request
      * that yielded this token.
      * 
* @@ -2251,9 +2406,9 @@ public com.google.protobuf.ByteString getResumeToken() { *
      * If this request is resuming a previously interrupted read,
      * `resume_token` should be copied from the last
-     * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the interruption. Doing this
-     * enables the new read to resume where the last read left off. The
-     * rest of the request parameters must exactly match the request
+     * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the
+     * interruption. Doing this enables the new read to resume where the last read
+     * left off. The rest of the request parameters must exactly match the request
      * that yielded this token.
      * 
* @@ -2277,9 +2432,9 @@ public Builder setResumeToken(com.google.protobuf.ByteString value) { *
      * If this request is resuming a previously interrupted read,
      * `resume_token` should be copied from the last
-     * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the interruption. Doing this
-     * enables the new read to resume where the last read left off. The
-     * rest of the request parameters must exactly match the request
+     * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the
+     * interruption. Doing this enables the new read to resume where the last read
+     * left off. The rest of the request parameters must exactly match the request
      * that yielded this token.
      * 
* @@ -2541,16 +2696,201 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder( return requestOptionsBuilder_; } + private com.google.spanner.v1.DirectedReadOptions directedReadOptions_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions, + com.google.spanner.v1.DirectedReadOptions.Builder, + com.google.spanner.v1.DirectedReadOptionsOrBuilder> + directedReadOptionsBuilder_; + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 14; + * + * @return Whether the directedReadOptions field is set. + */ + public boolean hasDirectedReadOptions() { + return ((bitField0_ & 0x00000400) != 0); + } + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 14; + * + * @return The directedReadOptions. + */ + public com.google.spanner.v1.DirectedReadOptions getDirectedReadOptions() { + if (directedReadOptionsBuilder_ == null) { + return directedReadOptions_ == null + ? com.google.spanner.v1.DirectedReadOptions.getDefaultInstance() + : directedReadOptions_; + } else { + return directedReadOptionsBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 14; + */ + public Builder setDirectedReadOptions(com.google.spanner.v1.DirectedReadOptions value) { + if (directedReadOptionsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + directedReadOptions_ = value; + } else { + directedReadOptionsBuilder_.setMessage(value); + } + bitField0_ |= 0x00000400; + onChanged(); + return this; + } + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 14; + */ + public Builder setDirectedReadOptions( + com.google.spanner.v1.DirectedReadOptions.Builder builderForValue) { + if (directedReadOptionsBuilder_ == null) { + directedReadOptions_ = builderForValue.build(); + } else { + directedReadOptionsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000400; + onChanged(); + return this; + } + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 14; + */ + public Builder mergeDirectedReadOptions(com.google.spanner.v1.DirectedReadOptions value) { + if (directedReadOptionsBuilder_ == null) { + if (((bitField0_ & 0x00000400) != 0) + && directedReadOptions_ != null + && directedReadOptions_ + != com.google.spanner.v1.DirectedReadOptions.getDefaultInstance()) { + getDirectedReadOptionsBuilder().mergeFrom(value); + } else { + directedReadOptions_ = value; + } + } else { + directedReadOptionsBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000400; + onChanged(); + return this; + } + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 14; + */ + public Builder clearDirectedReadOptions() { + bitField0_ = (bitField0_ & ~0x00000400); + directedReadOptions_ = null; + if (directedReadOptionsBuilder_ != null) { + directedReadOptionsBuilder_.dispose(); + directedReadOptionsBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 14; + */ + public com.google.spanner.v1.DirectedReadOptions.Builder getDirectedReadOptionsBuilder() { + bitField0_ |= 0x00000400; + onChanged(); + return getDirectedReadOptionsFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 14; + */ + public com.google.spanner.v1.DirectedReadOptionsOrBuilder getDirectedReadOptionsOrBuilder() { + if (directedReadOptionsBuilder_ != null) { + return directedReadOptionsBuilder_.getMessageOrBuilder(); + } else { + return directedReadOptions_ == null + ? com.google.spanner.v1.DirectedReadOptions.getDefaultInstance() + : directedReadOptions_; + } + } + /** + * + * + *
+     * Directed read options for this request.
+     * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 14; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions, + com.google.spanner.v1.DirectedReadOptions.Builder, + com.google.spanner.v1.DirectedReadOptionsOrBuilder> + getDirectedReadOptionsFieldBuilder() { + if (directedReadOptionsBuilder_ == null) { + directedReadOptionsBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.DirectedReadOptions, + com.google.spanner.v1.DirectedReadOptions.Builder, + com.google.spanner.v1.DirectedReadOptionsOrBuilder>( + getDirectedReadOptions(), getParentForChildren(), isClean()); + directedReadOptions_ = null; + } + return directedReadOptionsBuilder_; + } + private boolean dataBoostEnabled_; /** * * *
      * If this is for a partitioned read and this field is set to `true`, the
-     * request will be executed via Spanner independent compute resources.
+     * request is executed with Spanner Data Boost independent compute resources.
      *
      * If the field is set to `true` but the request does not set
-     * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
+     * `partition_token`, the API returns an `INVALID_ARGUMENT` error.
      * 
* * bool data_boost_enabled = 15; @@ -2566,10 +2906,10 @@ public boolean getDataBoostEnabled() { * *
      * If this is for a partitioned read and this field is set to `true`, the
-     * request will be executed via Spanner independent compute resources.
+     * request is executed with Spanner Data Boost independent compute resources.
      *
      * If the field is set to `true` but the request does not set
-     * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
+     * `partition_token`, the API returns an `INVALID_ARGUMENT` error.
      * 
* * bool data_boost_enabled = 15; @@ -2580,7 +2920,7 @@ public boolean getDataBoostEnabled() { public Builder setDataBoostEnabled(boolean value) { dataBoostEnabled_ = value; - bitField0_ |= 0x00000400; + bitField0_ |= 0x00000800; onChanged(); return this; } @@ -2589,10 +2929,10 @@ public Builder setDataBoostEnabled(boolean value) { * *
      * If this is for a partitioned read and this field is set to `true`, the
-     * request will be executed via Spanner independent compute resources.
+     * request is executed with Spanner Data Boost independent compute resources.
      *
      * If the field is set to `true` but the request does not set
-     * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
+     * `partition_token`, the API returns an `INVALID_ARGUMENT` error.
      * 
* * bool data_boost_enabled = 15; @@ -2600,7 +2940,7 @@ public Builder setDataBoostEnabled(boolean value) { * @return This builder for chaining. */ public Builder clearDataBoostEnabled() { - bitField0_ = (bitField0_ & ~0x00000400); + bitField0_ = (bitField0_ & ~0x00000800); dataBoostEnabled_ = false; onChanged(); return this; diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequestOrBuilder.java index cc5f8f368dc..88b1db505b7 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ReadRequestOrBuilder.java @@ -119,9 +119,12 @@ public interface ReadRequestOrBuilder * * *
-   * If non-empty, the name of an index on [table][google.spanner.v1.ReadRequest.table]. This index is
-   * used instead of the table primary key when interpreting [key_set][google.spanner.v1.ReadRequest.key_set]
-   * and sorting result rows. See [key_set][google.spanner.v1.ReadRequest.key_set] for further information.
+   * If non-empty, the name of an index on
+   * [table][google.spanner.v1.ReadRequest.table]. This index is used instead of
+   * the table primary key when interpreting
+   * [key_set][google.spanner.v1.ReadRequest.key_set] and sorting result rows.
+   * See [key_set][google.spanner.v1.ReadRequest.key_set] for further
+   * information.
    * 
* * string index = 4; @@ -133,9 +136,12 @@ public interface ReadRequestOrBuilder * * *
-   * If non-empty, the name of an index on [table][google.spanner.v1.ReadRequest.table]. This index is
-   * used instead of the table primary key when interpreting [key_set][google.spanner.v1.ReadRequest.key_set]
-   * and sorting result rows. See [key_set][google.spanner.v1.ReadRequest.key_set] for further information.
+   * If non-empty, the name of an index on
+   * [table][google.spanner.v1.ReadRequest.table]. This index is used instead of
+   * the table primary key when interpreting
+   * [key_set][google.spanner.v1.ReadRequest.key_set] and sorting result rows.
+   * See [key_set][google.spanner.v1.ReadRequest.key_set] for further
+   * information.
    * 
* * string index = 4; @@ -148,8 +154,8 @@ public interface ReadRequestOrBuilder * * *
-   * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching
-   * this request.
+   * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be
+   * returned for each row matching this request.
    * 
* * repeated string columns = 5 [(.google.api.field_behavior) = REQUIRED]; @@ -161,8 +167,8 @@ public interface ReadRequestOrBuilder * * *
-   * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching
-   * this request.
+   * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be
+   * returned for each row matching this request.
    * 
* * repeated string columns = 5 [(.google.api.field_behavior) = REQUIRED]; @@ -174,8 +180,8 @@ public interface ReadRequestOrBuilder * * *
-   * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching
-   * this request.
+   * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be
+   * returned for each row matching this request.
    * 
* * repeated string columns = 5 [(.google.api.field_behavior) = REQUIRED]; @@ -188,8 +194,8 @@ public interface ReadRequestOrBuilder * * *
-   * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching
-   * this request.
+   * Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be
+   * returned for each row matching this request.
    * 
* * repeated string columns = 5 [(.google.api.field_behavior) = REQUIRED]; @@ -204,14 +210,18 @@ public interface ReadRequestOrBuilder * *
    * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-   * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index]
-   * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names
-   * index keys in [index][google.spanner.v1.ReadRequest.index].
-   *
-   * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded
-   * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
-   * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not
-   * empty, rows will be yielded in an unspecified order.
+   * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to
+   * be yielded, unless [index][google.spanner.v1.ReadRequest.index] is present.
+   * If [index][google.spanner.v1.ReadRequest.index] is present, then
+   * [key_set][google.spanner.v1.ReadRequest.key_set] instead names index keys
+   * in [index][google.spanner.v1.ReadRequest.index].
+   *
+   * If the [partition_token][google.spanner.v1.ReadRequest.partition_token]
+   * field is empty, rows are yielded in table primary key order (if
+   * [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
+   * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the
+   * [partition_token][google.spanner.v1.ReadRequest.partition_token] field is
+   * not empty, rows will be yielded in an unspecified order.
    *
    * It is not an error for the `key_set` to name rows that do not
    * exist in the database. Read yields nothing for nonexistent rows.
@@ -227,14 +237,18 @@ public interface ReadRequestOrBuilder
    *
    * 
    * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-   * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index]
-   * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names
-   * index keys in [index][google.spanner.v1.ReadRequest.index].
-   *
-   * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded
-   * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
-   * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not
-   * empty, rows will be yielded in an unspecified order.
+   * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to
+   * be yielded, unless [index][google.spanner.v1.ReadRequest.index] is present.
+   * If [index][google.spanner.v1.ReadRequest.index] is present, then
+   * [key_set][google.spanner.v1.ReadRequest.key_set] instead names index keys
+   * in [index][google.spanner.v1.ReadRequest.index].
+   *
+   * If the [partition_token][google.spanner.v1.ReadRequest.partition_token]
+   * field is empty, rows are yielded in table primary key order (if
+   * [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
+   * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the
+   * [partition_token][google.spanner.v1.ReadRequest.partition_token] field is
+   * not empty, rows will be yielded in an unspecified order.
    *
    * It is not an error for the `key_set` to name rows that do not
    * exist in the database. Read yields nothing for nonexistent rows.
@@ -250,14 +264,18 @@ public interface ReadRequestOrBuilder
    *
    * 
    * Required. `key_set` identifies the rows to be yielded. `key_set` names the
-   * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index]
-   * is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names
-   * index keys in [index][google.spanner.v1.ReadRequest.index].
-   *
-   * If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded
-   * in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
-   * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not
-   * empty, rows will be yielded in an unspecified order.
+   * primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to
+   * be yielded, unless [index][google.spanner.v1.ReadRequest.index] is present.
+   * If [index][google.spanner.v1.ReadRequest.index] is present, then
+   * [key_set][google.spanner.v1.ReadRequest.key_set] instead names index keys
+   * in [index][google.spanner.v1.ReadRequest.index].
+   *
+   * If the [partition_token][google.spanner.v1.ReadRequest.partition_token]
+   * field is empty, rows are yielded in table primary key order (if
+   * [index][google.spanner.v1.ReadRequest.index] is empty) or index key order
+   * (if [index][google.spanner.v1.ReadRequest.index] is non-empty).  If the
+   * [partition_token][google.spanner.v1.ReadRequest.partition_token] field is
+   * not empty, rows will be yielded in an unspecified order.
    *
    * It is not an error for the `key_set` to name rows that do not
    * exist in the database. Read yields nothing for nonexistent rows.
@@ -288,9 +306,9 @@ public interface ReadRequestOrBuilder
    * 
    * If this request is resuming a previously interrupted read,
    * `resume_token` should be copied from the last
-   * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the interruption. Doing this
-   * enables the new read to resume where the last read left off. The
-   * rest of the request parameters must exactly match the request
+   * [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the
+   * interruption. Doing this enables the new read to resume where the last read
+   * left off. The rest of the request parameters must exactly match the request
    * that yielded this token.
    * 
* @@ -351,15 +369,50 @@ public interface ReadRequestOrBuilder */ com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder(); + /** + * + * + *
+   * Directed read options for this request.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 14; + * + * @return Whether the directedReadOptions field is set. + */ + boolean hasDirectedReadOptions(); + /** + * + * + *
+   * Directed read options for this request.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 14; + * + * @return The directedReadOptions. + */ + com.google.spanner.v1.DirectedReadOptions getDirectedReadOptions(); + /** + * + * + *
+   * Directed read options for this request.
+   * 
+ * + * .google.spanner.v1.DirectedReadOptions directed_read_options = 14; + */ + com.google.spanner.v1.DirectedReadOptionsOrBuilder getDirectedReadOptionsOrBuilder(); + /** * * *
    * If this is for a partitioned read and this field is set to `true`, the
-   * request will be executed via Spanner independent compute resources.
+   * request is executed with Spanner Data Boost independent compute resources.
    *
    * If the field is set to `true` but the request does not set
-   * `partition_token`, the API will return an `INVALID_ARGUMENT` error.
+   * `partition_token`, the API returns an `INVALID_ARGUMENT` error.
    * 
* * bool data_boost_enabled = 15; diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerProto.java index daa5ed9f50e..37a423159ae 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerProto.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerProto.java @@ -67,6 +67,22 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_spanner_v1_RequestOptions_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_spanner_v1_RequestOptions_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_DirectedReadOptions_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_DirectedReadOptions_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_DirectedReadOptions_ReplicaSelection_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_DirectedReadOptions_ReplicaSelection_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_DirectedReadOptions_IncludeReplicas_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_DirectedReadOptions_IncludeReplicas_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_DirectedReadOptions_ExcludeReplicas_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_DirectedReadOptions_ExcludeReplicas_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_google_spanner_v1_ExecuteSqlRequest_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable @@ -157,13 +173,13 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { static { java.lang.String[] descriptorData = { "\n\037google/spanner/v1/spanner.proto\022\021googl" - + "e.spanner.v1\032\034google/api/annotations.pro" - + "to\032\027google/api/client.proto\032\037google/api/" - + "field_behavior.proto\032\031google/api/resourc" - + "e.proto\032\033google/protobuf/empty.proto\032\034go" - + "ogle/protobuf/struct.proto\032\037google/proto" - + "buf/timestamp.proto\032\027google/rpc/status.p" - + "roto\032\'google/spanner/v1/commit_response." + + "e.spanner.v1\032\'google/spanner/v1/commit_r" + + "esponse.proto\032\034google/api/annotations.pr" + + "oto\032\027google/api/client.proto\032\037google/api" + + "/field_behavior.proto\032\031google/api/resour" + + "ce.proto\032\033google/protobuf/empty.proto\032\034g" + + "oogle/protobuf/struct.proto\032\037google/prot" + + "obuf/timestamp.proto\032\027google/rpc/status." + "proto\032\034google/spanner/v1/keys.proto\032 goo" + "gle/spanner/v1/mutation.proto\032\"google/sp" + "anner/v1/result_set.proto\032#google/spanne" @@ -203,193 +219,213 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "ag\030\002 \001(\t\022\027\n\017transaction_tag\030\003 \001(\t\"^\n\010Pri" + "ority\022\030\n\024PRIORITY_UNSPECIFIED\020\000\022\020\n\014PRIOR" + "ITY_LOW\020\001\022\023\n\017PRIORITY_MEDIUM\020\002\022\021\n\rPRIORI" - + "TY_HIGH\020\003\"\202\006\n\021ExecuteSqlRequest\0228\n\007sessi" - + "on\030\001 \001(\tB\'\342A\001\002\372A \n\036spanner.googleapis.co" - + "m/Session\022;\n\013transaction\030\002 \001(\0132&.google." - + "spanner.v1.TransactionSelector\022\021\n\003sql\030\003 " - + "\001(\tB\004\342A\001\002\022\'\n\006params\030\004 \001(\0132\027.google.proto" - + "buf.Struct\022I\n\013param_types\030\005 \003(\01324.google" - + ".spanner.v1.ExecuteSqlRequest.ParamTypes" - + "Entry\022\024\n\014resume_token\030\006 \001(\014\022B\n\nquery_mod" - + "e\030\007 \001(\0162..google.spanner.v1.ExecuteSqlRe" - + "quest.QueryMode\022\027\n\017partition_token\030\010 \001(\014" - + "\022\r\n\005seqno\030\t \001(\003\022H\n\rquery_options\030\n \001(\01321" - + ".google.spanner.v1.ExecuteSqlRequest.Que" - + "ryOptions\022:\n\017request_options\030\013 \001(\0132!.goo" - + "gle.spanner.v1.RequestOptions\022\032\n\022data_bo" - + "ost_enabled\030\020 \001(\010\032O\n\014QueryOptions\022\031\n\021opt" - + "imizer_version\030\001 \001(\t\022$\n\034optimizer_statis" - + "tics_package\030\002 \001(\t\032J\n\017ParamTypesEntry\022\013\n" - + "\003key\030\001 \001(\t\022&\n\005value\030\002 \001(\0132\027.google.spann" - + "er.v1.Type:\0028\001\".\n\tQueryMode\022\n\n\006NORMAL\020\000\022" - + "\010\n\004PLAN\020\001\022\013\n\007PROFILE\020\002\"\245\004\n\026ExecuteBatchD" - + "mlRequest\0228\n\007session\030\001 \001(\tB\'\342A\001\002\372A \n\036spa" - + "nner.googleapis.com/Session\022A\n\013transacti" - + "on\030\002 \001(\0132&.google.spanner.v1.Transaction" - + "SelectorB\004\342A\001\002\022M\n\nstatements\030\003 \003(\01323.goo" - + "gle.spanner.v1.ExecuteBatchDmlRequest.St" - + "atementB\004\342A\001\002\022\023\n\005seqno\030\004 \001(\003B\004\342A\001\002\022:\n\017re" - + "quest_options\030\005 \001(\0132!.google.spanner.v1." - + "RequestOptions\032\355\001\n\tStatement\022\021\n\003sql\030\001 \001(" - + "\tB\004\342A\001\002\022\'\n\006params\030\002 \001(\0132\027.google.protobu" - + "f.Struct\022X\n\013param_types\030\003 \003(\0132C.google.s" - + "panner.v1.ExecuteBatchDmlRequest.Stateme" - + "nt.ParamTypesEntry\032J\n\017ParamTypesEntry\022\013\n" - + "\003key\030\001 \001(\t\022&\n\005value\030\002 \001(\0132\027.google.spann" - + "er.v1.Type:\0028\001\"p\n\027ExecuteBatchDmlRespons" - + "e\0221\n\013result_sets\030\001 \003(\0132\034.google.spanner." - + "v1.ResultSet\022\"\n\006status\030\002 \001(\0132\022.google.rp" - + "c.Status\"H\n\020PartitionOptions\022\034\n\024partitio" - + "n_size_bytes\030\001 \001(\003\022\026\n\016max_partitions\030\002 \001" - + "(\003\"\245\003\n\025PartitionQueryRequest\0228\n\007session\030" - + "\001 \001(\tB\'\342A\001\002\372A \n\036spanner.googleapis.com/S" - + "ession\022;\n\013transaction\030\002 \001(\0132&.google.spa" - + "nner.v1.TransactionSelector\022\021\n\003sql\030\003 \001(\t" - + "B\004\342A\001\002\022\'\n\006params\030\004 \001(\0132\027.google.protobuf" - + ".Struct\022M\n\013param_types\030\005 \003(\01328.google.sp" - + "anner.v1.PartitionQueryRequest.ParamType" - + "sEntry\022>\n\021partition_options\030\006 \001(\0132#.goog" - + "le.spanner.v1.PartitionOptions\032J\n\017ParamT" + + "TY_HIGH\020\003\"\352\004\n\023DirectedReadOptions\022R\n\020inc" + + "lude_replicas\030\001 \001(\01326.google.spanner.v1." + + "DirectedReadOptions.IncludeReplicasH\000\022R\n" + + "\020exclude_replicas\030\002 \001(\01326.google.spanner" + + ".v1.DirectedReadOptions.ExcludeReplicasH" + + "\000\032\255\001\n\020ReplicaSelection\022\020\n\010location\030\001 \001(\t" + + "\022J\n\004type\030\002 \001(\0162<.google.spanner.v1.Direc" + + "tedReadOptions.ReplicaSelection.Type\";\n\004" + + "Type\022\024\n\020TYPE_UNSPECIFIED\020\000\022\016\n\nREAD_WRITE" + + "\020\001\022\r\n\tREAD_ONLY\020\002\032\206\001\n\017IncludeReplicas\022S\n" + + "\022replica_selections\030\001 \003(\01327.google.spann" + + "er.v1.DirectedReadOptions.ReplicaSelecti" + + "on\022\036\n\026auto_failover_disabled\030\002 \001(\010\032f\n\017Ex" + + "cludeReplicas\022S\n\022replica_selections\030\001 \003(" + + "\01327.google.spanner.v1.DirectedReadOption" + + "s.ReplicaSelectionB\n\n\010replicas\"\311\006\n\021Execu" + + "teSqlRequest\0228\n\007session\030\001 \001(\tB\'\342A\001\002\372A \n\036" + + "spanner.googleapis.com/Session\022;\n\013transa" + + "ction\030\002 \001(\0132&.google.spanner.v1.Transact" + + "ionSelector\022\021\n\003sql\030\003 \001(\tB\004\342A\001\002\022\'\n\006params" + + "\030\004 \001(\0132\027.google.protobuf.Struct\022I\n\013param" + + "_types\030\005 \003(\01324.google.spanner.v1.Execute" + + "SqlRequest.ParamTypesEntry\022\024\n\014resume_tok" + + "en\030\006 \001(\014\022B\n\nquery_mode\030\007 \001(\0162..google.sp" + + "anner.v1.ExecuteSqlRequest.QueryMode\022\027\n\017" + + "partition_token\030\010 \001(\014\022\r\n\005seqno\030\t \001(\003\022H\n\r" + + "query_options\030\n \001(\01321.google.spanner.v1." + + "ExecuteSqlRequest.QueryOptions\022:\n\017reques" + + "t_options\030\013 \001(\0132!.google.spanner.v1.Requ" + + "estOptions\022E\n\025directed_read_options\030\017 \001(" + + "\0132&.google.spanner.v1.DirectedReadOption" + + "s\022\032\n\022data_boost_enabled\030\020 \001(\010\032O\n\014QueryOp" + + "tions\022\031\n\021optimizer_version\030\001 \001(\t\022$\n\034opti" + + "mizer_statistics_package\030\002 \001(\t\032J\n\017ParamT" + + "ypesEntry\022\013\n\003key\030\001 \001(\t\022&\n\005value\030\002 \001(\0132\027." + + "google.spanner.v1.Type:\0028\001\".\n\tQueryMode\022" + + "\n\n\006NORMAL\020\000\022\010\n\004PLAN\020\001\022\013\n\007PROFILE\020\002\"\245\004\n\026E" + + "xecuteBatchDmlRequest\0228\n\007session\030\001 \001(\tB\'" + + "\342A\001\002\372A \n\036spanner.googleapis.com/Session\022" + + "A\n\013transaction\030\002 \001(\0132&.google.spanner.v1" + + ".TransactionSelectorB\004\342A\001\002\022M\n\nstatements" + + "\030\003 \003(\01323.google.spanner.v1.ExecuteBatchD" + + "mlRequest.StatementB\004\342A\001\002\022\023\n\005seqno\030\004 \001(\003" + + "B\004\342A\001\002\022:\n\017request_options\030\005 \001(\0132!.google" + + ".spanner.v1.RequestOptions\032\355\001\n\tStatement" + + "\022\021\n\003sql\030\001 \001(\tB\004\342A\001\002\022\'\n\006params\030\002 \001(\0132\027.go" + + "ogle.protobuf.Struct\022X\n\013param_types\030\003 \003(" + + "\0132C.google.spanner.v1.ExecuteBatchDmlReq" + + "uest.Statement.ParamTypesEntry\032J\n\017ParamT" + "ypesEntry\022\013\n\003key\030\001 \001(\t\022&\n\005value\030\002 \001(\0132\027." - + "google.spanner.v1.Type:\0028\001\"\264\002\n\024Partition" - + "ReadRequest\0228\n\007session\030\001 \001(\tB\'\342A\001\002\372A \n\036s" - + "panner.googleapis.com/Session\022;\n\013transac" - + "tion\030\002 \001(\0132&.google.spanner.v1.Transacti" - + "onSelector\022\023\n\005table\030\003 \001(\tB\004\342A\001\002\022\r\n\005index" - + "\030\004 \001(\t\022\017\n\007columns\030\005 \003(\t\0220\n\007key_set\030\006 \001(\013" - + "2\031.google.spanner.v1.KeySetB\004\342A\001\002\022>\n\021par" - + "tition_options\030\t \001(\0132#.google.spanner.v1" - + ".PartitionOptions\"$\n\tPartition\022\027\n\017partit" - + "ion_token\030\001 \001(\014\"z\n\021PartitionResponse\0220\n\n" - + "partitions\030\001 \003(\0132\034.google.spanner.v1.Par" - + "tition\0223\n\013transaction\030\002 \001(\0132\036.google.spa" - + "nner.v1.Transaction\"\207\003\n\013ReadRequest\0228\n\007s" - + "ession\030\001 \001(\tB\'\342A\001\002\372A \n\036spanner.googleapi" - + "s.com/Session\022;\n\013transaction\030\002 \001(\0132&.goo" - + "gle.spanner.v1.TransactionSelector\022\023\n\005ta" - + "ble\030\003 \001(\tB\004\342A\001\002\022\r\n\005index\030\004 \001(\t\022\025\n\007column" - + "s\030\005 \003(\tB\004\342A\001\002\0220\n\007key_set\030\006 \001(\0132\031.google." - + "spanner.v1.KeySetB\004\342A\001\002\022\r\n\005limit\030\010 \001(\003\022\024" - + "\n\014resume_token\030\t \001(\014\022\027\n\017partition_token\030" - + "\n \001(\014\022:\n\017request_options\030\013 \001(\0132!.google." - + "spanner.v1.RequestOptions\022\032\n\022data_boost_" - + "enabled\030\017 \001(\010\"\315\001\n\027BeginTransactionReques" - + "t\0228\n\007session\030\001 \001(\tB\'\342A\001\002\372A \n\036spanner.goo" - + "gleapis.com/Session\022<\n\007options\030\002 \001(\0132%.g" - + "oogle.spanner.v1.TransactionOptionsB\004\342A\001" - + "\002\022:\n\017request_options\030\003 \001(\0132!.google.span" - + "ner.v1.RequestOptions\"\304\002\n\rCommitRequest\022" - + "8\n\007session\030\001 \001(\tB\'\342A\001\002\372A \n\036spanner.googl" - + "eapis.com/Session\022\030\n\016transaction_id\030\002 \001(" - + "\014H\000\022G\n\026single_use_transaction\030\003 \001(\0132%.go" - + "ogle.spanner.v1.TransactionOptionsH\000\022.\n\t" - + "mutations\030\004 \003(\0132\033.google.spanner.v1.Muta" - + "tion\022\033\n\023return_commit_stats\030\005 \001(\010\022:\n\017req" - + "uest_options\030\006 \001(\0132!.google.spanner.v1.R" - + "equestOptionsB\r\n\013transaction\"i\n\017Rollback" + + "google.spanner.v1.Type:\0028\001\"p\n\027ExecuteBat" + + "chDmlResponse\0221\n\013result_sets\030\001 \003(\0132\034.goo" + + "gle.spanner.v1.ResultSet\022\"\n\006status\030\002 \001(\013" + + "2\022.google.rpc.Status\"H\n\020PartitionOptions" + + "\022\034\n\024partition_size_bytes\030\001 \001(\003\022\026\n\016max_pa" + + "rtitions\030\002 \001(\003\"\245\003\n\025PartitionQueryRequest" + + "\0228\n\007session\030\001 \001(\tB\'\342A\001\002\372A \n\036spanner.goog" + + "leapis.com/Session\022;\n\013transaction\030\002 \001(\0132" + + "&.google.spanner.v1.TransactionSelector\022" + + "\021\n\003sql\030\003 \001(\tB\004\342A\001\002\022\'\n\006params\030\004 \001(\0132\027.goo" + + "gle.protobuf.Struct\022M\n\013param_types\030\005 \003(\013" + + "28.google.spanner.v1.PartitionQueryReque" + + "st.ParamTypesEntry\022>\n\021partition_options\030" + + "\006 \001(\0132#.google.spanner.v1.PartitionOptio" + + "ns\032J\n\017ParamTypesEntry\022\013\n\003key\030\001 \001(\t\022&\n\005va" + + "lue\030\002 \001(\0132\027.google.spanner.v1.Type:\0028\001\"\264" + + "\002\n\024PartitionReadRequest\0228\n\007session\030\001 \001(\t" + + "B\'\342A\001\002\372A \n\036spanner.googleapis.com/Sessio" + + "n\022;\n\013transaction\030\002 \001(\0132&.google.spanner." + + "v1.TransactionSelector\022\023\n\005table\030\003 \001(\tB\004\342" + + "A\001\002\022\r\n\005index\030\004 \001(\t\022\017\n\007columns\030\005 \003(\t\0220\n\007k" + + "ey_set\030\006 \001(\0132\031.google.spanner.v1.KeySetB" + + "\004\342A\001\002\022>\n\021partition_options\030\t \001(\0132#.googl" + + "e.spanner.v1.PartitionOptions\"$\n\tPartiti" + + "on\022\027\n\017partition_token\030\001 \001(\014\"z\n\021Partition" + + "Response\0220\n\npartitions\030\001 \003(\0132\034.google.sp" + + "anner.v1.Partition\0223\n\013transaction\030\002 \001(\0132" + + "\036.google.spanner.v1.Transaction\"\316\003\n\013Read" + "Request\0228\n\007session\030\001 \001(\tB\'\342A\001\002\372A \n\036spann" - + "er.googleapis.com/Session\022\034\n\016transaction" - + "_id\030\002 \001(\014B\004\342A\001\002\"\243\002\n\021BatchWriteRequest\0228\n" - + "\007session\030\001 \001(\tB\'\342A\001\002\372A \n\036spanner.googlea" - + "pis.com/Session\022:\n\017request_options\030\003 \001(\013" - + "2!.google.spanner.v1.RequestOptions\022Q\n\017m" - + "utation_groups\030\004 \003(\01322.google.spanner.v1" - + ".BatchWriteRequest.MutationGroupB\004\342A\001\002\032E" - + "\n\rMutationGroup\0224\n\tmutations\030\001 \003(\0132\033.goo" - + "gle.spanner.v1.MutationB\004\342A\001\002\"\177\n\022BatchWr" - + "iteResponse\022\017\n\007indexes\030\001 \003(\005\022\"\n\006status\030\002" - + " \001(\0132\022.google.rpc.Status\0224\n\020commit_times" - + "tamp\030\003 \001(\0132\032.google.protobuf.Timestamp2\213" - + "\030\n\007Spanner\022\246\001\n\rCreateSession\022\'.google.sp" - + "anner.v1.CreateSessionRequest\032\032.google.s" - + "panner.v1.Session\"P\332A\010database\202\323\344\223\002?\":/v" - + "1/{database=projects/*/instances/*/datab" - + "ases/*}/sessions:\001*\022\340\001\n\023BatchCreateSessi" - + "ons\022-.google.spanner.v1.BatchCreateSessi" - + "onsRequest\032..google.spanner.v1.BatchCrea" - + "teSessionsResponse\"j\332A\026database,session_" - + "count\202\323\344\223\002K\"F/v1/{database=projects/*/in" - + "stances/*/databases/*}/sessions:batchCre" - + "ate:\001*\022\227\001\n\nGetSession\022$.google.spanner.v" - + "1.GetSessionRequest\032\032.google.spanner.v1." - + "Session\"G\332A\004name\202\323\344\223\002:\0228/v1/{name=projec" - + "ts/*/instances/*/databases/*/sessions/*}" - + "\022\256\001\n\014ListSessions\022&.google.spanner.v1.Li" - + "stSessionsRequest\032\'.google.spanner.v1.Li" - + "stSessionsResponse\"M\332A\010database\202\323\344\223\002<\022:/" - + "v1/{database=projects/*/instances/*/data" - + "bases/*}/sessions\022\231\001\n\rDeleteSession\022\'.go" - + "ogle.spanner.v1.DeleteSessionRequest\032\026.g" - + "oogle.protobuf.Empty\"G\332A\004name\202\323\344\223\002:*8/v1" - + "/{name=projects/*/instances/*/databases/" - + "*/sessions/*}\022\243\001\n\nExecuteSql\022$.google.sp" - + "anner.v1.ExecuteSqlRequest\032\034.google.span" - + "ner.v1.ResultSet\"Q\202\323\344\223\002K\"F/v1/{session=p" + + "er.googleapis.com/Session\022;\n\013transaction" + + "\030\002 \001(\0132&.google.spanner.v1.TransactionSe" + + "lector\022\023\n\005table\030\003 \001(\tB\004\342A\001\002\022\r\n\005index\030\004 \001" + + "(\t\022\025\n\007columns\030\005 \003(\tB\004\342A\001\002\0220\n\007key_set\030\006 \001" + + "(\0132\031.google.spanner.v1.KeySetB\004\342A\001\002\022\r\n\005l" + + "imit\030\010 \001(\003\022\024\n\014resume_token\030\t \001(\014\022\027\n\017part" + + "ition_token\030\n \001(\014\022:\n\017request_options\030\013 \001" + + "(\0132!.google.spanner.v1.RequestOptions\022E\n" + + "\025directed_read_options\030\016 \001(\0132&.google.sp" + + "anner.v1.DirectedReadOptions\022\032\n\022data_boo" + + "st_enabled\030\017 \001(\010\"\315\001\n\027BeginTransactionReq" + + "uest\0228\n\007session\030\001 \001(\tB\'\342A\001\002\372A \n\036spanner." + + "googleapis.com/Session\022<\n\007options\030\002 \001(\0132" + + "%.google.spanner.v1.TransactionOptionsB\004" + + "\342A\001\002\022:\n\017request_options\030\003 \001(\0132!.google.s" + + "panner.v1.RequestOptions\"\304\002\n\rCommitReque" + + "st\0228\n\007session\030\001 \001(\tB\'\342A\001\002\372A \n\036spanner.go" + + "ogleapis.com/Session\022\030\n\016transaction_id\030\002" + + " \001(\014H\000\022G\n\026single_use_transaction\030\003 \001(\0132%" + + ".google.spanner.v1.TransactionOptionsH\000\022" + + ".\n\tmutations\030\004 \003(\0132\033.google.spanner.v1.M" + + "utation\022\033\n\023return_commit_stats\030\005 \001(\010\022:\n\017" + + "request_options\030\006 \001(\0132!.google.spanner.v" + + "1.RequestOptionsB\r\n\013transaction\"i\n\017Rollb" + + "ackRequest\0228\n\007session\030\001 \001(\tB\'\342A\001\002\372A \n\036sp" + + "anner.googleapis.com/Session\022\034\n\016transact" + + "ion_id\030\002 \001(\014B\004\342A\001\002\"\243\002\n\021BatchWriteRequest" + + "\0228\n\007session\030\001 \001(\tB\'\342A\001\002\372A \n\036spanner.goog" + + "leapis.com/Session\022:\n\017request_options\030\003 " + + "\001(\0132!.google.spanner.v1.RequestOptions\022Q" + + "\n\017mutation_groups\030\004 \003(\01322.google.spanner" + + ".v1.BatchWriteRequest.MutationGroupB\004\342A\001" + + "\002\032E\n\rMutationGroup\0224\n\tmutations\030\001 \003(\0132\033." + + "google.spanner.v1.MutationB\004\342A\001\002\"\177\n\022Batc" + + "hWriteResponse\022\017\n\007indexes\030\001 \003(\005\022\"\n\006statu" + + "s\030\002 \001(\0132\022.google.rpc.Status\0224\n\020commit_ti" + + "mestamp\030\003 \001(\0132\032.google.protobuf.Timestam" + + "p2\213\030\n\007Spanner\022\246\001\n\rCreateSession\022\'.google" + + ".spanner.v1.CreateSessionRequest\032\032.googl" + + "e.spanner.v1.Session\"P\332A\010database\202\323\344\223\002?\"" + + ":/v1/{database=projects/*/instances/*/da" + + "tabases/*}/sessions:\001*\022\340\001\n\023BatchCreateSe" + + "ssions\022-.google.spanner.v1.BatchCreateSe" + + "ssionsRequest\032..google.spanner.v1.BatchC" + + "reateSessionsResponse\"j\332A\026database,sessi" + + "on_count\202\323\344\223\002K\"F/v1/{database=projects/*" + + "/instances/*/databases/*}/sessions:batch" + + "Create:\001*\022\227\001\n\nGetSession\022$.google.spanne" + + "r.v1.GetSessionRequest\032\032.google.spanner." + + "v1.Session\"G\332A\004name\202\323\344\223\002:\0228/v1/{name=pro" + + "jects/*/instances/*/databases/*/sessions" + + "/*}\022\256\001\n\014ListSessions\022&.google.spanner.v1" + + ".ListSessionsRequest\032\'.google.spanner.v1" + + ".ListSessionsResponse\"M\332A\010database\202\323\344\223\002<" + + "\022:/v1/{database=projects/*/instances/*/d" + + "atabases/*}/sessions\022\231\001\n\rDeleteSession\022\'" + + ".google.spanner.v1.DeleteSessionRequest\032" + + "\026.google.protobuf.Empty\"G\332A\004name\202\323\344\223\002:*8" + + "/v1/{name=projects/*/instances/*/databas" + + "es/*/sessions/*}\022\243\001\n\nExecuteSql\022$.google" + + ".spanner.v1.ExecuteSqlRequest\032\034.google.s" + + "panner.v1.ResultSet\"Q\202\323\344\223\002K\"F/v1/{sessio" + + "n=projects/*/instances/*/databases/*/ses" + + "sions/*}:executeSql:\001*\022\276\001\n\023ExecuteStream" + + "ingSql\022$.google.spanner.v1.ExecuteSqlReq" + + "uest\032#.google.spanner.v1.PartialResultSe" + + "t\"Z\202\323\344\223\002T\"O/v1/{session=projects/*/insta" + + "nces/*/databases/*/sessions/*}:executeSt" + + "reamingSql:\001*0\001\022\300\001\n\017ExecuteBatchDml\022).go" + + "ogle.spanner.v1.ExecuteBatchDmlRequest\032*" + + ".google.spanner.v1.ExecuteBatchDmlRespon" + + "se\"V\202\323\344\223\002P\"K/v1/{session=projects/*/inst" + + "ances/*/databases/*/sessions/*}:executeB" + + "atchDml:\001*\022\221\001\n\004Read\022\036.google.spanner.v1." + + "ReadRequest\032\034.google.spanner.v1.ResultSe" + + "t\"K\202\323\344\223\002E\"@/v1/{session=projects/*/insta" + + "nces/*/databases/*/sessions/*}:read:\001*\022\254" + + "\001\n\rStreamingRead\022\036.google.spanner.v1.Rea" + + "dRequest\032#.google.spanner.v1.PartialResu" + + "ltSet\"T\202\323\344\223\002N\"I/v1/{session=projects/*/i" + + "nstances/*/databases/*/sessions/*}:strea" + + "mingRead:\001*0\001\022\311\001\n\020BeginTransaction\022*.goo" + + "gle.spanner.v1.BeginTransactionRequest\032\036" + + ".google.spanner.v1.Transaction\"i\332A\017sessi" + + "on,options\202\323\344\223\002Q\"L/v1/{session=projects/" + + "*/instances/*/databases/*/sessions/*}:be" + + "ginTransaction:\001*\022\353\001\n\006Commit\022 .google.sp" + + "anner.v1.CommitRequest\032!.google.spanner." + + "v1.CommitResponse\"\233\001\332A session,transacti" + + "on_id,mutations\332A(session,single_use_tra" + + "nsaction,mutations\202\323\344\223\002G\"B/v1/{session=p" + "rojects/*/instances/*/databases/*/sessio" - + "ns/*}:executeSql:\001*\022\276\001\n\023ExecuteStreaming" - + "Sql\022$.google.spanner.v1.ExecuteSqlReques" - + "t\032#.google.spanner.v1.PartialResultSet\"Z" - + "\202\323\344\223\002T\"O/v1/{session=projects/*/instance" - + "s/*/databases/*/sessions/*}:executeStrea" - + "mingSql:\001*0\001\022\300\001\n\017ExecuteBatchDml\022).googl" - + "e.spanner.v1.ExecuteBatchDmlRequest\032*.go" - + "ogle.spanner.v1.ExecuteBatchDmlResponse\"" - + "V\202\323\344\223\002P\"K/v1/{session=projects/*/instanc" - + "es/*/databases/*/sessions/*}:executeBatc" - + "hDml:\001*\022\221\001\n\004Read\022\036.google.spanner.v1.Rea" - + "dRequest\032\034.google.spanner.v1.ResultSet\"K" - + "\202\323\344\223\002E\"@/v1/{session=projects/*/instance" - + "s/*/databases/*/sessions/*}:read:\001*\022\254\001\n\r" - + "StreamingRead\022\036.google.spanner.v1.ReadRe" - + "quest\032#.google.spanner.v1.PartialResultS" - + "et\"T\202\323\344\223\002N\"I/v1/{session=projects/*/inst" - + "ances/*/databases/*/sessions/*}:streamin" - + "gRead:\001*0\001\022\311\001\n\020BeginTransaction\022*.google" - + ".spanner.v1.BeginTransactionRequest\032\036.go" - + "ogle.spanner.v1.Transaction\"i\332A\017session," - + "options\202\323\344\223\002Q\"L/v1/{session=projects/*/i" - + "nstances/*/databases/*/sessions/*}:begin" - + "Transaction:\001*\022\353\001\n\006Commit\022 .google.spann" - + "er.v1.CommitRequest\032!.google.spanner.v1." - + "CommitResponse\"\233\001\332A session,transaction_" - + "id,mutations\332A(session,single_use_transa" - + "ction,mutations\202\323\344\223\002G\"B/v1/{session=proj" + + "ns/*}:commit:\001*\022\260\001\n\010Rollback\022\".google.sp" + + "anner.v1.RollbackRequest\032\026.google.protob" + + "uf.Empty\"h\332A\026session,transaction_id\202\323\344\223\002" + + "I\"D/v1/{session=projects/*/instances/*/d" + + "atabases/*/sessions/*}:rollback:\001*\022\267\001\n\016P" + + "artitionQuery\022(.google.spanner.v1.Partit" + + "ionQueryRequest\032$.google.spanner.v1.Part" + + "itionResponse\"U\202\323\344\223\002O\"J/v1/{session=proj" + "ects/*/instances/*/databases/*/sessions/" - + "*}:commit:\001*\022\260\001\n\010Rollback\022\".google.spann" - + "er.v1.RollbackRequest\032\026.google.protobuf." - + "Empty\"h\332A\026session,transaction_id\202\323\344\223\002I\"D" - + "/v1/{session=projects/*/instances/*/data" - + "bases/*/sessions/*}:rollback:\001*\022\267\001\n\016Part" - + "itionQuery\022(.google.spanner.v1.Partition" - + "QueryRequest\032$.google.spanner.v1.Partiti" - + "onResponse\"U\202\323\344\223\002O\"J/v1/{session=project" - + "s/*/instances/*/databases/*/sessions/*}:" - + "partitionQuery:\001*\022\264\001\n\rPartitionRead\022\'.go" - + "ogle.spanner.v1.PartitionReadRequest\032$.g" - + "oogle.spanner.v1.PartitionResponse\"T\202\323\344\223" - + "\002N\"I/v1/{session=projects/*/instances/*/" - + "databases/*/sessions/*}:partitionRead:\001*" - + "\022\310\001\n\nBatchWrite\022$.google.spanner.v1.Batc" - + "hWriteRequest\032%.google.spanner.v1.BatchW" - + "riteResponse\"k\332A\027session,mutation_groups" - + "\202\323\344\223\002K\"F/v1/{session=projects/*/instance" - + "s/*/databases/*/sessions/*}:batchWrite:\001" - + "*0\001\032w\312A\026spanner.googleapis.com\322A[https:/" - + "/www.googleapis.com/auth/cloud-platform," - + "https://www.googleapis.com/auth/spanner." - + "dataB\221\002\n\025com.google.spanner.v1B\014SpannerP" - + "rotoP\001Z5cloud.google.com/go/spanner/apiv" - + "1/spannerpb;spannerpb\252\002\027Google.Cloud.Spa" - + "nner.V1\312\002\027Google\\Cloud\\Spanner\\V1\352\002\032Goog" - + "le::Cloud::Spanner::V1\352A_\n\037spanner.googl" - + "eapis.com/Database\022PG_JSONB = 3; */ PG_JSONB(3), + /** + * + * + *
+   * PostgreSQL compatible OID type. This annotation can be used by a client
+   * interacting with PostgreSQL-enabled Spanner database to specify that a
+   * value should be treated using the semantics of the OID type.
+   * 
+ * + * PG_OID = 4; + */ + PG_OID(4), UNRECOGNIZED(-1), ; @@ -115,6 +127,18 @@ public enum TypeAnnotationCode implements com.google.protobuf.ProtocolMessageEnu * PG_JSONB = 3; */ public static final int PG_JSONB_VALUE = 3; + /** + * + * + *
+   * PostgreSQL compatible OID type. This annotation can be used by a client
+   * interacting with PostgreSQL-enabled Spanner database to specify that a
+   * value should be treated using the semantics of the OID type.
+   * 
+ * + * PG_OID = 4; + */ + public static final int PG_OID_VALUE = 4; public final int getNumber() { if (this == UNRECOGNIZED) { @@ -146,6 +170,8 @@ public static TypeAnnotationCode forNumber(int value) { return PG_NUMERIC; case 3: return PG_JSONB; + case 4: + return PG_OID; default: return null; } diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeProto.java index 258de7cb2ec..4df6b4e7c63 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeProto.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TypeProto.java @@ -63,13 +63,14 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\n\004BOOL\020\001\022\t\n\005INT64\020\002\022\013\n\007FLOAT64\020\003\022\r\n\tTIME" + "STAMP\020\004\022\010\n\004DATE\020\005\022\n\n\006STRING\020\006\022\t\n\005BYTES\020\007" + "\022\t\n\005ARRAY\020\010\022\n\n\006STRUCT\020\t\022\013\n\007NUMERIC\020\n\022\010\n\004" - + "JSON\020\013*X\n\022TypeAnnotationCode\022$\n TYPE_ANN" + + "JSON\020\013*d\n\022TypeAnnotationCode\022$\n TYPE_ANN" + "OTATION_CODE_UNSPECIFIED\020\000\022\016\n\nPG_NUMERIC" - + "\020\002\022\014\n\010PG_JSONB\020\003B\254\001\n\025com.google.spanner." - + "v1B\tTypeProtoP\001Z5cloud.google.com/go/spa" - + "nner/apiv1/spannerpb;spannerpb\252\002\027Google." - + "Cloud.Spanner.V1\312\002\027Google\\Cloud\\Spanner\\" - + "V1\352\002\032Google::Cloud::Spanner::V1b\006proto3" + + "\020\002\022\014\n\010PG_JSONB\020\003\022\n\n\006PG_OID\020\004B\254\001\n\025com.goo" + + "gle.spanner.v1B\tTypeProtoP\001Z5cloud.googl" + + "e.com/go/spanner/apiv1/spannerpb;spanner" + + "pb\252\002\027Google.Cloud.Spanner.V1\312\002\027Google\\Cl" + + "oud\\Spanner\\V1\352\002\032Google::Cloud::Spanner:" + + ":V1b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( diff --git a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/spanner.proto b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/spanner.proto index 68d31a47b58..367928a4515 100644 --- a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/spanner.proto +++ b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/spanner.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -16,6 +16,8 @@ syntax = "proto3"; package google.spanner.v1; +import public "google/spanner/v1/commit_response.proto"; + import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; @@ -24,7 +26,6 @@ import "google/protobuf/empty.proto"; import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; import "google/rpc/status.proto"; -import public "google/spanner/v1/commit_response.proto"; import "google/spanner/v1/keys.proto"; import "google/spanner/v1/mutation.proto"; import "google/spanner/v1/result_set.proto"; @@ -84,7 +85,8 @@ service Spanner { // // This API can be used to initialize a session cache on the clients. // See https://goo.gl/TgSFN2 for best practices on session cache management. - rpc BatchCreateSessions(BatchCreateSessionsRequest) returns (BatchCreateSessionsResponse) { + rpc BatchCreateSessions(BatchCreateSessionsRequest) + returns (BatchCreateSessionsResponse) { option (google.api.http) = { post: "/v1/{database=projects/*/instances/*/databases/*}/sessions:batchCreate" body: "*" @@ -127,10 +129,12 @@ service Spanner { // // Operations inside read-write transactions might return `ABORTED`. If // this occurs, the application should restart the transaction from - // the beginning. See [Transaction][google.spanner.v1.Transaction] for more details. + // the beginning. See [Transaction][google.spanner.v1.Transaction] for more + // details. // // Larger result sets can be fetched in streaming fashion by calling - // [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] instead. + // [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] + // instead. rpc ExecuteSql(ExecuteSqlRequest) returns (ResultSet) { option (google.api.http) = { post: "/v1/{session=projects/*/instances/*/databases/*/sessions/*}:executeSql" @@ -138,11 +142,11 @@ service Spanner { }; } - // Like [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], except returns the result - // set as a stream. Unlike [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], there - // is no limit on the size of the returned result set. However, no - // individual row in the result set can exceed 100 MiB, and no - // column value can exceed 10 MiB. + // Like [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], except returns the + // result set as a stream. Unlike + // [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql], there is no limit on + // the size of the returned result set. However, no individual row in the + // result set can exceed 100 MiB, and no column value can exceed 10 MiB. rpc ExecuteStreamingSql(ExecuteSqlRequest) returns (stream PartialResultSet) { option (google.api.http) = { post: "/v1/{session=projects/*/instances/*/databases/*/sessions/*}:executeStreamingSql" @@ -155,13 +159,15 @@ service Spanner { // [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql]. // // Statements are executed in sequential order. A request can succeed even if - // a statement fails. The [ExecuteBatchDmlResponse.status][google.spanner.v1.ExecuteBatchDmlResponse.status] field in the - // response provides information about the statement that failed. Clients must - // inspect this field to determine whether an error occurred. + // a statement fails. The + // [ExecuteBatchDmlResponse.status][google.spanner.v1.ExecuteBatchDmlResponse.status] + // field in the response provides information about the statement that failed. + // Clients must inspect this field to determine whether an error occurred. // // Execution stops after the first failed statement; the remaining statements // are not executed. - rpc ExecuteBatchDml(ExecuteBatchDmlRequest) returns (ExecuteBatchDmlResponse) { + rpc ExecuteBatchDml(ExecuteBatchDmlRequest) + returns (ExecuteBatchDmlResponse) { option (google.api.http) = { post: "/v1/{session=projects/*/instances/*/databases/*/sessions/*}:executeBatchDml" body: "*" @@ -170,14 +176,15 @@ service Spanner { // Reads rows from the database using key lookups and scans, as a // simple key/value style alternative to - // [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql]. This method cannot be used to - // return a result set larger than 10 MiB; if the read matches more + // [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql]. This method cannot be + // used to return a result set larger than 10 MiB; if the read matches more // data than that, the read fails with a `FAILED_PRECONDITION` // error. // // Reads inside read-write transactions might return `ABORTED`. If // this occurs, the application should restart the transaction from - // the beginning. See [Transaction][google.spanner.v1.Transaction] for more details. + // the beginning. See [Transaction][google.spanner.v1.Transaction] for more + // details. // // Larger result sets can be yielded in streaming fashion by calling // [StreamingRead][google.spanner.v1.Spanner.StreamingRead] instead. @@ -188,9 +195,9 @@ service Spanner { }; } - // Like [Read][google.spanner.v1.Spanner.Read], except returns the result set as a - // stream. Unlike [Read][google.spanner.v1.Spanner.Read], there is no limit on the - // size of the returned result set. However, no individual row in + // Like [Read][google.spanner.v1.Spanner.Read], except returns the result set + // as a stream. Unlike [Read][google.spanner.v1.Spanner.Read], there is no + // limit on the size of the returned result set. However, no individual row in // the result set can exceed 100 MiB, and no column value can exceed // 10 MiB. rpc StreamingRead(ReadRequest) returns (stream PartialResultSet) { @@ -201,7 +208,8 @@ service Spanner { } // Begins a new transaction. This step can often be skipped: - // [Read][google.spanner.v1.Spanner.Read], [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] and + // [Read][google.spanner.v1.Spanner.Read], + // [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] and // [Commit][google.spanner.v1.Spanner.Commit] can begin a new transaction as a // side-effect. rpc BeginTransaction(BeginTransactionRequest) returns (Transaction) { @@ -232,13 +240,15 @@ service Spanner { body: "*" }; option (google.api.method_signature) = "session,transaction_id,mutations"; - option (google.api.method_signature) = "session,single_use_transaction,mutations"; + option (google.api.method_signature) = + "session,single_use_transaction,mutations"; } // Rolls back a transaction, releasing any locks it holds. It is a good // idea to call this for any transaction that includes one or more - // [Read][google.spanner.v1.Spanner.Read] or [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] requests and - // ultimately decides not to commit. + // [Read][google.spanner.v1.Spanner.Read] or + // [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] requests and ultimately + // decides not to commit. // // `Rollback` returns `OK` if it successfully aborts the transaction, the // transaction was already aborted, or the transaction is not @@ -253,10 +263,11 @@ service Spanner { // Creates a set of partition tokens that can be used to execute a query // operation in parallel. Each of the returned partition tokens can be used - // by [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] to specify a subset - // of the query result to read. The same session and read-only transaction - // must be used by the PartitionQueryRequest used to create the - // partition tokens and the ExecuteSqlRequests that use the partition tokens. + // by [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] to + // specify a subset of the query result to read. The same session and + // read-only transaction must be used by the PartitionQueryRequest used to + // create the partition tokens and the ExecuteSqlRequests that use the + // partition tokens. // // Partition tokens become invalid when the session used to create them // is deleted, is idle for too long, begins a new transaction, or becomes too @@ -271,12 +282,13 @@ service Spanner { // Creates a set of partition tokens that can be used to execute a read // operation in parallel. Each of the returned partition tokens can be used - // by [StreamingRead][google.spanner.v1.Spanner.StreamingRead] to specify a subset of the read - // result to read. The same session and read-only transaction must be used by - // the PartitionReadRequest used to create the partition tokens and the - // ReadRequests that use the partition tokens. There are no ordering - // guarantees on rows returned among the returned partition tokens, or even - // within each individual StreamingRead call issued with a partition_token. + // by [StreamingRead][google.spanner.v1.Spanner.StreamingRead] to specify a + // subset of the read result to read. The same session and read-only + // transaction must be used by the PartitionReadRequest used to create the + // partition tokens and the ReadRequests that use the partition tokens. There + // are no ordering guarantees on rows returned among the returned partition + // tokens, or even within each individual StreamingRead call issued with a + // partition_token. // // Partition tokens become invalid when the session used to create them // is deleted, is idle for too long, begins a new transaction, or becomes too @@ -327,7 +339,8 @@ message CreateSessionRequest { Session session = 2 [(google.api.field_behavior) = REQUIRED]; } -// The request for [BatchCreateSessions][google.spanner.v1.Spanner.BatchCreateSessions]. +// The request for +// [BatchCreateSessions][google.spanner.v1.Spanner.BatchCreateSessions]. message BatchCreateSessionsRequest { // Required. The database in which the new sessions are created. string database = 1 [ @@ -344,11 +357,13 @@ message BatchCreateSessionsRequest { // The API may return fewer than the requested number of sessions. If a // specific number of sessions are desired, the client can make additional // calls to BatchCreateSessions (adjusting - // [session_count][google.spanner.v1.BatchCreateSessionsRequest.session_count] as necessary). + // [session_count][google.spanner.v1.BatchCreateSessionsRequest.session_count] + // as necessary). int32 session_count = 3 [(google.api.field_behavior) = REQUIRED]; } -// The response for [BatchCreateSessions][google.spanner.v1.Spanner.BatchCreateSessions]. +// The response for +// [BatchCreateSessions][google.spanner.v1.Spanner.BatchCreateSessions]. message BatchCreateSessionsResponse { // The freshly created sessions. repeated Session session = 1; @@ -376,11 +391,13 @@ message Session { map labels = 2; // Output only. The timestamp when the session is created. - google.protobuf.Timestamp create_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; + google.protobuf.Timestamp create_time = 3 + [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The approximate timestamp when the session is last used. It is // typically earlier than the actual last use time. - google.protobuf.Timestamp approximate_last_use_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; + google.protobuf.Timestamp approximate_last_use_time = 4 + [(google.api.field_behavior) = OUTPUT_ONLY]; // The database role which created this session. string creator_role = 5; @@ -391,9 +408,7 @@ message GetSessionRequest { // Required. The name of the session to retrieve. string name = 1 [ (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - type: "spanner.googleapis.com/Session" - } + (google.api.resource_reference) = { type: "spanner.googleapis.com/Session" } ]; } @@ -412,7 +427,8 @@ message ListSessionsRequest { int32 page_size = 2; // If non-empty, `page_token` should contain a - // [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token] from a previous + // [next_page_token][google.spanner.v1.ListSessionsResponse.next_page_token] + // from a previous // [ListSessionsResponse][google.spanner.v1.ListSessionsResponse]. string page_token = 3; @@ -435,8 +451,8 @@ message ListSessionsResponse { repeated Session sessions = 1; // `next_page_token` can be sent in a subsequent - // [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more of the matching - // sessions. + // [ListSessions][google.spanner.v1.Spanner.ListSessions] call to fetch more + // of the matching sessions. string next_page_token = 2; } @@ -445,9 +461,7 @@ message DeleteSessionRequest { // Required. The name of the session to delete. string name = 1 [ (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - type: "spanner.googleapis.com/Session" - } + (google.api.resource_reference) = { type: "spanner.googleapis.com/Session" } ]; } @@ -512,6 +526,86 @@ message RequestOptions { string transaction_tag = 3; } +// The DirectedReadOptions can be used to indicate which replicas or regions +// should be used for non-transactional reads or queries. +// +// DirectedReadOptions may only be specified for a read-only transaction, +// otherwise the API will return an `INVALID_ARGUMENT` error. +message DirectedReadOptions { + // The directed read replica selector. + // Callers must provide one or more of the following fields for replica + // selection: + // + // * `location` - The location must be one of the regions within the + // multi-region configuration of your database. + // * `type` - The type of the replica. + // + // Some examples of using replica_selectors are: + // + // * `location:us-east1` --> The "us-east1" replica(s) of any available type + // will be used to process the request. + // * `type:READ_ONLY` --> The "READ_ONLY" type replica(s) in nearest + // . available location will be used to process the + // request. + // * `location:us-east1 type:READ_ONLY` --> The "READ_ONLY" type replica(s) + // in location "us-east1" will be used to process + // the request. + message ReplicaSelection { + // Indicates the type of replica. + enum Type { + // Not specified. + TYPE_UNSPECIFIED = 0; + + // Read-write replicas support both reads and writes. + READ_WRITE = 1; + + // Read-only replicas only support reads (not writes). + READ_ONLY = 2; + } + + // The location or region of the serving requests, e.g. "us-east1". + string location = 1; + + // The type of replica. + Type type = 2; + } + + // An IncludeReplicas contains a repeated set of ReplicaSelection which + // indicates the order in which replicas should be considered. + message IncludeReplicas { + // The directed read replica selector. + repeated ReplicaSelection replica_selections = 1; + + // If true, Spanner will not route requests to a replica outside the + // include_replicas list when all of the specified replicas are unavailable + // or unhealthy. Default value is `false`. + bool auto_failover_disabled = 2; + } + + // An ExcludeReplicas contains a repeated set of ReplicaSelection that should + // be excluded from serving requests. + message ExcludeReplicas { + // The directed read replica selector. + repeated ReplicaSelection replica_selections = 1; + } + + // Required. Replicas indicates the order in which replicas should be + // considered. At most one of either include_replicas or exclude_replicas + // should be present in the message. + oneof replicas { + // Include_replicas indicates the order of replicas (as they appear in + // this list) to process the request. If auto_failover_disabled is set to + // true and all replicas are exhausted without finding a healthy replica, + // Spanner will wait for a replica in the list to become available, requests + // may fail due to `DEADLINE_EXCEEDED` errors. + IncludeReplicas include_replicas = 1; + + // Exclude_replicas indicates that should be excluded from serving + // requests. Spanner will not route requests to the replicas in this list. + ExcludeReplicas exclude_replicas = 2; + } +} + // The request for [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] and // [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql]. message ExecuteSqlRequest { @@ -585,9 +679,7 @@ message ExecuteSqlRequest { // Required. The session in which the SQL query should be performed. string session = 1 [ (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - type: "spanner.googleapis.com/Session" - } + (google.api.resource_reference) = { type: "spanner.googleapis.com/Session" } ]; // The transaction to use. @@ -622,7 +714,8 @@ message ExecuteSqlRequest { // It is not always possible for Cloud Spanner to infer the right SQL type // from a JSON value. For example, values of type `BYTES` and values - // of type `STRING` both appear in [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. + // of type `STRING` both appear in + // [params][google.spanner.v1.ExecuteSqlRequest.params] as JSON strings. // // In these cases, `param_types` can be used to specify the exact // SQL type for some or all of the SQL statement parameters. See the @@ -632,15 +725,18 @@ message ExecuteSqlRequest { // If this request is resuming a previously interrupted SQL statement // execution, `resume_token` should be copied from the last - // [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the interruption. Doing this - // enables the new SQL statement execution to resume where the last one left - // off. The rest of the request parameters must exactly match the - // request that yielded this token. + // [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the + // interruption. Doing this enables the new SQL statement execution to resume + // where the last one left off. The rest of the request parameters must + // exactly match the request that yielded this token. bytes resume_token = 6; // Used to control the amount of debugging information returned in - // [ResultSetStats][google.spanner.v1.ResultSetStats]. If [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only - // be set to [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL]. + // [ResultSetStats][google.spanner.v1.ResultSetStats]. If + // [partition_token][google.spanner.v1.ExecuteSqlRequest.partition_token] is + // set, [query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] can only + // be set to + // [QueryMode.NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL]. QueryMode query_mode = 7; // If present, results will be restricted to the specified partition @@ -667,11 +763,14 @@ message ExecuteSqlRequest { // Common options for this request. RequestOptions request_options = 11; + // Directed read options for this request. + DirectedReadOptions directed_read_options = 15; + // If this is for a partitioned query and this field is set to `true`, the - // request will be executed via Spanner independent compute resources. + // request is executed with Spanner Data Boost independent compute resources. // // If the field is set to `true` but the request does not set - // `partition_token`, the API will return an `INVALID_ARGUMENT` error. + // `partition_token`, the API returns an `INVALID_ARGUMENT` error. bool data_boost_enabled = 16; } @@ -698,7 +797,9 @@ message ExecuteBatchDmlRequest { // It is not always possible for Cloud Spanner to infer the right SQL type // from a JSON value. For example, values of type `BYTES` and values - // of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + // of type `STRING` both appear in + // [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as + // JSON strings. // // In these cases, `param_types` can be used to specify the exact // SQL type for some or all of the SQL statement parameters. See the @@ -710,9 +811,7 @@ message ExecuteBatchDmlRequest { // Required. The session in which the DML statements should be performed. string session = 1 [ (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - type: "spanner.googleapis.com/Session" - } + (google.api.resource_reference) = { type: "spanner.googleapis.com/Session" } ]; // Required. The transaction to use. Must be a read-write transaction. @@ -722,17 +821,17 @@ message ExecuteBatchDmlRequest { // transaction. TransactionSelector transaction = 2 [(google.api.field_behavior) = REQUIRED]; - // Required. The list of statements to execute in this batch. Statements are executed - // serially, such that the effects of statement `i` are visible to statement - // `i+1`. Each statement must be a DML statement. Execution stops at the - // first failed statement; the remaining statements are not executed. + // Required. The list of statements to execute in this batch. Statements are + // executed serially, such that the effects of statement `i` are visible to + // statement `i+1`. Each statement must be a DML statement. Execution stops at + // the first failed statement; the remaining statements are not executed. // // Callers must provide at least one statement. repeated Statement statements = 3 [(google.api.field_behavior) = REQUIRED]; - // Required. A per-transaction sequence number used to identify this request. This field - // makes each request idempotent such that if the request is received multiple - // times, at most one will succeed. + // Required. A per-transaction sequence number used to identify this request. + // This field makes each request idempotent such that if the request is + // received multiple times, at most one will succeed. // // The sequence number must be monotonically increasing within the // transaction. If a request arrives for the first time with an out-of-order @@ -744,38 +843,47 @@ message ExecuteBatchDmlRequest { RequestOptions request_options = 5; } -// The response for [ExecuteBatchDml][google.spanner.v1.Spanner.ExecuteBatchDml]. Contains a list -// of [ResultSet][google.spanner.v1.ResultSet] messages, one for each DML statement that has successfully -// executed, in the same order as the statements in the request. If a statement -// fails, the status in the response body identifies the cause of the failure. +// The response for +// [ExecuteBatchDml][google.spanner.v1.Spanner.ExecuteBatchDml]. Contains a list +// of [ResultSet][google.spanner.v1.ResultSet] messages, one for each DML +// statement that has successfully executed, in the same order as the statements +// in the request. If a statement fails, the status in the response body +// identifies the cause of the failure. // // To check for DML statements that failed, use the following approach: // -// 1. Check the status in the response message. The [google.rpc.Code][google.rpc.Code] enum +// 1. Check the status in the response message. The +// [google.rpc.Code][google.rpc.Code] enum // value `OK` indicates that all statements were executed successfully. // 2. If the status was not `OK`, check the number of result sets in the -// response. If the response contains `N` [ResultSet][google.spanner.v1.ResultSet] messages, then -// statement `N+1` in the request failed. +// response. If the response contains `N` +// [ResultSet][google.spanner.v1.ResultSet] messages, then statement `N+1` in +// the request failed. // // Example 1: // // * Request: 5 DML statements, all executed successfully. -// * Response: 5 [ResultSet][google.spanner.v1.ResultSet] messages, with the status `OK`. +// * Response: 5 [ResultSet][google.spanner.v1.ResultSet] messages, with the +// status `OK`. // // Example 2: // // * Request: 5 DML statements. The third statement has a syntax error. -// * Response: 2 [ResultSet][google.spanner.v1.ResultSet] messages, and a syntax error (`INVALID_ARGUMENT`) -// status. The number of [ResultSet][google.spanner.v1.ResultSet] messages indicates that the third -// statement failed, and the fourth and fifth statements were not executed. +// * Response: 2 [ResultSet][google.spanner.v1.ResultSet] messages, and a syntax +// error (`INVALID_ARGUMENT`) +// status. The number of [ResultSet][google.spanner.v1.ResultSet] messages +// indicates that the third statement failed, and the fourth and fifth +// statements were not executed. message ExecuteBatchDmlResponse { - // One [ResultSet][google.spanner.v1.ResultSet] for each statement in the request that ran successfully, - // in the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] does - // not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] contain - // the number of rows modified by the statement. + // One [ResultSet][google.spanner.v1.ResultSet] for each statement in the + // request that ran successfully, in the same order as the statements in the + // request. Each [ResultSet][google.spanner.v1.ResultSet] does not contain any + // rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each + // [ResultSet][google.spanner.v1.ResultSet] contain the number of rows + // modified by the statement. // - // Only the first [ResultSet][google.spanner.v1.ResultSet] in the response contains valid - // [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. + // Only the first [ResultSet][google.spanner.v1.ResultSet] in the response + // contains valid [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. repeated ResultSet result_sets = 1; // If all DML statements are executed successfully, the status is `OK`. @@ -810,24 +918,23 @@ message PartitionQueryRequest { // Required. The session used to create the partitions. string session = 1 [ (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - type: "spanner.googleapis.com/Session" - } + (google.api.resource_reference) = { type: "spanner.googleapis.com/Session" } ]; // Read only snapshot transactions are supported, read/write and single use // transactions are not. TransactionSelector transaction = 2; - // Required. The query request to generate partitions for. The request will fail if - // the query is not root partitionable. The query plan of a root - // partitionable query has a single distributed union operator. A distributed - // union operator conceptually divides one or more tables into multiple - // splits, remotely evaluates a subquery independently on each split, and - // then unions all results. + // Required. The query request to generate partitions for. The request will + // fail if the query is not root partitionable. For a query to be root + // partitionable, it needs to satisfy a few conditions. For example, the first + // operator in the query execution plan must be a distributed union operator. + // For more information about other conditions, see [Read data in + // parallel](https://cloud.google.com/spanner/docs/reads#read_data_in_parallel). // - // This must not contain DML commands, such as INSERT, UPDATE, or - // DELETE. Use [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a + // The query request must not contain DML commands, such as INSERT, UPDATE, or + // DELETE. Use + // [ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSql] with a // PartitionedDml transaction for large, partition-friendly DML operations. string sql = 3 [(google.api.field_behavior) = REQUIRED]; @@ -847,7 +954,8 @@ message PartitionQueryRequest { // It is not always possible for Cloud Spanner to infer the right SQL type // from a JSON value. For example, values of type `BYTES` and values - // of type `STRING` both appear in [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. + // of type `STRING` both appear in + // [params][google.spanner.v1.PartitionQueryRequest.params] as JSON strings. // // In these cases, `param_types` can be used to specify the exact // SQL type for some or all of the SQL query parameters. See the @@ -864,9 +972,7 @@ message PartitionReadRequest { // Required. The session used to create the partitions. string session = 1 [ (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - type: "spanner.googleapis.com/Session" - } + (google.api.resource_reference) = { type: "spanner.googleapis.com/Session" } ]; // Read only snapshot transactions are supported, read/write and single use @@ -876,18 +982,24 @@ message PartitionReadRequest { // Required. The name of the table in the database to be read. string table = 3 [(google.api.field_behavior) = REQUIRED]; - // If non-empty, the name of an index on [table][google.spanner.v1.PartitionReadRequest.table]. This index is - // used instead of the table primary key when interpreting [key_set][google.spanner.v1.PartitionReadRequest.key_set] - // and sorting result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set] for further information. + // If non-empty, the name of an index on + // [table][google.spanner.v1.PartitionReadRequest.table]. This index is used + // instead of the table primary key when interpreting + // [key_set][google.spanner.v1.PartitionReadRequest.key_set] and sorting + // result rows. See [key_set][google.spanner.v1.PartitionReadRequest.key_set] + // for further information. string index = 4; - // The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be returned for each row matching - // this request. + // The columns of [table][google.spanner.v1.PartitionReadRequest.table] to be + // returned for each row matching this request. repeated string columns = 5; // Required. `key_set` identifies the rows to be yielded. `key_set` names the - // primary keys of the rows in [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless [index][google.spanner.v1.PartitionReadRequest.index] - // is present. If [index][google.spanner.v1.PartitionReadRequest.index] is present, then [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names + // primary keys of the rows in + // [table][google.spanner.v1.PartitionReadRequest.table] to be yielded, unless + // [index][google.spanner.v1.PartitionReadRequest.index] is present. If + // [index][google.spanner.v1.PartitionReadRequest.index] is present, then + // [key_set][google.spanner.v1.PartitionReadRequest.key_set] instead names // index keys in [index][google.spanner.v1.PartitionReadRequest.index]. // // It is not an error for the `key_set` to name rows that do not @@ -923,9 +1035,7 @@ message ReadRequest { // Required. The session in which the read should be performed. string session = 1 [ (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - type: "spanner.googleapis.com/Session" - } + (google.api.resource_reference) = { type: "spanner.googleapis.com/Session" } ]; // The transaction to use. If none is provided, the default is a @@ -935,24 +1045,31 @@ message ReadRequest { // Required. The name of the table in the database to be read. string table = 3 [(google.api.field_behavior) = REQUIRED]; - // If non-empty, the name of an index on [table][google.spanner.v1.ReadRequest.table]. This index is - // used instead of the table primary key when interpreting [key_set][google.spanner.v1.ReadRequest.key_set] - // and sorting result rows. See [key_set][google.spanner.v1.ReadRequest.key_set] for further information. + // If non-empty, the name of an index on + // [table][google.spanner.v1.ReadRequest.table]. This index is used instead of + // the table primary key when interpreting + // [key_set][google.spanner.v1.ReadRequest.key_set] and sorting result rows. + // See [key_set][google.spanner.v1.ReadRequest.key_set] for further + // information. string index = 4; - // Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be returned for each row matching - // this request. + // Required. The columns of [table][google.spanner.v1.ReadRequest.table] to be + // returned for each row matching this request. repeated string columns = 5 [(google.api.field_behavior) = REQUIRED]; // Required. `key_set` identifies the rows to be yielded. `key_set` names the - // primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to be yielded, unless [index][google.spanner.v1.ReadRequest.index] - // is present. If [index][google.spanner.v1.ReadRequest.index] is present, then [key_set][google.spanner.v1.ReadRequest.key_set] instead names - // index keys in [index][google.spanner.v1.ReadRequest.index]. + // primary keys of the rows in [table][google.spanner.v1.ReadRequest.table] to + // be yielded, unless [index][google.spanner.v1.ReadRequest.index] is present. + // If [index][google.spanner.v1.ReadRequest.index] is present, then + // [key_set][google.spanner.v1.ReadRequest.key_set] instead names index keys + // in [index][google.spanner.v1.ReadRequest.index]. // - // If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is empty, rows are yielded - // in table primary key order (if [index][google.spanner.v1.ReadRequest.index] is empty) or index key order - // (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the [partition_token][google.spanner.v1.ReadRequest.partition_token] field is not - // empty, rows will be yielded in an unspecified order. + // If the [partition_token][google.spanner.v1.ReadRequest.partition_token] + // field is empty, rows are yielded in table primary key order (if + // [index][google.spanner.v1.ReadRequest.index] is empty) or index key order + // (if [index][google.spanner.v1.ReadRequest.index] is non-empty). If the + // [partition_token][google.spanner.v1.ReadRequest.partition_token] field is + // not empty, rows will be yielded in an unspecified order. // // It is not an error for the `key_set` to name rows that do not // exist in the database. Read yields nothing for nonexistent rows. @@ -965,9 +1082,9 @@ message ReadRequest { // If this request is resuming a previously interrupted read, // `resume_token` should be copied from the last - // [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the interruption. Doing this - // enables the new read to resume where the last read left off. The - // rest of the request parameters must exactly match the request + // [PartialResultSet][google.spanner.v1.PartialResultSet] yielded before the + // interruption. Doing this enables the new read to resume where the last read + // left off. The rest of the request parameters must exactly match the request // that yielded this token. bytes resume_token = 9; @@ -980,22 +1097,24 @@ message ReadRequest { // Common options for this request. RequestOptions request_options = 11; + // Directed read options for this request. + DirectedReadOptions directed_read_options = 14; + // If this is for a partitioned read and this field is set to `true`, the - // request will be executed via Spanner independent compute resources. + // request is executed with Spanner Data Boost independent compute resources. // // If the field is set to `true` but the request does not set - // `partition_token`, the API will return an `INVALID_ARGUMENT` error. + // `partition_token`, the API returns an `INVALID_ARGUMENT` error. bool data_boost_enabled = 15; } -// The request for [BeginTransaction][google.spanner.v1.Spanner.BeginTransaction]. +// The request for +// [BeginTransaction][google.spanner.v1.Spanner.BeginTransaction]. message BeginTransactionRequest { // Required. The session in which the transaction runs. string session = 1 [ (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - type: "spanner.googleapis.com/Session" - } + (google.api.resource_reference) = { type: "spanner.googleapis.com/Session" } ]; // Required. Options for the new transaction. @@ -1014,9 +1133,7 @@ message CommitRequest { // Required. The session in which the transaction to be committed is running. string session = 1 [ (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - type: "spanner.googleapis.com/Session" - } + (google.api.resource_reference) = { type: "spanner.googleapis.com/Session" } ]; // Required. The transaction in which to commit. @@ -1042,8 +1159,8 @@ message CommitRequest { repeated Mutation mutations = 4; // If `true`, then statistics related to the transaction will be included in - // the [CommitResponse][google.spanner.v1.CommitResponse.commit_stats]. Default value is - // `false`. + // the [CommitResponse][google.spanner.v1.CommitResponse.commit_stats]. + // Default value is `false`. bool return_commit_stats = 5; // Common options for this request. @@ -1055,9 +1172,7 @@ message RollbackRequest { // Required. The session in which the transaction to roll back is running. string session = 1 [ (google.api.field_behavior) = REQUIRED, - (google.api.resource_reference) = { - type: "spanner.googleapis.com/Session" - } + (google.api.resource_reference) = { type: "spanner.googleapis.com/Session" } ]; // Required. The transaction to roll back. diff --git a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/type.proto b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/type.proto index 290b5540dac..412cfa12625 100644 --- a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/type.proto +++ b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/type.proto @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -171,4 +171,9 @@ enum TypeAnnotationCode { // [JSON][google.spanner.v1.TypeCode.JSON] when a client interacts with PostgreSQL-enabled // Spanner databases. PG_JSONB = 3; + + // PostgreSQL compatible OID type. This annotation can be used by a client + // interacting with PostgreSQL-enabled Spanner database to specify that a + // value should be treated using the semantics of the OID type. + PG_OID = 4; }