google_cloud_rust_raw/spanner/v1/
result_set.rs

1// This file is generated by rust-protobuf 2.28.0. Do not edit
2// @generated
3
4// https://github.com/rust-lang/rust-clippy/issues/702
5#![allow(unknown_lints)]
6#![allow(clippy::all)]
7
8#![allow(unused_attributes)]
9#![cfg_attr(rustfmt, rustfmt::skip)]
10
11#![allow(box_pointers)]
12#![allow(dead_code)]
13#![allow(missing_docs)]
14#![allow(non_camel_case_types)]
15#![allow(non_snake_case)]
16#![allow(non_upper_case_globals)]
17#![allow(trivial_casts)]
18#![allow(unused_imports)]
19#![allow(unused_results)]
20//! Generated file from `google/spanner/v1/result_set.proto`
21
22/// Generated files are compatible only with the same version
23/// of protobuf runtime.
24// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_28_0;
25
26#[derive(PartialEq,Clone,Default)]
27pub struct ResultSet {
28    // message fields
29    pub metadata: ::protobuf::SingularPtrField<ResultSetMetadata>,
30    pub rows: ::protobuf::RepeatedField<::protobuf::well_known_types::ListValue>,
31    pub stats: ::protobuf::SingularPtrField<ResultSetStats>,
32    // special fields
33    pub unknown_fields: ::protobuf::UnknownFields,
34    pub cached_size: ::protobuf::CachedSize,
35}
36
37impl<'a> ::std::default::Default for &'a ResultSet {
38    fn default() -> &'a ResultSet {
39        <ResultSet as ::protobuf::Message>::default_instance()
40    }
41}
42
43impl ResultSet {
44    pub fn new() -> ResultSet {
45        ::std::default::Default::default()
46    }
47
48    // .google.spanner.v1.ResultSetMetadata metadata = 1;
49
50
51    pub fn get_metadata(&self) -> &ResultSetMetadata {
52        self.metadata.as_ref().unwrap_or_else(|| <ResultSetMetadata as ::protobuf::Message>::default_instance())
53    }
54    pub fn clear_metadata(&mut self) {
55        self.metadata.clear();
56    }
57
58    pub fn has_metadata(&self) -> bool {
59        self.metadata.is_some()
60    }
61
62    // Param is passed by value, moved
63    pub fn set_metadata(&mut self, v: ResultSetMetadata) {
64        self.metadata = ::protobuf::SingularPtrField::some(v);
65    }
66
67    // Mutable pointer to the field.
68    // If field is not initialized, it is initialized with default value first.
69    pub fn mut_metadata(&mut self) -> &mut ResultSetMetadata {
70        if self.metadata.is_none() {
71            self.metadata.set_default();
72        }
73        self.metadata.as_mut().unwrap()
74    }
75
76    // Take field
77    pub fn take_metadata(&mut self) -> ResultSetMetadata {
78        self.metadata.take().unwrap_or_else(|| ResultSetMetadata::new())
79    }
80
81    // repeated .google.protobuf.ListValue rows = 2;
82
83
84    pub fn get_rows(&self) -> &[::protobuf::well_known_types::ListValue] {
85        &self.rows
86    }
87    pub fn clear_rows(&mut self) {
88        self.rows.clear();
89    }
90
91    // Param is passed by value, moved
92    pub fn set_rows(&mut self, v: ::protobuf::RepeatedField<::protobuf::well_known_types::ListValue>) {
93        self.rows = v;
94    }
95
96    // Mutable pointer to the field.
97    pub fn mut_rows(&mut self) -> &mut ::protobuf::RepeatedField<::protobuf::well_known_types::ListValue> {
98        &mut self.rows
99    }
100
101    // Take field
102    pub fn take_rows(&mut self) -> ::protobuf::RepeatedField<::protobuf::well_known_types::ListValue> {
103        ::std::mem::replace(&mut self.rows, ::protobuf::RepeatedField::new())
104    }
105
106    // .google.spanner.v1.ResultSetStats stats = 3;
107
108
109    pub fn get_stats(&self) -> &ResultSetStats {
110        self.stats.as_ref().unwrap_or_else(|| <ResultSetStats as ::protobuf::Message>::default_instance())
111    }
112    pub fn clear_stats(&mut self) {
113        self.stats.clear();
114    }
115
116    pub fn has_stats(&self) -> bool {
117        self.stats.is_some()
118    }
119
120    // Param is passed by value, moved
121    pub fn set_stats(&mut self, v: ResultSetStats) {
122        self.stats = ::protobuf::SingularPtrField::some(v);
123    }
124
125    // Mutable pointer to the field.
126    // If field is not initialized, it is initialized with default value first.
127    pub fn mut_stats(&mut self) -> &mut ResultSetStats {
128        if self.stats.is_none() {
129            self.stats.set_default();
130        }
131        self.stats.as_mut().unwrap()
132    }
133
134    // Take field
135    pub fn take_stats(&mut self) -> ResultSetStats {
136        self.stats.take().unwrap_or_else(|| ResultSetStats::new())
137    }
138}
139
140impl ::protobuf::Message for ResultSet {
141    fn is_initialized(&self) -> bool {
142        for v in &self.metadata {
143            if !v.is_initialized() {
144                return false;
145            }
146        };
147        for v in &self.rows {
148            if !v.is_initialized() {
149                return false;
150            }
151        };
152        for v in &self.stats {
153            if !v.is_initialized() {
154                return false;
155            }
156        };
157        true
158    }
159
160    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
161        while !is.eof()? {
162            let (field_number, wire_type) = is.read_tag_unpack()?;
163            match field_number {
164                1 => {
165                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.metadata)?;
166                },
167                2 => {
168                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.rows)?;
169                },
170                3 => {
171                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.stats)?;
172                },
173                _ => {
174                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
175                },
176            };
177        }
178        ::std::result::Result::Ok(())
179    }
180
181    // Compute sizes of nested messages
182    #[allow(unused_variables)]
183    fn compute_size(&self) -> u32 {
184        let mut my_size = 0;
185        if let Some(ref v) = self.metadata.as_ref() {
186            let len = v.compute_size();
187            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
188        }
189        for value in &self.rows {
190            let len = value.compute_size();
191            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
192        };
193        if let Some(ref v) = self.stats.as_ref() {
194            let len = v.compute_size();
195            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
196        }
197        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
198        self.cached_size.set(my_size);
199        my_size
200    }
201
202    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
203        if let Some(ref v) = self.metadata.as_ref() {
204            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
205            os.write_raw_varint32(v.get_cached_size())?;
206            v.write_to_with_cached_sizes(os)?;
207        }
208        for v in &self.rows {
209            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
210            os.write_raw_varint32(v.get_cached_size())?;
211            v.write_to_with_cached_sizes(os)?;
212        };
213        if let Some(ref v) = self.stats.as_ref() {
214            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
215            os.write_raw_varint32(v.get_cached_size())?;
216            v.write_to_with_cached_sizes(os)?;
217        }
218        os.write_unknown_fields(self.get_unknown_fields())?;
219        ::std::result::Result::Ok(())
220    }
221
222    fn get_cached_size(&self) -> u32 {
223        self.cached_size.get()
224    }
225
226    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
227        &self.unknown_fields
228    }
229
230    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
231        &mut self.unknown_fields
232    }
233
234    fn as_any(&self) -> &dyn (::std::any::Any) {
235        self as &dyn (::std::any::Any)
236    }
237    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
238        self as &mut dyn (::std::any::Any)
239    }
240    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
241        self
242    }
243
244    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
245        Self::descriptor_static()
246    }
247
248    fn new() -> ResultSet {
249        ResultSet::new()
250    }
251
252    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
253        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
254        descriptor.get(|| {
255            let mut fields = ::std::vec::Vec::new();
256            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<ResultSetMetadata>>(
257                "metadata",
258                |m: &ResultSet| { &m.metadata },
259                |m: &mut ResultSet| { &mut m.metadata },
260            ));
261            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::ListValue>>(
262                "rows",
263                |m: &ResultSet| { &m.rows },
264                |m: &mut ResultSet| { &mut m.rows },
265            ));
266            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<ResultSetStats>>(
267                "stats",
268                |m: &ResultSet| { &m.stats },
269                |m: &mut ResultSet| { &mut m.stats },
270            ));
271            ::protobuf::reflect::MessageDescriptor::new_pb_name::<ResultSet>(
272                "ResultSet",
273                fields,
274                file_descriptor_proto()
275            )
276        })
277    }
278
279    fn default_instance() -> &'static ResultSet {
280        static instance: ::protobuf::rt::LazyV2<ResultSet> = ::protobuf::rt::LazyV2::INIT;
281        instance.get(ResultSet::new)
282    }
283}
284
285impl ::protobuf::Clear for ResultSet {
286    fn clear(&mut self) {
287        self.metadata.clear();
288        self.rows.clear();
289        self.stats.clear();
290        self.unknown_fields.clear();
291    }
292}
293
294impl ::std::fmt::Debug for ResultSet {
295    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
296        ::protobuf::text_format::fmt(self, f)
297    }
298}
299
300impl ::protobuf::reflect::ProtobufValue for ResultSet {
301    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
302        ::protobuf::reflect::ReflectValueRef::Message(self)
303    }
304}
305
306#[derive(PartialEq,Clone,Default)]
307pub struct PartialResultSet {
308    // message fields
309    pub metadata: ::protobuf::SingularPtrField<ResultSetMetadata>,
310    pub values: ::protobuf::RepeatedField<::protobuf::well_known_types::Value>,
311    pub chunked_value: bool,
312    pub resume_token: ::std::vec::Vec<u8>,
313    pub stats: ::protobuf::SingularPtrField<ResultSetStats>,
314    // special fields
315    pub unknown_fields: ::protobuf::UnknownFields,
316    pub cached_size: ::protobuf::CachedSize,
317}
318
319impl<'a> ::std::default::Default for &'a PartialResultSet {
320    fn default() -> &'a PartialResultSet {
321        <PartialResultSet as ::protobuf::Message>::default_instance()
322    }
323}
324
325impl PartialResultSet {
326    pub fn new() -> PartialResultSet {
327        ::std::default::Default::default()
328    }
329
330    // .google.spanner.v1.ResultSetMetadata metadata = 1;
331
332
333    pub fn get_metadata(&self) -> &ResultSetMetadata {
334        self.metadata.as_ref().unwrap_or_else(|| <ResultSetMetadata as ::protobuf::Message>::default_instance())
335    }
336    pub fn clear_metadata(&mut self) {
337        self.metadata.clear();
338    }
339
340    pub fn has_metadata(&self) -> bool {
341        self.metadata.is_some()
342    }
343
344    // Param is passed by value, moved
345    pub fn set_metadata(&mut self, v: ResultSetMetadata) {
346        self.metadata = ::protobuf::SingularPtrField::some(v);
347    }
348
349    // Mutable pointer to the field.
350    // If field is not initialized, it is initialized with default value first.
351    pub fn mut_metadata(&mut self) -> &mut ResultSetMetadata {
352        if self.metadata.is_none() {
353            self.metadata.set_default();
354        }
355        self.metadata.as_mut().unwrap()
356    }
357
358    // Take field
359    pub fn take_metadata(&mut self) -> ResultSetMetadata {
360        self.metadata.take().unwrap_or_else(|| ResultSetMetadata::new())
361    }
362
363    // repeated .google.protobuf.Value values = 2;
364
365
366    pub fn get_values(&self) -> &[::protobuf::well_known_types::Value] {
367        &self.values
368    }
369    pub fn clear_values(&mut self) {
370        self.values.clear();
371    }
372
373    // Param is passed by value, moved
374    pub fn set_values(&mut self, v: ::protobuf::RepeatedField<::protobuf::well_known_types::Value>) {
375        self.values = v;
376    }
377
378    // Mutable pointer to the field.
379    pub fn mut_values(&mut self) -> &mut ::protobuf::RepeatedField<::protobuf::well_known_types::Value> {
380        &mut self.values
381    }
382
383    // Take field
384    pub fn take_values(&mut self) -> ::protobuf::RepeatedField<::protobuf::well_known_types::Value> {
385        ::std::mem::replace(&mut self.values, ::protobuf::RepeatedField::new())
386    }
387
388    // bool chunked_value = 3;
389
390
391    pub fn get_chunked_value(&self) -> bool {
392        self.chunked_value
393    }
394    pub fn clear_chunked_value(&mut self) {
395        self.chunked_value = false;
396    }
397
398    // Param is passed by value, moved
399    pub fn set_chunked_value(&mut self, v: bool) {
400        self.chunked_value = v;
401    }
402
403    // bytes resume_token = 4;
404
405
406    pub fn get_resume_token(&self) -> &[u8] {
407        &self.resume_token
408    }
409    pub fn clear_resume_token(&mut self) {
410        self.resume_token.clear();
411    }
412
413    // Param is passed by value, moved
414    pub fn set_resume_token(&mut self, v: ::std::vec::Vec<u8>) {
415        self.resume_token = v;
416    }
417
418    // Mutable pointer to the field.
419    // If field is not initialized, it is initialized with default value first.
420    pub fn mut_resume_token(&mut self) -> &mut ::std::vec::Vec<u8> {
421        &mut self.resume_token
422    }
423
424    // Take field
425    pub fn take_resume_token(&mut self) -> ::std::vec::Vec<u8> {
426        ::std::mem::replace(&mut self.resume_token, ::std::vec::Vec::new())
427    }
428
429    // .google.spanner.v1.ResultSetStats stats = 5;
430
431
432    pub fn get_stats(&self) -> &ResultSetStats {
433        self.stats.as_ref().unwrap_or_else(|| <ResultSetStats as ::protobuf::Message>::default_instance())
434    }
435    pub fn clear_stats(&mut self) {
436        self.stats.clear();
437    }
438
439    pub fn has_stats(&self) -> bool {
440        self.stats.is_some()
441    }
442
443    // Param is passed by value, moved
444    pub fn set_stats(&mut self, v: ResultSetStats) {
445        self.stats = ::protobuf::SingularPtrField::some(v);
446    }
447
448    // Mutable pointer to the field.
449    // If field is not initialized, it is initialized with default value first.
450    pub fn mut_stats(&mut self) -> &mut ResultSetStats {
451        if self.stats.is_none() {
452            self.stats.set_default();
453        }
454        self.stats.as_mut().unwrap()
455    }
456
457    // Take field
458    pub fn take_stats(&mut self) -> ResultSetStats {
459        self.stats.take().unwrap_or_else(|| ResultSetStats::new())
460    }
461}
462
463impl ::protobuf::Message for PartialResultSet {
464    fn is_initialized(&self) -> bool {
465        for v in &self.metadata {
466            if !v.is_initialized() {
467                return false;
468            }
469        };
470        for v in &self.values {
471            if !v.is_initialized() {
472                return false;
473            }
474        };
475        for v in &self.stats {
476            if !v.is_initialized() {
477                return false;
478            }
479        };
480        true
481    }
482
483    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
484        while !is.eof()? {
485            let (field_number, wire_type) = is.read_tag_unpack()?;
486            match field_number {
487                1 => {
488                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.metadata)?;
489                },
490                2 => {
491                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.values)?;
492                },
493                3 => {
494                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
495                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
496                    }
497                    let tmp = is.read_bool()?;
498                    self.chunked_value = tmp;
499                },
500                4 => {
501                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.resume_token)?;
502                },
503                5 => {
504                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.stats)?;
505                },
506                _ => {
507                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
508                },
509            };
510        }
511        ::std::result::Result::Ok(())
512    }
513
514    // Compute sizes of nested messages
515    #[allow(unused_variables)]
516    fn compute_size(&self) -> u32 {
517        let mut my_size = 0;
518        if let Some(ref v) = self.metadata.as_ref() {
519            let len = v.compute_size();
520            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
521        }
522        for value in &self.values {
523            let len = value.compute_size();
524            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
525        };
526        if self.chunked_value != false {
527            my_size += 2;
528        }
529        if !self.resume_token.is_empty() {
530            my_size += ::protobuf::rt::bytes_size(4, &self.resume_token);
531        }
532        if let Some(ref v) = self.stats.as_ref() {
533            let len = v.compute_size();
534            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
535        }
536        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
537        self.cached_size.set(my_size);
538        my_size
539    }
540
541    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
542        if let Some(ref v) = self.metadata.as_ref() {
543            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
544            os.write_raw_varint32(v.get_cached_size())?;
545            v.write_to_with_cached_sizes(os)?;
546        }
547        for v in &self.values {
548            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
549            os.write_raw_varint32(v.get_cached_size())?;
550            v.write_to_with_cached_sizes(os)?;
551        };
552        if self.chunked_value != false {
553            os.write_bool(3, self.chunked_value)?;
554        }
555        if !self.resume_token.is_empty() {
556            os.write_bytes(4, &self.resume_token)?;
557        }
558        if let Some(ref v) = self.stats.as_ref() {
559            os.write_tag(5, ::protobuf::wire_format::WireTypeLengthDelimited)?;
560            os.write_raw_varint32(v.get_cached_size())?;
561            v.write_to_with_cached_sizes(os)?;
562        }
563        os.write_unknown_fields(self.get_unknown_fields())?;
564        ::std::result::Result::Ok(())
565    }
566
567    fn get_cached_size(&self) -> u32 {
568        self.cached_size.get()
569    }
570
571    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
572        &self.unknown_fields
573    }
574
575    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
576        &mut self.unknown_fields
577    }
578
579    fn as_any(&self) -> &dyn (::std::any::Any) {
580        self as &dyn (::std::any::Any)
581    }
582    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
583        self as &mut dyn (::std::any::Any)
584    }
585    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
586        self
587    }
588
589    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
590        Self::descriptor_static()
591    }
592
593    fn new() -> PartialResultSet {
594        PartialResultSet::new()
595    }
596
597    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
598        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
599        descriptor.get(|| {
600            let mut fields = ::std::vec::Vec::new();
601            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<ResultSetMetadata>>(
602                "metadata",
603                |m: &PartialResultSet| { &m.metadata },
604                |m: &mut PartialResultSet| { &mut m.metadata },
605            ));
606            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Value>>(
607                "values",
608                |m: &PartialResultSet| { &m.values },
609                |m: &mut PartialResultSet| { &mut m.values },
610            ));
611            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
612                "chunked_value",
613                |m: &PartialResultSet| { &m.chunked_value },
614                |m: &mut PartialResultSet| { &mut m.chunked_value },
615            ));
616            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
617                "resume_token",
618                |m: &PartialResultSet| { &m.resume_token },
619                |m: &mut PartialResultSet| { &mut m.resume_token },
620            ));
621            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<ResultSetStats>>(
622                "stats",
623                |m: &PartialResultSet| { &m.stats },
624                |m: &mut PartialResultSet| { &mut m.stats },
625            ));
626            ::protobuf::reflect::MessageDescriptor::new_pb_name::<PartialResultSet>(
627                "PartialResultSet",
628                fields,
629                file_descriptor_proto()
630            )
631        })
632    }
633
634    fn default_instance() -> &'static PartialResultSet {
635        static instance: ::protobuf::rt::LazyV2<PartialResultSet> = ::protobuf::rt::LazyV2::INIT;
636        instance.get(PartialResultSet::new)
637    }
638}
639
640impl ::protobuf::Clear for PartialResultSet {
641    fn clear(&mut self) {
642        self.metadata.clear();
643        self.values.clear();
644        self.chunked_value = false;
645        self.resume_token.clear();
646        self.stats.clear();
647        self.unknown_fields.clear();
648    }
649}
650
651impl ::std::fmt::Debug for PartialResultSet {
652    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
653        ::protobuf::text_format::fmt(self, f)
654    }
655}
656
657impl ::protobuf::reflect::ProtobufValue for PartialResultSet {
658    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
659        ::protobuf::reflect::ReflectValueRef::Message(self)
660    }
661}
662
663#[derive(PartialEq,Clone,Default)]
664pub struct ResultSetMetadata {
665    // message fields
666    pub row_type: ::protobuf::SingularPtrField<super::type_pb::StructType>,
667    pub transaction: ::protobuf::SingularPtrField<super::transaction::Transaction>,
668    pub undeclared_parameters: ::protobuf::SingularPtrField<super::type_pb::StructType>,
669    // special fields
670    pub unknown_fields: ::protobuf::UnknownFields,
671    pub cached_size: ::protobuf::CachedSize,
672}
673
674impl<'a> ::std::default::Default for &'a ResultSetMetadata {
675    fn default() -> &'a ResultSetMetadata {
676        <ResultSetMetadata as ::protobuf::Message>::default_instance()
677    }
678}
679
680impl ResultSetMetadata {
681    pub fn new() -> ResultSetMetadata {
682        ::std::default::Default::default()
683    }
684
685    // .google.spanner.v1.StructType row_type = 1;
686
687
688    pub fn get_row_type(&self) -> &super::type_pb::StructType {
689        self.row_type.as_ref().unwrap_or_else(|| <super::type_pb::StructType as ::protobuf::Message>::default_instance())
690    }
691    pub fn clear_row_type(&mut self) {
692        self.row_type.clear();
693    }
694
695    pub fn has_row_type(&self) -> bool {
696        self.row_type.is_some()
697    }
698
699    // Param is passed by value, moved
700    pub fn set_row_type(&mut self, v: super::type_pb::StructType) {
701        self.row_type = ::protobuf::SingularPtrField::some(v);
702    }
703
704    // Mutable pointer to the field.
705    // If field is not initialized, it is initialized with default value first.
706    pub fn mut_row_type(&mut self) -> &mut super::type_pb::StructType {
707        if self.row_type.is_none() {
708            self.row_type.set_default();
709        }
710        self.row_type.as_mut().unwrap()
711    }
712
713    // Take field
714    pub fn take_row_type(&mut self) -> super::type_pb::StructType {
715        self.row_type.take().unwrap_or_else(|| super::type_pb::StructType::new())
716    }
717
718    // .google.spanner.v1.Transaction transaction = 2;
719
720
721    pub fn get_transaction(&self) -> &super::transaction::Transaction {
722        self.transaction.as_ref().unwrap_or_else(|| <super::transaction::Transaction as ::protobuf::Message>::default_instance())
723    }
724    pub fn clear_transaction(&mut self) {
725        self.transaction.clear();
726    }
727
728    pub fn has_transaction(&self) -> bool {
729        self.transaction.is_some()
730    }
731
732    // Param is passed by value, moved
733    pub fn set_transaction(&mut self, v: super::transaction::Transaction) {
734        self.transaction = ::protobuf::SingularPtrField::some(v);
735    }
736
737    // Mutable pointer to the field.
738    // If field is not initialized, it is initialized with default value first.
739    pub fn mut_transaction(&mut self) -> &mut super::transaction::Transaction {
740        if self.transaction.is_none() {
741            self.transaction.set_default();
742        }
743        self.transaction.as_mut().unwrap()
744    }
745
746    // Take field
747    pub fn take_transaction(&mut self) -> super::transaction::Transaction {
748        self.transaction.take().unwrap_or_else(|| super::transaction::Transaction::new())
749    }
750
751    // .google.spanner.v1.StructType undeclared_parameters = 3;
752
753
754    pub fn get_undeclared_parameters(&self) -> &super::type_pb::StructType {
755        self.undeclared_parameters.as_ref().unwrap_or_else(|| <super::type_pb::StructType as ::protobuf::Message>::default_instance())
756    }
757    pub fn clear_undeclared_parameters(&mut self) {
758        self.undeclared_parameters.clear();
759    }
760
761    pub fn has_undeclared_parameters(&self) -> bool {
762        self.undeclared_parameters.is_some()
763    }
764
765    // Param is passed by value, moved
766    pub fn set_undeclared_parameters(&mut self, v: super::type_pb::StructType) {
767        self.undeclared_parameters = ::protobuf::SingularPtrField::some(v);
768    }
769
770    // Mutable pointer to the field.
771    // If field is not initialized, it is initialized with default value first.
772    pub fn mut_undeclared_parameters(&mut self) -> &mut super::type_pb::StructType {
773        if self.undeclared_parameters.is_none() {
774            self.undeclared_parameters.set_default();
775        }
776        self.undeclared_parameters.as_mut().unwrap()
777    }
778
779    // Take field
780    pub fn take_undeclared_parameters(&mut self) -> super::type_pb::StructType {
781        self.undeclared_parameters.take().unwrap_or_else(|| super::type_pb::StructType::new())
782    }
783}
784
785impl ::protobuf::Message for ResultSetMetadata {
786    fn is_initialized(&self) -> bool {
787        for v in &self.row_type {
788            if !v.is_initialized() {
789                return false;
790            }
791        };
792        for v in &self.transaction {
793            if !v.is_initialized() {
794                return false;
795            }
796        };
797        for v in &self.undeclared_parameters {
798            if !v.is_initialized() {
799                return false;
800            }
801        };
802        true
803    }
804
805    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
806        while !is.eof()? {
807            let (field_number, wire_type) = is.read_tag_unpack()?;
808            match field_number {
809                1 => {
810                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.row_type)?;
811                },
812                2 => {
813                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.transaction)?;
814                },
815                3 => {
816                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.undeclared_parameters)?;
817                },
818                _ => {
819                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
820                },
821            };
822        }
823        ::std::result::Result::Ok(())
824    }
825
826    // Compute sizes of nested messages
827    #[allow(unused_variables)]
828    fn compute_size(&self) -> u32 {
829        let mut my_size = 0;
830        if let Some(ref v) = self.row_type.as_ref() {
831            let len = v.compute_size();
832            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
833        }
834        if let Some(ref v) = self.transaction.as_ref() {
835            let len = v.compute_size();
836            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
837        }
838        if let Some(ref v) = self.undeclared_parameters.as_ref() {
839            let len = v.compute_size();
840            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
841        }
842        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
843        self.cached_size.set(my_size);
844        my_size
845    }
846
847    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
848        if let Some(ref v) = self.row_type.as_ref() {
849            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
850            os.write_raw_varint32(v.get_cached_size())?;
851            v.write_to_with_cached_sizes(os)?;
852        }
853        if let Some(ref v) = self.transaction.as_ref() {
854            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
855            os.write_raw_varint32(v.get_cached_size())?;
856            v.write_to_with_cached_sizes(os)?;
857        }
858        if let Some(ref v) = self.undeclared_parameters.as_ref() {
859            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
860            os.write_raw_varint32(v.get_cached_size())?;
861            v.write_to_with_cached_sizes(os)?;
862        }
863        os.write_unknown_fields(self.get_unknown_fields())?;
864        ::std::result::Result::Ok(())
865    }
866
867    fn get_cached_size(&self) -> u32 {
868        self.cached_size.get()
869    }
870
871    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
872        &self.unknown_fields
873    }
874
875    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
876        &mut self.unknown_fields
877    }
878
879    fn as_any(&self) -> &dyn (::std::any::Any) {
880        self as &dyn (::std::any::Any)
881    }
882    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
883        self as &mut dyn (::std::any::Any)
884    }
885    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
886        self
887    }
888
889    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
890        Self::descriptor_static()
891    }
892
893    fn new() -> ResultSetMetadata {
894        ResultSetMetadata::new()
895    }
896
897    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
898        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
899        descriptor.get(|| {
900            let mut fields = ::std::vec::Vec::new();
901            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::type_pb::StructType>>(
902                "row_type",
903                |m: &ResultSetMetadata| { &m.row_type },
904                |m: &mut ResultSetMetadata| { &mut m.row_type },
905            ));
906            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::transaction::Transaction>>(
907                "transaction",
908                |m: &ResultSetMetadata| { &m.transaction },
909                |m: &mut ResultSetMetadata| { &mut m.transaction },
910            ));
911            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::type_pb::StructType>>(
912                "undeclared_parameters",
913                |m: &ResultSetMetadata| { &m.undeclared_parameters },
914                |m: &mut ResultSetMetadata| { &mut m.undeclared_parameters },
915            ));
916            ::protobuf::reflect::MessageDescriptor::new_pb_name::<ResultSetMetadata>(
917                "ResultSetMetadata",
918                fields,
919                file_descriptor_proto()
920            )
921        })
922    }
923
924    fn default_instance() -> &'static ResultSetMetadata {
925        static instance: ::protobuf::rt::LazyV2<ResultSetMetadata> = ::protobuf::rt::LazyV2::INIT;
926        instance.get(ResultSetMetadata::new)
927    }
928}
929
930impl ::protobuf::Clear for ResultSetMetadata {
931    fn clear(&mut self) {
932        self.row_type.clear();
933        self.transaction.clear();
934        self.undeclared_parameters.clear();
935        self.unknown_fields.clear();
936    }
937}
938
939impl ::std::fmt::Debug for ResultSetMetadata {
940    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
941        ::protobuf::text_format::fmt(self, f)
942    }
943}
944
945impl ::protobuf::reflect::ProtobufValue for ResultSetMetadata {
946    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
947        ::protobuf::reflect::ReflectValueRef::Message(self)
948    }
949}
950
951#[derive(PartialEq,Clone,Default)]
952pub struct ResultSetStats {
953    // message fields
954    pub query_plan: ::protobuf::SingularPtrField<super::query_plan::QueryPlan>,
955    pub query_stats: ::protobuf::SingularPtrField<::protobuf::well_known_types::Struct>,
956    // message oneof groups
957    pub row_count: ::std::option::Option<ResultSetStats_oneof_row_count>,
958    // special fields
959    pub unknown_fields: ::protobuf::UnknownFields,
960    pub cached_size: ::protobuf::CachedSize,
961}
962
963impl<'a> ::std::default::Default for &'a ResultSetStats {
964    fn default() -> &'a ResultSetStats {
965        <ResultSetStats as ::protobuf::Message>::default_instance()
966    }
967}
968
969#[derive(Clone,PartialEq,Debug)]
970pub enum ResultSetStats_oneof_row_count {
971    row_count_exact(i64),
972    row_count_lower_bound(i64),
973}
974
975impl ResultSetStats {
976    pub fn new() -> ResultSetStats {
977        ::std::default::Default::default()
978    }
979
980    // .google.spanner.v1.QueryPlan query_plan = 1;
981
982
983    pub fn get_query_plan(&self) -> &super::query_plan::QueryPlan {
984        self.query_plan.as_ref().unwrap_or_else(|| <super::query_plan::QueryPlan as ::protobuf::Message>::default_instance())
985    }
986    pub fn clear_query_plan(&mut self) {
987        self.query_plan.clear();
988    }
989
990    pub fn has_query_plan(&self) -> bool {
991        self.query_plan.is_some()
992    }
993
994    // Param is passed by value, moved
995    pub fn set_query_plan(&mut self, v: super::query_plan::QueryPlan) {
996        self.query_plan = ::protobuf::SingularPtrField::some(v);
997    }
998
999    // Mutable pointer to the field.
1000    // If field is not initialized, it is initialized with default value first.
1001    pub fn mut_query_plan(&mut self) -> &mut super::query_plan::QueryPlan {
1002        if self.query_plan.is_none() {
1003            self.query_plan.set_default();
1004        }
1005        self.query_plan.as_mut().unwrap()
1006    }
1007
1008    // Take field
1009    pub fn take_query_plan(&mut self) -> super::query_plan::QueryPlan {
1010        self.query_plan.take().unwrap_or_else(|| super::query_plan::QueryPlan::new())
1011    }
1012
1013    // .google.protobuf.Struct query_stats = 2;
1014
1015
1016    pub fn get_query_stats(&self) -> &::protobuf::well_known_types::Struct {
1017        self.query_stats.as_ref().unwrap_or_else(|| <::protobuf::well_known_types::Struct as ::protobuf::Message>::default_instance())
1018    }
1019    pub fn clear_query_stats(&mut self) {
1020        self.query_stats.clear();
1021    }
1022
1023    pub fn has_query_stats(&self) -> bool {
1024        self.query_stats.is_some()
1025    }
1026
1027    // Param is passed by value, moved
1028    pub fn set_query_stats(&mut self, v: ::protobuf::well_known_types::Struct) {
1029        self.query_stats = ::protobuf::SingularPtrField::some(v);
1030    }
1031
1032    // Mutable pointer to the field.
1033    // If field is not initialized, it is initialized with default value first.
1034    pub fn mut_query_stats(&mut self) -> &mut ::protobuf::well_known_types::Struct {
1035        if self.query_stats.is_none() {
1036            self.query_stats.set_default();
1037        }
1038        self.query_stats.as_mut().unwrap()
1039    }
1040
1041    // Take field
1042    pub fn take_query_stats(&mut self) -> ::protobuf::well_known_types::Struct {
1043        self.query_stats.take().unwrap_or_else(|| ::protobuf::well_known_types::Struct::new())
1044    }
1045
1046    // int64 row_count_exact = 3;
1047
1048
1049    pub fn get_row_count_exact(&self) -> i64 {
1050        match self.row_count {
1051            ::std::option::Option::Some(ResultSetStats_oneof_row_count::row_count_exact(v)) => v,
1052            _ => 0,
1053        }
1054    }
1055    pub fn clear_row_count_exact(&mut self) {
1056        self.row_count = ::std::option::Option::None;
1057    }
1058
1059    pub fn has_row_count_exact(&self) -> bool {
1060        match self.row_count {
1061            ::std::option::Option::Some(ResultSetStats_oneof_row_count::row_count_exact(..)) => true,
1062            _ => false,
1063        }
1064    }
1065
1066    // Param is passed by value, moved
1067    pub fn set_row_count_exact(&mut self, v: i64) {
1068        self.row_count = ::std::option::Option::Some(ResultSetStats_oneof_row_count::row_count_exact(v))
1069    }
1070
1071    // int64 row_count_lower_bound = 4;
1072
1073
1074    pub fn get_row_count_lower_bound(&self) -> i64 {
1075        match self.row_count {
1076            ::std::option::Option::Some(ResultSetStats_oneof_row_count::row_count_lower_bound(v)) => v,
1077            _ => 0,
1078        }
1079    }
1080    pub fn clear_row_count_lower_bound(&mut self) {
1081        self.row_count = ::std::option::Option::None;
1082    }
1083
1084    pub fn has_row_count_lower_bound(&self) -> bool {
1085        match self.row_count {
1086            ::std::option::Option::Some(ResultSetStats_oneof_row_count::row_count_lower_bound(..)) => true,
1087            _ => false,
1088        }
1089    }
1090
1091    // Param is passed by value, moved
1092    pub fn set_row_count_lower_bound(&mut self, v: i64) {
1093        self.row_count = ::std::option::Option::Some(ResultSetStats_oneof_row_count::row_count_lower_bound(v))
1094    }
1095}
1096
1097impl ::protobuf::Message for ResultSetStats {
1098    fn is_initialized(&self) -> bool {
1099        for v in &self.query_plan {
1100            if !v.is_initialized() {
1101                return false;
1102            }
1103        };
1104        for v in &self.query_stats {
1105            if !v.is_initialized() {
1106                return false;
1107            }
1108        };
1109        true
1110    }
1111
1112    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1113        while !is.eof()? {
1114            let (field_number, wire_type) = is.read_tag_unpack()?;
1115            match field_number {
1116                1 => {
1117                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.query_plan)?;
1118                },
1119                2 => {
1120                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.query_stats)?;
1121                },
1122                3 => {
1123                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1124                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1125                    }
1126                    self.row_count = ::std::option::Option::Some(ResultSetStats_oneof_row_count::row_count_exact(is.read_int64()?));
1127                },
1128                4 => {
1129                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1130                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1131                    }
1132                    self.row_count = ::std::option::Option::Some(ResultSetStats_oneof_row_count::row_count_lower_bound(is.read_int64()?));
1133                },
1134                _ => {
1135                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1136                },
1137            };
1138        }
1139        ::std::result::Result::Ok(())
1140    }
1141
1142    // Compute sizes of nested messages
1143    #[allow(unused_variables)]
1144    fn compute_size(&self) -> u32 {
1145        let mut my_size = 0;
1146        if let Some(ref v) = self.query_plan.as_ref() {
1147            let len = v.compute_size();
1148            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1149        }
1150        if let Some(ref v) = self.query_stats.as_ref() {
1151            let len = v.compute_size();
1152            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1153        }
1154        if let ::std::option::Option::Some(ref v) = self.row_count {
1155            match v {
1156                &ResultSetStats_oneof_row_count::row_count_exact(v) => {
1157                    my_size += ::protobuf::rt::value_size(3, v, ::protobuf::wire_format::WireTypeVarint);
1158                },
1159                &ResultSetStats_oneof_row_count::row_count_lower_bound(v) => {
1160                    my_size += ::protobuf::rt::value_size(4, v, ::protobuf::wire_format::WireTypeVarint);
1161                },
1162            };
1163        }
1164        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1165        self.cached_size.set(my_size);
1166        my_size
1167    }
1168
1169    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1170        if let Some(ref v) = self.query_plan.as_ref() {
1171            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1172            os.write_raw_varint32(v.get_cached_size())?;
1173            v.write_to_with_cached_sizes(os)?;
1174        }
1175        if let Some(ref v) = self.query_stats.as_ref() {
1176            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1177            os.write_raw_varint32(v.get_cached_size())?;
1178            v.write_to_with_cached_sizes(os)?;
1179        }
1180        if let ::std::option::Option::Some(ref v) = self.row_count {
1181            match v {
1182                &ResultSetStats_oneof_row_count::row_count_exact(v) => {
1183                    os.write_int64(3, v)?;
1184                },
1185                &ResultSetStats_oneof_row_count::row_count_lower_bound(v) => {
1186                    os.write_int64(4, v)?;
1187                },
1188            };
1189        }
1190        os.write_unknown_fields(self.get_unknown_fields())?;
1191        ::std::result::Result::Ok(())
1192    }
1193
1194    fn get_cached_size(&self) -> u32 {
1195        self.cached_size.get()
1196    }
1197
1198    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1199        &self.unknown_fields
1200    }
1201
1202    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1203        &mut self.unknown_fields
1204    }
1205
1206    fn as_any(&self) -> &dyn (::std::any::Any) {
1207        self as &dyn (::std::any::Any)
1208    }
1209    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1210        self as &mut dyn (::std::any::Any)
1211    }
1212    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1213        self
1214    }
1215
1216    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1217        Self::descriptor_static()
1218    }
1219
1220    fn new() -> ResultSetStats {
1221        ResultSetStats::new()
1222    }
1223
1224    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1225        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1226        descriptor.get(|| {
1227            let mut fields = ::std::vec::Vec::new();
1228            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::query_plan::QueryPlan>>(
1229                "query_plan",
1230                |m: &ResultSetStats| { &m.query_plan },
1231                |m: &mut ResultSetStats| { &mut m.query_plan },
1232            ));
1233            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Struct>>(
1234                "query_stats",
1235                |m: &ResultSetStats| { &m.query_stats },
1236                |m: &mut ResultSetStats| { &mut m.query_stats },
1237            ));
1238            fields.push(::protobuf::reflect::accessor::make_singular_i64_accessor::<_>(
1239                "row_count_exact",
1240                ResultSetStats::has_row_count_exact,
1241                ResultSetStats::get_row_count_exact,
1242            ));
1243            fields.push(::protobuf::reflect::accessor::make_singular_i64_accessor::<_>(
1244                "row_count_lower_bound",
1245                ResultSetStats::has_row_count_lower_bound,
1246                ResultSetStats::get_row_count_lower_bound,
1247            ));
1248            ::protobuf::reflect::MessageDescriptor::new_pb_name::<ResultSetStats>(
1249                "ResultSetStats",
1250                fields,
1251                file_descriptor_proto()
1252            )
1253        })
1254    }
1255
1256    fn default_instance() -> &'static ResultSetStats {
1257        static instance: ::protobuf::rt::LazyV2<ResultSetStats> = ::protobuf::rt::LazyV2::INIT;
1258        instance.get(ResultSetStats::new)
1259    }
1260}
1261
1262impl ::protobuf::Clear for ResultSetStats {
1263    fn clear(&mut self) {
1264        self.query_plan.clear();
1265        self.query_stats.clear();
1266        self.row_count = ::std::option::Option::None;
1267        self.row_count = ::std::option::Option::None;
1268        self.unknown_fields.clear();
1269    }
1270}
1271
1272impl ::std::fmt::Debug for ResultSetStats {
1273    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1274        ::protobuf::text_format::fmt(self, f)
1275    }
1276}
1277
1278impl ::protobuf::reflect::ProtobufValue for ResultSetStats {
1279    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1280        ::protobuf::reflect::ReflectValueRef::Message(self)
1281    }
1282}
1283
1284static file_descriptor_proto_data: &'static [u8] = b"\
1285    \n\"google/spanner/v1/result_set.proto\x12\x11google.spanner.v1\x1a\x1cg\
1286    oogle/protobuf/struct.proto\x1a\"google/spanner/v1/query_plan.proto\x1a#\
1287    google/spanner/v1/transaction.proto\x1a\x1cgoogle/spanner/v1/type.proto\
1288    \"\xb6\x01\n\tResultSet\x12@\n\x08metadata\x18\x01\x20\x01(\x0b2$.google\
1289    .spanner.v1.ResultSetMetadataR\x08metadata\x12.\n\x04rows\x18\x02\x20\
1290    \x03(\x0b2\x1a.google.protobuf.ListValueR\x04rows\x127\n\x05stats\x18\
1291    \x03\x20\x01(\x0b2!.google.spanner.v1.ResultSetStatsR\x05stats\"\x85\x02\
1292    \n\x10PartialResultSet\x12@\n\x08metadata\x18\x01\x20\x01(\x0b2$.google.\
1293    spanner.v1.ResultSetMetadataR\x08metadata\x12.\n\x06values\x18\x02\x20\
1294    \x03(\x0b2\x16.google.protobuf.ValueR\x06values\x12#\n\rchunked_value\
1295    \x18\x03\x20\x01(\x08R\x0cchunkedValue\x12!\n\x0cresume_token\x18\x04\
1296    \x20\x01(\x0cR\x0bresumeToken\x127\n\x05stats\x18\x05\x20\x01(\x0b2!.goo\
1297    gle.spanner.v1.ResultSetStatsR\x05stats\"\xe3\x01\n\x11ResultSetMetadata\
1298    \x128\n\x08row_type\x18\x01\x20\x01(\x0b2\x1d.google.spanner.v1.StructTy\
1299    peR\x07rowType\x12@\n\x0btransaction\x18\x02\x20\x01(\x0b2\x1e.google.sp\
1300    anner.v1.TransactionR\x0btransaction\x12R\n\x15undeclared_parameters\x18\
1301    \x03\x20\x01(\x0b2\x1d.google.spanner.v1.StructTypeR\x14undeclaredParame\
1302    ters\"\xf3\x01\n\x0eResultSetStats\x12;\n\nquery_plan\x18\x01\x20\x01(\
1303    \x0b2\x1c.google.spanner.v1.QueryPlanR\tqueryPlan\x128\n\x0bquery_stats\
1304    \x18\x02\x20\x01(\x0b2\x17.google.protobuf.StructR\nqueryStats\x12(\n\
1305    \x0frow_count_exact\x18\x03\x20\x01(\x03H\0R\rrowCountExact\x123\n\x15ro\
1306    w_count_lower_bound\x18\x04\x20\x01(\x03H\0R\x12rowCountLowerBoundB\x0b\
1307    \n\trow_countB\xb4\x01\n\x15com.google.spanner.v1B\x0eResultSetProtoP\
1308    \x01Z5cloud.google.com/go/spanner/apiv1/spannerpb;spannerpb\xf8\x01\x01\
1309    \xaa\x02\x17Google.Cloud.Spanner.V1\xca\x02\x17Google\\Cloud\\Spanner\\V\
1310    1\xea\x02\x1aGoogle::Cloud::Spanner::V1J\xd3C\n\x07\x12\x05\x0e\0\xd7\
1311    \x01\x01\n\xbc\x04\n\x01\x0c\x12\x03\x0e\0\x122\xb1\x04\x20Copyright\x20\
1312    2022\x20Google\x20LLC\n\n\x20Licensed\x20under\x20the\x20Apache\x20Licen\
1313    se,\x20Version\x202.0\x20(the\x20\"License\");\n\x20you\x20may\x20not\
1314    \x20use\x20this\x20file\x20except\x20in\x20compliance\x20with\x20the\x20\
1315    License.\n\x20You\x20may\x20obtain\x20a\x20copy\x20of\x20the\x20License\
1316    \x20at\n\n\x20\x20\x20\x20\x20http://www.apache.org/licenses/LICENSE-2.0\
1317    \n\n\x20Unless\x20required\x20by\x20applicable\x20law\x20or\x20agreed\
1318    \x20to\x20in\x20writing,\x20software\n\x20distributed\x20under\x20the\
1319    \x20License\x20is\x20distributed\x20on\x20an\x20\"AS\x20IS\"\x20BASIS,\n\
1320    \x20WITHOUT\x20WARRANTIES\x20OR\x20CONDITIONS\x20OF\x20ANY\x20KIND,\x20e\
1321    ither\x20express\x20or\x20implied.\n\x20See\x20the\x20License\x20for\x20\
1322    the\x20specific\x20language\x20governing\x20permissions\x20and\n\x20limi\
1323    tations\x20under\x20the\x20License.\n\n\x08\n\x01\x02\x12\x03\x10\0\x1a\
1324    \n\t\n\x02\x03\0\x12\x03\x12\0&\n\t\n\x02\x03\x01\x12\x03\x13\0,\n\t\n\
1325    \x02\x03\x02\x12\x03\x14\0-\n\t\n\x02\x03\x03\x12\x03\x15\0&\n\x08\n\x01\
1326    \x08\x12\x03\x17\0\x1f\n\t\n\x02\x08\x1f\x12\x03\x17\0\x1f\n\x08\n\x01\
1327    \x08\x12\x03\x18\04\n\t\n\x02\x08%\x12\x03\x18\04\n\x08\n\x01\x08\x12\
1328    \x03\x19\0L\n\t\n\x02\x08\x0b\x12\x03\x19\0L\n\x08\n\x01\x08\x12\x03\x1a\
1329    \0\"\n\t\n\x02\x08\n\x12\x03\x1a\0\"\n\x08\n\x01\x08\x12\x03\x1b\0/\n\t\
1330    \n\x02\x08\x08\x12\x03\x1b\0/\n\x08\n\x01\x08\x12\x03\x1c\0.\n\t\n\x02\
1331    \x08\x01\x12\x03\x1c\0.\n\x08\n\x01\x08\x12\x03\x1d\04\n\t\n\x02\x08)\
1332    \x12\x03\x1d\04\n\x08\n\x01\x08\x12\x03\x1e\03\n\t\n\x02\x08-\x12\x03\
1333    \x1e\03\ny\n\x02\x04\0\x12\x04\"\07\x01\x1am\x20Results\x20from\x20[Read\
1334    ][google.spanner.v1.Spanner.Read]\x20or\n\x20[ExecuteSql][google.spanner\
1335    .v1.Spanner.ExecuteSql].\n\n\n\n\x03\x04\0\x01\x12\x03\"\x08\x11\nK\n\
1336    \x04\x04\0\x02\0\x12\x03$\x02!\x1a>\x20Metadata\x20about\x20the\x20resul\
1337    t\x20set,\x20such\x20as\x20row\x20type\x20information.\n\n\x0c\n\x05\x04\
1338    \0\x02\0\x06\x12\x03$\x02\x13\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03$\x14\
1339    \x1c\n\x0c\n\x05\x04\0\x02\0\x03\x12\x03$\x1f\x20\n\xde\x02\n\x04\x04\0\
1340    \x02\x01\x12\x03,\x02.\x1a\xd0\x02\x20Each\x20element\x20in\x20`rows`\
1341    \x20is\x20a\x20row\x20whose\x20format\x20is\x20defined\x20by\n\x20[metad\
1342    ata.row_type][google.spanner.v1.ResultSetMetadata.row_type].\x20The\x20i\
1343    th\x20element\n\x20in\x20each\x20row\x20matches\x20the\x20ith\x20field\
1344    \x20in\n\x20[metadata.row_type][google.spanner.v1.ResultSetMetadata.row_\
1345    type].\x20Elements\x20are\n\x20encoded\x20based\x20on\x20type\x20as\x20d\
1346    escribed\n\x20[here][google.spanner.v1.TypeCode].\n\n\x0c\n\x05\x04\0\
1347    \x02\x01\x04\x12\x03,\x02\n\n\x0c\n\x05\x04\0\x02\x01\x06\x12\x03,\x0b$\
1348    \n\x0c\n\x05\x04\0\x02\x01\x01\x12\x03,%)\n\x0c\n\x05\x04\0\x02\x01\x03\
1349    \x12\x03,,-\n\xf5\x04\n\x04\x04\0\x02\x02\x12\x036\x02\x1b\x1a\xe7\x04\
1350    \x20Query\x20plan\x20and\x20execution\x20statistics\x20for\x20the\x20SQL\
1351    \x20statement\x20that\n\x20produced\x20this\x20result\x20set.\x20These\
1352    \x20can\x20be\x20requested\x20by\x20setting\n\x20[ExecuteSqlRequest.quer\
1353    y_mode][google.spanner.v1.ExecuteSqlRequest.query_mode].\n\x20DML\x20sta\
1354    tements\x20always\x20produce\x20stats\x20containing\x20the\x20number\x20\
1355    of\x20rows\n\x20modified,\x20unless\x20executed\x20using\x20the\n\x20[Ex\
1356    ecuteSqlRequest.QueryMode.PLAN][google.spanner.v1.ExecuteSqlRequest.Quer\
1357    yMode.PLAN]\x20[ExecuteSqlRequest.query_mode][google.spanner.v1.ExecuteS\
1358    qlRequest.query_mode].\n\x20Other\x20fields\x20may\x20or\x20may\x20not\
1359    \x20be\x20populated,\x20based\x20on\x20the\n\x20[ExecuteSqlRequest.query\
1360    _mode][google.spanner.v1.ExecuteSqlRequest.query_mode].\n\n\x0c\n\x05\
1361    \x04\0\x02\x02\x06\x12\x036\x02\x10\n\x0c\n\x05\x04\0\x02\x02\x01\x12\
1362    \x036\x11\x16\n\x0c\n\x05\x04\0\x02\x02\x03\x12\x036\x19\x1a\n\xcc\x01\n\
1363    \x02\x04\x01\x12\x05<\0\x9f\x01\x01\x1a\xbe\x01\x20Partial\x20results\
1364    \x20from\x20a\x20streaming\x20read\x20or\x20SQL\x20query.\x20Streaming\
1365    \x20reads\x20and\n\x20SQL\x20queries\x20better\x20tolerate\x20large\x20r\
1366    esult\x20sets,\x20large\x20rows,\x20and\x20large\n\x20values,\x20but\x20\
1367    are\x20a\x20little\x20trickier\x20to\x20consume.\n\n\n\n\x03\x04\x01\x01\
1368    \x12\x03<\x08\x18\np\n\x04\x04\x01\x02\0\x12\x03?\x02!\x1ac\x20Metadata\
1369    \x20about\x20the\x20result\x20set,\x20such\x20as\x20row\x20type\x20infor\
1370    mation.\n\x20Only\x20present\x20in\x20the\x20first\x20response.\n\n\x0c\
1371    \n\x05\x04\x01\x02\0\x06\x12\x03?\x02\x13\n\x0c\n\x05\x04\x01\x02\0\x01\
1372    \x12\x03?\x14\x1c\n\x0c\n\x05\x04\x01\x02\0\x03\x12\x03?\x1f\x20\n\xc0\
1373    \x15\n\x04\x04\x01\x02\x01\x12\x04\x8a\x01\x02,\x1a\xb1\x15\x20A\x20stre\
1374    amed\x20result\x20set\x20consists\x20of\x20a\x20stream\x20of\x20values,\
1375    \x20which\x20might\n\x20be\x20split\x20into\x20many\x20`PartialResultSet\
1376    `\x20messages\x20to\x20accommodate\n\x20large\x20rows\x20and/or\x20large\
1377    \x20values.\x20Every\x20N\x20complete\x20values\x20defines\x20a\n\x20row\
1378    ,\x20where\x20N\x20is\x20equal\x20to\x20the\x20number\x20of\x20entries\
1379    \x20in\n\x20[metadata.row_type.fields][google.spanner.v1.StructType.fiel\
1380    ds].\n\n\x20Most\x20values\x20are\x20encoded\x20based\x20on\x20type\x20a\
1381    s\x20described\n\x20[here][google.spanner.v1.TypeCode].\n\n\x20It\x20is\
1382    \x20possible\x20that\x20the\x20last\x20value\x20in\x20values\x20is\x20\"\
1383    chunked\",\n\x20meaning\x20that\x20the\x20rest\x20of\x20the\x20value\x20\
1384    is\x20sent\x20in\x20subsequent\n\x20`PartialResultSet`(s).\x20This\x20is\
1385    \x20denoted\x20by\x20the\x20[chunked_value][google.spanner.v1.PartialRes\
1386    ultSet.chunked_value]\n\x20field.\x20Two\x20or\x20more\x20chunked\x20val\
1387    ues\x20can\x20be\x20merged\x20to\x20form\x20a\n\x20complete\x20value\x20\
1388    as\x20follows:\n\n\x20\x20\x20*\x20`bool/number/null`:\x20cannot\x20be\
1389    \x20chunked\n\x20\x20\x20*\x20`string`:\x20concatenate\x20the\x20strings\
1390    \n\x20\x20\x20*\x20`list`:\x20concatenate\x20the\x20lists.\x20If\x20the\
1391    \x20last\x20element\x20in\x20a\x20list\x20is\x20a\n\x20\x20\x20\x20\x20`\
1392    string`,\x20`list`,\x20or\x20`object`,\x20merge\x20it\x20with\x20the\x20\
1393    first\x20element\x20in\n\x20\x20\x20\x20\x20the\x20next\x20list\x20by\
1394    \x20applying\x20these\x20rules\x20recursively.\n\x20\x20\x20*\x20`object\
1395    `:\x20concatenate\x20the\x20(field\x20name,\x20field\x20value)\x20pairs.\
1396    \x20If\x20a\n\x20\x20\x20\x20\x20field\x20name\x20is\x20duplicated,\x20t\
1397    hen\x20apply\x20these\x20rules\x20recursively\n\x20\x20\x20\x20\x20to\
1398    \x20merge\x20the\x20field\x20values.\n\n\x20Some\x20examples\x20of\x20me\
1399    rging:\n\n\x20\x20\x20\x20\x20#\x20Strings\x20are\x20concatenated.\n\x20\
1400    \x20\x20\x20\x20\"foo\",\x20\"bar\"\x20=>\x20\"foobar\"\n\n\x20\x20\x20\
1401    \x20\x20#\x20Lists\x20of\x20non-strings\x20are\x20concatenated.\n\x20\
1402    \x20\x20\x20\x20[2,\x203],\x20[4]\x20=>\x20[2,\x203,\x204]\n\n\x20\x20\
1403    \x20\x20\x20#\x20Lists\x20are\x20concatenated,\x20but\x20the\x20last\x20\
1404    and\x20first\x20elements\x20are\x20merged\n\x20\x20\x20\x20\x20#\x20beca\
1405    use\x20they\x20are\x20strings.\n\x20\x20\x20\x20\x20[\"a\",\x20\"b\"],\
1406    \x20[\"c\",\x20\"d\"]\x20=>\x20[\"a\",\x20\"bc\",\x20\"d\"]\n\n\x20\x20\
1407    \x20\x20\x20#\x20Lists\x20are\x20concatenated,\x20but\x20the\x20last\x20\
1408    and\x20first\x20elements\x20are\x20merged\n\x20\x20\x20\x20\x20#\x20beca\
1409    use\x20they\x20are\x20lists.\x20Recursively,\x20the\x20last\x20and\x20fi\
1410    rst\x20elements\n\x20\x20\x20\x20\x20#\x20of\x20the\x20inner\x20lists\
1411    \x20are\x20merged\x20because\x20they\x20are\x20strings.\n\x20\x20\x20\
1412    \x20\x20[\"a\",\x20[\"b\",\x20\"c\"]],\x20[[\"d\"],\x20\"e\"]\x20=>\x20[\
1413    \"a\",\x20[\"b\",\x20\"cd\"],\x20\"e\"]\n\n\x20\x20\x20\x20\x20#\x20Non-\
1414    overlapping\x20object\x20fields\x20are\x20combined.\n\x20\x20\x20\x20\
1415    \x20{\"a\":\x20\"1\"},\x20{\"b\":\x20\"2\"}\x20=>\x20{\"a\":\x20\"1\",\
1416    \x20\"b\":\x202\"}\n\n\x20\x20\x20\x20\x20#\x20Overlapping\x20object\x20\
1417    fields\x20are\x20merged.\n\x20\x20\x20\x20\x20{\"a\":\x20\"1\"},\x20{\"a\
1418    \":\x20\"2\"}\x20=>\x20{\"a\":\x20\"12\"}\n\n\x20\x20\x20\x20\x20#\x20Ex\
1419    amples\x20of\x20merging\x20objects\x20containing\x20lists\x20of\x20strin\
1420    gs.\n\x20\x20\x20\x20\x20{\"a\":\x20[\"1\"]},\x20{\"a\":\x20[\"2\"]}\x20\
1421    =>\x20{\"a\":\x20[\"12\"]}\n\n\x20For\x20a\x20more\x20complete\x20exampl\
1422    e,\x20suppose\x20a\x20streaming\x20SQL\x20query\x20is\n\x20yielding\x20a\
1423    \x20result\x20set\x20whose\x20rows\x20contain\x20a\x20single\x20string\n\
1424    \x20field.\x20The\x20following\x20`PartialResultSet`s\x20might\x20be\x20\
1425    yielded:\n\n\x20\x20\x20\x20\x20{\n\x20\x20\x20\x20\x20\x20\x20\"metadat\
1426    a\":\x20{\x20...\x20}\n\x20\x20\x20\x20\x20\x20\x20\"values\":\x20[\"Hel\
1427    lo\",\x20\"W\"]\n\x20\x20\x20\x20\x20\x20\x20\"chunked_value\":\x20true\
1428    \n\x20\x20\x20\x20\x20\x20\x20\"resume_token\":\x20\"Af65...\"\n\x20\x20\
1429    \x20\x20\x20}\n\x20\x20\x20\x20\x20{\n\x20\x20\x20\x20\x20\x20\x20\"valu\
1430    es\":\x20[\"orl\"]\n\x20\x20\x20\x20\x20\x20\x20\"chunked_value\":\x20tr\
1431    ue\n\x20\x20\x20\x20\x20\x20\x20\"resume_token\":\x20\"Bqp2...\"\n\x20\
1432    \x20\x20\x20\x20}\n\x20\x20\x20\x20\x20{\n\x20\x20\x20\x20\x20\x20\x20\"\
1433    values\":\x20[\"d\"]\n\x20\x20\x20\x20\x20\x20\x20\"resume_token\":\x20\
1434    \"Zx1B...\"\n\x20\x20\x20\x20\x20}\n\n\x20This\x20sequence\x20of\x20`Par\
1435    tialResultSet`s\x20encodes\x20two\x20rows,\x20one\n\x20containing\x20the\
1436    \x20field\x20value\x20`\"Hello\"`,\x20and\x20a\x20second\x20containing\
1437    \x20the\n\x20field\x20value\x20`\"World\"\x20=\x20\"W\"\x20+\x20\"orl\"\
1438    \x20+\x20\"d\"`.\n\n\r\n\x05\x04\x01\x02\x01\x04\x12\x04\x8a\x01\x02\n\n\
1439    \r\n\x05\x04\x01\x02\x01\x06\x12\x04\x8a\x01\x0b\x20\n\r\n\x05\x04\x01\
1440    \x02\x01\x01\x12\x04\x8a\x01!'\n\r\n\x05\x04\x01\x02\x01\x03\x12\x04\x8a\
1441    \x01*+\n\xdf\x01\n\x04\x04\x01\x02\x02\x12\x04\x8f\x01\x02\x19\x1a\xd0\
1442    \x01\x20If\x20true,\x20then\x20the\x20final\x20value\x20in\x20[values][g\
1443    oogle.spanner.v1.PartialResultSet.values]\x20is\x20chunked,\x20and\x20mu\
1444    st\n\x20be\x20combined\x20with\x20more\x20values\x20from\x20subsequent\
1445    \x20`PartialResultSet`s\n\x20to\x20obtain\x20a\x20complete\x20field\x20v\
1446    alue.\n\n\r\n\x05\x04\x01\x02\x02\x05\x12\x04\x8f\x01\x02\x06\n\r\n\x05\
1447    \x04\x01\x02\x02\x01\x12\x04\x8f\x01\x07\x14\n\r\n\x05\x04\x01\x02\x02\
1448    \x03\x12\x04\x8f\x01\x17\x18\n\xbb\x02\n\x04\x04\x01\x02\x03\x12\x04\x96\
1449    \x01\x02\x19\x1a\xac\x02\x20Streaming\x20calls\x20might\x20be\x20interru\
1450    pted\x20for\x20a\x20variety\x20of\x20reasons,\x20such\n\x20as\x20TCP\x20\
1451    connection\x20loss.\x20If\x20this\x20occurs,\x20the\x20stream\x20of\x20r\
1452    esults\x20can\n\x20be\x20resumed\x20by\x20re-sending\x20the\x20original\
1453    \x20request\x20and\x20including\n\x20`resume_token`.\x20Note\x20that\x20\
1454    executing\x20any\x20other\x20transaction\x20in\x20the\n\x20same\x20sessi\
1455    on\x20invalidates\x20the\x20token.\n\n\r\n\x05\x04\x01\x02\x03\x05\x12\
1456    \x04\x96\x01\x02\x07\n\r\n\x05\x04\x01\x02\x03\x01\x12\x04\x96\x01\x08\
1457    \x14\n\r\n\x05\x04\x01\x02\x03\x03\x12\x04\x96\x01\x17\x18\n\xeb\x02\n\
1458    \x04\x04\x01\x02\x04\x12\x04\x9e\x01\x02\x1b\x1a\xdc\x02\x20Query\x20pla\
1459    n\x20and\x20execution\x20statistics\x20for\x20the\x20statement\x20that\
1460    \x20produced\x20this\n\x20streaming\x20result\x20set.\x20These\x20can\
1461    \x20be\x20requested\x20by\x20setting\n\x20[ExecuteSqlRequest.query_mode]\
1462    [google.spanner.v1.ExecuteSqlRequest.query_mode]\x20and\x20are\x20sent\n\
1463    \x20only\x20once\x20with\x20the\x20last\x20response\x20in\x20the\x20stre\
1464    am.\n\x20This\x20field\x20will\x20also\x20be\x20present\x20in\x20the\x20\
1465    last\x20response\x20for\x20DML\n\x20statements.\n\n\r\n\x05\x04\x01\x02\
1466    \x04\x06\x12\x04\x9e\x01\x02\x10\n\r\n\x05\x04\x01\x02\x04\x01\x12\x04\
1467    \x9e\x01\x11\x16\n\r\n\x05\x04\x01\x02\x04\x03\x12\x04\x9e\x01\x19\x1a\n\
1468    \x84\x01\n\x02\x04\x02\x12\x06\xa2\x01\0\xbc\x01\x01\x1av\x20Metadata\
1469    \x20about\x20a\x20[ResultSet][google.spanner.v1.ResultSet]\x20or\x20[Par\
1470    tialResultSet][google.spanner.v1.PartialResultSet].\n\n\x0b\n\x03\x04\
1471    \x02\x01\x12\x04\xa2\x01\x08\x19\n\xd2\x02\n\x04\x04\x02\x02\0\x12\x04\
1472    \xab\x01\x02\x1a\x1a\xc3\x02\x20Indicates\x20the\x20field\x20names\x20an\
1473    d\x20types\x20for\x20the\x20rows\x20in\x20the\x20result\n\x20set.\x20\
1474    \x20For\x20example,\x20a\x20SQL\x20query\x20like\x20`\"SELECT\x20UserId,\
1475    \x20UserName\x20FROM\n\x20Users\"`\x20could\x20return\x20a\x20`row_type`\
1476    \x20value\x20like:\n\n\x20\x20\x20\x20\x20\"fields\":\x20[\n\x20\x20\x20\
1477    \x20\x20\x20\x20{\x20\"name\":\x20\"UserId\",\x20\"type\":\x20{\x20\"cod\
1478    e\":\x20\"INT64\"\x20}\x20},\n\x20\x20\x20\x20\x20\x20\x20{\x20\"name\":\
1479    \x20\"UserName\",\x20\"type\":\x20{\x20\"code\":\x20\"STRING\"\x20}\x20}\
1480    ,\n\x20\x20\x20\x20\x20]\n\n\r\n\x05\x04\x02\x02\0\x06\x12\x04\xab\x01\
1481    \x02\x0c\n\r\n\x05\x04\x02\x02\0\x01\x12\x04\xab\x01\r\x15\n\r\n\x05\x04\
1482    \x02\x02\0\x03\x12\x04\xab\x01\x18\x19\n\x8a\x01\n\x04\x04\x02\x02\x01\
1483    \x12\x04\xaf\x01\x02\x1e\x1a|\x20If\x20the\x20read\x20or\x20SQL\x20query\
1484    \x20began\x20a\x20transaction\x20as\x20a\x20side-effect,\x20the\n\x20inf\
1485    ormation\x20about\x20the\x20new\x20transaction\x20is\x20yielded\x20here.\
1486    \n\n\r\n\x05\x04\x02\x02\x01\x06\x12\x04\xaf\x01\x02\r\n\r\n\x05\x04\x02\
1487    \x02\x01\x01\x12\x04\xaf\x01\x0e\x19\n\r\n\x05\x04\x02\x02\x01\x03\x12\
1488    \x04\xaf\x01\x1c\x1d\n\xed\x03\n\x04\x04\x02\x02\x02\x12\x04\xbb\x01\x02\
1489    '\x1a\xde\x03\x20A\x20SQL\x20query\x20can\x20be\x20parameterized.\x20In\
1490    \x20PLAN\x20mode,\x20these\x20parameters\x20can\x20be\n\x20undeclared.\
1491    \x20This\x20indicates\x20the\x20field\x20names\x20and\x20types\x20for\
1492    \x20those\x20undeclared\n\x20parameters\x20in\x20the\x20SQL\x20query.\
1493    \x20For\x20example,\x20a\x20SQL\x20query\x20like\x20`\"SELECT\x20*\x20FR\
1494    OM\n\x20Users\x20where\x20UserId\x20=\x20@userId\x20and\x20UserName\x20=\
1495    \x20@userName\x20\"`\x20could\x20return\x20a\n\x20`undeclared_parameters\
1496    `\x20value\x20like:\n\n\x20\x20\x20\x20\x20\"fields\":\x20[\n\x20\x20\
1497    \x20\x20\x20\x20\x20{\x20\"name\":\x20\"UserId\",\x20\"type\":\x20{\x20\
1498    \"code\":\x20\"INT64\"\x20}\x20},\n\x20\x20\x20\x20\x20\x20\x20{\x20\"na\
1499    me\":\x20\"UserName\",\x20\"type\":\x20{\x20\"code\":\x20\"STRING\"\x20}\
1500    \x20},\n\x20\x20\x20\x20\x20]\n\n\r\n\x05\x04\x02\x02\x02\x06\x12\x04\
1501    \xbb\x01\x02\x0c\n\r\n\x05\x04\x02\x02\x02\x01\x12\x04\xbb\x01\r\"\n\r\n\
1502    \x05\x04\x02\x02\x02\x03\x12\x04\xbb\x01%&\n\x92\x01\n\x02\x04\x03\x12\
1503    \x06\xbf\x01\0\xd7\x01\x01\x1a\x83\x01\x20Additional\x20statistics\x20ab\
1504    out\x20a\x20[ResultSet][google.spanner.v1.ResultSet]\x20or\x20[PartialRe\
1505    sultSet][google.spanner.v1.PartialResultSet].\n\n\x0b\n\x03\x04\x03\x01\
1506    \x12\x04\xbf\x01\x08\x16\nc\n\x04\x04\x03\x02\0\x12\x04\xc1\x01\x02\x1b\
1507    \x1aU\x20[QueryPlan][google.spanner.v1.QueryPlan]\x20for\x20the\x20query\
1508    \x20associated\x20with\x20this\x20result.\n\n\r\n\x05\x04\x03\x02\0\x06\
1509    \x12\x04\xc1\x01\x02\x0b\n\r\n\x05\x04\x03\x02\0\x01\x12\x04\xc1\x01\x0c\
1510    \x16\n\r\n\x05\x04\x03\x02\0\x03\x12\x04\xc1\x01\x19\x1a\n\x9e\x02\n\x04\
1511    \x04\x03\x02\x01\x12\x04\xcc\x01\x02)\x1a\x8f\x02\x20Aggregated\x20stati\
1512    stics\x20from\x20the\x20execution\x20of\x20the\x20query.\x20Only\x20pres\
1513    ent\x20when\n\x20the\x20query\x20is\x20profiled.\x20For\x20example,\x20a\
1514    \x20query\x20could\x20return\x20the\x20statistics\x20as\n\x20follows:\n\
1515    \n\x20\x20\x20\x20\x20{\n\x20\x20\x20\x20\x20\x20\x20\"rows_returned\":\
1516    \x20\"3\",\n\x20\x20\x20\x20\x20\x20\x20\"elapsed_time\":\x20\"1.22\x20s\
1517    ecs\",\n\x20\x20\x20\x20\x20\x20\x20\"cpu_time\":\x20\"1.19\x20secs\"\n\
1518    \x20\x20\x20\x20\x20}\n\n\r\n\x05\x04\x03\x02\x01\x06\x12\x04\xcc\x01\
1519    \x02\x18\n\r\n\x05\x04\x03\x02\x01\x01\x12\x04\xcc\x01\x19$\n\r\n\x05\
1520    \x04\x03\x02\x01\x03\x12\x04\xcc\x01'(\nC\n\x04\x04\x03\x08\0\x12\x06\
1521    \xcf\x01\x02\xd6\x01\x03\x1a3\x20The\x20number\x20of\x20rows\x20modified\
1522    \x20by\x20the\x20DML\x20statement.\n\n\r\n\x05\x04\x03\x08\0\x01\x12\x04\
1523    \xcf\x01\x08\x11\nO\n\x04\x04\x03\x02\x02\x12\x04\xd1\x01\x04\x1e\x1aA\
1524    \x20Standard\x20DML\x20returns\x20an\x20exact\x20count\x20of\x20rows\x20\
1525    that\x20were\x20modified.\n\n\r\n\x05\x04\x03\x02\x02\x05\x12\x04\xd1\
1526    \x01\x04\t\n\r\n\x05\x04\x03\x02\x02\x01\x12\x04\xd1\x01\n\x19\n\r\n\x05\
1527    \x04\x03\x02\x02\x03\x12\x04\xd1\x01\x1c\x1d\ny\n\x04\x04\x03\x02\x03\
1528    \x12\x04\xd5\x01\x04$\x1ak\x20Partitioned\x20DML\x20does\x20not\x20offer\
1529    \x20exactly-once\x20semantics,\x20so\x20it\n\x20returns\x20a\x20lower\
1530    \x20bound\x20of\x20the\x20rows\x20modified.\n\n\r\n\x05\x04\x03\x02\x03\
1531    \x05\x12\x04\xd5\x01\x04\t\n\r\n\x05\x04\x03\x02\x03\x01\x12\x04\xd5\x01\
1532    \n\x1f\n\r\n\x05\x04\x03\x02\x03\x03\x12\x04\xd5\x01\"#b\x06proto3\
1533";
1534
1535static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;
1536
1537fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
1538    ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
1539}
1540
1541pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
1542    file_descriptor_proto_lazy.get(|| {
1543        parse_descriptor_proto()
1544    })
1545}