diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequest.java
index e829327651b..55cce1f9922 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequest.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequest.java
@@ -2100,6 +2100,32 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder(
: requestOptions_;
}
+ public static final int LAST_STATEMENTS_FIELD_NUMBER = 6;
+ private boolean lastStatements_ = false;
+ /**
+ *
+ *
+ *
+ * Optional. If set to true, this request marks the end of the transaction.
+ * The transaction should be committed or aborted after these statements
+ * execute, and attempts to execute any other requests against this
+ * transaction (including reads and queries) will be rejected.
+ *
+ * Setting this option may cause some error reporting to be deferred until
+ * commit time (e.g. validation of unique constraints). Given this, successful
+ * execution of statements should not be assumed until a subsequent Commit
+ * call completes successfully.
+ *
+ *
+ * bool last_statements = 6 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The lastStatements.
+ */
+ @java.lang.Override
+ public boolean getLastStatements() {
+ return lastStatements_;
+ }
+
private byte memoizedIsInitialized = -1;
@java.lang.Override
@@ -2129,6 +2155,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
if (((bitField0_ & 0x00000002) != 0)) {
output.writeMessage(5, getRequestOptions());
}
+ if (lastStatements_ != false) {
+ output.writeBool(6, lastStatements_);
+ }
getUnknownFields().writeTo(output);
}
@@ -2153,6 +2182,9 @@ public int getSerializedSize() {
if (((bitField0_ & 0x00000002) != 0)) {
size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getRequestOptions());
}
+ if (lastStatements_ != false) {
+ size += com.google.protobuf.CodedOutputStream.computeBoolSize(6, lastStatements_);
+ }
size += getUnknownFields().getSerializedSize();
memoizedSize = size;
return size;
@@ -2180,6 +2212,7 @@ public boolean equals(final java.lang.Object obj) {
if (hasRequestOptions()) {
if (!getRequestOptions().equals(other.getRequestOptions())) return false;
}
+ if (getLastStatements() != other.getLastStatements()) return false;
if (!getUnknownFields().equals(other.getUnknownFields())) return false;
return true;
}
@@ -2207,6 +2240,8 @@ public int hashCode() {
hash = (37 * hash) + REQUEST_OPTIONS_FIELD_NUMBER;
hash = (53 * hash) + getRequestOptions().hashCode();
}
+ hash = (37 * hash) + LAST_STATEMENTS_FIELD_NUMBER;
+ hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getLastStatements());
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
@@ -2376,6 +2411,7 @@ public Builder clear() {
requestOptionsBuilder_.dispose();
requestOptionsBuilder_ = null;
}
+ lastStatements_ = false;
return this;
}
@@ -2442,6 +2478,9 @@ private void buildPartial0(com.google.spanner.v1.ExecuteBatchDmlRequest result)
requestOptionsBuilder_ == null ? requestOptions_ : requestOptionsBuilder_.build();
to_bitField0_ |= 0x00000002;
}
+ if (((from_bitField0_ & 0x00000020) != 0)) {
+ result.lastStatements_ = lastStatements_;
+ }
result.bitField0_ |= to_bitField0_;
}
@@ -2531,6 +2570,9 @@ public Builder mergeFrom(com.google.spanner.v1.ExecuteBatchDmlRequest other) {
if (other.hasRequestOptions()) {
mergeRequestOptions(other.getRequestOptions());
}
+ if (other.getLastStatements() != false) {
+ setLastStatements(other.getLastStatements());
+ }
this.mergeUnknownFields(other.getUnknownFields());
onChanged();
return this;
@@ -2595,6 +2637,12 @@ public Builder mergeFrom(
bitField0_ |= 0x00000010;
break;
} // case 42
+ case 48:
+ {
+ lastStatements_ = input.readBool();
+ bitField0_ |= 0x00000020;
+ break;
+ } // case 48
default:
{
if (!super.parseUnknownField(input, extensionRegistry, tag)) {
@@ -3715,6 +3763,83 @@ public com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder(
return requestOptionsBuilder_;
}
+ private boolean lastStatements_;
+ /**
+ *
+ *
+ *
+ * Optional. If set to true, this request marks the end of the transaction.
+ * The transaction should be committed or aborted after these statements
+ * execute, and attempts to execute any other requests against this
+ * transaction (including reads and queries) will be rejected.
+ *
+ * Setting this option may cause some error reporting to be deferred until
+ * commit time (e.g. validation of unique constraints). Given this, successful
+ * execution of statements should not be assumed until a subsequent Commit
+ * call completes successfully.
+ *
+ *
+ * bool last_statements = 6 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The lastStatements.
+ */
+ @java.lang.Override
+ public boolean getLastStatements() {
+ return lastStatements_;
+ }
+ /**
+ *
+ *
+ *
+ * Optional. If set to true, this request marks the end of the transaction.
+ * The transaction should be committed or aborted after these statements
+ * execute, and attempts to execute any other requests against this
+ * transaction (including reads and queries) will be rejected.
+ *
+ * Setting this option may cause some error reporting to be deferred until
+ * commit time (e.g. validation of unique constraints). Given this, successful
+ * execution of statements should not be assumed until a subsequent Commit
+ * call completes successfully.
+ *
+ *
+ * bool last_statements = 6 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The lastStatements to set.
+ * @return This builder for chaining.
+ */
+ public Builder setLastStatements(boolean value) {
+
+ lastStatements_ = value;
+ bitField0_ |= 0x00000020;
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ *
+ *
+ * Optional. If set to true, this request marks the end of the transaction.
+ * The transaction should be committed or aborted after these statements
+ * execute, and attempts to execute any other requests against this
+ * transaction (including reads and queries) will be rejected.
+ *
+ * Setting this option may cause some error reporting to be deferred until
+ * commit time (e.g. validation of unique constraints). Given this, successful
+ * execution of statements should not be assumed until a subsequent Commit
+ * call completes successfully.
+ *
+ *
+ * bool last_statements = 6 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearLastStatements() {
+ bitField0_ = (bitField0_ & ~0x00000020);
+ lastStatements_ = false;
+ onChanged();
+ return this;
+ }
+
@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/ExecuteBatchDmlRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequestOrBuilder.java
index cdada2baa3f..db35333cf19 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequestOrBuilder.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequestOrBuilder.java
@@ -247,4 +247,25 @@ public interface ExecuteBatchDmlRequestOrBuilder
* .google.spanner.v1.RequestOptions request_options = 5;
*/
com.google.spanner.v1.RequestOptionsOrBuilder getRequestOptionsOrBuilder();
+
+ /**
+ *
+ *
+ *
+ * Optional. If set to true, this request marks the end of the transaction.
+ * The transaction should be committed or aborted after these statements
+ * execute, and attempts to execute any other requests against this
+ * transaction (including reads and queries) will be rejected.
+ *
+ * Setting this option may cause some error reporting to be deferred until
+ * commit time (e.g. validation of unique constraints). Given this, successful
+ * execution of statements should not be assumed until a subsequent Commit
+ * call completes successfully.
+ *
+ *
+ * bool last_statements = 6 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The lastStatements.
+ */
+ boolean getLastStatements();
}
diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequest.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequest.java
index 94ec19c8db9..1f31567db20 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequest.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequest.java
@@ -2234,6 +2234,32 @@ public boolean getDataBoostEnabled() {
return dataBoostEnabled_;
}
+ public static final int LAST_STATEMENT_FIELD_NUMBER = 17;
+ private boolean lastStatement_ = false;
+ /**
+ *
+ *
+ *
+ * Optional. If set to true, this statement marks the end of the transaction.
+ * The transaction should be committed or aborted after this statement
+ * executes, and attempts to execute any other requests against this
+ * transaction (including reads and queries) will be rejected.
+ *
+ * For DML statements, setting this option may cause some error reporting to
+ * be deferred until commit time (e.g. validation of unique constraints).
+ * Given this, successful execution of a DML statement should not be assumed
+ * until a subsequent Commit call completes successfully.
+ *
+ *
+ * bool last_statement = 17 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The lastStatement.
+ */
+ @java.lang.Override
+ public boolean getLastStatement() {
+ return lastStatement_;
+ }
+
private byte memoizedIsInitialized = -1;
@java.lang.Override
@@ -2286,6 +2312,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
if (dataBoostEnabled_ != false) {
output.writeBool(16, dataBoostEnabled_);
}
+ if (lastStatement_ != false) {
+ output.writeBool(17, lastStatement_);
+ }
getUnknownFields().writeTo(output);
}
@@ -2342,6 +2371,9 @@ public int getSerializedSize() {
if (dataBoostEnabled_ != false) {
size += com.google.protobuf.CodedOutputStream.computeBoolSize(16, dataBoostEnabled_);
}
+ if (lastStatement_ != false) {
+ size += com.google.protobuf.CodedOutputStream.computeBoolSize(17, lastStatement_);
+ }
size += getUnknownFields().getSerializedSize();
memoizedSize = size;
return size;
@@ -2385,6 +2417,7 @@ public boolean equals(final java.lang.Object obj) {
if (!getDirectedReadOptions().equals(other.getDirectedReadOptions())) return false;
}
if (getDataBoostEnabled() != other.getDataBoostEnabled()) return false;
+ if (getLastStatement() != other.getLastStatement()) return false;
if (!getUnknownFields().equals(other.getUnknownFields())) return false;
return true;
}
@@ -2434,6 +2467,8 @@ public int hashCode() {
}
hash = (37 * hash) + DATA_BOOST_ENABLED_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getDataBoostEnabled());
+ hash = (37 * hash) + LAST_STATEMENT_FIELD_NUMBER;
+ hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getLastStatement());
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
@@ -2642,6 +2677,7 @@ public Builder clear() {
directedReadOptionsBuilder_ = null;
}
dataBoostEnabled_ = false;
+ lastStatement_ = false;
return this;
}
@@ -2730,6 +2766,9 @@ private void buildPartial0(com.google.spanner.v1.ExecuteSqlRequest result) {
if (((from_bitField0_ & 0x00001000) != 0)) {
result.dataBoostEnabled_ = dataBoostEnabled_;
}
+ if (((from_bitField0_ & 0x00002000) != 0)) {
+ result.lastStatement_ = lastStatement_;
+ }
result.bitField0_ |= to_bitField0_;
}
@@ -2820,6 +2859,9 @@ public Builder mergeFrom(com.google.spanner.v1.ExecuteSqlRequest other) {
if (other.getDataBoostEnabled() != false) {
setDataBoostEnabled(other.getDataBoostEnabled());
}
+ if (other.getLastStatement() != false) {
+ setLastStatement(other.getLastStatement());
+ }
this.mergeUnknownFields(other.getUnknownFields());
onChanged();
return this;
@@ -2932,6 +2974,12 @@ public Builder mergeFrom(
bitField0_ |= 0x00001000;
break;
} // case 128
+ case 136:
+ {
+ lastStatement_ = input.readBool();
+ bitField0_ |= 0x00002000;
+ break;
+ } // case 136
default:
{
if (!super.parseUnknownField(input, extensionRegistry, tag)) {
@@ -4975,6 +5023,83 @@ public Builder clearDataBoostEnabled() {
return this;
}
+ private boolean lastStatement_;
+ /**
+ *
+ *
+ *
+ * Optional. If set to true, this statement marks the end of the transaction.
+ * The transaction should be committed or aborted after this statement
+ * executes, and attempts to execute any other requests against this
+ * transaction (including reads and queries) will be rejected.
+ *
+ * For DML statements, setting this option may cause some error reporting to
+ * be deferred until commit time (e.g. validation of unique constraints).
+ * Given this, successful execution of a DML statement should not be assumed
+ * until a subsequent Commit call completes successfully.
+ *
+ *
+ * bool last_statement = 17 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The lastStatement.
+ */
+ @java.lang.Override
+ public boolean getLastStatement() {
+ return lastStatement_;
+ }
+ /**
+ *
+ *
+ *
+ * Optional. If set to true, this statement marks the end of the transaction.
+ * The transaction should be committed or aborted after this statement
+ * executes, and attempts to execute any other requests against this
+ * transaction (including reads and queries) will be rejected.
+ *
+ * For DML statements, setting this option may cause some error reporting to
+ * be deferred until commit time (e.g. validation of unique constraints).
+ * Given this, successful execution of a DML statement should not be assumed
+ * until a subsequent Commit call completes successfully.
+ *
+ *
+ * bool last_statement = 17 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @param value The lastStatement to set.
+ * @return This builder for chaining.
+ */
+ public Builder setLastStatement(boolean value) {
+
+ lastStatement_ = value;
+ bitField0_ |= 0x00002000;
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ *
+ *
+ * Optional. If set to true, this statement marks the end of the transaction.
+ * The transaction should be committed or aborted after this statement
+ * executes, and attempts to execute any other requests against this
+ * transaction (including reads and queries) will be rejected.
+ *
+ * For DML statements, setting this option may cause some error reporting to
+ * be deferred until commit time (e.g. validation of unique constraints).
+ * Given this, successful execution of a DML statement should not be assumed
+ * until a subsequent Commit call completes successfully.
+ *
+ *
+ * bool last_statement = 17 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return This builder for chaining.
+ */
+ public Builder clearLastStatement() {
+ bitField0_ = (bitField0_ & ~0x00002000);
+ lastStatement_ = false;
+ onChanged();
+ return this;
+ }
+
@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/ExecuteSqlRequestOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequestOrBuilder.java
index de635dc34e2..a9fa97f75de 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequestOrBuilder.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteSqlRequestOrBuilder.java
@@ -521,4 +521,25 @@ com.google.spanner.v1.Type getParamTypesOrDefault(
* @return The dataBoostEnabled.
*/
boolean getDataBoostEnabled();
+
+ /**
+ *
+ *
+ *
+ * Optional. If set to true, this statement marks the end of the transaction.
+ * The transaction should be committed or aborted after this statement
+ * executes, and attempts to execute any other requests against this
+ * transaction (including reads and queries) will be rejected.
+ *
+ * For DML statements, setting this option may cause some error reporting to
+ * be deferred until commit time (e.g. validation of unique constraints).
+ * Given this, successful execution of a DML statement should not be assumed
+ * until a subsequent Commit call completes successfully.
+ *
+ *
+ * bool last_statement = 17 [(.google.api.field_behavior) = OPTIONAL];
+ *
+ * @return The lastStatement.
+ */
+ boolean getLastStatement();
}
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 d8679c5b35d..0be619a96af 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
@@ -236,8 +236,8 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+ "aSelection\022\036\n\026auto_failover_disabled\030\002 \001"
+ "(\010\032f\n\017ExcludeReplicas\022S\n\022replica_selecti"
+ "ons\030\001 \003(\01327.google.spanner.v1.DirectedRe"
- + "adOptions.ReplicaSelectionB\n\n\010replicas\"\360"
- + "\006\n\021ExecuteSqlRequest\0227\n\007session\030\001 \001(\tB&\340"
+ + "adOptions.ReplicaSelectionB\n\n\010replicas\"\215"
+ + "\007\n\021ExecuteSqlRequest\0227\n\007session\030\001 \001(\tB&\340"
+ "A\002\372A \n\036spanner.googleapis.com/Session\022;\n"
+ "\013transaction\030\002 \001(\0132&.google.spanner.v1.T"
+ "ransactionSelector\022\020\n\003sql\030\003 \001(\tB\003\340A\002\022\'\n\006"
@@ -252,192 +252,194 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+ "request_options\030\013 \001(\0132!.google.spanner.v"
+ "1.RequestOptions\022E\n\025directed_read_option"
+ "s\030\017 \001(\0132&.google.spanner.v1.DirectedRead"
- + "Options\022\032\n\022data_boost_enabled\030\020 \001(\010\032O\n\014Q"
- + "ueryOptions\022\031\n\021optimizer_version\030\001 \001(\t\022$"
- + "\n\034optimizer_statistics_package\030\002 \001(\t\032J\n\017"
- + "ParamTypesEntry\022\013\n\003key\030\001 \001(\t\022&\n\005value\030\002 "
- + "\001(\0132\027.google.spanner.v1.Type:\0028\001\"W\n\tQuer"
- + "yMode\022\n\n\006NORMAL\020\000\022\010\n\004PLAN\020\001\022\013\n\007PROFILE\020\002"
- + "\022\016\n\nWITH_STATS\020\003\022\027\n\023WITH_PLAN_AND_STATS\020"
- + "\004\"\240\004\n\026ExecuteBatchDmlRequest\0227\n\007session\030"
- + "\001 \001(\tB&\340A\002\372A \n\036spanner.googleapis.com/Se"
- + "ssion\022@\n\013transaction\030\002 \001(\0132&.google.span"
- + "ner.v1.TransactionSelectorB\003\340A\002\022L\n\nstate"
- + "ments\030\003 \003(\01323.google.spanner.v1.ExecuteB"
- + "atchDmlRequest.StatementB\003\340A\002\022\022\n\005seqno\030\004"
- + " \001(\003B\003\340A\002\022:\n\017request_options\030\005 \001(\0132!.goo"
- + "gle.spanner.v1.RequestOptions\032\354\001\n\tStatem"
- + "ent\022\020\n\003sql\030\001 \001(\tB\003\340A\002\022\'\n\006params\030\002 \001(\0132\027."
- + "google.protobuf.Struct\022X\n\013param_types\030\003 "
- + "\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\"\303\001\n\027Execute"
- + "BatchDmlResponse\0221\n\013result_sets\030\001 \003(\0132\034."
- + "google.spanner.v1.ResultSet\022\"\n\006status\030\002 "
- + "\001(\0132\022.google.rpc.Status\022Q\n\017precommit_tok"
- + "en\030\003 \001(\01323.google.spanner.v1.Multiplexed"
- + "SessionPrecommitTokenB\003\340A\001\"H\n\020PartitionO"
- + "ptions\022\034\n\024partition_size_bytes\030\001 \001(\003\022\026\n\016"
- + "max_partitions\030\002 \001(\003\"\243\003\n\025PartitionQueryR"
+ + "Options\022\032\n\022data_boost_enabled\030\020 \001(\010\022\033\n\016l"
+ + "ast_statement\030\021 \001(\010B\003\340A\001\032O\n\014QueryOptions"
+ + "\022\031\n\021optimizer_version\030\001 \001(\t\022$\n\034optimizer"
+ + "_statistics_package\030\002 \001(\t\032J\n\017ParamTypesE"
+ + "ntry\022\013\n\003key\030\001 \001(\t\022&\n\005value\030\002 \001(\0132\027.googl"
+ + "e.spanner.v1.Type:\0028\001\"W\n\tQueryMode\022\n\n\006NO"
+ + "RMAL\020\000\022\010\n\004PLAN\020\001\022\013\n\007PROFILE\020\002\022\016\n\nWITH_ST"
+ + "ATS\020\003\022\027\n\023WITH_PLAN_AND_STATS\020\004\"\276\004\n\026Execu"
+ + "teBatchDmlRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372"
+ + "A \n\036spanner.googleapis.com/Session\022@\n\013tr"
+ + "ansaction\030\002 \001(\0132&.google.spanner.v1.Tran"
+ + "sactionSelectorB\003\340A\002\022L\n\nstatements\030\003 \003(\013"
+ + "23.google.spanner.v1.ExecuteBatchDmlRequ"
+ + "est.StatementB\003\340A\002\022\022\n\005seqno\030\004 \001(\003B\003\340A\002\022:"
+ + "\n\017request_options\030\005 \001(\0132!.google.spanner"
+ + ".v1.RequestOptions\022\034\n\017last_statements\030\006 "
+ + "\001(\010B\003\340A\001\032\354\001\n\tStatement\022\020\n\003sql\030\001 \001(\tB\003\340A\002"
+ + "\022\'\n\006params\030\002 \001(\0132\027.google.protobuf.Struc"
+ + "t\022X\n\013param_types\030\003 \003(\0132C.google.spanner."
+ + "v1.ExecuteBatchDmlRequest.Statement.Para"
+ + "mTypesEntry\032J\n\017ParamTypesEntry\022\013\n\003key\030\001 "
+ + "\001(\t\022&\n\005value\030\002 \001(\0132\027.google.spanner.v1.T"
+ + "ype:\0028\001\"\303\001\n\027ExecuteBatchDmlResponse\0221\n\013r"
+ + "esult_sets\030\001 \003(\0132\034.google.spanner.v1.Res"
+ + "ultSet\022\"\n\006status\030\002 \001(\0132\022.google.rpc.Stat"
+ + "us\022Q\n\017precommit_token\030\003 \001(\01323.google.spa"
+ + "nner.v1.MultiplexedSessionPrecommitToken"
+ + "B\003\340A\001\"H\n\020PartitionOptions\022\034\n\024partition_s"
+ + "ize_bytes\030\001 \001(\003\022\026\n\016max_partitions\030\002 \001(\003\""
+ + "\243\003\n\025PartitionQueryRequest\0227\n\007session\030\001 \001"
+ + "(\tB&\340A\002\372A \n\036spanner.googleapis.com/Sessi"
+ + "on\022;\n\013transaction\030\002 \001(\0132&.google.spanner"
+ + ".v1.TransactionSelector\022\020\n\003sql\030\003 \001(\tB\003\340A"
+ + "\002\022\'\n\006params\030\004 \001(\0132\027.google.protobuf.Stru"
+ + "ct\022M\n\013param_types\030\005 \003(\01328.google.spanner"
+ + ".v1.PartitionQueryRequest.ParamTypesEntr"
+ + "y\022>\n\021partition_options\030\006 \001(\0132#.google.sp"
+ + "anner.v1.PartitionOptions\032J\n\017ParamTypesE"
+ + "ntry\022\013\n\003key\030\001 \001(\t\022&\n\005value\030\002 \001(\0132\027.googl"
+ + "e.spanner.v1.Type:\0028\001\"\261\002\n\024PartitionReadR"
+ "equest\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036spanner"
+ ".googleapis.com/Session\022;\n\013transaction\030\002"
+ " \001(\0132&.google.spanner.v1.TransactionSele"
- + "ctor\022\020\n\003sql\030\003 \001(\tB\003\340A\002\022\'\n\006params\030\004 \001(\0132\027"
- + ".google.protobuf.Struct\022M\n\013param_types\030\005"
- + " \003(\01328.google.spanner.v1.PartitionQueryR"
- + "equest.ParamTypesEntry\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"
+ + "ctor\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.goog"
+ + "le.spanner.v1.KeySetB\003\340A\002\022>\n\021partition_o"
+ + "ptions\030\t \001(\0132#.google.spanner.v1.Partiti"
+ + "onOptions\"$\n\tPartition\022\027\n\017partition_toke"
+ + "n\030\001 \001(\014\"z\n\021PartitionResponse\0220\n\npartitio"
+ + "ns\030\001 \003(\0132\034.google.spanner.v1.Partition\0223"
+ + "\n\013transaction\030\002 \001(\0132\036.google.spanner.v1."
+ + "Transaction\"\366\005\n\013ReadRequest\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"
+ + "B\003\340A\002\022\r\n\005index\030\004 \001(\t\022\024\n\007columns\030\005 \003(\tB\003\340"
+ + "A\002\022/\n\007key_set\030\006 \001(\0132\031.google.spanner.v1."
+ + "KeySetB\003\340A\002\022\r\n\005limit\030\010 \001(\003\022\024\n\014resume_tok"
+ + "en\030\t \001(\014\022\027\n\017partition_token\030\n \001(\014\022:\n\017req"
+ + "uest_options\030\013 \001(\0132!.google.spanner.v1.R"
+ + "equestOptions\022E\n\025directed_read_options\030\016"
+ + " \001(\0132&.google.spanner.v1.DirectedReadOpt"
+ + "ions\022\032\n\022data_boost_enabled\030\017 \001(\010\022=\n\010orde"
+ + "r_by\030\020 \001(\0162&.google.spanner.v1.ReadReque"
+ + "st.OrderByB\003\340A\001\022?\n\tlock_hint\030\021 \001(\0162\'.goo"
+ + "gle.spanner.v1.ReadRequest.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_O"
+ + "RDER\020\002\"T\n\010LockHint\022\031\n\025LOCK_HINT_UNSPECIF"
+ + "IED\020\000\022\024\n\020LOCK_HINT_SHARED\020\001\022\027\n\023LOCK_HINT"
+ + "_EXCLUSIVE\020\002\"\203\002\n\027BeginTransactionRequest"
+ + "\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036spanner.googl"
+ + "eapis.com/Session\022;\n\007options\030\002 \001(\0132%.goo"
+ + "gle.spanner.v1.TransactionOptionsB\003\340A\002\022:"
+ + "\n\017request_options\030\003 \001(\0132!.google.spanner"
+ + ".v1.RequestOptions\0226\n\014mutation_key\030\004 \001(\013"
+ + "2\033.google.spanner.v1.MutationB\003\340A\001\"\320\003\n\rC"
+ + "ommitRequest\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036s"
+ + "panner.googleapis.com/Session\022\030\n\016transac"
+ + "tion_id\030\002 \001(\014H\000\022G\n\026single_use_transactio"
+ + "n\030\003 \001(\0132%.google.spanner.v1.TransactionO"
+ + "ptionsH\000\022.\n\tmutations\030\004 \003(\0132\033.google.spa"
+ + "nner.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_optio"
+ + "ns\030\006 \001(\0132!.google.spanner.v1.RequestOpti"
+ + "ons\022Q\n\017precommit_token\030\t \001(\01323.google.sp"
+ + "anner.v1.MultiplexedSessionPrecommitToke"
+ + "nB\003\340A\001B\r\n\013transaction\"g\n\017RollbackRequest"
+ + "\0227\n\007session\030\001 \001(\tB&\340A\002\372A \n\036spanner.googl"
+ + "eapis.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/Se"
+ + "ssion\022:\n\017request_options\030\003 \001(\0132!.google."
+ + "spanner.v1.RequestOptions\022P\n\017mutation_gr"
+ + "oups\030\004 \003(\01322.google.spanner.v1.BatchWrit"
+ + "eRequest.MutationGroupB\003\340A\002\022,\n\037exclude_t"
+ + "xn_from_change_streams\030\005 \001(\010B\003\340A\001\032D\n\rMut"
+ + "ationGroup\0223\n\tmutations\030\001 \003(\0132\033.google.s"
+ + "panner.v1.MutationB\003\340A\002\"\177\n\022BatchWriteRes"
+ + "ponse\022\017\n\007indexes\030\001 \003(\005\022\"\n\006status\030\002 \001(\0132\022"
+ + ".google.rpc.Status\0224\n\020commit_timestamp\030\003"
+ + " \001(\0132\032.google.protobuf.Timestamp2\213\030\n\007Spa"
+ + "nner\022\246\001\n\rCreateSession\022\'.google.spanner."
+ + "v1.CreateSessionRequest\032\032.google.spanner"
+ + ".v1.Session\"P\332A\010database\202\323\344\223\002?\":/v1/{dat"
+ + "abase=projects/*/instances/*/databases/*"
+ + "}/sessions:\001*\022\340\001\n\023BatchCreateSessions\022-."
+ + "google.spanner.v1.BatchCreateSessionsReq"
+ + "uest\032..google.spanner.v1.BatchCreateSess"
+ + "ionsResponse\"j\332A\026database,session_count\202"
+ + "\323\344\223\002K\"F/v1/{database=projects/*/instance"
+ + "s/*/databases/*}/sessions:batchCreate:\001*"
+ + "\022\227\001\n\nGetSession\022$.google.spanner.v1.GetS"
+ + "essionRequest\032\032.google.spanner.v1.Sessio"
+ + "n\"G\332A\004name\202\323\344\223\002:\0228/v1/{name=projects/*/i"
+ + "nstances/*/databases/*/sessions/*}\022\256\001\n\014L"
+ + "istSessions\022&.google.spanner.v1.ListSess"
+ + "ionsRequest\032\'.google.spanner.v1.ListSess"
+ + "ionsResponse\"M\332A\010database\202\323\344\223\002<\022:/v1/{da"
+ + "tabase=projects/*/instances/*/databases/"
+ + "*}/sessions\022\231\001\n\rDeleteSession\022\'.google.s"
+ + "panner.v1.DeleteSessionRequest\032\026.google."
+ + "protobuf.Empty\"G\332A\004name\202\323\344\223\002:*8/v1/{name"
+ + "=projects/*/instances/*/databases/*/sess"
+ + "ions/*}\022\243\001\n\nExecuteSql\022$.google.spanner."
+ + "v1.ExecuteSqlRequest\032\034.google.spanner.v1"
+ + ".ResultSet\"Q\202\323\344\223\002K\"F/v1/{session=project"
+ + "s/*/instances/*/databases/*/sessions/*}:"
+ + "executeSql:\001*\022\276\001\n\023ExecuteStreamingSql\022$."
+ + "google.spanner.v1.ExecuteSqlRequest\032#.go"
+ + "ogle.spanner.v1.PartialResultSet\"Z\202\323\344\223\002T"
+ + "\"O/v1/{session=projects/*/instances/*/da"
+ + "tabases/*/sessions/*}:executeStreamingSq"
+ + "l:\001*0\001\022\300\001\n\017ExecuteBatchDml\022).google.span"
+ + "ner.v1.ExecuteBatchDmlRequest\032*.google.s"
+ + "panner.v1.ExecuteBatchDmlResponse\"V\202\323\344\223\002"
+ + "P\"K/v1/{session=projects/*/instances/*/d"
+ + "atabases/*/sessions/*}:executeBatchDml:\001"
+ + "*\022\221\001\n\004Read\022\036.google.spanner.v1.ReadReque"
+ + "st\032\034.google.spanner.v1.ResultSet\"K\202\323\344\223\002E"
+ + "\"@/v1/{session=projects/*/instances/*/da"
+ + "tabases/*/sessions/*}:read:\001*\022\254\001\n\rStream"
+ + "ingRead\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.spann"
+ + "er.v1.BeginTransactionRequest\032\036.google.s"
+ + "panner.v1.Transaction\"i\332A\017session,option"
+ + "s\202\323\344\223\002Q\"L/v1/{session=projects/*/instanc"
+ + "es/*/databases/*/sessions/*}:beginTransa"
+ + "ction:\001*\022\353\001\n\006Commit\022 .google.spanner.v1."
+ + "CommitRequest\032!.google.spanner.v1.Commit"
+ + "Response\"\233\001\332A session,transaction_id,mut"
+ + "ations\332A(session,single_use_transaction,"
+ + "mutations\202\323\344\223\002G\"B/v1/{session=projects/*"
+ + "/instances/*/databases/*/sessions/*}:com"
+ + "mit:\001*\022\260\001\n\010Rollback\022\".google.spanner.v1."
+ + "RollbackRequest\032\026.google.protobuf.Empty\""
+ + "h\332A\026session,transaction_id\202\323\344\223\002I\"D/v1/{s"
+ + "ession=projects/*/instances/*/databases/"
+ + "*/sessions/*}:rollback:\001*\022\267\001\n\016PartitionQ"
+ + "uery\022(.google.spanner.v1.PartitionQueryR"
+ + "equest\032$.google.spanner.v1.PartitionResp"
+ + "onse\"U\202\323\344\223\002O\"J/v1/{session=projects/*/in"
+ + "stances/*/databases/*/sessions/*}:partit"
+ + "ionQuery:\001*\022\264\001\n\rPartitionRead\022\'.google.s"
+ + "panner.v1.PartitionReadRequest\032$.google."
+ + "spanner.v1.PartitionResponse\"T\202\323\344\223\002N\"I/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
com.google.cloud
google-cloud-spanner
- 6.81.2
+ 6.82.0
diff --git a/samples/snippets/src/main/java/com/example/spanner/CopyBackupWithMultiRegionEncryptionKey.java b/samples/snippets/src/main/java/com/example/spanner/CopyBackupWithMultiRegionEncryptionKey.java
new file mode 100644
index 00000000000..4fe60a775e5
--- /dev/null
+++ b/samples/snippets/src/main/java/com/example/spanner/CopyBackupWithMultiRegionEncryptionKey.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2024 Google Inc.
+ *
+ * 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
+ *
+ * http://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.
+ */
+
+package com.example.spanner;
+
+// [START spanner_copy_backup_with_MR_CMEK]
+
+import com.google.cloud.Timestamp;
+import com.google.cloud.spanner.Spanner;
+import com.google.cloud.spanner.SpannerException;
+import com.google.cloud.spanner.SpannerExceptionFactory;
+import com.google.cloud.spanner.SpannerOptions;
+import com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient;
+import com.google.common.collect.ImmutableList;
+import com.google.spanner.admin.database.v1.Backup;
+import com.google.spanner.admin.database.v1.BackupName;
+import com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig;
+import com.google.spanner.admin.database.v1.CopyBackupEncryptionConfig.EncryptionType;
+import com.google.spanner.admin.database.v1.CopyBackupRequest;
+import com.google.spanner.admin.database.v1.InstanceName;
+import java.time.Instant;
+import java.time.OffsetDateTime;
+import java.time.ZoneId;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+
+public class CopyBackupWithMultiRegionEncryptionKey {
+
+ static void copyBackupWithMultiRegionEncryptionKey() {
+ // TODO(developer): Replace these variables before running the sample.
+ String projectId = "my-project";
+ String instanceId = "my-instance";
+ String sourceBackupId = "my-backup";
+ String destinationBackupId = "my-destination-backup";
+ String[] kmsKeyNames =
+ new String[] {
+ "projects/" + projectId + "/locations/