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