())
.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;
+}
diff --git a/renovate.json b/renovate.json
index 3ad0aae27d8..167bf279fe7 100644
--- a/renovate.json
+++ b/renovate.json
@@ -41,6 +41,16 @@
],
"depNameTemplate": "com.google.cloud:sdk-platform-java-config",
"datasourceTemplate": "maven"
+ },
+ {
+ "fileMatch": [
+ "^.github/workflows/hermetic_library_generation.yaml$"
+ ],
+ "matchStrings": [
+ "uses: googleapis/sdk-platform-java/.github/scripts@v(?.+?)\\n"
+ ],
+ "depNameTemplate": "com.google.api:gapic-generator-java",
+ "datasourceTemplate": "maven"
}
],
"packageRules": [
@@ -101,6 +111,13 @@
"^com.fasterxml.jackson.core"
],
"groupName": "jackson dependencies"
+ },
+ {
+ "matchPackagePatterns": [
+ "^com.google.api:gapic-generator-java",
+ "^com.google.cloud:sdk-platform-java-config"
+ ],
+ "groupName": "SDK platform Java dependencies"
}
],
"semanticCommits": true,