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