From b06f8eb944c5019a3de1e3bd3aea5c097768b758 Mon Sep 17 00:00:00 2001 From: cloud-java-bot Date: Wed, 9 Oct 2024 10:15:35 +0000 Subject: [PATCH] chore: generate libraries at Wed Oct 9 10:12:45 UTC 2024 --- .../reflect-config.json | 18 + .../cloud/spanner/v1/SpannerClient.java | 4 + .../reflect-config.json | 18 + .../spanner/v1/SpannerClientHttpJsonTest.java | 6 + .../cloud/spanner/v1/SpannerClientTest.java | 8 + .../spanner/v1/BeginTransactionRequest.java | 341 +++++++++ .../v1/BeginTransactionRequestOrBuilder.java | 53 ++ .../com/google/spanner/v1/CommitRequest.java | 359 ++++++++++ .../spanner/v1/CommitRequestOrBuilder.java | 56 ++ .../com/google/spanner/v1/CommitResponse.java | 396 +++++++++++ .../spanner/v1/CommitResponseOrBuilder.java | 40 ++ .../spanner/v1/CommitResponseProto.java | 28 +- .../spanner/v1/ExecuteBatchDmlResponse.java | 371 ++++++++++ .../v1/ExecuteBatchDmlResponseOrBuilder.java | 59 ++ .../v1/MultiplexedSessionPrecommitToken.java | 648 ++++++++++++++++++ ...iplexedSessionPrecommitTokenOrBuilder.java | 54 ++ .../google/spanner/v1/PartialResultSet.java | 371 ++++++++++ .../spanner/v1/PartialResultSetOrBuilder.java | 59 ++ .../java/com/google/spanner/v1/ResultSet.java | 371 ++++++++++ .../google/spanner/v1/ResultSetOrBuilder.java | 59 ++ .../com/google/spanner/v1/ResultSetProto.java | 72 +- .../com/google/spanner/v1/SpannerProto.java | 332 ++++----- .../com/google/spanner/v1/Transaction.java | 371 ++++++++++ .../google/spanner/v1/TransactionOptions.java | 149 ++++ .../spanner/v1/TransactionOrBuilder.java | 59 ++ .../google/spanner/v1/TransactionProto.java | 95 ++- .../google/spanner/v1/commit_response.proto | 9 + .../proto/google/spanner/v1/result_set.proto | 21 + .../proto/google/spanner/v1/spanner.proto | 27 + .../proto/google/spanner/v1/transaction.proto | 34 + 30 files changed, 4249 insertions(+), 239 deletions(-) create mode 100644 proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MultiplexedSessionPrecommitToken.java create mode 100644 proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MultiplexedSessionPrecommitTokenOrBuilder.java diff --git a/google-cloud-spanner-executor/src/main/resources/META-INF/native-image/com.google.cloud.spanner.executor.v1/reflect-config.json b/google-cloud-spanner-executor/src/main/resources/META-INF/native-image/com.google.cloud.spanner.executor.v1/reflect-config.json index 2b261bc156b..4fe624b7aa7 100644 --- a/google-cloud-spanner-executor/src/main/resources/META-INF/native-image/com.google.cloud.spanner.executor.v1/reflect-config.json +++ b/google-cloud-spanner-executor/src/main/resources/META-INF/native-image/com.google.cloud.spanner.executor.v1/reflect-config.json @@ -5471,6 +5471,24 @@ "allDeclaredClasses": true, "allPublicClasses": true }, + { + "name": "com.google.spanner.v1.MultiplexedSessionPrecommitToken", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.MultiplexedSessionPrecommitToken$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, { "name": "com.google.spanner.v1.Mutation", "queryAllDeclaredConstructors": true, 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 64ffdb0902a..8625c17785a 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 @@ -1629,6 +1629,7 @@ public final Transaction beginTransaction(String session, TransactionOptions opt * SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]").toString()) * .setOptions(TransactionOptions.newBuilder().build()) * .setRequestOptions(RequestOptions.newBuilder().build()) + * .setMutationKey(Mutation.newBuilder().build()) * .build(); * Transaction response = spannerClient.beginTransaction(request); * } @@ -1662,6 +1663,7 @@ public final Transaction beginTransaction(BeginTransactionRequest request) { * SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]").toString()) * .setOptions(TransactionOptions.newBuilder().build()) * .setRequestOptions(RequestOptions.newBuilder().build()) + * .setMutationKey(Mutation.newBuilder().build()) * .build(); * ApiFuture future = spannerClient.beginTransactionCallable().futureCall(request); * // Do something. @@ -1911,6 +1913,7 @@ public final CommitResponse commit( * .setReturnCommitStats(true) * .setMaxCommitDelay(Duration.newBuilder().build()) * .setRequestOptions(RequestOptions.newBuilder().build()) + * .setPrecommitToken(MultiplexedSessionPrecommitToken.newBuilder().build()) * .build(); * CommitResponse response = spannerClient.commit(request); * } @@ -1955,6 +1958,7 @@ public final CommitResponse commit(CommitRequest request) { * .setReturnCommitStats(true) * .setMaxCommitDelay(Duration.newBuilder().build()) * .setRequestOptions(RequestOptions.newBuilder().build()) + * .setPrecommitToken(MultiplexedSessionPrecommitToken.newBuilder().build()) * .build(); * ApiFuture future = spannerClient.commitCallable().futureCall(request); * // Do something. 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 62b2c263dd8..ffa070f1225 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 @@ -1745,6 +1745,24 @@ "allDeclaredClasses": true, "allPublicClasses": true }, + { + "name": "com.google.spanner.v1.MultiplexedSessionPrecommitToken", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "com.google.spanner.v1.MultiplexedSessionPrecommitToken$Builder", + "queryAllDeclaredConstructors": true, + "queryAllPublicConstructors": true, + "queryAllDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, { "name": "com.google.spanner.v1.Mutation", "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 3b5f106f13f..1683d533855 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 @@ -44,6 +44,7 @@ import com.google.spanner.v1.ExecuteSqlRequest; import com.google.spanner.v1.KeySet; import com.google.spanner.v1.ListSessionsResponse; +import com.google.spanner.v1.MultiplexedSessionPrecommitToken; import com.google.spanner.v1.Mutation; import com.google.spanner.v1.Partition; import com.google.spanner.v1.PartitionOptions; @@ -587,6 +588,7 @@ public void executeSqlTest() throws Exception { .setMetadata(ResultSetMetadata.newBuilder().build()) .addAllRows(new ArrayList()) .setStats(ResultSetStats.newBuilder().build()) + .setPrecommitToken(MultiplexedSessionPrecommitToken.newBuilder().build()) .build(); mockService.addResponse(expectedResponse); @@ -673,6 +675,7 @@ public void executeBatchDmlTest() throws Exception { ExecuteBatchDmlResponse.newBuilder() .addAllResultSets(new ArrayList()) .setStatus(Status.newBuilder().build()) + .setPrecommitToken(MultiplexedSessionPrecommitToken.newBuilder().build()) .build(); mockService.addResponse(expectedResponse); @@ -735,6 +738,7 @@ public void readTest() throws Exception { .setMetadata(ResultSetMetadata.newBuilder().build()) .addAllRows(new ArrayList()) .setStats(ResultSetStats.newBuilder().build()) + .setPrecommitToken(MultiplexedSessionPrecommitToken.newBuilder().build()) .build(); mockService.addResponse(expectedResponse); @@ -821,6 +825,7 @@ public void beginTransactionTest() throws Exception { Transaction.newBuilder() .setId(ByteString.EMPTY) .setReadTimestamp(Timestamp.newBuilder().build()) + .setPrecommitToken(MultiplexedSessionPrecommitToken.newBuilder().build()) .build(); mockService.addResponse(expectedResponse); @@ -868,6 +873,7 @@ public void beginTransactionTest2() throws Exception { Transaction.newBuilder() .setId(ByteString.EMPTY) .setReadTimestamp(Timestamp.newBuilder().build()) + .setPrecommitToken(MultiplexedSessionPrecommitToken.newBuilder().build()) .build(); mockService.addResponse(expectedResponse); 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 22f578ac2bc..83caf7405d9 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 @@ -55,6 +55,7 @@ import com.google.spanner.v1.KeySet; import com.google.spanner.v1.ListSessionsRequest; import com.google.spanner.v1.ListSessionsResponse; +import com.google.spanner.v1.MultiplexedSessionPrecommitToken; import com.google.spanner.v1.Mutation; import com.google.spanner.v1.PartialResultSet; import com.google.spanner.v1.Partition; @@ -545,6 +546,7 @@ public void executeSqlTest() throws Exception { .setMetadata(ResultSetMetadata.newBuilder().build()) .addAllRows(new ArrayList()) .setStats(ResultSetStats.newBuilder().build()) + .setPrecommitToken(MultiplexedSessionPrecommitToken.newBuilder().build()) .build(); mockSpanner.addResponse(expectedResponse); @@ -629,6 +631,7 @@ public void executeStreamingSqlTest() throws Exception { .setChunkedValue(true) .setResumeToken(ByteString.EMPTY) .setStats(ResultSetStats.newBuilder().build()) + .setPrecommitToken(MultiplexedSessionPrecommitToken.newBuilder().build()) .build(); mockSpanner.addResponse(expectedResponse); ExecuteSqlRequest request = @@ -702,6 +705,7 @@ public void executeBatchDmlTest() throws Exception { ExecuteBatchDmlResponse.newBuilder() .addAllResultSets(new ArrayList()) .setStatus(Status.newBuilder().build()) + .setPrecommitToken(MultiplexedSessionPrecommitToken.newBuilder().build()) .build(); mockSpanner.addResponse(expectedResponse); @@ -762,6 +766,7 @@ public void readTest() throws Exception { .setMetadata(ResultSetMetadata.newBuilder().build()) .addAllRows(new ArrayList()) .setStats(ResultSetStats.newBuilder().build()) + .setPrecommitToken(MultiplexedSessionPrecommitToken.newBuilder().build()) .build(); mockSpanner.addResponse(expectedResponse); @@ -847,6 +852,7 @@ public void streamingReadTest() throws Exception { .setChunkedValue(true) .setResumeToken(ByteString.EMPTY) .setStats(ResultSetStats.newBuilder().build()) + .setPrecommitToken(MultiplexedSessionPrecommitToken.newBuilder().build()) .build(); mockSpanner.addResponse(expectedResponse); ReadRequest request = @@ -920,6 +926,7 @@ public void beginTransactionTest() throws Exception { Transaction.newBuilder() .setId(ByteString.EMPTY) .setReadTimestamp(Timestamp.newBuilder().build()) + .setPrecommitToken(MultiplexedSessionPrecommitToken.newBuilder().build()) .build(); mockSpanner.addResponse(expectedResponse); @@ -962,6 +969,7 @@ public void beginTransactionTest2() throws Exception { Transaction.newBuilder() .setId(ByteString.EMPTY) .setReadTimestamp(Timestamp.newBuilder().build()) + .setPrecommitToken(MultiplexedSessionPrecommitToken.newBuilder().build()) .build(); mockSpanner.addResponse(expectedResponse); 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 3d50999d6a6..59ef89bb161 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 @@ -238,6 +238,74 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder( : requestOptions_; } + public static final int MUTATION_KEY_FIELD_NUMBER = 4; + private com.google.spanner.v1.Mutation mutationKey_; + /** + * + * + *
+   * Optional. Required for read-write transactions on a multiplexed session
+   * that commit mutations but do not perform any reads or queries. Clients
+   * should randomly select one of the mutations from the mutation set and send
+   * it as a part of this request.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * .google.spanner.v1.Mutation mutation_key = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the mutationKey field is set. + */ + @java.lang.Override + public boolean hasMutationKey() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + * + * + *
+   * Optional. Required for read-write transactions on a multiplexed session
+   * that commit mutations but do not perform any reads or queries. Clients
+   * should randomly select one of the mutations from the mutation set and send
+   * it as a part of this request.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * .google.spanner.v1.Mutation mutation_key = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The mutationKey. + */ + @java.lang.Override + public com.google.spanner.v1.Mutation getMutationKey() { + return mutationKey_ == null + ? com.google.spanner.v1.Mutation.getDefaultInstance() + : mutationKey_; + } + /** + * + * + *
+   * Optional. Required for read-write transactions on a multiplexed session
+   * that commit mutations but do not perform any reads or queries. Clients
+   * should randomly select one of the mutations from the mutation set and send
+   * it as a part of this request.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * .google.spanner.v1.Mutation mutation_key = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + @java.lang.Override + public com.google.spanner.v1.MutationOrBuilder getMutationKeyOrBuilder() { + return mutationKey_ == null + ? com.google.spanner.v1.Mutation.getDefaultInstance() + : mutationKey_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -261,6 +329,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (((bitField0_ & 0x00000002) != 0)) { output.writeMessage(3, getRequestOptions()); } + if (((bitField0_ & 0x00000004) != 0)) { + output.writeMessage(4, getMutationKey()); + } getUnknownFields().writeTo(output); } @@ -279,6 +350,9 @@ public int getSerializedSize() { if (((bitField0_ & 0x00000002) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getRequestOptions()); } + if (((bitField0_ & 0x00000004) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getMutationKey()); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -304,6 +378,10 @@ public boolean equals(final java.lang.Object obj) { if (hasRequestOptions()) { if (!getRequestOptions().equals(other.getRequestOptions())) return false; } + if (hasMutationKey() != other.hasMutationKey()) return false; + if (hasMutationKey()) { + if (!getMutationKey().equals(other.getMutationKey())) return false; + } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -325,6 +403,10 @@ public int hashCode() { hash = (37 * hash) + REQUEST_OPTIONS_FIELD_NUMBER; hash = (53 * hash) + getRequestOptions().hashCode(); } + if (hasMutationKey()) { + hash = (37 * hash) + MUTATION_KEY_FIELD_NUMBER; + hash = (53 * hash) + getMutationKey().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -468,6 +550,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { getOptionsFieldBuilder(); getRequestOptionsFieldBuilder(); + getMutationKeyFieldBuilder(); } } @@ -486,6 +569,11 @@ public Builder clear() { requestOptionsBuilder_.dispose(); requestOptionsBuilder_ = null; } + mutationKey_ = null; + if (mutationKeyBuilder_ != null) { + mutationKeyBuilder_.dispose(); + mutationKeyBuilder_ = null; + } return this; } @@ -535,6 +623,11 @@ private void buildPartial0(com.google.spanner.v1.BeginTransactionRequest result) requestOptionsBuilder_ == null ? requestOptions_ : requestOptionsBuilder_.build(); to_bitField0_ |= 0x00000002; } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.mutationKey_ = + mutationKeyBuilder_ == null ? mutationKey_ : mutationKeyBuilder_.build(); + to_bitField0_ |= 0x00000004; + } result.bitField0_ |= to_bitField0_; } @@ -594,6 +687,9 @@ public Builder mergeFrom(com.google.spanner.v1.BeginTransactionRequest other) { if (other.hasRequestOptions()) { mergeRequestOptions(other.getRequestOptions()); } + if (other.hasMutationKey()) { + mergeMutationKey(other.getMutationKey()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -638,6 +734,12 @@ public Builder mergeFrom( bitField0_ |= 0x00000004; break; } // case 26 + case 34: + { + input.readMessage(getMutationKeyFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000008; + break; + } // case 34 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -1197,6 +1299,245 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder( return requestOptionsBuilder_; } + private com.google.spanner.v1.Mutation mutationKey_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.Mutation, + com.google.spanner.v1.Mutation.Builder, + com.google.spanner.v1.MutationOrBuilder> + mutationKeyBuilder_; + /** + * + * + *
+     * Optional. Required for read-write transactions on a multiplexed session
+     * that commit mutations but do not perform any reads or queries. Clients
+     * should randomly select one of the mutations from the mutation set and send
+     * it as a part of this request.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.Mutation mutation_key = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the mutationKey field is set. + */ + public boolean hasMutationKey() { + return ((bitField0_ & 0x00000008) != 0); + } + /** + * + * + *
+     * Optional. Required for read-write transactions on a multiplexed session
+     * that commit mutations but do not perform any reads or queries. Clients
+     * should randomly select one of the mutations from the mutation set and send
+     * it as a part of this request.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.Mutation mutation_key = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The mutationKey. + */ + public com.google.spanner.v1.Mutation getMutationKey() { + if (mutationKeyBuilder_ == null) { + return mutationKey_ == null + ? com.google.spanner.v1.Mutation.getDefaultInstance() + : mutationKey_; + } else { + return mutationKeyBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Optional. Required for read-write transactions on a multiplexed session
+     * that commit mutations but do not perform any reads or queries. Clients
+     * should randomly select one of the mutations from the mutation set and send
+     * it as a part of this request.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.Mutation mutation_key = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setMutationKey(com.google.spanner.v1.Mutation value) { + if (mutationKeyBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + mutationKey_ = value; + } else { + mutationKeyBuilder_.setMessage(value); + } + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. Required for read-write transactions on a multiplexed session
+     * that commit mutations but do not perform any reads or queries. Clients
+     * should randomly select one of the mutations from the mutation set and send
+     * it as a part of this request.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.Mutation mutation_key = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setMutationKey(com.google.spanner.v1.Mutation.Builder builderForValue) { + if (mutationKeyBuilder_ == null) { + mutationKey_ = builderForValue.build(); + } else { + mutationKeyBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. Required for read-write transactions on a multiplexed session
+     * that commit mutations but do not perform any reads or queries. Clients
+     * should randomly select one of the mutations from the mutation set and send
+     * it as a part of this request.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.Mutation mutation_key = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder mergeMutationKey(com.google.spanner.v1.Mutation value) { + if (mutationKeyBuilder_ == null) { + if (((bitField0_ & 0x00000008) != 0) + && mutationKey_ != null + && mutationKey_ != com.google.spanner.v1.Mutation.getDefaultInstance()) { + getMutationKeyBuilder().mergeFrom(value); + } else { + mutationKey_ = value; + } + } else { + mutationKeyBuilder_.mergeFrom(value); + } + if (mutationKey_ != null) { + bitField0_ |= 0x00000008; + onChanged(); + } + return this; + } + /** + * + * + *
+     * Optional. Required for read-write transactions on a multiplexed session
+     * that commit mutations but do not perform any reads or queries. Clients
+     * should randomly select one of the mutations from the mutation set and send
+     * it as a part of this request.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.Mutation mutation_key = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder clearMutationKey() { + bitField0_ = (bitField0_ & ~0x00000008); + mutationKey_ = null; + if (mutationKeyBuilder_ != null) { + mutationKeyBuilder_.dispose(); + mutationKeyBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. Required for read-write transactions on a multiplexed session
+     * that commit mutations but do not perform any reads or queries. Clients
+     * should randomly select one of the mutations from the mutation set and send
+     * it as a part of this request.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.Mutation mutation_key = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.spanner.v1.Mutation.Builder getMutationKeyBuilder() { + bitField0_ |= 0x00000008; + onChanged(); + return getMutationKeyFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Optional. Required for read-write transactions on a multiplexed session
+     * that commit mutations but do not perform any reads or queries. Clients
+     * should randomly select one of the mutations from the mutation set and send
+     * it as a part of this request.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.Mutation mutation_key = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.spanner.v1.MutationOrBuilder getMutationKeyOrBuilder() { + if (mutationKeyBuilder_ != null) { + return mutationKeyBuilder_.getMessageOrBuilder(); + } else { + return mutationKey_ == null + ? com.google.spanner.v1.Mutation.getDefaultInstance() + : mutationKey_; + } + } + /** + * + * + *
+     * Optional. Required for read-write transactions on a multiplexed session
+     * that commit mutations but do not perform any reads or queries. Clients
+     * should randomly select one of the mutations from the mutation set and send
+     * it as a part of this request.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.Mutation mutation_key = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.Mutation, + com.google.spanner.v1.Mutation.Builder, + com.google.spanner.v1.MutationOrBuilder> + getMutationKeyFieldBuilder() { + if (mutationKeyBuilder_ == null) { + mutationKeyBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.Mutation, + com.google.spanner.v1.Mutation.Builder, + com.google.spanner.v1.MutationOrBuilder>( + getMutationKey(), getParentForChildren(), isClean()); + mutationKey_ = null; + } + return mutationKeyBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BeginTransactionRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BeginTransactionRequestOrBuilder.java index a002d48e49f..0d67610b513 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BeginTransactionRequestOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/BeginTransactionRequestOrBuilder.java @@ -140,4 +140,57 @@ public interface BeginTransactionRequestOrBuilder * .google.spanner.v1.RequestOptions request_options = 3; */ com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder(); + + /** + * + * + *
+   * Optional. Required for read-write transactions on a multiplexed session
+   * that commit mutations but do not perform any reads or queries. Clients
+   * should randomly select one of the mutations from the mutation set and send
+   * it as a part of this request.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * .google.spanner.v1.Mutation mutation_key = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the mutationKey field is set. + */ + boolean hasMutationKey(); + /** + * + * + *
+   * Optional. Required for read-write transactions on a multiplexed session
+   * that commit mutations but do not perform any reads or queries. Clients
+   * should randomly select one of the mutations from the mutation set and send
+   * it as a part of this request.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * .google.spanner.v1.Mutation mutation_key = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The mutationKey. + */ + com.google.spanner.v1.Mutation getMutationKey(); + /** + * + * + *
+   * Optional. Required for read-write transactions on a multiplexed session
+   * that commit mutations but do not perform any reads or queries. Clients
+   * should randomly select one of the mutations from the mutation set and send
+   * it as a part of this request.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * .google.spanner.v1.Mutation mutation_key = 4 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + com.google.spanner.v1.MutationOrBuilder getMutationKeyOrBuilder(); } 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 1fd86689bd9..d026425bfbb 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 @@ -495,6 +495,78 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder( : requestOptions_; } + public static final int PRECOMMIT_TOKEN_FIELD_NUMBER = 9; + private com.google.spanner.v1.MultiplexedSessionPrecommitToken precommitToken_; + /** + * + * + *
+   * Optional. If the read-write transaction was executed on a multiplexed
+   * session, the precommit token with the highest sequence number received in
+   * this transaction attempt, should be included here. Failing to do so will
+   * result in a FailedPrecondition error.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the precommitToken field is set. + */ + @java.lang.Override + public boolean hasPrecommitToken() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + * + * + *
+   * Optional. If the read-write transaction was executed on a multiplexed
+   * session, the precommit token with the highest sequence number received in
+   * this transaction attempt, should be included here. Failing to do so will
+   * result in a FailedPrecondition error.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The precommitToken. + */ + @java.lang.Override + public com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken() { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } + /** + * + * + *
+   * Optional. If the read-write transaction was executed on a multiplexed
+   * session, the precommit token with the highest sequence number received in
+   * this transaction attempt, should be included here. Failing to do so will
+   * result in a FailedPrecondition error.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + @java.lang.Override + public com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder + getPrecommitTokenOrBuilder() { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -530,6 +602,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (((bitField0_ & 0x00000001) != 0)) { output.writeMessage(8, getMaxCommitDelay()); } + if (((bitField0_ & 0x00000004) != 0)) { + output.writeMessage(9, getPrecommitToken()); + } getUnknownFields().writeTo(output); } @@ -564,6 +639,9 @@ public int getSerializedSize() { if (((bitField0_ & 0x00000001) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, getMaxCommitDelay()); } + if (((bitField0_ & 0x00000004) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, getPrecommitToken()); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -590,6 +668,10 @@ public boolean equals(final java.lang.Object obj) { if (hasRequestOptions()) { if (!getRequestOptions().equals(other.getRequestOptions())) return false; } + if (hasPrecommitToken() != other.hasPrecommitToken()) return false; + if (hasPrecommitToken()) { + if (!getPrecommitToken().equals(other.getPrecommitToken())) return false; + } if (!getTransactionCase().equals(other.getTransactionCase())) return false; switch (transactionCase_) { case 2: @@ -628,6 +710,10 @@ public int hashCode() { hash = (37 * hash) + REQUEST_OPTIONS_FIELD_NUMBER; hash = (53 * hash) + getRequestOptions().hashCode(); } + if (hasPrecommitToken()) { + hash = (37 * hash) + PRECOMMIT_TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getPrecommitToken().hashCode(); + } switch (transactionCase_) { case 2: hash = (37 * hash) + TRANSACTION_ID_FIELD_NUMBER; @@ -782,6 +868,7 @@ private void maybeForceBuilderInitialization() { getMutationsFieldBuilder(); getMaxCommitDelayFieldBuilder(); getRequestOptionsFieldBuilder(); + getPrecommitTokenFieldBuilder(); } } @@ -811,6 +898,11 @@ public Builder clear() { requestOptionsBuilder_.dispose(); requestOptionsBuilder_ = null; } + precommitToken_ = null; + if (precommitTokenBuilder_ != null) { + precommitTokenBuilder_.dispose(); + precommitTokenBuilder_ = null; + } transactionCase_ = 0; transaction_ = null; return this; @@ -879,6 +971,11 @@ private void buildPartial0(com.google.spanner.v1.CommitRequest result) { requestOptionsBuilder_ == null ? requestOptions_ : requestOptionsBuilder_.build(); to_bitField0_ |= 0x00000002; } + if (((from_bitField0_ & 0x00000080) != 0)) { + result.precommitToken_ = + precommitTokenBuilder_ == null ? precommitToken_ : precommitTokenBuilder_.build(); + to_bitField0_ |= 0x00000004; + } result.bitField0_ |= to_bitField0_; } @@ -976,6 +1073,9 @@ public Builder mergeFrom(com.google.spanner.v1.CommitRequest other) { if (other.hasRequestOptions()) { mergeRequestOptions(other.getRequestOptions()); } + if (other.hasPrecommitToken()) { + mergePrecommitToken(other.getPrecommitToken()); + } switch (other.getTransactionCase()) { case TRANSACTION_ID: { @@ -1067,6 +1167,12 @@ public Builder mergeFrom( bitField0_ |= 0x00000020; break; } // case 66 + case 74: + { + input.readMessage(getPrecommitTokenFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000080; + break; + } // case 74 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -2434,6 +2540,259 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder( return requestOptionsBuilder_; } + private com.google.spanner.v1.MultiplexedSessionPrecommitToken precommitToken_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder> + precommitTokenBuilder_; + /** + * + * + *
+     * Optional. If the read-write transaction was executed on a multiplexed
+     * session, the precommit token with the highest sequence number received in
+     * this transaction attempt, should be included here. Failing to do so will
+     * result in a FailedPrecondition error.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the precommitToken field is set. + */ + public boolean hasPrecommitToken() { + return ((bitField0_ & 0x00000080) != 0); + } + /** + * + * + *
+     * Optional. If the read-write transaction was executed on a multiplexed
+     * session, the precommit token with the highest sequence number received in
+     * this transaction attempt, should be included here. Failing to do so will
+     * result in a FailedPrecondition error.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The precommitToken. + */ + public com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken() { + if (precommitTokenBuilder_ == null) { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } else { + return precommitTokenBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Optional. If the read-write transaction was executed on a multiplexed
+     * session, the precommit token with the highest sequence number received in
+     * this transaction attempt, should be included here. Failing to do so will
+     * result in a FailedPrecondition error.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setPrecommitToken(com.google.spanner.v1.MultiplexedSessionPrecommitToken value) { + if (precommitTokenBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + precommitToken_ = value; + } else { + precommitTokenBuilder_.setMessage(value); + } + bitField0_ |= 0x00000080; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. If the read-write transaction was executed on a multiplexed
+     * session, the precommit token with the highest sequence number received in
+     * this transaction attempt, should be included here. Failing to do so will
+     * result in a FailedPrecondition error.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setPrecommitToken( + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder builderForValue) { + if (precommitTokenBuilder_ == null) { + precommitToken_ = builderForValue.build(); + } else { + precommitTokenBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000080; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. If the read-write transaction was executed on a multiplexed
+     * session, the precommit token with the highest sequence number received in
+     * this transaction attempt, should be included here. Failing to do so will
+     * result in a FailedPrecondition error.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder mergePrecommitToken( + com.google.spanner.v1.MultiplexedSessionPrecommitToken value) { + if (precommitTokenBuilder_ == null) { + if (((bitField0_ & 0x00000080) != 0) + && precommitToken_ != null + && precommitToken_ + != com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance()) { + getPrecommitTokenBuilder().mergeFrom(value); + } else { + precommitToken_ = value; + } + } else { + precommitTokenBuilder_.mergeFrom(value); + } + if (precommitToken_ != null) { + bitField0_ |= 0x00000080; + onChanged(); + } + return this; + } + /** + * + * + *
+     * Optional. If the read-write transaction was executed on a multiplexed
+     * session, the precommit token with the highest sequence number received in
+     * this transaction attempt, should be included here. Failing to do so will
+     * result in a FailedPrecondition error.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder clearPrecommitToken() { + bitField0_ = (bitField0_ & ~0x00000080); + precommitToken_ = null; + if (precommitTokenBuilder_ != null) { + precommitTokenBuilder_.dispose(); + precommitTokenBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. If the read-write transaction was executed on a multiplexed
+     * session, the precommit token with the highest sequence number received in
+     * this transaction attempt, should be included here. Failing to do so will
+     * result in a FailedPrecondition error.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder + getPrecommitTokenBuilder() { + bitField0_ |= 0x00000080; + onChanged(); + return getPrecommitTokenFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Optional. If the read-write transaction was executed on a multiplexed
+     * session, the precommit token with the highest sequence number received in
+     * this transaction attempt, should be included here. Failing to do so will
+     * result in a FailedPrecondition error.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder + getPrecommitTokenOrBuilder() { + if (precommitTokenBuilder_ != null) { + return precommitTokenBuilder_.getMessageOrBuilder(); + } else { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } + } + /** + * + * + *
+     * Optional. If the read-write transaction was executed on a multiplexed
+     * session, the precommit token with the highest sequence number received in
+     * this transaction attempt, should be included here. Failing to do so will
+     * result in a FailedPrecondition error.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder> + getPrecommitTokenFieldBuilder() { + if (precommitTokenBuilder_ == null) { + precommitTokenBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder>( + getPrecommitToken(), getParentForChildren(), isClean()); + precommitToken_ = null; + } + return precommitTokenBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); 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 9695373e6ae..3a9703e11c0 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 @@ -298,5 +298,61 @@ public interface CommitRequestOrBuilder */ com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder(); + /** + * + * + *
+   * Optional. If the read-write transaction was executed on a multiplexed
+   * session, the precommit token with the highest sequence number received in
+   * this transaction attempt, should be included here. Failing to do so will
+   * result in a FailedPrecondition error.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the precommitToken field is set. + */ + boolean hasPrecommitToken(); + /** + * + * + *
+   * Optional. If the read-write transaction was executed on a multiplexed
+   * session, the precommit token with the highest sequence number received in
+   * this transaction attempt, should be included here. Failing to do so will
+   * result in a FailedPrecondition error.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The precommitToken. + */ + com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken(); + /** + * + * + *
+   * Optional. If the read-write transaction was executed on a multiplexed
+   * session, the precommit token with the highest sequence number received in
+   * this transaction attempt, should be included here. Failing to do so will
+   * result in a FailedPrecondition error.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 9 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder getPrecommitTokenOrBuilder(); + com.google.spanner.v1.CommitRequest.TransactionCase getTransactionCase(); } diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponse.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponse.java index 8e168f24885..af19b73626d 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponse.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponse.java @@ -631,6 +631,52 @@ public com.google.spanner.v1.CommitResponse.CommitStats getDefaultInstanceForTyp } private int bitField0_; + private int multiplexedSessionRetryCase_ = 0; + + @SuppressWarnings("serial") + private java.lang.Object multiplexedSessionRetry_; + + public enum MultiplexedSessionRetryCase + implements + com.google.protobuf.Internal.EnumLite, + com.google.protobuf.AbstractMessage.InternalOneOfEnum { + PRECOMMIT_TOKEN(4), + MULTIPLEXEDSESSIONRETRY_NOT_SET(0); + private final int value; + + private MultiplexedSessionRetryCase(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 MultiplexedSessionRetryCase valueOf(int value) { + return forNumber(value); + } + + public static MultiplexedSessionRetryCase forNumber(int value) { + switch (value) { + case 4: + return PRECOMMIT_TOKEN; + case 0: + return MULTIPLEXEDSESSIONRETRY_NOT_SET; + default: + return null; + } + } + + public int getNumber() { + return this.value; + } + }; + + public MultiplexedSessionRetryCase getMultiplexedSessionRetryCase() { + return MultiplexedSessionRetryCase.forNumber(multiplexedSessionRetryCase_); + } + public static final int COMMIT_TIMESTAMP_FIELD_NUMBER = 1; private com.google.protobuf.Timestamp commitTimestamp_; /** @@ -737,6 +783,61 @@ public com.google.spanner.v1.CommitResponse.CommitStatsOrBuilder getCommitStatsO : commitStats_; } + public static final int PRECOMMIT_TOKEN_FIELD_NUMBER = 4; + /** + * + * + *
+   * If specified, transaction has not committed yet.
+   * Clients must retry the commit with the new precommit token.
+   * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 4; + * + * @return Whether the precommitToken field is set. + */ + @java.lang.Override + public boolean hasPrecommitToken() { + return multiplexedSessionRetryCase_ == 4; + } + /** + * + * + *
+   * If specified, transaction has not committed yet.
+   * Clients must retry the commit with the new precommit token.
+   * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 4; + * + * @return The precommitToken. + */ + @java.lang.Override + public com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken() { + if (multiplexedSessionRetryCase_ == 4) { + return (com.google.spanner.v1.MultiplexedSessionPrecommitToken) multiplexedSessionRetry_; + } + return com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance(); + } + /** + * + * + *
+   * If specified, transaction has not committed yet.
+   * Clients must retry the commit with the new precommit token.
+   * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 4; + */ + @java.lang.Override + public com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder + getPrecommitTokenOrBuilder() { + if (multiplexedSessionRetryCase_ == 4) { + return (com.google.spanner.v1.MultiplexedSessionPrecommitToken) multiplexedSessionRetry_; + } + return com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -757,6 +858,10 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (((bitField0_ & 0x00000002) != 0)) { output.writeMessage(2, getCommitStats()); } + if (multiplexedSessionRetryCase_ == 4) { + output.writeMessage( + 4, (com.google.spanner.v1.MultiplexedSessionPrecommitToken) multiplexedSessionRetry_); + } getUnknownFields().writeTo(output); } @@ -772,6 +877,11 @@ public int getSerializedSize() { if (((bitField0_ & 0x00000002) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getCommitStats()); } + if (multiplexedSessionRetryCase_ == 4) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 4, (com.google.spanner.v1.MultiplexedSessionPrecommitToken) multiplexedSessionRetry_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -795,6 +905,15 @@ public boolean equals(final java.lang.Object obj) { if (hasCommitStats()) { if (!getCommitStats().equals(other.getCommitStats())) return false; } + if (!getMultiplexedSessionRetryCase().equals(other.getMultiplexedSessionRetryCase())) + return false; + switch (multiplexedSessionRetryCase_) { + case 4: + if (!getPrecommitToken().equals(other.getPrecommitToken())) return false; + break; + case 0: + default: + } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -814,6 +933,14 @@ public int hashCode() { hash = (37 * hash) + COMMIT_STATS_FIELD_NUMBER; hash = (53 * hash) + getCommitStats().hashCode(); } + switch (multiplexedSessionRetryCase_) { + case 4: + hash = (37 * hash) + PRECOMMIT_TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getPrecommitToken().hashCode(); + break; + case 0: + default: + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -972,6 +1099,11 @@ public Builder clear() { commitStatsBuilder_.dispose(); commitStatsBuilder_ = null; } + if (precommitTokenBuilder_ != null) { + precommitTokenBuilder_.clear(); + } + multiplexedSessionRetryCase_ = 0; + multiplexedSessionRetry_ = null; return this; } @@ -1001,6 +1133,7 @@ public com.google.spanner.v1.CommitResponse buildPartial() { if (bitField0_ != 0) { buildPartial0(result); } + buildPartialOneofs(result); onBuilt(); return result; } @@ -1021,6 +1154,14 @@ private void buildPartial0(com.google.spanner.v1.CommitResponse result) { result.bitField0_ |= to_bitField0_; } + private void buildPartialOneofs(com.google.spanner.v1.CommitResponse result) { + result.multiplexedSessionRetryCase_ = multiplexedSessionRetryCase_; + result.multiplexedSessionRetry_ = this.multiplexedSessionRetry_; + if (multiplexedSessionRetryCase_ == 4 && precommitTokenBuilder_ != null) { + result.multiplexedSessionRetry_ = precommitTokenBuilder_.build(); + } + } + @java.lang.Override public Builder clone() { return super.clone(); @@ -1072,6 +1213,17 @@ public Builder mergeFrom(com.google.spanner.v1.CommitResponse other) { if (other.hasCommitStats()) { mergeCommitStats(other.getCommitStats()); } + switch (other.getMultiplexedSessionRetryCase()) { + case PRECOMMIT_TOKEN: + { + mergePrecommitToken(other.getPrecommitToken()); + break; + } + case MULTIPLEXEDSESSIONRETRY_NOT_SET: + { + break; + } + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -1110,6 +1262,12 @@ public Builder mergeFrom( bitField0_ |= 0x00000002; break; } // case 18 + case 34: + { + input.readMessage(getPrecommitTokenFieldBuilder().getBuilder(), extensionRegistry); + multiplexedSessionRetryCase_ = 4; + break; + } // case 34 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -1127,6 +1285,20 @@ public Builder mergeFrom( return this; } + private int multiplexedSessionRetryCase_ = 0; + private java.lang.Object multiplexedSessionRetry_; + + public MultiplexedSessionRetryCase getMultiplexedSessionRetryCase() { + return MultiplexedSessionRetryCase.forNumber(multiplexedSessionRetryCase_); + } + + public Builder clearMultiplexedSessionRetry() { + multiplexedSessionRetryCase_ = 0; + multiplexedSessionRetry_ = null; + onChanged(); + return this; + } + private int bitField0_; private com.google.protobuf.Timestamp commitTimestamp_; @@ -1519,6 +1691,230 @@ public com.google.spanner.v1.CommitResponse.CommitStatsOrBuilder getCommitStatsO return commitStatsBuilder_; } + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder> + precommitTokenBuilder_; + /** + * + * + *
+     * If specified, transaction has not committed yet.
+     * Clients must retry the commit with the new precommit token.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 4; + * + * @return Whether the precommitToken field is set. + */ + @java.lang.Override + public boolean hasPrecommitToken() { + return multiplexedSessionRetryCase_ == 4; + } + /** + * + * + *
+     * If specified, transaction has not committed yet.
+     * Clients must retry the commit with the new precommit token.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 4; + * + * @return The precommitToken. + */ + @java.lang.Override + public com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken() { + if (precommitTokenBuilder_ == null) { + if (multiplexedSessionRetryCase_ == 4) { + return (com.google.spanner.v1.MultiplexedSessionPrecommitToken) multiplexedSessionRetry_; + } + return com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance(); + } else { + if (multiplexedSessionRetryCase_ == 4) { + return precommitTokenBuilder_.getMessage(); + } + return com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance(); + } + } + /** + * + * + *
+     * If specified, transaction has not committed yet.
+     * Clients must retry the commit with the new precommit token.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 4; + */ + public Builder setPrecommitToken(com.google.spanner.v1.MultiplexedSessionPrecommitToken value) { + if (precommitTokenBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + multiplexedSessionRetry_ = value; + onChanged(); + } else { + precommitTokenBuilder_.setMessage(value); + } + multiplexedSessionRetryCase_ = 4; + return this; + } + /** + * + * + *
+     * If specified, transaction has not committed yet.
+     * Clients must retry the commit with the new precommit token.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 4; + */ + public Builder setPrecommitToken( + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder builderForValue) { + if (precommitTokenBuilder_ == null) { + multiplexedSessionRetry_ = builderForValue.build(); + onChanged(); + } else { + precommitTokenBuilder_.setMessage(builderForValue.build()); + } + multiplexedSessionRetryCase_ = 4; + return this; + } + /** + * + * + *
+     * If specified, transaction has not committed yet.
+     * Clients must retry the commit with the new precommit token.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 4; + */ + public Builder mergePrecommitToken( + com.google.spanner.v1.MultiplexedSessionPrecommitToken value) { + if (precommitTokenBuilder_ == null) { + if (multiplexedSessionRetryCase_ == 4 + && multiplexedSessionRetry_ + != com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance()) { + multiplexedSessionRetry_ = + com.google.spanner.v1.MultiplexedSessionPrecommitToken.newBuilder( + (com.google.spanner.v1.MultiplexedSessionPrecommitToken) + multiplexedSessionRetry_) + .mergeFrom(value) + .buildPartial(); + } else { + multiplexedSessionRetry_ = value; + } + onChanged(); + } else { + if (multiplexedSessionRetryCase_ == 4) { + precommitTokenBuilder_.mergeFrom(value); + } else { + precommitTokenBuilder_.setMessage(value); + } + } + multiplexedSessionRetryCase_ = 4; + return this; + } + /** + * + * + *
+     * If specified, transaction has not committed yet.
+     * Clients must retry the commit with the new precommit token.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 4; + */ + public Builder clearPrecommitToken() { + if (precommitTokenBuilder_ == null) { + if (multiplexedSessionRetryCase_ == 4) { + multiplexedSessionRetryCase_ = 0; + multiplexedSessionRetry_ = null; + onChanged(); + } + } else { + if (multiplexedSessionRetryCase_ == 4) { + multiplexedSessionRetryCase_ = 0; + multiplexedSessionRetry_ = null; + } + precommitTokenBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * If specified, transaction has not committed yet.
+     * Clients must retry the commit with the new precommit token.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 4; + */ + public com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder + getPrecommitTokenBuilder() { + return getPrecommitTokenFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * If specified, transaction has not committed yet.
+     * Clients must retry the commit with the new precommit token.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 4; + */ + @java.lang.Override + public com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder + getPrecommitTokenOrBuilder() { + if ((multiplexedSessionRetryCase_ == 4) && (precommitTokenBuilder_ != null)) { + return precommitTokenBuilder_.getMessageOrBuilder(); + } else { + if (multiplexedSessionRetryCase_ == 4) { + return (com.google.spanner.v1.MultiplexedSessionPrecommitToken) multiplexedSessionRetry_; + } + return com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance(); + } + } + /** + * + * + *
+     * If specified, transaction has not committed yet.
+     * Clients must retry the commit with the new precommit token.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 4; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder> + getPrecommitTokenFieldBuilder() { + if (precommitTokenBuilder_ == null) { + if (!(multiplexedSessionRetryCase_ == 4)) { + multiplexedSessionRetry_ = + com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance(); + } + precommitTokenBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder>( + (com.google.spanner.v1.MultiplexedSessionPrecommitToken) multiplexedSessionRetry_, + getParentForChildren(), + isClean()); + multiplexedSessionRetry_ = null; + } + multiplexedSessionRetryCase_ = 4; + onChanged(); + return precommitTokenBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseOrBuilder.java index 6319f1c5410..9a4e8b04a0a 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseOrBuilder.java @@ -99,4 +99,44 @@ public interface CommitResponseOrBuilder * .google.spanner.v1.CommitResponse.CommitStats commit_stats = 2; */ com.google.spanner.v1.CommitResponse.CommitStatsOrBuilder getCommitStatsOrBuilder(); + + /** + * + * + *
+   * If specified, transaction has not committed yet.
+   * Clients must retry the commit with the new precommit token.
+   * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 4; + * + * @return Whether the precommitToken field is set. + */ + boolean hasPrecommitToken(); + /** + * + * + *
+   * If specified, transaction has not committed yet.
+   * Clients must retry the commit with the new precommit token.
+   * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 4; + * + * @return The precommitToken. + */ + com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken(); + /** + * + * + *
+   * If specified, transaction has not committed yet.
+   * Clients must retry the commit with the new precommit token.
+   * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 4; + */ + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder getPrecommitTokenOrBuilder(); + + com.google.spanner.v1.CommitResponse.MultiplexedSessionRetryCase getMultiplexedSessionRetryCase(); } diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseProto.java index ade85fea295..bd550231631 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseProto.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/CommitResponseProto.java @@ -47,22 +47,27 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { java.lang.String[] descriptorData = { "\n\'google/spanner/v1/commit_response.prot" + "o\022\021google.spanner.v1\032\037google/protobuf/ti" - + "mestamp.proto\"\262\001\n\016CommitResponse\0224\n\020comm" - + "it_timestamp\030\001 \001(\0132\032.google.protobuf.Tim" - + "estamp\022C\n\014commit_stats\030\002 \001(\0132-.google.sp" - + "anner.v1.CommitResponse.CommitStats\032%\n\013C" - + "ommitStats\022\026\n\016mutation_count\030\001 \001(\003B\266\001\n\025c" - + "om.google.spanner.v1B\023CommitResponseProt" - + "oP\001Z5cloud.google.com/go/spanner/apiv1/s" - + "pannerpb;spannerpb\252\002\027Google.Cloud.Spanne" - + "r.V1\312\002\027Google\\Cloud\\Spanner\\V1\352\002\032Google:" - + ":Cloud::Spanner::V1b\006proto3" + + "mestamp.proto\032#google/spanner/v1/transac" + + "tion.proto\"\235\002\n\016CommitResponse\0224\n\020commit_" + + "timestamp\030\001 \001(\0132\032.google.protobuf.Timest" + + "amp\022C\n\014commit_stats\030\002 \001(\0132-.google.spann" + + "er.v1.CommitResponse.CommitStats\022N\n\017prec" + + "ommit_token\030\004 \001(\01323.google.spanner.v1.Mu" + + "ltiplexedSessionPrecommitTokenH\000\032%\n\013Comm" + + "itStats\022\026\n\016mutation_count\030\001 \001(\003B\031\n\027Multi" + + "plexedSessionRetryB\266\001\n\025com.google.spanne" + + "r.v1B\023CommitResponseProtoP\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( descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { com.google.protobuf.TimestampProto.getDescriptor(), + com.google.spanner.v1.TransactionProto.getDescriptor(), }); internal_static_google_spanner_v1_CommitResponse_descriptor = getDescriptor().getMessageTypes().get(0); @@ -70,7 +75,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_v1_CommitResponse_descriptor, new java.lang.String[] { - "CommitTimestamp", "CommitStats", + "CommitTimestamp", "CommitStats", "PrecommitToken", "MultiplexedSessionRetry", }); internal_static_google_spanner_v1_CommitResponse_CommitStats_descriptor = internal_static_google_spanner_v1_CommitResponse_descriptor.getNestedTypes().get(0); @@ -81,6 +86,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "MutationCount", }); com.google.protobuf.TimestampProto.getDescriptor(); + com.google.spanner.v1.TransactionProto.getDescriptor(); } // @@protoc_insertion_point(outer_class_scope) 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 4a02f258fba..8fed7627083 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 @@ -254,6 +254,81 @@ public com.google.rpc.StatusOrBuilder getStatusOrBuilder() { return status_ == null ? com.google.rpc.Status.getDefaultInstance() : status_; } + public static final int PRECOMMIT_TOKEN_FIELD_NUMBER = 3; + private com.google.spanner.v1.MultiplexedSessionPrecommitToken precommitToken_; + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the precommitToken field is set. + */ + @java.lang.Override + public boolean hasPrecommitToken() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The precommitToken. + */ + @java.lang.Override + public com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken() { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + @java.lang.Override + public com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder + getPrecommitTokenOrBuilder() { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -274,6 +349,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (((bitField0_ & 0x00000001) != 0)) { output.writeMessage(2, getStatus()); } + if (((bitField0_ & 0x00000002) != 0)) { + output.writeMessage(3, getPrecommitToken()); + } getUnknownFields().writeTo(output); } @@ -289,6 +367,9 @@ public int getSerializedSize() { if (((bitField0_ & 0x00000001) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getStatus()); } + if (((bitField0_ & 0x00000002) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getPrecommitToken()); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -310,6 +391,10 @@ public boolean equals(final java.lang.Object obj) { if (hasStatus()) { if (!getStatus().equals(other.getStatus())) return false; } + if (hasPrecommitToken() != other.hasPrecommitToken()) return false; + if (hasPrecommitToken()) { + if (!getPrecommitToken().equals(other.getPrecommitToken())) return false; + } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -329,6 +414,10 @@ public int hashCode() { hash = (37 * hash) + STATUS_FIELD_NUMBER; hash = (53 * hash) + getStatus().hashCode(); } + if (hasPrecommitToken()) { + hash = (37 * hash) + PRECOMMIT_TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getPrecommitToken().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -501,6 +590,7 @@ private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { getResultSetsFieldBuilder(); getStatusFieldBuilder(); + getPrecommitTokenFieldBuilder(); } } @@ -520,6 +610,11 @@ public Builder clear() { statusBuilder_.dispose(); statusBuilder_ = null; } + precommitToken_ = null; + if (precommitTokenBuilder_ != null) { + precommitTokenBuilder_.dispose(); + precommitTokenBuilder_ = null; + } return this; } @@ -574,6 +669,11 @@ private void buildPartial0(com.google.spanner.v1.ExecuteBatchDmlResponse result) result.status_ = statusBuilder_ == null ? status_ : statusBuilder_.build(); to_bitField0_ |= 0x00000001; } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.precommitToken_ = + precommitTokenBuilder_ == null ? precommitToken_ : precommitTokenBuilder_.build(); + to_bitField0_ |= 0x00000002; + } result.bitField0_ |= to_bitField0_; } @@ -652,6 +752,9 @@ public Builder mergeFrom(com.google.spanner.v1.ExecuteBatchDmlResponse other) { if (other.hasStatus()) { mergeStatus(other.getStatus()); } + if (other.hasPrecommitToken()) { + mergePrecommitToken(other.getPrecommitToken()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -696,6 +799,12 @@ public Builder mergeFrom( bitField0_ |= 0x00000002; break; } // case 18 + case 26: + { + input.readMessage(getPrecommitTokenFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000004; + break; + } // case 26 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -1392,6 +1501,268 @@ public com.google.rpc.StatusOrBuilder getStatusOrBuilder() { return statusBuilder_; } + private com.google.spanner.v1.MultiplexedSessionPrecommitToken precommitToken_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder> + precommitTokenBuilder_; + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the precommitToken field is set. + */ + public boolean hasPrecommitToken() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The precommitToken. + */ + public com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken() { + if (precommitTokenBuilder_ == null) { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } else { + return precommitTokenBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setPrecommitToken(com.google.spanner.v1.MultiplexedSessionPrecommitToken value) { + if (precommitTokenBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + precommitToken_ = value; + } else { + precommitTokenBuilder_.setMessage(value); + } + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setPrecommitToken( + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder builderForValue) { + if (precommitTokenBuilder_ == null) { + precommitToken_ = builderForValue.build(); + } else { + precommitTokenBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder mergePrecommitToken( + com.google.spanner.v1.MultiplexedSessionPrecommitToken value) { + if (precommitTokenBuilder_ == null) { + if (((bitField0_ & 0x00000004) != 0) + && precommitToken_ != null + && precommitToken_ + != com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance()) { + getPrecommitTokenBuilder().mergeFrom(value); + } else { + precommitToken_ = value; + } + } else { + precommitTokenBuilder_.mergeFrom(value); + } + if (precommitToken_ != null) { + bitField0_ |= 0x00000004; + onChanged(); + } + return this; + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder clearPrecommitToken() { + bitField0_ = (bitField0_ & ~0x00000004); + precommitToken_ = null; + if (precommitTokenBuilder_ != null) { + precommitTokenBuilder_.dispose(); + precommitTokenBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder + getPrecommitTokenBuilder() { + bitField0_ |= 0x00000004; + onChanged(); + return getPrecommitTokenFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder + getPrecommitTokenOrBuilder() { + if (precommitTokenBuilder_ != null) { + return precommitTokenBuilder_.getMessageOrBuilder(); + } else { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder> + getPrecommitTokenFieldBuilder() { + if (precommitTokenBuilder_ == null) { + precommitTokenBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder>( + getPrecommitToken(), getParentForChildren(), isClean()); + precommitToken_ = null; + } + return precommitTokenBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); 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 bc86ce4612e..6b7dbfe17a8 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 @@ -152,4 +152,63 @@ public interface ExecuteBatchDmlResponseOrBuilder * .google.rpc.Status status = 2; */ com.google.rpc.StatusOrBuilder getStatusOrBuilder(); + + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the precommitToken field is set. + */ + boolean hasPrecommitToken(); + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The precommitToken. + */ + com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken(); + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder getPrecommitTokenOrBuilder(); } diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MultiplexedSessionPrecommitToken.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MultiplexedSessionPrecommitToken.java new file mode 100644 index 00000000000..406ebe14199 --- /dev/null +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MultiplexedSessionPrecommitToken.java @@ -0,0 +1,648 @@ +/* + * Copyright 2024 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/transaction.proto + +// Protobuf Java Version: 3.25.5 +package com.google.spanner.v1; + +/** + * + * + *
+ * When a read-write transaction is executed on a multiplexed session,
+ * this precommit token is sent back to the client
+ * as a part of the [Transaction] message in the BeginTransaction response and
+ * also as a part of the [ResultSet] and [PartialResultSet] responses.
+ * 
+ * + * Protobuf type {@code google.spanner.v1.MultiplexedSessionPrecommitToken} + */ +public final class MultiplexedSessionPrecommitToken extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.MultiplexedSessionPrecommitToken) + MultiplexedSessionPrecommitTokenOrBuilder { + private static final long serialVersionUID = 0L; + // Use MultiplexedSessionPrecommitToken.newBuilder() to construct. + private MultiplexedSessionPrecommitToken( + com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private MultiplexedSessionPrecommitToken() { + precommitToken_ = com.google.protobuf.ByteString.EMPTY; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance(UnusedPrivateParameter unused) { + return new MultiplexedSessionPrecommitToken(); + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.TransactionProto + .internal_static_google_spanner_v1_MultiplexedSessionPrecommitToken_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.TransactionProto + .internal_static_google_spanner_v1_MultiplexedSessionPrecommitToken_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.MultiplexedSessionPrecommitToken.class, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder.class); + } + + public static final int PRECOMMIT_TOKEN_FIELD_NUMBER = 1; + private com.google.protobuf.ByteString precommitToken_ = com.google.protobuf.ByteString.EMPTY; + /** + * + * + *
+   * Opaque precommit token.
+   * 
+ * + * bytes precommit_token = 1; + * + * @return The precommitToken. + */ + @java.lang.Override + public com.google.protobuf.ByteString getPrecommitToken() { + return precommitToken_; + } + + public static final int SEQ_NUM_FIELD_NUMBER = 2; + private int seqNum_ = 0; + /** + * + * + *
+   * An incrementing seq number is generated on every precommit token
+   * that is returned. Clients should remember the precommit token with the
+   * highest sequence number from the current transaction attempt.
+   * 
+ * + * int32 seq_num = 2; + * + * @return The seqNum. + */ + @java.lang.Override + public int getSeqNum() { + return seqNum_; + } + + 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 (!precommitToken_.isEmpty()) { + output.writeBytes(1, precommitToken_); + } + if (seqNum_ != 0) { + output.writeInt32(2, seqNum_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!precommitToken_.isEmpty()) { + size += com.google.protobuf.CodedOutputStream.computeBytesSize(1, precommitToken_); + } + if (seqNum_ != 0) { + size += com.google.protobuf.CodedOutputStream.computeInt32Size(2, seqNum_); + } + 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.MultiplexedSessionPrecommitToken)) { + return super.equals(obj); + } + com.google.spanner.v1.MultiplexedSessionPrecommitToken other = + (com.google.spanner.v1.MultiplexedSessionPrecommitToken) obj; + + if (!getPrecommitToken().equals(other.getPrecommitToken())) return false; + if (getSeqNum() != other.getSeqNum()) 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) + PRECOMMIT_TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getPrecommitToken().hashCode(); + hash = (37 * hash) + SEQ_NUM_FIELD_NUMBER; + hash = (53 * hash) + getSeqNum(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.MultiplexedSessionPrecommitToken parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.MultiplexedSessionPrecommitToken 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.MultiplexedSessionPrecommitToken parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.MultiplexedSessionPrecommitToken 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.MultiplexedSessionPrecommitToken parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.MultiplexedSessionPrecommitToken parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.MultiplexedSessionPrecommitToken parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.MultiplexedSessionPrecommitToken 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.MultiplexedSessionPrecommitToken parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.MultiplexedSessionPrecommitToken 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.MultiplexedSessionPrecommitToken parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.MultiplexedSessionPrecommitToken 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.MultiplexedSessionPrecommitToken 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; + } + /** + * + * + *
+   * When a read-write transaction is executed on a multiplexed session,
+   * this precommit token is sent back to the client
+   * as a part of the [Transaction] message in the BeginTransaction response and
+   * also as a part of the [ResultSet] and [PartialResultSet] responses.
+   * 
+ * + * Protobuf type {@code google.spanner.v1.MultiplexedSessionPrecommitToken} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.MultiplexedSessionPrecommitToken) + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.TransactionProto + .internal_static_google_spanner_v1_MultiplexedSessionPrecommitToken_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.TransactionProto + .internal_static_google_spanner_v1_MultiplexedSessionPrecommitToken_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.MultiplexedSessionPrecommitToken.class, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder.class); + } + + // Construct using com.google.spanner.v1.MultiplexedSessionPrecommitToken.newBuilder() + private Builder() {} + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + } + + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + precommitToken_ = com.google.protobuf.ByteString.EMPTY; + seqNum_ = 0; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.TransactionProto + .internal_static_google_spanner_v1_MultiplexedSessionPrecommitToken_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.MultiplexedSessionPrecommitToken getDefaultInstanceForType() { + return com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.MultiplexedSessionPrecommitToken build() { + com.google.spanner.v1.MultiplexedSessionPrecommitToken result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.MultiplexedSessionPrecommitToken buildPartial() { + com.google.spanner.v1.MultiplexedSessionPrecommitToken result = + new com.google.spanner.v1.MultiplexedSessionPrecommitToken(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(com.google.spanner.v1.MultiplexedSessionPrecommitToken result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.precommitToken_ = precommitToken_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.seqNum_ = seqNum_; + } + } + + @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.MultiplexedSessionPrecommitToken) { + return mergeFrom((com.google.spanner.v1.MultiplexedSessionPrecommitToken) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.spanner.v1.MultiplexedSessionPrecommitToken other) { + if (other == com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance()) + return this; + if (other.getPrecommitToken() != com.google.protobuf.ByteString.EMPTY) { + setPrecommitToken(other.getPrecommitToken()); + } + if (other.getSeqNum() != 0) { + setSeqNum(other.getSeqNum()); + } + 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: + { + precommitToken_ = input.readBytes(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 16: + { + seqNum_ = input.readInt32(); + 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 com.google.protobuf.ByteString precommitToken_ = com.google.protobuf.ByteString.EMPTY; + /** + * + * + *
+     * Opaque precommit token.
+     * 
+ * + * bytes precommit_token = 1; + * + * @return The precommitToken. + */ + @java.lang.Override + public com.google.protobuf.ByteString getPrecommitToken() { + return precommitToken_; + } + /** + * + * + *
+     * Opaque precommit token.
+     * 
+ * + * bytes precommit_token = 1; + * + * @param value The precommitToken to set. + * @return This builder for chaining. + */ + public Builder setPrecommitToken(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + precommitToken_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * + * + *
+     * Opaque precommit token.
+     * 
+ * + * bytes precommit_token = 1; + * + * @return This builder for chaining. + */ + public Builder clearPrecommitToken() { + bitField0_ = (bitField0_ & ~0x00000001); + precommitToken_ = getDefaultInstance().getPrecommitToken(); + onChanged(); + return this; + } + + private int seqNum_; + /** + * + * + *
+     * An incrementing seq number is generated on every precommit token
+     * that is returned. Clients should remember the precommit token with the
+     * highest sequence number from the current transaction attempt.
+     * 
+ * + * int32 seq_num = 2; + * + * @return The seqNum. + */ + @java.lang.Override + public int getSeqNum() { + return seqNum_; + } + /** + * + * + *
+     * An incrementing seq number is generated on every precommit token
+     * that is returned. Clients should remember the precommit token with the
+     * highest sequence number from the current transaction attempt.
+     * 
+ * + * int32 seq_num = 2; + * + * @param value The seqNum to set. + * @return This builder for chaining. + */ + public Builder setSeqNum(int value) { + + seqNum_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+     * An incrementing seq number is generated on every precommit token
+     * that is returned. Clients should remember the precommit token with the
+     * highest sequence number from the current transaction attempt.
+     * 
+ * + * int32 seq_num = 2; + * + * @return This builder for chaining. + */ + public Builder clearSeqNum() { + bitField0_ = (bitField0_ & ~0x00000002); + seqNum_ = 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.MultiplexedSessionPrecommitToken) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.MultiplexedSessionPrecommitToken) + private static final com.google.spanner.v1.MultiplexedSessionPrecommitToken DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.v1.MultiplexedSessionPrecommitToken(); + } + + public static com.google.spanner.v1.MultiplexedSessionPrecommitToken getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public MultiplexedSessionPrecommitToken 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.MultiplexedSessionPrecommitToken getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MultiplexedSessionPrecommitTokenOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MultiplexedSessionPrecommitTokenOrBuilder.java new file mode 100644 index 00000000000..1c8a9d74b98 --- /dev/null +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/MultiplexedSessionPrecommitTokenOrBuilder.java @@ -0,0 +1,54 @@ +/* + * Copyright 2024 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/transaction.proto + +// Protobuf Java Version: 3.25.5 +package com.google.spanner.v1; + +public interface MultiplexedSessionPrecommitTokenOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.MultiplexedSessionPrecommitToken) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Opaque precommit token.
+   * 
+ * + * bytes precommit_token = 1; + * + * @return The precommitToken. + */ + com.google.protobuf.ByteString getPrecommitToken(); + + /** + * + * + *
+   * An incrementing seq number is generated on every precommit token
+   * that is returned. Clients should remember the precommit token with the
+   * highest sequence number from the current transaction attempt.
+   * 
+ * + * int32 seq_num = 2; + * + * @return The seqNum. + */ + int getSeqNum(); +} diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartialResultSet.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartialResultSet.java index a77ec47c7be..261b5a8e03b 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartialResultSet.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartialResultSet.java @@ -653,6 +653,81 @@ public com.google.spanner.v1.ResultSetStatsOrBuilder getStatsOrBuilder() { return stats_ == null ? com.google.spanner.v1.ResultSetStats.getDefaultInstance() : stats_; } + public static final int PRECOMMIT_TOKEN_FIELD_NUMBER = 8; + private com.google.spanner.v1.MultiplexedSessionPrecommitToken precommitToken_; + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the precommitToken field is set. + */ + @java.lang.Override + public boolean hasPrecommitToken() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The precommitToken. + */ + @java.lang.Override + public com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken() { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + @java.lang.Override + public com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder + getPrecommitTokenOrBuilder() { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -682,6 +757,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (((bitField0_ & 0x00000002) != 0)) { output.writeMessage(5, getStats()); } + if (((bitField0_ & 0x00000004) != 0)) { + output.writeMessage(8, getPrecommitToken()); + } getUnknownFields().writeTo(output); } @@ -706,6 +784,9 @@ public int getSerializedSize() { if (((bitField0_ & 0x00000002) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getStats()); } + if (((bitField0_ & 0x00000004) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, getPrecommitToken()); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -732,6 +813,10 @@ public boolean equals(final java.lang.Object obj) { if (hasStats()) { if (!getStats().equals(other.getStats())) return false; } + if (hasPrecommitToken() != other.hasPrecommitToken()) return false; + if (hasPrecommitToken()) { + if (!getPrecommitToken().equals(other.getPrecommitToken())) return false; + } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -759,6 +844,10 @@ public int hashCode() { hash = (37 * hash) + STATS_FIELD_NUMBER; hash = (53 * hash) + getStats().hashCode(); } + if (hasPrecommitToken()) { + hash = (37 * hash) + PRECOMMIT_TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getPrecommitToken().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -904,6 +993,7 @@ private void maybeForceBuilderInitialization() { getMetadataFieldBuilder(); getValuesFieldBuilder(); getStatsFieldBuilder(); + getPrecommitTokenFieldBuilder(); } } @@ -930,6 +1020,11 @@ public Builder clear() { statsBuilder_.dispose(); statsBuilder_ = null; } + precommitToken_ = null; + if (precommitTokenBuilder_ != null) { + precommitTokenBuilder_.dispose(); + precommitTokenBuilder_ = null; + } return this; } @@ -994,6 +1089,11 @@ private void buildPartial0(com.google.spanner.v1.PartialResultSet result) { result.stats_ = statsBuilder_ == null ? stats_ : statsBuilder_.build(); to_bitField0_ |= 0x00000002; } + if (((from_bitField0_ & 0x00000020) != 0)) { + result.precommitToken_ = + precommitTokenBuilder_ == null ? precommitToken_ : precommitTokenBuilder_.build(); + to_bitField0_ |= 0x00000004; + } result.bitField0_ |= to_bitField0_; } @@ -1081,6 +1181,9 @@ public Builder mergeFrom(com.google.spanner.v1.PartialResultSet other) { if (other.hasStats()) { mergeStats(other.getStats()); } + if (other.hasPrecommitToken()) { + mergePrecommitToken(other.getPrecommitToken()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -1143,6 +1246,12 @@ public Builder mergeFrom( bitField0_ |= 0x00000010; break; } // case 42 + case 66: + { + input.readMessage(getPrecommitTokenFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000020; + break; + } // case 66 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -3346,6 +3455,268 @@ public com.google.spanner.v1.ResultSetStatsOrBuilder getStatsOrBuilder() { return statsBuilder_; } + private com.google.spanner.v1.MultiplexedSessionPrecommitToken precommitToken_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder> + precommitTokenBuilder_; + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the precommitToken field is set. + */ + public boolean hasPrecommitToken() { + return ((bitField0_ & 0x00000020) != 0); + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The precommitToken. + */ + public com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken() { + if (precommitTokenBuilder_ == null) { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } else { + return precommitTokenBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setPrecommitToken(com.google.spanner.v1.MultiplexedSessionPrecommitToken value) { + if (precommitTokenBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + precommitToken_ = value; + } else { + precommitTokenBuilder_.setMessage(value); + } + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setPrecommitToken( + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder builderForValue) { + if (precommitTokenBuilder_ == null) { + precommitToken_ = builderForValue.build(); + } else { + precommitTokenBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder mergePrecommitToken( + com.google.spanner.v1.MultiplexedSessionPrecommitToken value) { + if (precommitTokenBuilder_ == null) { + if (((bitField0_ & 0x00000020) != 0) + && precommitToken_ != null + && precommitToken_ + != com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance()) { + getPrecommitTokenBuilder().mergeFrom(value); + } else { + precommitToken_ = value; + } + } else { + precommitTokenBuilder_.mergeFrom(value); + } + if (precommitToken_ != null) { + bitField0_ |= 0x00000020; + onChanged(); + } + return this; + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder clearPrecommitToken() { + bitField0_ = (bitField0_ & ~0x00000020); + precommitToken_ = null; + if (precommitTokenBuilder_ != null) { + precommitTokenBuilder_.dispose(); + precommitTokenBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder + getPrecommitTokenBuilder() { + bitField0_ |= 0x00000020; + onChanged(); + return getPrecommitTokenFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder + getPrecommitTokenOrBuilder() { + if (precommitTokenBuilder_ != null) { + return precommitTokenBuilder_.getMessageOrBuilder(); + } else { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder> + getPrecommitTokenFieldBuilder() { + if (precommitTokenBuilder_ == null) { + precommitTokenBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder>( + getPrecommitToken(), getParentForChildren(), isClean()); + precommitToken_ = null; + } + return precommitTokenBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartialResultSetOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartialResultSetOrBuilder.java index 4bf05af61e7..fdf1f461f68 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartialResultSetOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/PartialResultSetOrBuilder.java @@ -554,4 +554,63 @@ public interface PartialResultSetOrBuilder * .google.spanner.v1.ResultSetStats stats = 5; */ com.google.spanner.v1.ResultSetStatsOrBuilder getStatsOrBuilder(); + + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the precommitToken field is set. + */ + boolean hasPrecommitToken(); + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The precommitToken. + */ + com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken(); + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 8 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder getPrecommitTokenOrBuilder(); } diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSet.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSet.java index 7a3a9563f22..42ee5817b9e 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSet.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSet.java @@ -276,6 +276,81 @@ public com.google.spanner.v1.ResultSetStatsOrBuilder getStatsOrBuilder() { return stats_ == null ? com.google.spanner.v1.ResultSetStats.getDefaultInstance() : stats_; } + public static final int PRECOMMIT_TOKEN_FIELD_NUMBER = 5; + private com.google.spanner.v1.MultiplexedSessionPrecommitToken precommitToken_; + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the precommitToken field is set. + */ + @java.lang.Override + public boolean hasPrecommitToken() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The precommitToken. + */ + @java.lang.Override + public com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken() { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + @java.lang.Override + public com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder + getPrecommitTokenOrBuilder() { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -299,6 +374,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (((bitField0_ & 0x00000002) != 0)) { output.writeMessage(3, getStats()); } + if (((bitField0_ & 0x00000004) != 0)) { + output.writeMessage(5, getPrecommitToken()); + } getUnknownFields().writeTo(output); } @@ -317,6 +395,9 @@ public int getSerializedSize() { if (((bitField0_ & 0x00000002) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getStats()); } + if (((bitField0_ & 0x00000004) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getPrecommitToken()); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -341,6 +422,10 @@ public boolean equals(final java.lang.Object obj) { if (hasStats()) { if (!getStats().equals(other.getStats())) return false; } + if (hasPrecommitToken() != other.hasPrecommitToken()) return false; + if (hasPrecommitToken()) { + if (!getPrecommitToken().equals(other.getPrecommitToken())) return false; + } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -364,6 +449,10 @@ public int hashCode() { hash = (37 * hash) + STATS_FIELD_NUMBER; hash = (53 * hash) + getStats().hashCode(); } + if (hasPrecommitToken()) { + hash = (37 * hash) + PRECOMMIT_TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getPrecommitToken().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -506,6 +595,7 @@ private void maybeForceBuilderInitialization() { getMetadataFieldBuilder(); getRowsFieldBuilder(); getStatsFieldBuilder(); + getPrecommitTokenFieldBuilder(); } } @@ -530,6 +620,11 @@ public Builder clear() { statsBuilder_.dispose(); statsBuilder_ = null; } + precommitToken_ = null; + if (precommitTokenBuilder_ != null) { + precommitTokenBuilder_.dispose(); + precommitTokenBuilder_ = null; + } return this; } @@ -587,6 +682,11 @@ private void buildPartial0(com.google.spanner.v1.ResultSet result) { result.stats_ = statsBuilder_ == null ? stats_ : statsBuilder_.build(); to_bitField0_ |= 0x00000002; } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.precommitToken_ = + precommitTokenBuilder_ == null ? precommitToken_ : precommitTokenBuilder_.build(); + to_bitField0_ |= 0x00000004; + } result.bitField0_ |= to_bitField0_; } @@ -668,6 +768,9 @@ public Builder mergeFrom(com.google.spanner.v1.ResultSet other) { if (other.hasStats()) { mergeStats(other.getStats()); } + if (other.hasPrecommitToken()) { + mergePrecommitToken(other.getPrecommitToken()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -718,6 +821,12 @@ public Builder mergeFrom( bitField0_ |= 0x00000004; break; } // case 26 + case 42: + { + input.readMessage(getPrecommitTokenFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000008; + break; + } // case 42 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -1598,6 +1707,268 @@ public com.google.spanner.v1.ResultSetStatsOrBuilder getStatsOrBuilder() { return statsBuilder_; } + private com.google.spanner.v1.MultiplexedSessionPrecommitToken precommitToken_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder> + precommitTokenBuilder_; + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the precommitToken field is set. + */ + public boolean hasPrecommitToken() { + return ((bitField0_ & 0x00000008) != 0); + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The precommitToken. + */ + public com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken() { + if (precommitTokenBuilder_ == null) { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } else { + return precommitTokenBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setPrecommitToken(com.google.spanner.v1.MultiplexedSessionPrecommitToken value) { + if (precommitTokenBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + precommitToken_ = value; + } else { + precommitTokenBuilder_.setMessage(value); + } + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder setPrecommitToken( + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder builderForValue) { + if (precommitTokenBuilder_ == null) { + precommitToken_ = builderForValue.build(); + } else { + precommitTokenBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder mergePrecommitToken( + com.google.spanner.v1.MultiplexedSessionPrecommitToken value) { + if (precommitTokenBuilder_ == null) { + if (((bitField0_ & 0x00000008) != 0) + && precommitToken_ != null + && precommitToken_ + != com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance()) { + getPrecommitTokenBuilder().mergeFrom(value); + } else { + precommitToken_ = value; + } + } else { + precommitTokenBuilder_.mergeFrom(value); + } + if (precommitToken_ != null) { + bitField0_ |= 0x00000008; + onChanged(); + } + return this; + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public Builder clearPrecommitToken() { + bitField0_ = (bitField0_ & ~0x00000008); + precommitToken_ = null; + if (precommitTokenBuilder_ != null) { + precommitTokenBuilder_.dispose(); + precommitTokenBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder + getPrecommitTokenBuilder() { + bitField0_ |= 0x00000008; + onChanged(); + return getPrecommitTokenFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + public com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder + getPrecommitTokenOrBuilder() { + if (precommitTokenBuilder_ != null) { + return precommitTokenBuilder_.getMessageOrBuilder(); + } else { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } + } + /** + * + * + *
+     * Optional. A precommit token will be included if the read-write transaction
+     * is on a multiplexed session.
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the
+     * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder> + getPrecommitTokenFieldBuilder() { + if (precommitTokenBuilder_ == null) { + precommitTokenBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder>( + getPrecommitToken(), getParentForChildren(), isClean()); + precommitToken_ = null; + } + return precommitTokenBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetOrBuilder.java index 64e7453b3e9..3ce8f7d3e2d 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetOrBuilder.java @@ -190,4 +190,63 @@ public interface ResultSetOrBuilder * .google.spanner.v1.ResultSetStats stats = 3; */ com.google.spanner.v1.ResultSetStatsOrBuilder getStatsOrBuilder(); + + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return Whether the precommitToken field is set. + */ + boolean hasPrecommitToken(); + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The precommitToken. + */ + com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken(); + /** + * + * + *
+   * Optional. A precommit token will be included if the read-write transaction
+   * is on a multiplexed session.
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the
+   * [Commit][google.spanner.v1.Spanner.Commit] request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 5 [(.google.api.field_behavior) = OPTIONAL]; + * + */ + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder getPrecommitTokenOrBuilder(); } diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetProto.java index 82416656145..93b78d65669 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetProto.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetProto.java @@ -54,39 +54,45 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { static { java.lang.String[] descriptorData = { "\n\"google/spanner/v1/result_set.proto\022\021go" - + "ogle.spanner.v1\032\034google/protobuf/struct." - + "proto\032\"google/spanner/v1/query_plan.prot" - + "o\032#google/spanner/v1/transaction.proto\032\034" - + "google/spanner/v1/type.proto\"\237\001\n\tResultS" - + "et\0226\n\010metadata\030\001 \001(\0132$.google.spanner.v1" - + ".ResultSetMetadata\022(\n\004rows\030\002 \003(\0132\032.googl" - + "e.protobuf.ListValue\0220\n\005stats\030\003 \001(\0132!.go" - + "ogle.spanner.v1.ResultSetStats\"\321\001\n\020Parti" - + "alResultSet\0226\n\010metadata\030\001 \001(\0132$.google.s" - + "panner.v1.ResultSetMetadata\022&\n\006values\030\002 " - + "\003(\0132\026.google.protobuf.Value\022\025\n\rchunked_v" - + "alue\030\003 \001(\010\022\024\n\014resume_token\030\004 \001(\014\0220\n\005stat" - + "s\030\005 \001(\0132!.google.spanner.v1.ResultSetSta" - + "ts\"\267\001\n\021ResultSetMetadata\022/\n\010row_type\030\001 \001" - + "(\0132\035.google.spanner.v1.StructType\0223\n\013tra" - + "nsaction\030\002 \001(\0132\036.google.spanner.v1.Trans" - + "action\022<\n\025undeclared_parameters\030\003 \001(\0132\035." - + "google.spanner.v1.StructType\"\271\001\n\016ResultS" - + "etStats\0220\n\nquery_plan\030\001 \001(\0132\034.google.spa" - + "nner.v1.QueryPlan\022,\n\013query_stats\030\002 \001(\0132\027" - + ".google.protobuf.Struct\022\031\n\017row_count_exa" - + "ct\030\003 \001(\003H\000\022\037\n\025row_count_lower_bound\030\004 \001(" - + "\003H\000B\013\n\trow_countB\264\001\n\025com.google.spanner." - + "v1B\016ResultSetProtoP\001Z5cloud.google.com/g" - + "o/spanner/apiv1/spannerpb;spannerpb\370\001\001\252\002" - + "\027Google.Cloud.Spanner.V1\312\002\027Google\\Cloud\\" - + "Spanner\\V1\352\002\032Google::Cloud::Spanner::V1b" - + "\006proto3" + + "ogle.spanner.v1\032\037google/api/field_behavi" + + "or.proto\032\034google/protobuf/struct.proto\032\"" + + "google/spanner/v1/query_plan.proto\032#goog" + + "le/spanner/v1/transaction.proto\032\034google/" + + "spanner/v1/type.proto\"\362\001\n\tResultSet\0226\n\010m" + + "etadata\030\001 \001(\0132$.google.spanner.v1.Result" + + "SetMetadata\022(\n\004rows\030\002 \003(\0132\032.google.proto" + + "buf.ListValue\0220\n\005stats\030\003 \001(\0132!.google.sp" + + "anner.v1.ResultSetStats\022Q\n\017precommit_tok" + + "en\030\005 \001(\01323.google.spanner.v1.Multiplexed" + + "SessionPrecommitTokenB\003\340A\001\"\244\002\n\020PartialRe" + + "sultSet\0226\n\010metadata\030\001 \001(\0132$.google.spann" + + "er.v1.ResultSetMetadata\022&\n\006values\030\002 \003(\0132" + + "\026.google.protobuf.Value\022\025\n\rchunked_value" + + "\030\003 \001(\010\022\024\n\014resume_token\030\004 \001(\014\0220\n\005stats\030\005 " + + "\001(\0132!.google.spanner.v1.ResultSetStats\022Q" + + "\n\017precommit_token\030\010 \001(\01323.google.spanner" + + ".v1.MultiplexedSessionPrecommitTokenB\003\340A" + + "\001\"\267\001\n\021ResultSetMetadata\022/\n\010row_type\030\001 \001(" + + "\0132\035.google.spanner.v1.StructType\0223\n\013tran" + + "saction\030\002 \001(\0132\036.google.spanner.v1.Transa" + + "ction\022<\n\025undeclared_parameters\030\003 \001(\0132\035.g" + + "oogle.spanner.v1.StructType\"\271\001\n\016ResultSe" + + "tStats\0220\n\nquery_plan\030\001 \001(\0132\034.google.span" + + "ner.v1.QueryPlan\022,\n\013query_stats\030\002 \001(\0132\027." + + "google.protobuf.Struct\022\031\n\017row_count_exac" + + "t\030\003 \001(\003H\000\022\037\n\025row_count_lower_bound\030\004 \001(\003" + + "H\000B\013\n\trow_countB\264\001\n\025com.google.spanner.v" + + "1B\016ResultSetProtoP\001Z5cloud.google.com/go" + + "/spanner/apiv1/spannerpb;spannerpb\370\001\001\252\002\027" + + "Google.Cloud.Spanner.V1\312\002\027Google\\Cloud\\S" + + "panner\\V1\352\002\032Google::Cloud::Spanner::V1b\006" + + "proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { + com.google.api.FieldBehaviorProto.getDescriptor(), com.google.protobuf.StructProto.getDescriptor(), com.google.spanner.v1.QueryPlanProto.getDescriptor(), com.google.spanner.v1.TransactionProto.getDescriptor(), @@ -98,7 +104,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_v1_ResultSet_descriptor, new java.lang.String[] { - "Metadata", "Rows", "Stats", + "Metadata", "Rows", "Stats", "PrecommitToken", }); internal_static_google_spanner_v1_PartialResultSet_descriptor = getDescriptor().getMessageTypes().get(1); @@ -106,7 +112,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_v1_PartialResultSet_descriptor, new java.lang.String[] { - "Metadata", "Values", "ChunkedValue", "ResumeToken", "Stats", + "Metadata", "Values", "ChunkedValue", "ResumeToken", "Stats", "PrecommitToken", }); internal_static_google_spanner_v1_ResultSetMetadata_descriptor = getDescriptor().getMessageTypes().get(2); @@ -124,6 +130,12 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new java.lang.String[] { "QueryPlan", "QueryStats", "RowCountExact", "RowCountLowerBound", "RowCount", }); + com.google.protobuf.ExtensionRegistry registry = + com.google.protobuf.ExtensionRegistry.newInstance(); + registry.add(com.google.api.FieldBehaviorProto.fieldBehavior); + com.google.protobuf.Descriptors.FileDescriptor.internalUpdateFileDescriptor( + descriptor, registry); + com.google.api.FieldBehaviorProto.getDescriptor(); com.google.protobuf.StructProto.getDescriptor(); com.google.spanner.v1.QueryPlanProto.getDescriptor(); com.google.spanner.v1.TransactionProto.getDescriptor(); 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 9c90d3f61a1..d8679c5b35d 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 @@ -272,167 +272,172 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "\003(\0132C.google.spanner.v1.ExecuteBatchDmlR" + "equest.Statement.ParamTypesEntry\032J\n\017Para" + "mTypesEntry\022\013\n\003key\030\001 \001(\t\022&\n\005value\030\002 \001(\0132" - + "\027.google.spanner.v1.Type:\0028\001\"p\n\027ExecuteB" - + "atchDmlResponse\0221\n\013result_sets\030\001 \003(\0132\034.g" - + "oogle.spanner.v1.ResultSet\022\"\n\006status\030\002 \001" - + "(\0132\022.google.rpc.Status\"H\n\020PartitionOptio" - + "ns\022\034\n\024partition_size_bytes\030\001 \001(\003\022\026\n\016max_" - + "partitions\030\002 \001(\003\"\243\003\n\025PartitionQueryReque" - + "st\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036spanner.goo" - + "gleapis.com/Session\022;\n\013transaction\030\002 \001(\013" - + "2&.google.spanner.v1.TransactionSelector" - + "\022\020\n\003sql\030\003 \001(\tB\003\340A\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\"\261" - + "\002\n\024PartitionReadRequest\0227\n\007session\030\001 \001(\t" - + "B&\340A\002\372A \n\036spanner.googleapis.com/Session" - + "\022;\n\013transaction\030\002 \001(\0132&.google.spanner.v" - + "1.TransactionSelector\022\022\n\005table\030\003 \001(\tB\003\340A" - + "\002\022\r\n\005index\030\004 \001(\t\022\017\n\007columns\030\005 \003(\t\022/\n\007key" - + "_set\030\006 \001(\0132\031.google.spanner.v1.KeySetB\003\340" - + "A\002\022>\n\021partition_options\030\t \001(\0132#.google.s" - + "panner.v1.PartitionOptions\"$\n\tPartition\022" - + "\027\n\017partition_token\030\001 \001(\014\"z\n\021PartitionRes" - + "ponse\0220\n\npartitions\030\001 \003(\0132\034.google.spann" - + "er.v1.Partition\0223\n\013transaction\030\002 \001(\0132\036.g" - + "oogle.spanner.v1.Transaction\"\366\005\n\013ReadReq" - + "uest\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036spanner.g" - + "oogleapis.com/Session\022;\n\013transaction\030\002 \001" - + "(\0132&.google.spanner.v1.TransactionSelect" - + "or\022\022\n\005table\030\003 \001(\tB\003\340A\002\022\r\n\005index\030\004 \001(\t\022\024\n" - + "\007columns\030\005 \003(\tB\003\340A\002\022/\n\007key_set\030\006 \001(\0132\031.g" - + "oogle.spanner.v1.KeySetB\003\340A\002\022\r\n\005limit\030\010 " - + "\001(\003\022\024\n\014resume_token\030\t \001(\014\022\027\n\017partition_t" - + "oken\030\n \001(\014\022:\n\017request_options\030\013 \001(\0132!.go" - + "ogle.spanner.v1.RequestOptions\022E\n\025direct" - + "ed_read_options\030\016 \001(\0132&.google.spanner.v" - + "1.DirectedReadOptions\022\032\n\022data_boost_enab" - + "led\030\017 \001(\010\022=\n\010order_by\030\020 \001(\0162&.google.spa" - + "nner.v1.ReadRequest.OrderByB\003\340A\001\022?\n\tlock" - + "_hint\030\021 \001(\0162\'.google.spanner.v1.ReadRequ" - + "est.LockHintB\003\340A\001\"T\n\007OrderBy\022\030\n\024ORDER_BY" - + "_UNSPECIFIED\020\000\022\030\n\024ORDER_BY_PRIMARY_KEY\020\001" - + "\022\025\n\021ORDER_BY_NO_ORDER\020\002\"T\n\010LockHint\022\031\n\025L" - + "OCK_HINT_UNSPECIFIED\020\000\022\024\n\020LOCK_HINT_SHAR" - + "ED\020\001\022\027\n\023LOCK_HINT_EXCLUSIVE\020\002\"\313\001\n\027BeginT" - + "ransactionRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372" - + "A \n\036spanner.googleapis.com/Session\022;\n\007op" - + "tions\030\002 \001(\0132%.google.spanner.v1.Transact" - + "ionOptionsB\003\340A\002\022:\n\017request_options\030\003 \001(\013" - + "2!.google.spanner.v1.RequestOptions\"\375\002\n\r" - + "CommitRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036" - + "spanner.googleapis.com/Session\022\030\n\016transa" - + "ction_id\030\002 \001(\014H\000\022G\n\026single_use_transacti" - + "on\030\003 \001(\0132%.google.spanner.v1.Transaction" - + "OptionsH\000\022.\n\tmutations\030\004 \003(\0132\033.google.sp" - + "anner.v1.Mutation\022\033\n\023return_commit_stats" - + "\030\005 \001(\010\0228\n\020max_commit_delay\030\010 \001(\0132\031.googl" - + "e.protobuf.DurationB\003\340A\001\022:\n\017request_opti" - + "ons\030\006 \001(\0132!.google.spanner.v1.RequestOpt" - + "ionsB\r\n\013transaction\"g\n\017RollbackRequest\0227" - + "\n\007session\030\001 \001(\tB&\340A\002\372A \n\036spanner.googlea" - + "pis.com/Session\022\033\n\016transaction_id\030\002 \001(\014B" - + "\003\340A\002\"\316\002\n\021BatchWriteRequest\0227\n\007session\030\001 " - + "\001(\tB&\340A\002\372A \n\036spanner.googleapis.com/Sess" - + "ion\022:\n\017request_options\030\003 \001(\0132!.google.sp" - + "anner.v1.RequestOptions\022P\n\017mutation_grou" - + "ps\030\004 \003(\01322.google.spanner.v1.BatchWriteR" - + "equest.MutationGroupB\003\340A\002\022,\n\037exclude_txn" - + "_from_change_streams\030\005 \001(\010B\003\340A\001\032D\n\rMutat" - + "ionGroup\0223\n\tmutations\030\001 \003(\0132\033.google.spa" - + "nner.v1.MutationB\003\340A\002\"\177\n\022BatchWriteRespo" - + "nse\022\017\n\007indexes\030\001 \003(\005\022\"\n\006status\030\002 \001(\0132\022.g" - + "oogle.rpc.Status\0224\n\020commit_timestamp\030\003 \001" - + "(\0132\032.google.protobuf.Timestamp2\213\030\n\007Spann" - + "er\022\246\001\n\rCreateSession\022\'.google.spanner.v1" - + ".CreateSessionRequest\032\032.google.spanner.v" - + "1.Session\"P\332A\010database\202\323\344\223\002?\":/v1/{datab" - + "ase=projects/*/instances/*/databases/*}/" - + "sessions:\001*\022\340\001\n\023BatchCreateSessions\022-.go" - + "ogle.spanner.v1.BatchCreateSessionsReque" - + "st\032..google.spanner.v1.BatchCreateSessio" - + "nsResponse\"j\332A\026database,session_count\202\323\344" - + "\223\002K\"F/v1/{database=projects/*/instances/" - + "*/databases/*}/sessions:batchCreate:\001*\022\227" - + "\001\n\nGetSession\022$.google.spanner.v1.GetSes" - + "sionRequest\032\032.google.spanner.v1.Session\"" - + "G\332A\004name\202\323\344\223\002:\0228/v1/{name=projects/*/ins" - + "tances/*/databases/*/sessions/*}\022\256\001\n\014Lis" - + "tSessions\022&.google.spanner.v1.ListSessio" - + "nsRequest\032\'.google.spanner.v1.ListSessio" - + "nsResponse\"M\332A\010database\202\323\344\223\002<\022:/v1/{data" - + "base=projects/*/instances/*/databases/*}" - + "/sessions\022\231\001\n\rDeleteSession\022\'.google.spa" - + "nner.v1.DeleteSessionRequest\032\026.google.pr" - + "otobuf.Empty\"G\332A\004name\202\323\344\223\002:*8/v1/{name=p" - + "rojects/*/instances/*/databases/*/sessio" - + "ns/*}\022\243\001\n\nExecuteSql\022$.google.spanner.v1" - + ".ExecuteSqlRequest\032\034.google.spanner.v1.R" - + "esultSet\"Q\202\323\344\223\002K\"F/v1/{session=projects/" - + "*/instances/*/databases/*/sessions/*}:ex" - + "ecuteSql:\001*\022\276\001\n\023ExecuteStreamingSql\022$.go" - + "ogle.spanner.v1.ExecuteSqlRequest\032#.goog" - + "le.spanner.v1.PartialResultSet\"Z\202\323\344\223\002T\"O" - + "/v1/{session=projects/*/instances/*/data" - + "bases/*/sessions/*}:executeStreamingSql:" - + "\001*0\001\022\300\001\n\017ExecuteBatchDml\022).google.spanne" - + "r.v1.ExecuteBatchDmlRequest\032*.google.spa" - + "nner.v1.ExecuteBatchDmlResponse\"V\202\323\344\223\002P\"" - + "K/v1/{session=projects/*/instances/*/dat" - + "abases/*/sessions/*}:executeBatchDml:\001*\022" - + "\221\001\n\004Read\022\036.google.spanner.v1.ReadRequest" - + "\032\034.google.spanner.v1.ResultSet\"K\202\323\344\223\002E\"@" - + "/v1/{session=projects/*/instances/*/data" - + "bases/*/sessions/*}:read:\001*\022\254\001\n\rStreamin" - + "gRead\022\036.google.spanner.v1.ReadRequest\032#." - + "google.spanner.v1.PartialResultSet\"T\202\323\344\223" - + "\002N\"I/v1/{session=projects/*/instances/*/" - + "databases/*/sessions/*}:streamingRead:\001*" - + "0\001\022\311\001\n\020BeginTransaction\022*.google.spanner" - + ".v1.BeginTransactionRequest\032\036.google.spa" - + "nner.v1.Transaction\"i\332A\017session,options\202" - + "\323\344\223\002Q\"L/v1/{session=projects/*/instances" - + "/*/databases/*/sessions/*}:beginTransact" - + "ion:\001*\022\353\001\n\006Commit\022 .google.spanner.v1.Co" - + "mmitRequest\032!.google.spanner.v1.CommitRe" - + "sponse\"\233\001\332A session,transaction_id,mutat" - + "ions\332A(session,single_use_transaction,mu" - + "tations\202\323\344\223\002G\"B/v1/{session=projects/*/i" - + "nstances/*/databases/*/sessions/*}:commi" - + "t:\001*\022\260\001\n\010Rollback\022\".google.spanner.v1.Ro" - + "llbackRequest\032\026.google.protobuf.Empty\"h\332" - + "A\026session,transaction_id\202\323\344\223\002I\"D/v1/{ses" - + "sion=projects/*/instances/*/databases/*/" - + "sessions/*}:rollback:\001*\022\267\001\n\016PartitionQue" - + "ry\022(.google.spanner.v1.PartitionQueryReq" - + "uest\032$.google.spanner.v1.PartitionRespon" - + "se\"U\202\323\344\223\002O\"J/v1/{session=projects/*/inst" - + "ances/*/databases/*/sessions/*}:partitio" - + "nQuery:\001*\022\264\001\n\rPartitionRead\022\'.google.spa" - + "nner.v1.PartitionReadRequest\032$.google.sp" - + "anner.v1.PartitionResponse\"T\202\323\344\223\002N\"I/v1/" - + "{session=projects/*/instances/*/database" - + "s/*/sessions/*}:partitionRead:\001*\022\310\001\n\nBat" - + "chWrite\022$.google.spanner.v1.BatchWriteRe" - + "quest\032%.google.spanner.v1.BatchWriteResp" - + "onse\"k\332A\027session,mutation_groups\202\323\344\223\002K\"F" - + "/v1/{session=projects/*/instances/*/data" - + "bases/*/sessions/*}:batchWrite:\001*0\001\032w\312A\026" - + "spanner.googleapis.com\322A[https://www.goo" - + "gleapis.com/auth/cloud-platform,https://" - + "www.googleapis.com/auth/spanner.dataB\221\002\n" - + "\025com.google.spanner.v1B\014SpannerProtoP\001Z5" - + "cloud.google.com/go/spanner/apiv1/spanne" - + "rpb;spannerpb\252\002\027Google.Cloud.Spanner.V1\312" - + "\002\027Google\\Cloud\\Spanner\\V1\352\002\032Google::Clou" - + "d::Spanner::V1\352A_\n\037spanner.googleapis.co" - + "m/Database\022\n\021partition_opti" + + "ons\030\006 \001(\0132#.google.spanner.v1.PartitionO" + + "ptions\032J\n\017ParamTypesEntry\022\013\n\003key\030\001 \001(\t\022&" + + "\n\005value\030\002 \001(\0132\027.google.spanner.v1.Type:\002" + + "8\001\"\261\002\n\024PartitionReadRequest\0227\n\007session\030\001" + + " \001(\tB&\340A\002\372A \n\036spanner.googleapis.com/Ses" + + "sion\022;\n\013transaction\030\002 \001(\0132&.google.spann" + + "er.v1.TransactionSelector\022\022\n\005table\030\003 \001(\t" + + "B\003\340A\002\022\r\n\005index\030\004 \001(\t\022\017\n\007columns\030\005 \003(\t\022/\n" + + "\007key_set\030\006 \001(\0132\031.google.spanner.v1.KeySe" + + "tB\003\340A\002\022>\n\021partition_options\030\t \001(\0132#.goog" + + "le.spanner.v1.PartitionOptions\"$\n\tPartit" + + "ion\022\027\n\017partition_token\030\001 \001(\014\"z\n\021Partitio" + + "nResponse\0220\n\npartitions\030\001 \003(\0132\034.google.s" + + "panner.v1.Partition\0223\n\013transaction\030\002 \001(\013" + + "2\036.google.spanner.v1.Transaction\"\366\005\n\013Rea" + + "dRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036spann" + + "er.googleapis.com/Session\022;\n\013transaction" + + "\030\002 \001(\0132&.google.spanner.v1.TransactionSe" + + "lector\022\022\n\005table\030\003 \001(\tB\003\340A\002\022\r\n\005index\030\004 \001(" + + "\t\022\024\n\007columns\030\005 \003(\tB\003\340A\002\022/\n\007key_set\030\006 \001(\013" + + "2\031.google.spanner.v1.KeySetB\003\340A\002\022\r\n\005limi" + + "t\030\010 \001(\003\022\024\n\014resume_token\030\t \001(\014\022\027\n\017partiti" + + "on_token\030\n \001(\014\022:\n\017request_options\030\013 \001(\0132" + + "!.google.spanner.v1.RequestOptions\022E\n\025di" + + "rected_read_options\030\016 \001(\0132&.google.spann" + + "er.v1.DirectedReadOptions\022\032\n\022data_boost_" + + "enabled\030\017 \001(\010\022=\n\010order_by\030\020 \001(\0162&.google" + + ".spanner.v1.ReadRequest.OrderByB\003\340A\001\022?\n\t" + + "lock_hint\030\021 \001(\0162\'.google.spanner.v1.Read" + + "Request.LockHintB\003\340A\001\"T\n\007OrderBy\022\030\n\024ORDE" + + "R_BY_UNSPECIFIED\020\000\022\030\n\024ORDER_BY_PRIMARY_K" + + "EY\020\001\022\025\n\021ORDER_BY_NO_ORDER\020\002\"T\n\010LockHint\022" + + "\031\n\025LOCK_HINT_UNSPECIFIED\020\000\022\024\n\020LOCK_HINT_" + + "SHARED\020\001\022\027\n\023LOCK_HINT_EXCLUSIVE\020\002\"\203\002\n\027Be" + + "ginTransactionRequest\0227\n\007session\030\001 \001(\tB&" + + "\340A\002\372A \n\036spanner.googleapis.com/Session\022;" + + "\n\007options\030\002 \001(\0132%.google.spanner.v1.Tran" + + "sactionOptionsB\003\340A\002\022:\n\017request_options\030\003" + + " \001(\0132!.google.spanner.v1.RequestOptions\022" + + "6\n\014mutation_key\030\004 \001(\0132\033.google.spanner.v" + + "1.MutationB\003\340A\001\"\320\003\n\rCommitRequest\0227\n\007ses" + + "sion\030\001 \001(\tB&\340A\002\372A \n\036spanner.googleapis.c" + + "om/Session\022\030\n\016transaction_id\030\002 \001(\014H\000\022G\n\026" + + "single_use_transaction\030\003 \001(\0132%.google.sp" + + "anner.v1.TransactionOptionsH\000\022.\n\tmutatio" + + "ns\030\004 \003(\0132\033.google.spanner.v1.Mutation\022\033\n" + + "\023return_commit_stats\030\005 \001(\010\0228\n\020max_commit" + + "_delay\030\010 \001(\0132\031.google.protobuf.DurationB" + + "\003\340A\001\022:\n\017request_options\030\006 \001(\0132!.google.s" + + "panner.v1.RequestOptions\022Q\n\017precommit_to" + + "ken\030\t \001(\01323.google.spanner.v1.Multiplexe" + + "dSessionPrecommitTokenB\003\340A\001B\r\n\013transacti" + + "on\"g\n\017RollbackRequest\0227\n\007session\030\001 \001(\tB&" + + "\340A\002\372A \n\036spanner.googleapis.com/Session\022\033" + + "\n\016transaction_id\030\002 \001(\014B\003\340A\002\"\316\002\n\021BatchWri" + + "teRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036span" + + "ner.googleapis.com/Session\022:\n\017request_op" + + "tions\030\003 \001(\0132!.google.spanner.v1.RequestO" + + "ptions\022P\n\017mutation_groups\030\004 \003(\01322.google" + + ".spanner.v1.BatchWriteRequest.MutationGr" + + "oupB\003\340A\002\022,\n\037exclude_txn_from_change_stre" + + "ams\030\005 \001(\010B\003\340A\001\032D\n\rMutationGroup\0223\n\tmutat" + + "ions\030\001 \003(\0132\033.google.spanner.v1.MutationB" + + "\003\340A\002\"\177\n\022BatchWriteResponse\022\017\n\007indexes\030\001 " + + "\003(\005\022\"\n\006status\030\002 \001(\0132\022.google.rpc.Status\022" + + "4\n\020commit_timestamp\030\003 \001(\0132\032.google.proto" + + "buf.Timestamp2\213\030\n\007Spanner\022\246\001\n\rCreateSess" + + "ion\022\'.google.spanner.v1.CreateSessionReq" + + "uest\032\032.google.spanner.v1.Session\"P\332A\010dat" + + "abase\202\323\344\223\002?\":/v1/{database=projects/*/in" + + "stances/*/databases/*}/sessions:\001*\022\340\001\n\023B" + + "atchCreateSessions\022-.google.spanner.v1.B" + + "atchCreateSessionsRequest\032..google.spann" + + "er.v1.BatchCreateSessionsResponse\"j\332A\026da" + + "tabase,session_count\202\323\344\223\002K\"F/v1/{databas" + + "e=projects/*/instances/*/databases/*}/se" + + "ssions:batchCreate:\001*\022\227\001\n\nGetSession\022$.g" + + "oogle.spanner.v1.GetSessionRequest\032\032.goo" + + "gle.spanner.v1.Session\"G\332A\004name\202\323\344\223\002:\0228/" + + "v1/{name=projects/*/instances/*/database" + + "s/*/sessions/*}\022\256\001\n\014ListSessions\022&.googl" + + "e.spanner.v1.ListSessionsRequest\032\'.googl" + + "e.spanner.v1.ListSessionsResponse\"M\332A\010da" + + "tabase\202\323\344\223\002<\022:/v1/{database=projects/*/i" + + "nstances/*/databases/*}/sessions\022\231\001\n\rDel" + + "eteSession\022\'.google.spanner.v1.DeleteSes" + + "sionRequest\032\026.google.protobuf.Empty\"G\332A\004" + + "name\202\323\344\223\002:*8/v1/{name=projects/*/instanc" + + "es/*/databases/*/sessions/*}\022\243\001\n\nExecute" + + "Sql\022$.google.spanner.v1.ExecuteSqlReques" + + "t\032\034.google.spanner.v1.ResultSet\"Q\202\323\344\223\002K\"" + + "F/v1/{session=projects/*/instances/*/dat" + + "abases/*/sessions/*}:executeSql:\001*\022\276\001\n\023E" + + "xecuteStreamingSql\022$.google.spanner.v1.E" + + "xecuteSqlRequest\032#.google.spanner.v1.Par" + + "tialResultSet\"Z\202\323\344\223\002T\"O/v1/{session=proj" + + "ects/*/instances/*/databases/*/sessions/" + + "*}:executeStreamingSql:\001*0\001\022\300\001\n\017ExecuteB" + + "atchDml\022).google.spanner.v1.ExecuteBatch" + + "DmlRequest\032*.google.spanner.v1.ExecuteBa" + + "tchDmlResponse\"V\202\323\344\223\002P\"K/v1/{session=pro" + + "jects/*/instances/*/databases/*/sessions" + + "/*}:executeBatchDml:\001*\022\221\001\n\004Read\022\036.google" + + ".spanner.v1.ReadRequest\032\034.google.spanner" + + ".v1.ResultSet\"K\202\323\344\223\002E\"@/v1/{session=proj" + + "ects/*/instances/*/databases/*/sessions/" + + "*}:read:\001*\022\254\001\n\rStreamingRead\022\036.google.sp" + + "anner.v1.ReadRequest\032#.google.spanner.v1" + + ".PartialResultSet\"T\202\323\344\223\002N\"I/v1/{session=" + + "projects/*/instances/*/databases/*/sessi" + + "ons/*}:streamingRead:\001*0\001\022\311\001\n\020BeginTrans" + + "action\022*.google.spanner.v1.BeginTransact" + + "ionRequest\032\036.google.spanner.v1.Transacti" + + "on\"i\332A\017session,options\202\323\344\223\002Q\"L/v1/{sessi" + + "on=projects/*/instances/*/databases/*/se" + + "ssions/*}:beginTransaction:\001*\022\353\001\n\006Commit" + + "\022 .google.spanner.v1.CommitRequest\032!.goo" + + "gle.spanner.v1.CommitResponse\"\233\001\332A sessi" + + "on,transaction_id,mutations\332A(session,si" + + "ngle_use_transaction,mutations\202\323\344\223\002G\"B/v" + + "1/{session=projects/*/instances/*/databa" + + "ses/*/sessions/*}:commit:\001*\022\260\001\n\010Rollback" + + "\022\".google.spanner.v1.RollbackRequest\032\026.g" + + "oogle.protobuf.Empty\"h\332A\026session,transac" + + "tion_id\202\323\344\223\002I\"D/v1/{session=projects/*/i" + + "nstances/*/databases/*/sessions/*}:rollb" + + "ack:\001*\022\267\001\n\016PartitionQuery\022(.google.spann" + + "er.v1.PartitionQueryRequest\032$.google.spa" + + "nner.v1.PartitionResponse\"U\202\323\344\223\002O\"J/v1/{" + + "session=projects/*/instances/*/databases" + + "/*/sessions/*}:partitionQuery:\001*\022\264\001\n\rPar" + + "titionRead\022\'.google.spanner.v1.Partition" + + "ReadRequest\032$.google.spanner.v1.Partitio" + + "nResponse\"T\202\323\344\223\002N\"I/v1/{session=projects" + + "/*/instances/*/databases/*/sessions/*}:p" + + "artitionRead:\001*\022\310\001\n\nBatchWrite\022$.google." + + "spanner.v1.BatchWriteRequest\032%.google.sp" + + "anner.v1.BatchWriteResponse\"k\332A\027session," + + "mutation_groups\202\323\344\223\002K\"F/v1/{session=proj" + + "ects/*/instances/*/databases/*/sessions/" + + "*}:batchWrite:\001*0\001\032w\312A\026spanner.googleapi" + + "s.com\322A[https://www.googleapis.com/auth/" + + "cloud-platform,https://www.googleapis.co" + + "m/auth/spanner.dataB\221\002\n\025com.google.spann" + + "er.v1B\014SpannerProtoP\001Z5cloud.google.com/" + + "go/spanner/apiv1/spannerpb;spannerpb\252\002\027G" + + "oogle.Cloud.Spanner.V1\312\002\027Google\\Cloud\\Sp" + + "anner\\V1\352\002\032Google::Cloud::Spanner::V1\352A_" + + "\n\037spanner.googleapis.com/Database\022 + * A precommit token will be included in the response of a BeginTransaction + * request if the read-write transaction is on a multiplexed session and + * a mutation_key was specified in the + * [BeginTransaction][google.spanner.v1.BeginTransactionRequest]. + * The precommit token with the highest sequence number from this transaction + * attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit] + * request for this transaction. + * This feature is not yet supported and will result in an UNIMPLEMENTED + * error. + * + * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3; + * + * @return Whether the precommitToken field is set. + */ + @java.lang.Override + public boolean hasPrecommitToken() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + * + * + *
+   * A precommit token will be included in the response of a BeginTransaction
+   * request if the read-write transaction is on a multiplexed session and
+   * a mutation_key was specified in the
+   * [BeginTransaction][google.spanner.v1.BeginTransactionRequest].
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit]
+   * request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3; + * + * @return The precommitToken. + */ + @java.lang.Override + public com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken() { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } + /** + * + * + *
+   * A precommit token will be included in the response of a BeginTransaction
+   * request if the read-write transaction is on a multiplexed session and
+   * a mutation_key was specified in the
+   * [BeginTransaction][google.spanner.v1.BeginTransactionRequest].
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit]
+   * request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3; + */ + @java.lang.Override + public com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder + getPrecommitTokenOrBuilder() { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -174,6 +249,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (((bitField0_ & 0x00000001) != 0)) { output.writeMessage(2, getReadTimestamp()); } + if (((bitField0_ & 0x00000002) != 0)) { + output.writeMessage(3, getPrecommitToken()); + } getUnknownFields().writeTo(output); } @@ -189,6 +267,9 @@ public int getSerializedSize() { if (((bitField0_ & 0x00000001) != 0)) { size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getReadTimestamp()); } + if (((bitField0_ & 0x00000002) != 0)) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getPrecommitToken()); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -209,6 +290,10 @@ public boolean equals(final java.lang.Object obj) { if (hasReadTimestamp()) { if (!getReadTimestamp().equals(other.getReadTimestamp())) return false; } + if (hasPrecommitToken() != other.hasPrecommitToken()) return false; + if (hasPrecommitToken()) { + if (!getPrecommitToken().equals(other.getPrecommitToken())) return false; + } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -226,6 +311,10 @@ public int hashCode() { hash = (37 * hash) + READ_TIMESTAMP_FIELD_NUMBER; hash = (53 * hash) + getReadTimestamp().hashCode(); } + if (hasPrecommitToken()) { + hash = (37 * hash) + PRECOMMIT_TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getPrecommitToken().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -366,6 +455,7 @@ private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { private void maybeForceBuilderInitialization() { if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { getReadTimestampFieldBuilder(); + getPrecommitTokenFieldBuilder(); } } @@ -379,6 +469,11 @@ public Builder clear() { readTimestampBuilder_.dispose(); readTimestampBuilder_ = null; } + precommitToken_ = null; + if (precommitTokenBuilder_ != null) { + precommitTokenBuilder_.dispose(); + precommitTokenBuilder_ = null; + } return this; } @@ -423,6 +518,11 @@ private void buildPartial0(com.google.spanner.v1.Transaction result) { readTimestampBuilder_ == null ? readTimestamp_ : readTimestampBuilder_.build(); to_bitField0_ |= 0x00000001; } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.precommitToken_ = + precommitTokenBuilder_ == null ? precommitToken_ : precommitTokenBuilder_.build(); + to_bitField0_ |= 0x00000002; + } result.bitField0_ |= to_bitField0_; } @@ -477,6 +577,9 @@ public Builder mergeFrom(com.google.spanner.v1.Transaction other) { if (other.hasReadTimestamp()) { mergeReadTimestamp(other.getReadTimestamp()); } + if (other.hasPrecommitToken()) { + mergePrecommitToken(other.getPrecommitToken()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -515,6 +618,12 @@ public Builder mergeFrom( bitField0_ |= 0x00000002; break; } // case 18 + case 26: + { + input.readMessage(getPrecommitTokenFieldBuilder().getBuilder(), extensionRegistry); + bitField0_ |= 0x00000004; + break; + } // case 26 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -840,6 +949,268 @@ public com.google.protobuf.TimestampOrBuilder getReadTimestampOrBuilder() { return readTimestampBuilder_; } + private com.google.spanner.v1.MultiplexedSessionPrecommitToken precommitToken_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder> + precommitTokenBuilder_; + /** + * + * + *
+     * A precommit token will be included in the response of a BeginTransaction
+     * request if the read-write transaction is on a multiplexed session and
+     * a mutation_key was specified in the
+     * [BeginTransaction][google.spanner.v1.BeginTransactionRequest].
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit]
+     * request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3; + * + * @return Whether the precommitToken field is set. + */ + public boolean hasPrecommitToken() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + * + * + *
+     * A precommit token will be included in the response of a BeginTransaction
+     * request if the read-write transaction is on a multiplexed session and
+     * a mutation_key was specified in the
+     * [BeginTransaction][google.spanner.v1.BeginTransactionRequest].
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit]
+     * request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3; + * + * @return The precommitToken. + */ + public com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken() { + if (precommitTokenBuilder_ == null) { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } else { + return precommitTokenBuilder_.getMessage(); + } + } + /** + * + * + *
+     * A precommit token will be included in the response of a BeginTransaction
+     * request if the read-write transaction is on a multiplexed session and
+     * a mutation_key was specified in the
+     * [BeginTransaction][google.spanner.v1.BeginTransactionRequest].
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit]
+     * request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3; + */ + public Builder setPrecommitToken(com.google.spanner.v1.MultiplexedSessionPrecommitToken value) { + if (precommitTokenBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + precommitToken_ = value; + } else { + precommitTokenBuilder_.setMessage(value); + } + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * + * + *
+     * A precommit token will be included in the response of a BeginTransaction
+     * request if the read-write transaction is on a multiplexed session and
+     * a mutation_key was specified in the
+     * [BeginTransaction][google.spanner.v1.BeginTransactionRequest].
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit]
+     * request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3; + */ + public Builder setPrecommitToken( + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder builderForValue) { + if (precommitTokenBuilder_ == null) { + precommitToken_ = builderForValue.build(); + } else { + precommitTokenBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + * + * + *
+     * A precommit token will be included in the response of a BeginTransaction
+     * request if the read-write transaction is on a multiplexed session and
+     * a mutation_key was specified in the
+     * [BeginTransaction][google.spanner.v1.BeginTransactionRequest].
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit]
+     * request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3; + */ + public Builder mergePrecommitToken( + com.google.spanner.v1.MultiplexedSessionPrecommitToken value) { + if (precommitTokenBuilder_ == null) { + if (((bitField0_ & 0x00000004) != 0) + && precommitToken_ != null + && precommitToken_ + != com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance()) { + getPrecommitTokenBuilder().mergeFrom(value); + } else { + precommitToken_ = value; + } + } else { + precommitTokenBuilder_.mergeFrom(value); + } + if (precommitToken_ != null) { + bitField0_ |= 0x00000004; + onChanged(); + } + return this; + } + /** + * + * + *
+     * A precommit token will be included in the response of a BeginTransaction
+     * request if the read-write transaction is on a multiplexed session and
+     * a mutation_key was specified in the
+     * [BeginTransaction][google.spanner.v1.BeginTransactionRequest].
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit]
+     * request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3; + */ + public Builder clearPrecommitToken() { + bitField0_ = (bitField0_ & ~0x00000004); + precommitToken_ = null; + if (precommitTokenBuilder_ != null) { + precommitTokenBuilder_.dispose(); + precommitTokenBuilder_ = null; + } + onChanged(); + return this; + } + /** + * + * + *
+     * A precommit token will be included in the response of a BeginTransaction
+     * request if the read-write transaction is on a multiplexed session and
+     * a mutation_key was specified in the
+     * [BeginTransaction][google.spanner.v1.BeginTransactionRequest].
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit]
+     * request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3; + */ + public com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder + getPrecommitTokenBuilder() { + bitField0_ |= 0x00000004; + onChanged(); + return getPrecommitTokenFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * A precommit token will be included in the response of a BeginTransaction
+     * request if the read-write transaction is on a multiplexed session and
+     * a mutation_key was specified in the
+     * [BeginTransaction][google.spanner.v1.BeginTransactionRequest].
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit]
+     * request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3; + */ + public com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder + getPrecommitTokenOrBuilder() { + if (precommitTokenBuilder_ != null) { + return precommitTokenBuilder_.getMessageOrBuilder(); + } else { + return precommitToken_ == null + ? com.google.spanner.v1.MultiplexedSessionPrecommitToken.getDefaultInstance() + : precommitToken_; + } + } + /** + * + * + *
+     * A precommit token will be included in the response of a BeginTransaction
+     * request if the read-write transaction is on a multiplexed session and
+     * a mutation_key was specified in the
+     * [BeginTransaction][google.spanner.v1.BeginTransactionRequest].
+     * The precommit token with the highest sequence number from this transaction
+     * attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit]
+     * request for this transaction.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder> + getPrecommitTokenFieldBuilder() { + if (precommitTokenBuilder_ == null) { + precommitTokenBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.MultiplexedSessionPrecommitToken, + com.google.spanner.v1.MultiplexedSessionPrecommitToken.Builder, + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder>( + getPrecommitToken(), getParentForChildren(), isClean()); + precommitToken_ = null; + } + return precommitTokenBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFields(unknownFields); diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOptions.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOptions.java index 7970c77cc7d..31688b10739 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOptions.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOptions.java @@ -413,6 +413,25 @@ public interface ReadWriteOrBuilder * @return The readLockMode. */ com.google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode getReadLockMode(); + + /** + * + * + *
+     * Optional. Clients should pass the transaction ID of the previous
+     * transaction attempt that was aborted if this transaction is being
+     * executed on a multiplexed session.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * bytes multiplexed_session_previous_transaction_id = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The multiplexedSessionPreviousTransactionId. + */ + com.google.protobuf.ByteString getMultiplexedSessionPreviousTransactionId(); } /** * @@ -436,6 +455,7 @@ private ReadWrite(com.google.protobuf.GeneratedMessageV3.Builder builder) { private ReadWrite() { readLockMode_ = 0; + multiplexedSessionPreviousTransactionId_ = com.google.protobuf.ByteString.EMPTY; } @java.lang.Override @@ -672,6 +692,31 @@ public com.google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode getReadLo : result; } + public static final int MULTIPLEXED_SESSION_PREVIOUS_TRANSACTION_ID_FIELD_NUMBER = 2; + private com.google.protobuf.ByteString multiplexedSessionPreviousTransactionId_ = + com.google.protobuf.ByteString.EMPTY; + /** + * + * + *
+     * Optional. Clients should pass the transaction ID of the previous
+     * transaction attempt that was aborted if this transaction is being
+     * executed on a multiplexed session.
+     * This feature is not yet supported and will result in an UNIMPLEMENTED
+     * error.
+     * 
+ * + * + * bytes multiplexed_session_previous_transaction_id = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The multiplexedSessionPreviousTransactionId. + */ + @java.lang.Override + public com.google.protobuf.ByteString getMultiplexedSessionPreviousTransactionId() { + return multiplexedSessionPreviousTransactionId_; + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -692,6 +737,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io .getNumber()) { output.writeEnum(1, readLockMode_); } + if (!multiplexedSessionPreviousTransactionId_.isEmpty()) { + output.writeBytes(2, multiplexedSessionPreviousTransactionId_); + } getUnknownFields().writeTo(output); } @@ -707,6 +755,11 @@ public int getSerializedSize() { .getNumber()) { size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, readLockMode_); } + if (!multiplexedSessionPreviousTransactionId_.isEmpty()) { + size += + com.google.protobuf.CodedOutputStream.computeBytesSize( + 2, multiplexedSessionPreviousTransactionId_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -724,6 +777,8 @@ public boolean equals(final java.lang.Object obj) { (com.google.spanner.v1.TransactionOptions.ReadWrite) obj; if (readLockMode_ != other.readLockMode_) return false; + if (!getMultiplexedSessionPreviousTransactionId() + .equals(other.getMultiplexedSessionPreviousTransactionId())) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -737,6 +792,8 @@ public int hashCode() { hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + READ_LOCK_MODE_FIELD_NUMBER; hash = (53 * hash) + readLockMode_; + hash = (37 * hash) + MULTIPLEXED_SESSION_PREVIOUS_TRANSACTION_ID_FIELD_NUMBER; + hash = (53 * hash) + getMultiplexedSessionPreviousTransactionId().hashCode(); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -880,6 +937,7 @@ public Builder clear() { super.clear(); bitField0_ = 0; readLockMode_ = 0; + multiplexedSessionPreviousTransactionId_ = com.google.protobuf.ByteString.EMPTY; return this; } @@ -919,6 +977,10 @@ private void buildPartial0(com.google.spanner.v1.TransactionOptions.ReadWrite re if (((from_bitField0_ & 0x00000001) != 0)) { result.readLockMode_ = readLockMode_; } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.multiplexedSessionPreviousTransactionId_ = + multiplexedSessionPreviousTransactionId_; + } } @java.lang.Override @@ -972,6 +1034,11 @@ public Builder mergeFrom(com.google.spanner.v1.TransactionOptions.ReadWrite othe if (other.readLockMode_ != 0) { setReadLockModeValue(other.getReadLockModeValue()); } + if (other.getMultiplexedSessionPreviousTransactionId() + != com.google.protobuf.ByteString.EMPTY) { + setMultiplexedSessionPreviousTransactionId( + other.getMultiplexedSessionPreviousTransactionId()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -1004,6 +1071,12 @@ public Builder mergeFrom( bitField0_ |= 0x00000001; break; } // case 8 + case 18: + { + multiplexedSessionPreviousTransactionId_ = input.readBytes(); + bitField0_ |= 0x00000002; + break; + } // case 18 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { @@ -1122,6 +1195,82 @@ public Builder clearReadLockMode() { return this; } + private com.google.protobuf.ByteString multiplexedSessionPreviousTransactionId_ = + com.google.protobuf.ByteString.EMPTY; + /** + * + * + *
+       * Optional. Clients should pass the transaction ID of the previous
+       * transaction attempt that was aborted if this transaction is being
+       * executed on a multiplexed session.
+       * This feature is not yet supported and will result in an UNIMPLEMENTED
+       * error.
+       * 
+ * + * + * bytes multiplexed_session_previous_transaction_id = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return The multiplexedSessionPreviousTransactionId. + */ + @java.lang.Override + public com.google.protobuf.ByteString getMultiplexedSessionPreviousTransactionId() { + return multiplexedSessionPreviousTransactionId_; + } + /** + * + * + *
+       * Optional. Clients should pass the transaction ID of the previous
+       * transaction attempt that was aborted if this transaction is being
+       * executed on a multiplexed session.
+       * This feature is not yet supported and will result in an UNIMPLEMENTED
+       * error.
+       * 
+ * + * + * bytes multiplexed_session_previous_transaction_id = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @param value The multiplexedSessionPreviousTransactionId to set. + * @return This builder for chaining. + */ + public Builder setMultiplexedSessionPreviousTransactionId( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + multiplexedSessionPreviousTransactionId_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + * + * + *
+       * Optional. Clients should pass the transaction ID of the previous
+       * transaction attempt that was aborted if this transaction is being
+       * executed on a multiplexed session.
+       * This feature is not yet supported and will result in an UNIMPLEMENTED
+       * error.
+       * 
+ * + * + * bytes multiplexed_session_previous_transaction_id = 2 [(.google.api.field_behavior) = OPTIONAL]; + * + * + * @return This builder for chaining. + */ + public Builder clearMultiplexedSessionPreviousTransactionId() { + bitField0_ = (bitField0_ & ~0x00000002); + multiplexedSessionPreviousTransactionId_ = + getDefaultInstance().getMultiplexedSessionPreviousTransactionId(); + onChanged(); + return this; + } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOrBuilder.java index 6670124ea7a..bf2232c24d2 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOrBuilder.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionOrBuilder.java @@ -93,4 +93,63 @@ public interface TransactionOrBuilder * .google.protobuf.Timestamp read_timestamp = 2; */ com.google.protobuf.TimestampOrBuilder getReadTimestampOrBuilder(); + + /** + * + * + *
+   * A precommit token will be included in the response of a BeginTransaction
+   * request if the read-write transaction is on a multiplexed session and
+   * a mutation_key was specified in the
+   * [BeginTransaction][google.spanner.v1.BeginTransactionRequest].
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit]
+   * request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3; + * + * @return Whether the precommitToken field is set. + */ + boolean hasPrecommitToken(); + /** + * + * + *
+   * A precommit token will be included in the response of a BeginTransaction
+   * request if the read-write transaction is on a multiplexed session and
+   * a mutation_key was specified in the
+   * [BeginTransaction][google.spanner.v1.BeginTransactionRequest].
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit]
+   * request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3; + * + * @return The precommitToken. + */ + com.google.spanner.v1.MultiplexedSessionPrecommitToken getPrecommitToken(); + /** + * + * + *
+   * A precommit token will be included in the response of a BeginTransaction
+   * request if the read-write transaction is on a multiplexed session and
+   * a mutation_key was specified in the
+   * [BeginTransaction][google.spanner.v1.BeginTransactionRequest].
+   * The precommit token with the highest sequence number from this transaction
+   * attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit]
+   * request for this transaction.
+   * This feature is not yet supported and will result in an UNIMPLEMENTED
+   * error.
+   * 
+ * + * .google.spanner.v1.MultiplexedSessionPrecommitToken precommit_token = 3; + */ + com.google.spanner.v1.MultiplexedSessionPrecommitTokenOrBuilder getPrecommitTokenOrBuilder(); } diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionProto.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionProto.java index 897dc67b000..07dbdbbb0b0 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionProto.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/TransactionProto.java @@ -52,6 +52,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_spanner_v1_TransactionSelector_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_spanner_v1_TransactionSelector_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_MultiplexedSessionPrecommitToken_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_MultiplexedSessionPrecommitToken_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -62,44 +66,51 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { static { java.lang.String[] descriptorData = { "\n#google/spanner/v1/transaction.proto\022\021g" - + "oogle.spanner.v1\032\036google/protobuf/durati" - + "on.proto\032\037google/protobuf/timestamp.prot" - + "o\"\224\006\n\022TransactionOptions\022E\n\nread_write\030\001" - + " \001(\0132/.google.spanner.v1.TransactionOpti" - + "ons.ReadWriteH\000\022O\n\017partitioned_dml\030\003 \001(\013" - + "24.google.spanner.v1.TransactionOptions." - + "PartitionedDmlH\000\022C\n\tread_only\030\002 \001(\0132..go" - + "ogle.spanner.v1.TransactionOptions.ReadO" - + "nlyH\000\022\'\n\037exclude_txn_from_change_streams" - + "\030\005 \001(\010\032\262\001\n\tReadWrite\022T\n\016read_lock_mode\030\001" - + " \001(\0162<.google.spanner.v1.TransactionOpti" - + "ons.ReadWrite.ReadLockMode\"O\n\014ReadLockMo" - + "de\022\036\n\032READ_LOCK_MODE_UNSPECIFIED\020\000\022\017\n\013PE" - + "SSIMISTIC\020\001\022\016\n\nOPTIMISTIC\020\002\032\020\n\016Partition" - + "edDml\032\250\002\n\010ReadOnly\022\020\n\006strong\030\001 \001(\010H\000\0228\n\022" - + "min_read_timestamp\030\002 \001(\0132\032.google.protob" - + "uf.TimestampH\000\0222\n\rmax_staleness\030\003 \001(\0132\031." - + "google.protobuf.DurationH\000\0224\n\016read_times" - + "tamp\030\004 \001(\0132\032.google.protobuf.TimestampH\000" - + "\0224\n\017exact_staleness\030\005 \001(\0132\031.google.proto" - + "buf.DurationH\000\022\035\n\025return_read_timestamp\030" - + "\006 \001(\010B\021\n\017timestamp_boundB\006\n\004mode\"M\n\013Tran" - + "saction\022\n\n\002id\030\001 \001(\014\0222\n\016read_timestamp\030\002 " - + "\001(\0132\032.google.protobuf.Timestamp\"\244\001\n\023Tran" - + "sactionSelector\022;\n\nsingle_use\030\001 \001(\0132%.go" - + "ogle.spanner.v1.TransactionOptionsH\000\022\014\n\002" - + "id\030\002 \001(\014H\000\0226\n\005begin\030\003 \001(\0132%.google.spann" - + "er.v1.TransactionOptionsH\000B\n\n\010selectorB\263" - + "\001\n\025com.google.spanner.v1B\020TransactionPro" - + "toP\001Z5cloud.google.com/go/spanner/apiv1/" - + "spannerpb;spannerpb\252\002\027Google.Cloud.Spann" - + "er.V1\312\002\027Google\\Cloud\\Spanner\\V1\352\002\032Google" - + "::Cloud::Spanner::V1b\006proto3" + + "oogle.spanner.v1\032\037google/api/field_behav" + + "ior.proto\032\036google/protobuf/duration.prot" + + "o\032\037google/protobuf/timestamp.proto\"\316\006\n\022T" + + "ransactionOptions\022E\n\nread_write\030\001 \001(\0132/." + + "google.spanner.v1.TransactionOptions.Rea" + + "dWriteH\000\022O\n\017partitioned_dml\030\003 \001(\01324.goog" + + "le.spanner.v1.TransactionOptions.Partiti" + + "onedDmlH\000\022C\n\tread_only\030\002 \001(\0132..google.sp" + + "anner.v1.TransactionOptions.ReadOnlyH\000\022\'" + + "\n\037exclude_txn_from_change_streams\030\005 \001(\010\032" + + "\354\001\n\tReadWrite\022T\n\016read_lock_mode\030\001 \001(\0162<." + + "google.spanner.v1.TransactionOptions.Rea" + + "dWrite.ReadLockMode\0228\n+multiplexed_sessi" + + "on_previous_transaction_id\030\002 \001(\014B\003\340A\001\"O\n" + + "\014ReadLockMode\022\036\n\032READ_LOCK_MODE_UNSPECIF" + + "IED\020\000\022\017\n\013PESSIMISTIC\020\001\022\016\n\nOPTIMISTIC\020\002\032\020" + + "\n\016PartitionedDml\032\250\002\n\010ReadOnly\022\020\n\006strong\030" + + "\001 \001(\010H\000\0228\n\022min_read_timestamp\030\002 \001(\0132\032.go" + + "ogle.protobuf.TimestampH\000\0222\n\rmax_stalene" + + "ss\030\003 \001(\0132\031.google.protobuf.DurationH\000\0224\n" + + "\016read_timestamp\030\004 \001(\0132\032.google.protobuf." + + "TimestampH\000\0224\n\017exact_staleness\030\005 \001(\0132\031.g" + + "oogle.protobuf.DurationH\000\022\035\n\025return_read" + + "_timestamp\030\006 \001(\010B\021\n\017timestamp_boundB\006\n\004m" + + "ode\"\233\001\n\013Transaction\022\n\n\002id\030\001 \001(\014\0222\n\016read_" + + "timestamp\030\002 \001(\0132\032.google.protobuf.Timest" + + "amp\022L\n\017precommit_token\030\003 \001(\01323.google.sp" + + "anner.v1.MultiplexedSessionPrecommitToke" + + "n\"\244\001\n\023TransactionSelector\022;\n\nsingle_use\030" + + "\001 \001(\0132%.google.spanner.v1.TransactionOpt" + + "ionsH\000\022\014\n\002id\030\002 \001(\014H\000\0226\n\005begin\030\003 \001(\0132%.go" + + "ogle.spanner.v1.TransactionOptionsH\000B\n\n\010" + + "selector\"L\n MultiplexedSessionPrecommitT" + + "oken\022\027\n\017precommit_token\030\001 \001(\014\022\017\n\007seq_num" + + "\030\002 \001(\005B\263\001\n\025com.google.spanner.v1B\020Transa" + + "ctionProtoP\001Z5cloud.google.com/go/spanne" + + "r/apiv1/spannerpb;spannerpb\252\002\027Google.Clo" + + "ud.Spanner.V1\312\002\027Google\\Cloud\\Spanner\\V1\352" + + "\002\032Google::Cloud::Spanner::V1b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom( descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { + com.google.api.FieldBehaviorProto.getDescriptor(), com.google.protobuf.DurationProto.getDescriptor(), com.google.protobuf.TimestampProto.getDescriptor(), }); @@ -117,7 +128,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_v1_TransactionOptions_ReadWrite_descriptor, new java.lang.String[] { - "ReadLockMode", + "ReadLockMode", "MultiplexedSessionPreviousTransactionId", }); internal_static_google_spanner_v1_TransactionOptions_PartitionedDml_descriptor = internal_static_google_spanner_v1_TransactionOptions_descriptor.getNestedTypes().get(1); @@ -145,7 +156,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_v1_Transaction_descriptor, new java.lang.String[] { - "Id", "ReadTimestamp", + "Id", "ReadTimestamp", "PrecommitToken", }); internal_static_google_spanner_v1_TransactionSelector_descriptor = getDescriptor().getMessageTypes().get(2); @@ -155,6 +166,20 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { new java.lang.String[] { "SingleUse", "Id", "Begin", "Selector", }); + internal_static_google_spanner_v1_MultiplexedSessionPrecommitToken_descriptor = + getDescriptor().getMessageTypes().get(3); + internal_static_google_spanner_v1_MultiplexedSessionPrecommitToken_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_v1_MultiplexedSessionPrecommitToken_descriptor, + new java.lang.String[] { + "PrecommitToken", "SeqNum", + }); + com.google.protobuf.ExtensionRegistry registry = + com.google.protobuf.ExtensionRegistry.newInstance(); + registry.add(com.google.api.FieldBehaviorProto.fieldBehavior); + com.google.protobuf.Descriptors.FileDescriptor.internalUpdateFileDescriptor( + descriptor, registry); + com.google.api.FieldBehaviorProto.getDescriptor(); com.google.protobuf.DurationProto.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); } diff --git a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/commit_response.proto b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/commit_response.proto index d44aad63b61..d5f9b15d5b3 100644 --- a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/commit_response.proto +++ b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/commit_response.proto @@ -17,6 +17,7 @@ syntax = "proto3"; package google.spanner.v1; import "google/protobuf/timestamp.proto"; +import "google/spanner/v1/transaction.proto"; option csharp_namespace = "Google.Cloud.Spanner.V1"; option go_package = "cloud.google.com/go/spanner/apiv1/spannerpb;spannerpb"; @@ -47,4 +48,12 @@ message CommitResponse { // For more information, see // [CommitRequest.return_commit_stats][google.spanner.v1.CommitRequest.return_commit_stats]. CommitStats commit_stats = 2; + + // Clients should examine and retry the commit if any of the following + // reasons are populated. + oneof MultiplexedSessionRetry { + // If specified, transaction has not committed yet. + // Clients must retry the commit with the new precommit token. + MultiplexedSessionPrecommitToken precommit_token = 4; + } } diff --git a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/result_set.proto b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/result_set.proto index f392c1d7ddc..0b8aabf8679 100644 --- a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/result_set.proto +++ b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/result_set.proto @@ -16,6 +16,7 @@ syntax = "proto3"; package google.spanner.v1; +import "google/api/field_behavior.proto"; import "google/protobuf/struct.proto"; import "google/spanner/v1/query_plan.proto"; import "google/spanner/v1/transaction.proto"; @@ -53,6 +54,16 @@ message ResultSet { // Other fields may or may not be populated, based on the // [ExecuteSqlRequest.query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode]. ResultSetStats stats = 3; + + // Optional. A precommit token will be included if the read-write transaction + // is on a multiplexed session. + // The precommit token with the highest sequence number from this transaction + // attempt should be passed to the + // [Commit][google.spanner.v1.Spanner.Commit] request for this transaction. + // This feature is not yet supported and will result in an UNIMPLEMENTED + // error. + MultiplexedSessionPrecommitToken precommit_token = 5 + [(google.api.field_behavior) = OPTIONAL]; } // Partial results from a streaming read or SQL query. Streaming reads and @@ -157,6 +168,16 @@ message PartialResultSet { // This field will also be present in the last response for DML // statements. ResultSetStats stats = 5; + + // Optional. A precommit token will be included if the read-write transaction + // is on a multiplexed session. + // The precommit token with the highest sequence number from this transaction + // attempt should be passed to the + // [Commit][google.spanner.v1.Spanner.Commit] request for this transaction. + // This feature is not yet supported and will result in an UNIMPLEMENTED + // error. + MultiplexedSessionPrecommitToken precommit_token = 8 + [(google.api.field_behavior) = OPTIONAL]; } // Metadata about a [ResultSet][google.spanner.v1.ResultSet] or [PartialResultSet][google.spanner.v1.PartialResultSet]. 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 856a51b7dfe..847815464a4 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 @@ -909,6 +909,16 @@ message ExecuteBatchDmlResponse { // If all DML statements are executed successfully, the status is `OK`. // Otherwise, the error status of the first failed statement. google.rpc.Status status = 2; + + // Optional. A precommit token will be included if the read-write transaction + // is on a multiplexed session. + // The precommit token with the highest sequence number from this transaction + // attempt should be passed to the + // [Commit][google.spanner.v1.Spanner.Commit] request for this transaction. + // This feature is not yet supported and will result in an UNIMPLEMENTED + // error. + MultiplexedSessionPrecommitToken precommit_token = 3 + [(google.api.field_behavior) = OPTIONAL]; } // Options for a PartitionQueryRequest and @@ -1225,6 +1235,14 @@ message BeginTransactionRequest { // transaction, set it on the reads and writes that are part of this // transaction instead. RequestOptions request_options = 3; + + // Optional. Required for read-write transactions on a multiplexed session + // that commit mutations but do not perform any reads or queries. Clients + // should randomly select one of the mutations from the mutation set and send + // it as a part of this request. + // This feature is not yet supported and will result in an UNIMPLEMENTED + // error. + Mutation mutation_key = 4 [(google.api.field_behavior) = OPTIONAL]; } // The request for [Commit][google.spanner.v1.Spanner.Commit]. @@ -1272,6 +1290,15 @@ message CommitRequest { // Common options for this request. RequestOptions request_options = 6; + + // Optional. If the read-write transaction was executed on a multiplexed + // session, the precommit token with the highest sequence number received in + // this transaction attempt, should be included here. Failing to do so will + // result in a FailedPrecondition error. + // This feature is not yet supported and will result in an UNIMPLEMENTED + // error. + MultiplexedSessionPrecommitToken precommit_token = 9 + [(google.api.field_behavior) = OPTIONAL]; } // The request for [Rollback][google.spanner.v1.Spanner.Rollback]. diff --git a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/transaction.proto b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/transaction.proto index 8af513d1563..fe564538466 100644 --- a/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/transaction.proto +++ b/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/transaction.proto @@ -16,6 +16,7 @@ syntax = "proto3"; package google.spanner.v1; +import "google/api/field_behavior.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; @@ -378,6 +379,14 @@ message TransactionOptions { // Read lock mode for the transaction. ReadLockMode read_lock_mode = 1; + + // Optional. Clients should pass the transaction ID of the previous + // transaction attempt that was aborted if this transaction is being + // executed on a multiplexed session. + // This feature is not yet supported and will result in an UNIMPLEMENTED + // error. + bytes multiplexed_session_previous_transaction_id = 2 + [(google.api.field_behavior) = OPTIONAL]; } // Message type to initiate a Partitioned DML transaction. @@ -512,6 +521,17 @@ message Transaction { // A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds. // Example: `"2014-10-02T15:01:23.045123456Z"`. google.protobuf.Timestamp read_timestamp = 2; + + // A precommit token will be included in the response of a BeginTransaction + // request if the read-write transaction is on a multiplexed session and + // a mutation_key was specified in the + // [BeginTransaction][google.spanner.v1.BeginTransactionRequest]. + // The precommit token with the highest sequence number from this transaction + // attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit] + // request for this transaction. + // This feature is not yet supported and will result in an UNIMPLEMENTED + // error. + MultiplexedSessionPrecommitToken precommit_token = 3; } // This message is used to select the transaction in which a @@ -539,3 +559,17 @@ message TransactionSelector { TransactionOptions begin = 3; } } + +// When a read-write transaction is executed on a multiplexed session, +// this precommit token is sent back to the client +// as a part of the [Transaction] message in the BeginTransaction response and +// also as a part of the [ResultSet] and [PartialResultSet] responses. +message MultiplexedSessionPrecommitToken { + // Opaque precommit token. + bytes precommit_token = 1; + + // An incrementing seq number is generated on every precommit token + // that is returned. Clients should remember the precommit token with the + // highest sequence number from the current transaction attempt. + int32 seq_num = 2; +}