1// Copyright 2021 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15// Code generated by protoc-gen-go. DO NOT EDIT. 16// versions: 17// protoc-gen-go v1.26.0 18// protoc v3.12.2 19// source: google/spanner/v1/result_set.proto 20 21package spanner 22 23import ( 24 reflect "reflect" 25 sync "sync" 26 27 _ "google.golang.org/genproto/googleapis/api/annotations" 28 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 29 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 30 structpb "google.golang.org/protobuf/types/known/structpb" 31) 32 33const ( 34 // Verify that this generated code is sufficiently up-to-date. 35 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 36 // Verify that runtime/protoimpl is sufficiently up-to-date. 37 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 38) 39 40// Results from [Read][google.spanner.v1.Spanner.Read] or 41// [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql]. 42type ResultSet struct { 43 state protoimpl.MessageState 44 sizeCache protoimpl.SizeCache 45 unknownFields protoimpl.UnknownFields 46 47 // Metadata about the result set, such as row type information. 48 Metadata *ResultSetMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` 49 // Each element in `rows` is a row whose format is defined by 50 // [metadata.row_type][google.spanner.v1.ResultSetMetadata.row_type]. The ith element 51 // in each row matches the ith field in 52 // [metadata.row_type][google.spanner.v1.ResultSetMetadata.row_type]. Elements are 53 // encoded based on type as described 54 // [here][google.spanner.v1.TypeCode]. 55 Rows []*structpb.ListValue `protobuf:"bytes,2,rep,name=rows,proto3" json:"rows,omitempty"` 56 // Query plan and execution statistics for the SQL statement that 57 // produced this result set. These can be requested by setting 58 // [ExecuteSqlRequest.query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode]. 59 // DML statements always produce stats containing the number of rows 60 // modified, unless executed using the 61 // [ExecuteSqlRequest.QueryMode.PLAN][google.spanner.v1.ExecuteSqlRequest.QueryMode.PLAN] [ExecuteSqlRequest.query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode]. 62 // Other fields may or may not be populated, based on the 63 // [ExecuteSqlRequest.query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode]. 64 Stats *ResultSetStats `protobuf:"bytes,3,opt,name=stats,proto3" json:"stats,omitempty"` 65} 66 67func (x *ResultSet) Reset() { 68 *x = ResultSet{} 69 if protoimpl.UnsafeEnabled { 70 mi := &file_google_spanner_v1_result_set_proto_msgTypes[0] 71 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 72 ms.StoreMessageInfo(mi) 73 } 74} 75 76func (x *ResultSet) String() string { 77 return protoimpl.X.MessageStringOf(x) 78} 79 80func (*ResultSet) ProtoMessage() {} 81 82func (x *ResultSet) ProtoReflect() protoreflect.Message { 83 mi := &file_google_spanner_v1_result_set_proto_msgTypes[0] 84 if protoimpl.UnsafeEnabled && x != nil { 85 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 86 if ms.LoadMessageInfo() == nil { 87 ms.StoreMessageInfo(mi) 88 } 89 return ms 90 } 91 return mi.MessageOf(x) 92} 93 94// Deprecated: Use ResultSet.ProtoReflect.Descriptor instead. 95func (*ResultSet) Descriptor() ([]byte, []int) { 96 return file_google_spanner_v1_result_set_proto_rawDescGZIP(), []int{0} 97} 98 99func (x *ResultSet) GetMetadata() *ResultSetMetadata { 100 if x != nil { 101 return x.Metadata 102 } 103 return nil 104} 105 106func (x *ResultSet) GetRows() []*structpb.ListValue { 107 if x != nil { 108 return x.Rows 109 } 110 return nil 111} 112 113func (x *ResultSet) GetStats() *ResultSetStats { 114 if x != nil { 115 return x.Stats 116 } 117 return nil 118} 119 120// Partial results from a streaming read or SQL query. Streaming reads and 121// SQL queries better tolerate large result sets, large rows, and large 122// values, but are a little trickier to consume. 123type PartialResultSet struct { 124 state protoimpl.MessageState 125 sizeCache protoimpl.SizeCache 126 unknownFields protoimpl.UnknownFields 127 128 // Metadata about the result set, such as row type information. 129 // Only present in the first response. 130 Metadata *ResultSetMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` 131 // A streamed result set consists of a stream of values, which might 132 // be split into many `PartialResultSet` messages to accommodate 133 // large rows and/or large values. Every N complete values defines a 134 // row, where N is equal to the number of entries in 135 // [metadata.row_type.fields][google.spanner.v1.StructType.fields]. 136 // 137 // Most values are encoded based on type as described 138 // [here][google.spanner.v1.TypeCode]. 139 // 140 // It is possible that the last value in values is "chunked", 141 // meaning that the rest of the value is sent in subsequent 142 // `PartialResultSet`(s). This is denoted by the [chunked_value][google.spanner.v1.PartialResultSet.chunked_value] 143 // field. Two or more chunked values can be merged to form a 144 // complete value as follows: 145 // 146 // * `bool/number/null`: cannot be chunked 147 // * `string`: concatenate the strings 148 // * `list`: concatenate the lists. If the last element in a list is a 149 // `string`, `list`, or `object`, merge it with the first element in 150 // the next list by applying these rules recursively. 151 // * `object`: concatenate the (field name, field value) pairs. If a 152 // field name is duplicated, then apply these rules recursively 153 // to merge the field values. 154 // 155 // Some examples of merging: 156 // 157 // # Strings are concatenated. 158 // "foo", "bar" => "foobar" 159 // 160 // # Lists of non-strings are concatenated. 161 // [2, 3], [4] => [2, 3, 4] 162 // 163 // # Lists are concatenated, but the last and first elements are merged 164 // # because they are strings. 165 // ["a", "b"], ["c", "d"] => ["a", "bc", "d"] 166 // 167 // # Lists are concatenated, but the last and first elements are merged 168 // # because they are lists. Recursively, the last and first elements 169 // # of the inner lists are merged because they are strings. 170 // ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"] 171 // 172 // # Non-overlapping object fields are combined. 173 // {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"} 174 // 175 // # Overlapping object fields are merged. 176 // {"a": "1"}, {"a": "2"} => {"a": "12"} 177 // 178 // # Examples of merging objects containing lists of strings. 179 // {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]} 180 // 181 // For a more complete example, suppose a streaming SQL query is 182 // yielding a result set whose rows contain a single string 183 // field. The following `PartialResultSet`s might be yielded: 184 // 185 // { 186 // "metadata": { ... } 187 // "values": ["Hello", "W"] 188 // "chunked_value": true 189 // "resume_token": "Af65..." 190 // } 191 // { 192 // "values": ["orl"] 193 // "chunked_value": true 194 // "resume_token": "Bqp2..." 195 // } 196 // { 197 // "values": ["d"] 198 // "resume_token": "Zx1B..." 199 // } 200 // 201 // This sequence of `PartialResultSet`s encodes two rows, one 202 // containing the field value `"Hello"`, and a second containing the 203 // field value `"World" = "W" + "orl" + "d"`. 204 Values []*structpb.Value `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"` 205 // If true, then the final value in [values][google.spanner.v1.PartialResultSet.values] is chunked, and must 206 // be combined with more values from subsequent `PartialResultSet`s 207 // to obtain a complete field value. 208 ChunkedValue bool `protobuf:"varint,3,opt,name=chunked_value,json=chunkedValue,proto3" json:"chunked_value,omitempty"` 209 // Streaming calls might be interrupted for a variety of reasons, such 210 // as TCP connection loss. If this occurs, the stream of results can 211 // be resumed by re-sending the original request and including 212 // `resume_token`. Note that executing any other transaction in the 213 // same session invalidates the token. 214 ResumeToken []byte `protobuf:"bytes,4,opt,name=resume_token,json=resumeToken,proto3" json:"resume_token,omitempty"` 215 // Query plan and execution statistics for the statement that produced this 216 // streaming result set. These can be requested by setting 217 // [ExecuteSqlRequest.query_mode][google.spanner.v1.ExecuteSqlRequest.query_mode] and are sent 218 // only once with the last response in the stream. 219 // This field will also be present in the last response for DML 220 // statements. 221 Stats *ResultSetStats `protobuf:"bytes,5,opt,name=stats,proto3" json:"stats,omitempty"` 222} 223 224func (x *PartialResultSet) Reset() { 225 *x = PartialResultSet{} 226 if protoimpl.UnsafeEnabled { 227 mi := &file_google_spanner_v1_result_set_proto_msgTypes[1] 228 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 229 ms.StoreMessageInfo(mi) 230 } 231} 232 233func (x *PartialResultSet) String() string { 234 return protoimpl.X.MessageStringOf(x) 235} 236 237func (*PartialResultSet) ProtoMessage() {} 238 239func (x *PartialResultSet) ProtoReflect() protoreflect.Message { 240 mi := &file_google_spanner_v1_result_set_proto_msgTypes[1] 241 if protoimpl.UnsafeEnabled && x != nil { 242 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 243 if ms.LoadMessageInfo() == nil { 244 ms.StoreMessageInfo(mi) 245 } 246 return ms 247 } 248 return mi.MessageOf(x) 249} 250 251// Deprecated: Use PartialResultSet.ProtoReflect.Descriptor instead. 252func (*PartialResultSet) Descriptor() ([]byte, []int) { 253 return file_google_spanner_v1_result_set_proto_rawDescGZIP(), []int{1} 254} 255 256func (x *PartialResultSet) GetMetadata() *ResultSetMetadata { 257 if x != nil { 258 return x.Metadata 259 } 260 return nil 261} 262 263func (x *PartialResultSet) GetValues() []*structpb.Value { 264 if x != nil { 265 return x.Values 266 } 267 return nil 268} 269 270func (x *PartialResultSet) GetChunkedValue() bool { 271 if x != nil { 272 return x.ChunkedValue 273 } 274 return false 275} 276 277func (x *PartialResultSet) GetResumeToken() []byte { 278 if x != nil { 279 return x.ResumeToken 280 } 281 return nil 282} 283 284func (x *PartialResultSet) GetStats() *ResultSetStats { 285 if x != nil { 286 return x.Stats 287 } 288 return nil 289} 290 291// Metadata about a [ResultSet][google.spanner.v1.ResultSet] or [PartialResultSet][google.spanner.v1.PartialResultSet]. 292type ResultSetMetadata struct { 293 state protoimpl.MessageState 294 sizeCache protoimpl.SizeCache 295 unknownFields protoimpl.UnknownFields 296 297 // Indicates the field names and types for the rows in the result 298 // set. For example, a SQL query like `"SELECT UserId, UserName FROM 299 // Users"` could return a `row_type` value like: 300 // 301 // "fields": [ 302 // { "name": "UserId", "type": { "code": "INT64" } }, 303 // { "name": "UserName", "type": { "code": "STRING" } }, 304 // ] 305 RowType *StructType `protobuf:"bytes,1,opt,name=row_type,json=rowType,proto3" json:"row_type,omitempty"` 306 // If the read or SQL query began a transaction as a side-effect, the 307 // information about the new transaction is yielded here. 308 Transaction *Transaction `protobuf:"bytes,2,opt,name=transaction,proto3" json:"transaction,omitempty"` 309} 310 311func (x *ResultSetMetadata) Reset() { 312 *x = ResultSetMetadata{} 313 if protoimpl.UnsafeEnabled { 314 mi := &file_google_spanner_v1_result_set_proto_msgTypes[2] 315 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 316 ms.StoreMessageInfo(mi) 317 } 318} 319 320func (x *ResultSetMetadata) String() string { 321 return protoimpl.X.MessageStringOf(x) 322} 323 324func (*ResultSetMetadata) ProtoMessage() {} 325 326func (x *ResultSetMetadata) ProtoReflect() protoreflect.Message { 327 mi := &file_google_spanner_v1_result_set_proto_msgTypes[2] 328 if protoimpl.UnsafeEnabled && x != nil { 329 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 330 if ms.LoadMessageInfo() == nil { 331 ms.StoreMessageInfo(mi) 332 } 333 return ms 334 } 335 return mi.MessageOf(x) 336} 337 338// Deprecated: Use ResultSetMetadata.ProtoReflect.Descriptor instead. 339func (*ResultSetMetadata) Descriptor() ([]byte, []int) { 340 return file_google_spanner_v1_result_set_proto_rawDescGZIP(), []int{2} 341} 342 343func (x *ResultSetMetadata) GetRowType() *StructType { 344 if x != nil { 345 return x.RowType 346 } 347 return nil 348} 349 350func (x *ResultSetMetadata) GetTransaction() *Transaction { 351 if x != nil { 352 return x.Transaction 353 } 354 return nil 355} 356 357// Additional statistics about a [ResultSet][google.spanner.v1.ResultSet] or [PartialResultSet][google.spanner.v1.PartialResultSet]. 358type ResultSetStats struct { 359 state protoimpl.MessageState 360 sizeCache protoimpl.SizeCache 361 unknownFields protoimpl.UnknownFields 362 363 // [QueryPlan][google.spanner.v1.QueryPlan] for the query associated with this result. 364 QueryPlan *QueryPlan `protobuf:"bytes,1,opt,name=query_plan,json=queryPlan,proto3" json:"query_plan,omitempty"` 365 // Aggregated statistics from the execution of the query. Only present when 366 // the query is profiled. For example, a query could return the statistics as 367 // follows: 368 // 369 // { 370 // "rows_returned": "3", 371 // "elapsed_time": "1.22 secs", 372 // "cpu_time": "1.19 secs" 373 // } 374 QueryStats *structpb.Struct `protobuf:"bytes,2,opt,name=query_stats,json=queryStats,proto3" json:"query_stats,omitempty"` 375 // The number of rows modified by the DML statement. 376 // 377 // Types that are assignable to RowCount: 378 // *ResultSetStats_RowCountExact 379 // *ResultSetStats_RowCountLowerBound 380 RowCount isResultSetStats_RowCount `protobuf_oneof:"row_count"` 381} 382 383func (x *ResultSetStats) Reset() { 384 *x = ResultSetStats{} 385 if protoimpl.UnsafeEnabled { 386 mi := &file_google_spanner_v1_result_set_proto_msgTypes[3] 387 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 388 ms.StoreMessageInfo(mi) 389 } 390} 391 392func (x *ResultSetStats) String() string { 393 return protoimpl.X.MessageStringOf(x) 394} 395 396func (*ResultSetStats) ProtoMessage() {} 397 398func (x *ResultSetStats) ProtoReflect() protoreflect.Message { 399 mi := &file_google_spanner_v1_result_set_proto_msgTypes[3] 400 if protoimpl.UnsafeEnabled && x != nil { 401 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 402 if ms.LoadMessageInfo() == nil { 403 ms.StoreMessageInfo(mi) 404 } 405 return ms 406 } 407 return mi.MessageOf(x) 408} 409 410// Deprecated: Use ResultSetStats.ProtoReflect.Descriptor instead. 411func (*ResultSetStats) Descriptor() ([]byte, []int) { 412 return file_google_spanner_v1_result_set_proto_rawDescGZIP(), []int{3} 413} 414 415func (x *ResultSetStats) GetQueryPlan() *QueryPlan { 416 if x != nil { 417 return x.QueryPlan 418 } 419 return nil 420} 421 422func (x *ResultSetStats) GetQueryStats() *structpb.Struct { 423 if x != nil { 424 return x.QueryStats 425 } 426 return nil 427} 428 429func (m *ResultSetStats) GetRowCount() isResultSetStats_RowCount { 430 if m != nil { 431 return m.RowCount 432 } 433 return nil 434} 435 436func (x *ResultSetStats) GetRowCountExact() int64 { 437 if x, ok := x.GetRowCount().(*ResultSetStats_RowCountExact); ok { 438 return x.RowCountExact 439 } 440 return 0 441} 442 443func (x *ResultSetStats) GetRowCountLowerBound() int64 { 444 if x, ok := x.GetRowCount().(*ResultSetStats_RowCountLowerBound); ok { 445 return x.RowCountLowerBound 446 } 447 return 0 448} 449 450type isResultSetStats_RowCount interface { 451 isResultSetStats_RowCount() 452} 453 454type ResultSetStats_RowCountExact struct { 455 // Standard DML returns an exact count of rows that were modified. 456 RowCountExact int64 `protobuf:"varint,3,opt,name=row_count_exact,json=rowCountExact,proto3,oneof"` 457} 458 459type ResultSetStats_RowCountLowerBound struct { 460 // Partitioned DML does not offer exactly-once semantics, so it 461 // returns a lower bound of the rows modified. 462 RowCountLowerBound int64 `protobuf:"varint,4,opt,name=row_count_lower_bound,json=rowCountLowerBound,proto3,oneof"` 463} 464 465func (*ResultSetStats_RowCountExact) isResultSetStats_RowCount() {} 466 467func (*ResultSetStats_RowCountLowerBound) isResultSetStats_RowCount() {} 468 469var File_google_spanner_v1_result_set_proto protoreflect.FileDescriptor 470 471var file_google_spanner_v1_result_set_proto_rawDesc = []byte{ 472 0x0a, 0x22, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 473 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x2e, 0x70, 474 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 475 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 476 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 477 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73, 0x70, 478 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 479 0x6c, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 480 0x65, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x72, 0x61, 481 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 482 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 483 0x31, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 484 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 485 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb6, 0x01, 0x0a, 0x09, 0x52, 486 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 487 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 488 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 489 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 490 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2e, 0x0a, 0x04, 0x72, 0x6f, 491 0x77, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 492 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 493 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x12, 0x37, 0x0a, 0x05, 0x73, 0x74, 494 0x61, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 495 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 496 0x73, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 497 0x61, 0x74, 0x73, 0x22, 0x85, 0x02, 0x0a, 0x10, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 498 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 499 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 500 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 501 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 502 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2e, 0x0a, 0x06, 0x76, 0x61, 503 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 504 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 505 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x68, 506 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 507 0x08, 0x52, 0x0c, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 508 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 509 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x54, 0x6f, 0x6b, 510 0x65, 0x6e, 0x12, 0x37, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 511 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 512 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x74, 0x53, 513 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x11, 514 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 515 0x61, 0x12, 0x38, 0x0a, 0x08, 0x72, 0x6f, 0x77, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 516 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 517 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 518 0x70, 0x65, 0x52, 0x07, 0x72, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x74, 519 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 520 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 521 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 522 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf3, 0x01, 523 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 524 0x12, 0x3b, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x01, 525 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x73, 0x70, 526 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 527 0x61, 0x6e, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x38, 0x0a, 528 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 529 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 530 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x71, 0x75, 0x65, 531 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x6f, 0x77, 0x5f, 0x63, 532 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x78, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 533 0x48, 0x00, 0x52, 0x0d, 0x72, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x61, 0x63, 534 0x74, 0x12, 0x33, 0x0a, 0x15, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6c, 535 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 536 0x48, 0x00, 0x52, 0x12, 0x72, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x6f, 0x77, 0x65, 537 0x72, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 538 0x75, 0x6e, 0x74, 0x42, 0xb7, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 539 0x6c, 0x65, 0x2e, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x52, 540 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 541 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 542 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 543 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x2f, 0x76, 544 0x31, 0x3b, 0x73, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0xf8, 0x01, 0x01, 0xaa, 0x02, 0x17, 0x47, 545 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x70, 0x61, 0x6e, 546 0x6e, 0x65, 0x72, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 547 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x53, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x5c, 0x56, 0x31, 548 0xea, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 549 0x3a, 0x3a, 0x53, 0x70, 0x61, 0x6e, 0x6e, 0x65, 0x72, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 550 0x72, 0x6f, 0x74, 0x6f, 0x33, 551} 552 553var ( 554 file_google_spanner_v1_result_set_proto_rawDescOnce sync.Once 555 file_google_spanner_v1_result_set_proto_rawDescData = file_google_spanner_v1_result_set_proto_rawDesc 556) 557 558func file_google_spanner_v1_result_set_proto_rawDescGZIP() []byte { 559 file_google_spanner_v1_result_set_proto_rawDescOnce.Do(func() { 560 file_google_spanner_v1_result_set_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_spanner_v1_result_set_proto_rawDescData) 561 }) 562 return file_google_spanner_v1_result_set_proto_rawDescData 563} 564 565var file_google_spanner_v1_result_set_proto_msgTypes = make([]protoimpl.MessageInfo, 4) 566var file_google_spanner_v1_result_set_proto_goTypes = []interface{}{ 567 (*ResultSet)(nil), // 0: google.spanner.v1.ResultSet 568 (*PartialResultSet)(nil), // 1: google.spanner.v1.PartialResultSet 569 (*ResultSetMetadata)(nil), // 2: google.spanner.v1.ResultSetMetadata 570 (*ResultSetStats)(nil), // 3: google.spanner.v1.ResultSetStats 571 (*structpb.ListValue)(nil), // 4: google.protobuf.ListValue 572 (*structpb.Value)(nil), // 5: google.protobuf.Value 573 (*StructType)(nil), // 6: google.spanner.v1.StructType 574 (*Transaction)(nil), // 7: google.spanner.v1.Transaction 575 (*QueryPlan)(nil), // 8: google.spanner.v1.QueryPlan 576 (*structpb.Struct)(nil), // 9: google.protobuf.Struct 577} 578var file_google_spanner_v1_result_set_proto_depIdxs = []int32{ 579 2, // 0: google.spanner.v1.ResultSet.metadata:type_name -> google.spanner.v1.ResultSetMetadata 580 4, // 1: google.spanner.v1.ResultSet.rows:type_name -> google.protobuf.ListValue 581 3, // 2: google.spanner.v1.ResultSet.stats:type_name -> google.spanner.v1.ResultSetStats 582 2, // 3: google.spanner.v1.PartialResultSet.metadata:type_name -> google.spanner.v1.ResultSetMetadata 583 5, // 4: google.spanner.v1.PartialResultSet.values:type_name -> google.protobuf.Value 584 3, // 5: google.spanner.v1.PartialResultSet.stats:type_name -> google.spanner.v1.ResultSetStats 585 6, // 6: google.spanner.v1.ResultSetMetadata.row_type:type_name -> google.spanner.v1.StructType 586 7, // 7: google.spanner.v1.ResultSetMetadata.transaction:type_name -> google.spanner.v1.Transaction 587 8, // 8: google.spanner.v1.ResultSetStats.query_plan:type_name -> google.spanner.v1.QueryPlan 588 9, // 9: google.spanner.v1.ResultSetStats.query_stats:type_name -> google.protobuf.Struct 589 10, // [10:10] is the sub-list for method output_type 590 10, // [10:10] is the sub-list for method input_type 591 10, // [10:10] is the sub-list for extension type_name 592 10, // [10:10] is the sub-list for extension extendee 593 0, // [0:10] is the sub-list for field type_name 594} 595 596func init() { file_google_spanner_v1_result_set_proto_init() } 597func file_google_spanner_v1_result_set_proto_init() { 598 if File_google_spanner_v1_result_set_proto != nil { 599 return 600 } 601 file_google_spanner_v1_query_plan_proto_init() 602 file_google_spanner_v1_transaction_proto_init() 603 file_google_spanner_v1_type_proto_init() 604 if !protoimpl.UnsafeEnabled { 605 file_google_spanner_v1_result_set_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 606 switch v := v.(*ResultSet); i { 607 case 0: 608 return &v.state 609 case 1: 610 return &v.sizeCache 611 case 2: 612 return &v.unknownFields 613 default: 614 return nil 615 } 616 } 617 file_google_spanner_v1_result_set_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 618 switch v := v.(*PartialResultSet); i { 619 case 0: 620 return &v.state 621 case 1: 622 return &v.sizeCache 623 case 2: 624 return &v.unknownFields 625 default: 626 return nil 627 } 628 } 629 file_google_spanner_v1_result_set_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 630 switch v := v.(*ResultSetMetadata); i { 631 case 0: 632 return &v.state 633 case 1: 634 return &v.sizeCache 635 case 2: 636 return &v.unknownFields 637 default: 638 return nil 639 } 640 } 641 file_google_spanner_v1_result_set_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 642 switch v := v.(*ResultSetStats); i { 643 case 0: 644 return &v.state 645 case 1: 646 return &v.sizeCache 647 case 2: 648 return &v.unknownFields 649 default: 650 return nil 651 } 652 } 653 } 654 file_google_spanner_v1_result_set_proto_msgTypes[3].OneofWrappers = []interface{}{ 655 (*ResultSetStats_RowCountExact)(nil), 656 (*ResultSetStats_RowCountLowerBound)(nil), 657 } 658 type x struct{} 659 out := protoimpl.TypeBuilder{ 660 File: protoimpl.DescBuilder{ 661 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 662 RawDescriptor: file_google_spanner_v1_result_set_proto_rawDesc, 663 NumEnums: 0, 664 NumMessages: 4, 665 NumExtensions: 0, 666 NumServices: 0, 667 }, 668 GoTypes: file_google_spanner_v1_result_set_proto_goTypes, 669 DependencyIndexes: file_google_spanner_v1_result_set_proto_depIdxs, 670 MessageInfos: file_google_spanner_v1_result_set_proto_msgTypes, 671 }.Build() 672 File_google_spanner_v1_result_set_proto = out.File 673 file_google_spanner_v1_result_set_proto_rawDesc = nil 674 file_google_spanner_v1_result_set_proto_goTypes = nil 675 file_google_spanner_v1_result_set_proto_depIdxs = nil 676} 677