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