diff --git a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetMetadata.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetMetadata.java index d802b4648bb..05ce99529ac 100644 --- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetMetadata.java +++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetMetadata.java @@ -180,6 +180,78 @@ public com.google.spanner.v1.TransactionOrBuilder getTransactionOrBuilder() { return getTransaction(); } + public static final int UNDECLARED_PARAMETERS_FIELD_NUMBER = 3; + private com.google.spanner.v1.StructType undeclaredParameters_; + /** + * + * + *
+ * A SQL query can be parameterized. In PLAN mode, these parameters can be + * undeclared. This indicates the field names and types for those undeclared + * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM + * Users where UserId = @userId and UserName = @userName "` could return a + * `undeclared_parameters` value like: + * "fields": [ + * { "name": "UserId", "type": { "code": "INT64" } }, + * { "name": "UserName", "type": { "code": "STRING" } }, + * ] + *+ * + *
.google.spanner.v1.StructType undeclared_parameters = 3;
+ *
+ * @return Whether the undeclaredParameters field is set.
+ */
+ @java.lang.Override
+ public boolean hasUndeclaredParameters() {
+ return undeclaredParameters_ != null;
+ }
+ /**
+ *
+ *
+ * + * A SQL query can be parameterized. In PLAN mode, these parameters can be + * undeclared. This indicates the field names and types for those undeclared + * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM + * Users where UserId = @userId and UserName = @userName "` could return a + * `undeclared_parameters` value like: + * "fields": [ + * { "name": "UserId", "type": { "code": "INT64" } }, + * { "name": "UserName", "type": { "code": "STRING" } }, + * ] + *+ * + *
.google.spanner.v1.StructType undeclared_parameters = 3;
+ *
+ * @return The undeclaredParameters.
+ */
+ @java.lang.Override
+ public com.google.spanner.v1.StructType getUndeclaredParameters() {
+ return undeclaredParameters_ == null
+ ? com.google.spanner.v1.StructType.getDefaultInstance()
+ : undeclaredParameters_;
+ }
+ /**
+ *
+ *
+ * + * A SQL query can be parameterized. In PLAN mode, these parameters can be + * undeclared. This indicates the field names and types for those undeclared + * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM + * Users where UserId = @userId and UserName = @userName "` could return a + * `undeclared_parameters` value like: + * "fields": [ + * { "name": "UserId", "type": { "code": "INT64" } }, + * { "name": "UserName", "type": { "code": "STRING" } }, + * ] + *+ * + *
.google.spanner.v1.StructType undeclared_parameters = 3;
+ */
+ @java.lang.Override
+ public com.google.spanner.v1.StructTypeOrBuilder getUndeclaredParametersOrBuilder() {
+ return getUndeclaredParameters();
+ }
+
private byte memoizedIsInitialized = -1;
@java.lang.Override
@@ -200,6 +272,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
if (transaction_ != null) {
output.writeMessage(2, getTransaction());
}
+ if (undeclaredParameters_ != null) {
+ output.writeMessage(3, getUndeclaredParameters());
+ }
getUnknownFields().writeTo(output);
}
@@ -215,6 +290,10 @@ public int getSerializedSize() {
if (transaction_ != null) {
size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTransaction());
}
+ if (undeclaredParameters_ != null) {
+ size +=
+ com.google.protobuf.CodedOutputStream.computeMessageSize(3, getUndeclaredParameters());
+ }
size += getUnknownFields().getSerializedSize();
memoizedSize = size;
return size;
@@ -238,6 +317,10 @@ public boolean equals(final java.lang.Object obj) {
if (hasTransaction()) {
if (!getTransaction().equals(other.getTransaction())) return false;
}
+ if (hasUndeclaredParameters() != other.hasUndeclaredParameters()) return false;
+ if (hasUndeclaredParameters()) {
+ if (!getUndeclaredParameters().equals(other.getUndeclaredParameters())) return false;
+ }
if (!getUnknownFields().equals(other.getUnknownFields())) return false;
return true;
}
@@ -257,6 +340,10 @@ public int hashCode() {
hash = (37 * hash) + TRANSACTION_FIELD_NUMBER;
hash = (53 * hash) + getTransaction().hashCode();
}
+ if (hasUndeclaredParameters()) {
+ hash = (37 * hash) + UNDECLARED_PARAMETERS_FIELD_NUMBER;
+ hash = (53 * hash) + getUndeclaredParameters().hashCode();
+ }
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
@@ -407,6 +494,12 @@ public Builder clear() {
transaction_ = null;
transactionBuilder_ = null;
}
+ if (undeclaredParametersBuilder_ == null) {
+ undeclaredParameters_ = null;
+ } else {
+ undeclaredParameters_ = null;
+ undeclaredParametersBuilder_ = null;
+ }
return this;
}
@@ -444,6 +537,11 @@ public com.google.spanner.v1.ResultSetMetadata buildPartial() {
} else {
result.transaction_ = transactionBuilder_.build();
}
+ if (undeclaredParametersBuilder_ == null) {
+ result.undeclaredParameters_ = undeclaredParameters_;
+ } else {
+ result.undeclaredParameters_ = undeclaredParametersBuilder_.build();
+ }
onBuilt();
return result;
}
@@ -499,6 +597,9 @@ public Builder mergeFrom(com.google.spanner.v1.ResultSetMetadata other) {
if (other.hasTransaction()) {
mergeTransaction(other.getTransaction());
}
+ if (other.hasUndeclaredParameters()) {
+ mergeUndeclaredParameters(other.getUndeclaredParameters());
+ }
this.mergeUnknownFields(other.getUnknownFields());
onChanged();
return this;
@@ -537,6 +638,13 @@ public Builder mergeFrom(
break;
} // case 18
+ case 26:
+ {
+ input.readMessage(
+ getUndeclaredParametersFieldBuilder().getBuilder(), extensionRegistry);
+
+ break;
+ } // case 26
default:
{
if (!super.parseUnknownField(input, extensionRegistry, tag)) {
@@ -981,6 +1089,264 @@ public com.google.spanner.v1.TransactionOrBuilder getTransactionOrBuilder() {
return transactionBuilder_;
}
+ private com.google.spanner.v1.StructType undeclaredParameters_;
+ private com.google.protobuf.SingleFieldBuilderV3<
+ com.google.spanner.v1.StructType,
+ com.google.spanner.v1.StructType.Builder,
+ com.google.spanner.v1.StructTypeOrBuilder>
+ undeclaredParametersBuilder_;
+ /**
+ *
+ *
+ * + * A SQL query can be parameterized. In PLAN mode, these parameters can be + * undeclared. This indicates the field names and types for those undeclared + * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM + * Users where UserId = @userId and UserName = @userName "` could return a + * `undeclared_parameters` value like: + * "fields": [ + * { "name": "UserId", "type": { "code": "INT64" } }, + * { "name": "UserName", "type": { "code": "STRING" } }, + * ] + *+ * + *
.google.spanner.v1.StructType undeclared_parameters = 3;
+ *
+ * @return Whether the undeclaredParameters field is set.
+ */
+ public boolean hasUndeclaredParameters() {
+ return undeclaredParametersBuilder_ != null || undeclaredParameters_ != null;
+ }
+ /**
+ *
+ *
+ * + * A SQL query can be parameterized. In PLAN mode, these parameters can be + * undeclared. This indicates the field names and types for those undeclared + * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM + * Users where UserId = @userId and UserName = @userName "` could return a + * `undeclared_parameters` value like: + * "fields": [ + * { "name": "UserId", "type": { "code": "INT64" } }, + * { "name": "UserName", "type": { "code": "STRING" } }, + * ] + *+ * + *
.google.spanner.v1.StructType undeclared_parameters = 3;
+ *
+ * @return The undeclaredParameters.
+ */
+ public com.google.spanner.v1.StructType getUndeclaredParameters() {
+ if (undeclaredParametersBuilder_ == null) {
+ return undeclaredParameters_ == null
+ ? com.google.spanner.v1.StructType.getDefaultInstance()
+ : undeclaredParameters_;
+ } else {
+ return undeclaredParametersBuilder_.getMessage();
+ }
+ }
+ /**
+ *
+ *
+ * + * A SQL query can be parameterized. In PLAN mode, these parameters can be + * undeclared. This indicates the field names and types for those undeclared + * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM + * Users where UserId = @userId and UserName = @userName "` could return a + * `undeclared_parameters` value like: + * "fields": [ + * { "name": "UserId", "type": { "code": "INT64" } }, + * { "name": "UserName", "type": { "code": "STRING" } }, + * ] + *+ * + *
.google.spanner.v1.StructType undeclared_parameters = 3;
+ */
+ public Builder setUndeclaredParameters(com.google.spanner.v1.StructType value) {
+ if (undeclaredParametersBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ undeclaredParameters_ = value;
+ onChanged();
+ } else {
+ undeclaredParametersBuilder_.setMessage(value);
+ }
+
+ return this;
+ }
+ /**
+ *
+ *
+ * + * A SQL query can be parameterized. In PLAN mode, these parameters can be + * undeclared. This indicates the field names and types for those undeclared + * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM + * Users where UserId = @userId and UserName = @userName "` could return a + * `undeclared_parameters` value like: + * "fields": [ + * { "name": "UserId", "type": { "code": "INT64" } }, + * { "name": "UserName", "type": { "code": "STRING" } }, + * ] + *+ * + *
.google.spanner.v1.StructType undeclared_parameters = 3;
+ */
+ public Builder setUndeclaredParameters(
+ com.google.spanner.v1.StructType.Builder builderForValue) {
+ if (undeclaredParametersBuilder_ == null) {
+ undeclaredParameters_ = builderForValue.build();
+ onChanged();
+ } else {
+ undeclaredParametersBuilder_.setMessage(builderForValue.build());
+ }
+
+ return this;
+ }
+ /**
+ *
+ *
+ * + * A SQL query can be parameterized. In PLAN mode, these parameters can be + * undeclared. This indicates the field names and types for those undeclared + * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM + * Users where UserId = @userId and UserName = @userName "` could return a + * `undeclared_parameters` value like: + * "fields": [ + * { "name": "UserId", "type": { "code": "INT64" } }, + * { "name": "UserName", "type": { "code": "STRING" } }, + * ] + *+ * + *
.google.spanner.v1.StructType undeclared_parameters = 3;
+ */
+ public Builder mergeUndeclaredParameters(com.google.spanner.v1.StructType value) {
+ if (undeclaredParametersBuilder_ == null) {
+ if (undeclaredParameters_ != null) {
+ undeclaredParameters_ =
+ com.google.spanner.v1.StructType.newBuilder(undeclaredParameters_)
+ .mergeFrom(value)
+ .buildPartial();
+ } else {
+ undeclaredParameters_ = value;
+ }
+ onChanged();
+ } else {
+ undeclaredParametersBuilder_.mergeFrom(value);
+ }
+
+ return this;
+ }
+ /**
+ *
+ *
+ * + * A SQL query can be parameterized. In PLAN mode, these parameters can be + * undeclared. This indicates the field names and types for those undeclared + * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM + * Users where UserId = @userId and UserName = @userName "` could return a + * `undeclared_parameters` value like: + * "fields": [ + * { "name": "UserId", "type": { "code": "INT64" } }, + * { "name": "UserName", "type": { "code": "STRING" } }, + * ] + *+ * + *
.google.spanner.v1.StructType undeclared_parameters = 3;
+ */
+ public Builder clearUndeclaredParameters() {
+ if (undeclaredParametersBuilder_ == null) {
+ undeclaredParameters_ = null;
+ onChanged();
+ } else {
+ undeclaredParameters_ = null;
+ undeclaredParametersBuilder_ = null;
+ }
+
+ return this;
+ }
+ /**
+ *
+ *
+ * + * A SQL query can be parameterized. In PLAN mode, these parameters can be + * undeclared. This indicates the field names and types for those undeclared + * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM + * Users where UserId = @userId and UserName = @userName "` could return a + * `undeclared_parameters` value like: + * "fields": [ + * { "name": "UserId", "type": { "code": "INT64" } }, + * { "name": "UserName", "type": { "code": "STRING" } }, + * ] + *+ * + *
.google.spanner.v1.StructType undeclared_parameters = 3;
+ */
+ public com.google.spanner.v1.StructType.Builder getUndeclaredParametersBuilder() {
+
+ onChanged();
+ return getUndeclaredParametersFieldBuilder().getBuilder();
+ }
+ /**
+ *
+ *
+ * + * A SQL query can be parameterized. In PLAN mode, these parameters can be + * undeclared. This indicates the field names and types for those undeclared + * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM + * Users where UserId = @userId and UserName = @userName "` could return a + * `undeclared_parameters` value like: + * "fields": [ + * { "name": "UserId", "type": { "code": "INT64" } }, + * { "name": "UserName", "type": { "code": "STRING" } }, + * ] + *+ * + *
.google.spanner.v1.StructType undeclared_parameters = 3;
+ */
+ public com.google.spanner.v1.StructTypeOrBuilder getUndeclaredParametersOrBuilder() {
+ if (undeclaredParametersBuilder_ != null) {
+ return undeclaredParametersBuilder_.getMessageOrBuilder();
+ } else {
+ return undeclaredParameters_ == null
+ ? com.google.spanner.v1.StructType.getDefaultInstance()
+ : undeclaredParameters_;
+ }
+ }
+ /**
+ *
+ *
+ * + * A SQL query can be parameterized. In PLAN mode, these parameters can be + * undeclared. This indicates the field names and types for those undeclared + * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM + * Users where UserId = @userId and UserName = @userName "` could return a + * `undeclared_parameters` value like: + * "fields": [ + * { "name": "UserId", "type": { "code": "INT64" } }, + * { "name": "UserName", "type": { "code": "STRING" } }, + * ] + *+ * + *
.google.spanner.v1.StructType undeclared_parameters = 3;
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ com.google.spanner.v1.StructType,
+ com.google.spanner.v1.StructType.Builder,
+ com.google.spanner.v1.StructTypeOrBuilder>
+ getUndeclaredParametersFieldBuilder() {
+ if (undeclaredParametersBuilder_ == null) {
+ undeclaredParametersBuilder_ =
+ new com.google.protobuf.SingleFieldBuilderV3<
+ com.google.spanner.v1.StructType,
+ com.google.spanner.v1.StructType.Builder,
+ com.google.spanner.v1.StructTypeOrBuilder>(
+ getUndeclaredParameters(), getParentForChildren(), isClean());
+ undeclaredParameters_ = null;
+ }
+ return undeclaredParametersBuilder_;
+ }
+
@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/ResultSetMetadataOrBuilder.java b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetMetadataOrBuilder.java
index e1a554096f5..38216902ce7 100644
--- a/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetMetadataOrBuilder.java
+++ b/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ResultSetMetadataOrBuilder.java
@@ -113,4 +113,63 @@ public interface ResultSetMetadataOrBuilder
* .google.spanner.v1.Transaction transaction = 2;
*/
com.google.spanner.v1.TransactionOrBuilder getTransactionOrBuilder();
+
+ /**
+ *
+ *
+ * + * A SQL query can be parameterized. In PLAN mode, these parameters can be + * undeclared. This indicates the field names and types for those undeclared + * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM + * Users where UserId = @userId and UserName = @userName "` could return a + * `undeclared_parameters` value like: + * "fields": [ + * { "name": "UserId", "type": { "code": "INT64" } }, + * { "name": "UserName", "type": { "code": "STRING" } }, + * ] + *+ * + *
.google.spanner.v1.StructType undeclared_parameters = 3;
+ *
+ * @return Whether the undeclaredParameters field is set.
+ */
+ boolean hasUndeclaredParameters();
+ /**
+ *
+ *
+ * + * A SQL query can be parameterized. In PLAN mode, these parameters can be + * undeclared. This indicates the field names and types for those undeclared + * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM + * Users where UserId = @userId and UserName = @userName "` could return a + * `undeclared_parameters` value like: + * "fields": [ + * { "name": "UserId", "type": { "code": "INT64" } }, + * { "name": "UserName", "type": { "code": "STRING" } }, + * ] + *+ * + *
.google.spanner.v1.StructType undeclared_parameters = 3;
+ *
+ * @return The undeclaredParameters.
+ */
+ com.google.spanner.v1.StructType getUndeclaredParameters();
+ /**
+ *
+ *
+ * + * A SQL query can be parameterized. In PLAN mode, these parameters can be + * undeclared. This indicates the field names and types for those undeclared + * parameters in the SQL query. For example, a SQL query like `"SELECT * FROM + * Users where UserId = @userId and UserName = @userName "` could return a + * `undeclared_parameters` value like: + * "fields": [ + * { "name": "UserId", "type": { "code": "INT64" } }, + * { "name": "UserName", "type": { "code": "STRING" } }, + * ] + *+ * + *
.google.spanner.v1.StructType undeclared_parameters = 3;
+ */
+ com.google.spanner.v1.StructTypeOrBuilder getUndeclaredParametersOrBuilder();
}
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 4a16d3a312b..3c90e33d825 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
@@ -66,19 +66,21 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
+ "\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\"y\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\"\271\001\n\016ResultSetStats\0220\n\nquery_plan\030\001"
- + " \001(\0132\034.google.spanner.v1.QueryPlan\022,\n\013qu"
- + "ery_stats\030\002 \001(\0132\027.google.protobuf.Struct"
- + "\022\031\n\017row_count_exact\030\003 \001(\003H\000\022\037\n\025row_count"
- + "_lower_bound\030\004 \001(\003H\000B\013\n\trow_countB\267\001\n\025co"
- + "m.google.spanner.v1B\016ResultSetProtoP\001Z8g"
- + "oogle.golang.org/genproto/googleapis/spa"
- + "nner/v1;spanner\370\001\001\252\002\027Google.Cloud.Spanne"
- + "r.V1\312\002\027Google\\Cloud\\Spanner\\V1\352\002\032Google:"
- + ":Cloud::Spanner::V1b\006proto3"
+ + "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\267\001\n\025com.google.spanner."
+ + "v1B\016ResultSetProtoP\001Z8google.golang.org/"
+ + "genproto/googleapis/spanner/v1;spanner\370\001"
+ + "\001\252\002\027Google.Cloud.Spanner.V1\312\002\027Google\\Clo"
+ + "ud\\Spanner\\V1\352\002\032Google::Cloud::Spanner::"
+ + "V1b\006proto3"
};
descriptor =
com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
@@ -111,7 +113,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_google_spanner_v1_ResultSetMetadata_descriptor,
new java.lang.String[] {
- "RowType", "Transaction",
+ "RowType", "Transaction", "UndeclaredParameters",
});
internal_static_google_spanner_v1_ResultSetStats_descriptor =
getDescriptor().getMessageTypes().get(3);
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 714d8bea9ea..36df232bcf1 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
@@ -174,6 +174,18 @@ message ResultSetMetadata {
// If the read or SQL query began a transaction as a side-effect, the
// information about the new transaction is yielded here.
Transaction transaction = 2;
+
+ // A SQL query can be parameterized. In PLAN mode, these parameters can be
+ // undeclared. This indicates the field names and types for those undeclared
+ // parameters in the SQL query. For example, a SQL query like `"SELECT * FROM
+ // Users where UserId = @userId and UserName = @userName "` could return a
+ // `undeclared_parameters` value like:
+ //
+ // "fields": [
+ // { "name": "UserId", "type": { "code": "INT64" } },
+ // { "name": "UserName", "type": { "code": "STRING" } },
+ // ]
+ StructType undeclared_parameters = 3;
}
// Additional statistics about a [ResultSet][google.spanner.v1.ResultSet] or [PartialResultSet][google.spanner.v1.PartialResultSet].