google_cloud_rust_raw/spanner/v1/
spanner.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/spanner.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 CreateSessionRequest {
28    // message fields
29    pub database: ::std::string::String,
30    pub session: ::protobuf::SingularPtrField<Session>,
31    // special fields
32    pub unknown_fields: ::protobuf::UnknownFields,
33    pub cached_size: ::protobuf::CachedSize,
34}
35
36impl<'a> ::std::default::Default for &'a CreateSessionRequest {
37    fn default() -> &'a CreateSessionRequest {
38        <CreateSessionRequest as ::protobuf::Message>::default_instance()
39    }
40}
41
42impl CreateSessionRequest {
43    pub fn new() -> CreateSessionRequest {
44        ::std::default::Default::default()
45    }
46
47    // string database = 1;
48
49
50    pub fn get_database(&self) -> &str {
51        &self.database
52    }
53    pub fn clear_database(&mut self) {
54        self.database.clear();
55    }
56
57    // Param is passed by value, moved
58    pub fn set_database(&mut self, v: ::std::string::String) {
59        self.database = v;
60    }
61
62    // Mutable pointer to the field.
63    // If field is not initialized, it is initialized with default value first.
64    pub fn mut_database(&mut self) -> &mut ::std::string::String {
65        &mut self.database
66    }
67
68    // Take field
69    pub fn take_database(&mut self) -> ::std::string::String {
70        ::std::mem::replace(&mut self.database, ::std::string::String::new())
71    }
72
73    // .google.spanner.v1.Session session = 2;
74
75
76    pub fn get_session(&self) -> &Session {
77        self.session.as_ref().unwrap_or_else(|| <Session as ::protobuf::Message>::default_instance())
78    }
79    pub fn clear_session(&mut self) {
80        self.session.clear();
81    }
82
83    pub fn has_session(&self) -> bool {
84        self.session.is_some()
85    }
86
87    // Param is passed by value, moved
88    pub fn set_session(&mut self, v: Session) {
89        self.session = ::protobuf::SingularPtrField::some(v);
90    }
91
92    // Mutable pointer to the field.
93    // If field is not initialized, it is initialized with default value first.
94    pub fn mut_session(&mut self) -> &mut Session {
95        if self.session.is_none() {
96            self.session.set_default();
97        }
98        self.session.as_mut().unwrap()
99    }
100
101    // Take field
102    pub fn take_session(&mut self) -> Session {
103        self.session.take().unwrap_or_else(|| Session::new())
104    }
105}
106
107impl ::protobuf::Message for CreateSessionRequest {
108    fn is_initialized(&self) -> bool {
109        for v in &self.session {
110            if !v.is_initialized() {
111                return false;
112            }
113        };
114        true
115    }
116
117    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
118        while !is.eof()? {
119            let (field_number, wire_type) = is.read_tag_unpack()?;
120            match field_number {
121                1 => {
122                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.database)?;
123                },
124                2 => {
125                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.session)?;
126                },
127                _ => {
128                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
129                },
130            };
131        }
132        ::std::result::Result::Ok(())
133    }
134
135    // Compute sizes of nested messages
136    #[allow(unused_variables)]
137    fn compute_size(&self) -> u32 {
138        let mut my_size = 0;
139        if !self.database.is_empty() {
140            my_size += ::protobuf::rt::string_size(1, &self.database);
141        }
142        if let Some(ref v) = self.session.as_ref() {
143            let len = v.compute_size();
144            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
145        }
146        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
147        self.cached_size.set(my_size);
148        my_size
149    }
150
151    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
152        if !self.database.is_empty() {
153            os.write_string(1, &self.database)?;
154        }
155        if let Some(ref v) = self.session.as_ref() {
156            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
157            os.write_raw_varint32(v.get_cached_size())?;
158            v.write_to_with_cached_sizes(os)?;
159        }
160        os.write_unknown_fields(self.get_unknown_fields())?;
161        ::std::result::Result::Ok(())
162    }
163
164    fn get_cached_size(&self) -> u32 {
165        self.cached_size.get()
166    }
167
168    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
169        &self.unknown_fields
170    }
171
172    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
173        &mut self.unknown_fields
174    }
175
176    fn as_any(&self) -> &dyn (::std::any::Any) {
177        self as &dyn (::std::any::Any)
178    }
179    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
180        self as &mut dyn (::std::any::Any)
181    }
182    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
183        self
184    }
185
186    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
187        Self::descriptor_static()
188    }
189
190    fn new() -> CreateSessionRequest {
191        CreateSessionRequest::new()
192    }
193
194    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
195        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
196        descriptor.get(|| {
197            let mut fields = ::std::vec::Vec::new();
198            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
199                "database",
200                |m: &CreateSessionRequest| { &m.database },
201                |m: &mut CreateSessionRequest| { &mut m.database },
202            ));
203            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<Session>>(
204                "session",
205                |m: &CreateSessionRequest| { &m.session },
206                |m: &mut CreateSessionRequest| { &mut m.session },
207            ));
208            ::protobuf::reflect::MessageDescriptor::new_pb_name::<CreateSessionRequest>(
209                "CreateSessionRequest",
210                fields,
211                file_descriptor_proto()
212            )
213        })
214    }
215
216    fn default_instance() -> &'static CreateSessionRequest {
217        static instance: ::protobuf::rt::LazyV2<CreateSessionRequest> = ::protobuf::rt::LazyV2::INIT;
218        instance.get(CreateSessionRequest::new)
219    }
220}
221
222impl ::protobuf::Clear for CreateSessionRequest {
223    fn clear(&mut self) {
224        self.database.clear();
225        self.session.clear();
226        self.unknown_fields.clear();
227    }
228}
229
230impl ::std::fmt::Debug for CreateSessionRequest {
231    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
232        ::protobuf::text_format::fmt(self, f)
233    }
234}
235
236impl ::protobuf::reflect::ProtobufValue for CreateSessionRequest {
237    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
238        ::protobuf::reflect::ReflectValueRef::Message(self)
239    }
240}
241
242#[derive(PartialEq,Clone,Default)]
243pub struct BatchCreateSessionsRequest {
244    // message fields
245    pub database: ::std::string::String,
246    pub session_template: ::protobuf::SingularPtrField<Session>,
247    pub session_count: i32,
248    // special fields
249    pub unknown_fields: ::protobuf::UnknownFields,
250    pub cached_size: ::protobuf::CachedSize,
251}
252
253impl<'a> ::std::default::Default for &'a BatchCreateSessionsRequest {
254    fn default() -> &'a BatchCreateSessionsRequest {
255        <BatchCreateSessionsRequest as ::protobuf::Message>::default_instance()
256    }
257}
258
259impl BatchCreateSessionsRequest {
260    pub fn new() -> BatchCreateSessionsRequest {
261        ::std::default::Default::default()
262    }
263
264    // string database = 1;
265
266
267    pub fn get_database(&self) -> &str {
268        &self.database
269    }
270    pub fn clear_database(&mut self) {
271        self.database.clear();
272    }
273
274    // Param is passed by value, moved
275    pub fn set_database(&mut self, v: ::std::string::String) {
276        self.database = v;
277    }
278
279    // Mutable pointer to the field.
280    // If field is not initialized, it is initialized with default value first.
281    pub fn mut_database(&mut self) -> &mut ::std::string::String {
282        &mut self.database
283    }
284
285    // Take field
286    pub fn take_database(&mut self) -> ::std::string::String {
287        ::std::mem::replace(&mut self.database, ::std::string::String::new())
288    }
289
290    // .google.spanner.v1.Session session_template = 2;
291
292
293    pub fn get_session_template(&self) -> &Session {
294        self.session_template.as_ref().unwrap_or_else(|| <Session as ::protobuf::Message>::default_instance())
295    }
296    pub fn clear_session_template(&mut self) {
297        self.session_template.clear();
298    }
299
300    pub fn has_session_template(&self) -> bool {
301        self.session_template.is_some()
302    }
303
304    // Param is passed by value, moved
305    pub fn set_session_template(&mut self, v: Session) {
306        self.session_template = ::protobuf::SingularPtrField::some(v);
307    }
308
309    // Mutable pointer to the field.
310    // If field is not initialized, it is initialized with default value first.
311    pub fn mut_session_template(&mut self) -> &mut Session {
312        if self.session_template.is_none() {
313            self.session_template.set_default();
314        }
315        self.session_template.as_mut().unwrap()
316    }
317
318    // Take field
319    pub fn take_session_template(&mut self) -> Session {
320        self.session_template.take().unwrap_or_else(|| Session::new())
321    }
322
323    // int32 session_count = 3;
324
325
326    pub fn get_session_count(&self) -> i32 {
327        self.session_count
328    }
329    pub fn clear_session_count(&mut self) {
330        self.session_count = 0;
331    }
332
333    // Param is passed by value, moved
334    pub fn set_session_count(&mut self, v: i32) {
335        self.session_count = v;
336    }
337}
338
339impl ::protobuf::Message for BatchCreateSessionsRequest {
340    fn is_initialized(&self) -> bool {
341        for v in &self.session_template {
342            if !v.is_initialized() {
343                return false;
344            }
345        };
346        true
347    }
348
349    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
350        while !is.eof()? {
351            let (field_number, wire_type) = is.read_tag_unpack()?;
352            match field_number {
353                1 => {
354                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.database)?;
355                },
356                2 => {
357                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.session_template)?;
358                },
359                3 => {
360                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
361                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
362                    }
363                    let tmp = is.read_int32()?;
364                    self.session_count = tmp;
365                },
366                _ => {
367                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
368                },
369            };
370        }
371        ::std::result::Result::Ok(())
372    }
373
374    // Compute sizes of nested messages
375    #[allow(unused_variables)]
376    fn compute_size(&self) -> u32 {
377        let mut my_size = 0;
378        if !self.database.is_empty() {
379            my_size += ::protobuf::rt::string_size(1, &self.database);
380        }
381        if let Some(ref v) = self.session_template.as_ref() {
382            let len = v.compute_size();
383            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
384        }
385        if self.session_count != 0 {
386            my_size += ::protobuf::rt::value_size(3, self.session_count, ::protobuf::wire_format::WireTypeVarint);
387        }
388        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
389        self.cached_size.set(my_size);
390        my_size
391    }
392
393    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
394        if !self.database.is_empty() {
395            os.write_string(1, &self.database)?;
396        }
397        if let Some(ref v) = self.session_template.as_ref() {
398            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
399            os.write_raw_varint32(v.get_cached_size())?;
400            v.write_to_with_cached_sizes(os)?;
401        }
402        if self.session_count != 0 {
403            os.write_int32(3, self.session_count)?;
404        }
405        os.write_unknown_fields(self.get_unknown_fields())?;
406        ::std::result::Result::Ok(())
407    }
408
409    fn get_cached_size(&self) -> u32 {
410        self.cached_size.get()
411    }
412
413    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
414        &self.unknown_fields
415    }
416
417    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
418        &mut self.unknown_fields
419    }
420
421    fn as_any(&self) -> &dyn (::std::any::Any) {
422        self as &dyn (::std::any::Any)
423    }
424    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
425        self as &mut dyn (::std::any::Any)
426    }
427    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
428        self
429    }
430
431    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
432        Self::descriptor_static()
433    }
434
435    fn new() -> BatchCreateSessionsRequest {
436        BatchCreateSessionsRequest::new()
437    }
438
439    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
440        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
441        descriptor.get(|| {
442            let mut fields = ::std::vec::Vec::new();
443            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
444                "database",
445                |m: &BatchCreateSessionsRequest| { &m.database },
446                |m: &mut BatchCreateSessionsRequest| { &mut m.database },
447            ));
448            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<Session>>(
449                "session_template",
450                |m: &BatchCreateSessionsRequest| { &m.session_template },
451                |m: &mut BatchCreateSessionsRequest| { &mut m.session_template },
452            ));
453            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
454                "session_count",
455                |m: &BatchCreateSessionsRequest| { &m.session_count },
456                |m: &mut BatchCreateSessionsRequest| { &mut m.session_count },
457            ));
458            ::protobuf::reflect::MessageDescriptor::new_pb_name::<BatchCreateSessionsRequest>(
459                "BatchCreateSessionsRequest",
460                fields,
461                file_descriptor_proto()
462            )
463        })
464    }
465
466    fn default_instance() -> &'static BatchCreateSessionsRequest {
467        static instance: ::protobuf::rt::LazyV2<BatchCreateSessionsRequest> = ::protobuf::rt::LazyV2::INIT;
468        instance.get(BatchCreateSessionsRequest::new)
469    }
470}
471
472impl ::protobuf::Clear for BatchCreateSessionsRequest {
473    fn clear(&mut self) {
474        self.database.clear();
475        self.session_template.clear();
476        self.session_count = 0;
477        self.unknown_fields.clear();
478    }
479}
480
481impl ::std::fmt::Debug for BatchCreateSessionsRequest {
482    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
483        ::protobuf::text_format::fmt(self, f)
484    }
485}
486
487impl ::protobuf::reflect::ProtobufValue for BatchCreateSessionsRequest {
488    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
489        ::protobuf::reflect::ReflectValueRef::Message(self)
490    }
491}
492
493#[derive(PartialEq,Clone,Default)]
494pub struct BatchCreateSessionsResponse {
495    // message fields
496    pub session: ::protobuf::RepeatedField<Session>,
497    // special fields
498    pub unknown_fields: ::protobuf::UnknownFields,
499    pub cached_size: ::protobuf::CachedSize,
500}
501
502impl<'a> ::std::default::Default for &'a BatchCreateSessionsResponse {
503    fn default() -> &'a BatchCreateSessionsResponse {
504        <BatchCreateSessionsResponse as ::protobuf::Message>::default_instance()
505    }
506}
507
508impl BatchCreateSessionsResponse {
509    pub fn new() -> BatchCreateSessionsResponse {
510        ::std::default::Default::default()
511    }
512
513    // repeated .google.spanner.v1.Session session = 1;
514
515
516    pub fn get_session(&self) -> &[Session] {
517        &self.session
518    }
519    pub fn clear_session(&mut self) {
520        self.session.clear();
521    }
522
523    // Param is passed by value, moved
524    pub fn set_session(&mut self, v: ::protobuf::RepeatedField<Session>) {
525        self.session = v;
526    }
527
528    // Mutable pointer to the field.
529    pub fn mut_session(&mut self) -> &mut ::protobuf::RepeatedField<Session> {
530        &mut self.session
531    }
532
533    // Take field
534    pub fn take_session(&mut self) -> ::protobuf::RepeatedField<Session> {
535        ::std::mem::replace(&mut self.session, ::protobuf::RepeatedField::new())
536    }
537}
538
539impl ::protobuf::Message for BatchCreateSessionsResponse {
540    fn is_initialized(&self) -> bool {
541        for v in &self.session {
542            if !v.is_initialized() {
543                return false;
544            }
545        };
546        true
547    }
548
549    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
550        while !is.eof()? {
551            let (field_number, wire_type) = is.read_tag_unpack()?;
552            match field_number {
553                1 => {
554                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.session)?;
555                },
556                _ => {
557                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
558                },
559            };
560        }
561        ::std::result::Result::Ok(())
562    }
563
564    // Compute sizes of nested messages
565    #[allow(unused_variables)]
566    fn compute_size(&self) -> u32 {
567        let mut my_size = 0;
568        for value in &self.session {
569            let len = value.compute_size();
570            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
571        };
572        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
573        self.cached_size.set(my_size);
574        my_size
575    }
576
577    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
578        for v in &self.session {
579            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
580            os.write_raw_varint32(v.get_cached_size())?;
581            v.write_to_with_cached_sizes(os)?;
582        };
583        os.write_unknown_fields(self.get_unknown_fields())?;
584        ::std::result::Result::Ok(())
585    }
586
587    fn get_cached_size(&self) -> u32 {
588        self.cached_size.get()
589    }
590
591    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
592        &self.unknown_fields
593    }
594
595    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
596        &mut self.unknown_fields
597    }
598
599    fn as_any(&self) -> &dyn (::std::any::Any) {
600        self as &dyn (::std::any::Any)
601    }
602    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
603        self as &mut dyn (::std::any::Any)
604    }
605    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
606        self
607    }
608
609    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
610        Self::descriptor_static()
611    }
612
613    fn new() -> BatchCreateSessionsResponse {
614        BatchCreateSessionsResponse::new()
615    }
616
617    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
618        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
619        descriptor.get(|| {
620            let mut fields = ::std::vec::Vec::new();
621            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<Session>>(
622                "session",
623                |m: &BatchCreateSessionsResponse| { &m.session },
624                |m: &mut BatchCreateSessionsResponse| { &mut m.session },
625            ));
626            ::protobuf::reflect::MessageDescriptor::new_pb_name::<BatchCreateSessionsResponse>(
627                "BatchCreateSessionsResponse",
628                fields,
629                file_descriptor_proto()
630            )
631        })
632    }
633
634    fn default_instance() -> &'static BatchCreateSessionsResponse {
635        static instance: ::protobuf::rt::LazyV2<BatchCreateSessionsResponse> = ::protobuf::rt::LazyV2::INIT;
636        instance.get(BatchCreateSessionsResponse::new)
637    }
638}
639
640impl ::protobuf::Clear for BatchCreateSessionsResponse {
641    fn clear(&mut self) {
642        self.session.clear();
643        self.unknown_fields.clear();
644    }
645}
646
647impl ::std::fmt::Debug for BatchCreateSessionsResponse {
648    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
649        ::protobuf::text_format::fmt(self, f)
650    }
651}
652
653impl ::protobuf::reflect::ProtobufValue for BatchCreateSessionsResponse {
654    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
655        ::protobuf::reflect::ReflectValueRef::Message(self)
656    }
657}
658
659#[derive(PartialEq,Clone,Default)]
660pub struct Session {
661    // message fields
662    pub name: ::std::string::String,
663    pub labels: ::std::collections::HashMap<::std::string::String, ::std::string::String>,
664    pub create_time: ::protobuf::SingularPtrField<::protobuf::well_known_types::Timestamp>,
665    pub approximate_last_use_time: ::protobuf::SingularPtrField<::protobuf::well_known_types::Timestamp>,
666    pub creator_role: ::std::string::String,
667    // special fields
668    pub unknown_fields: ::protobuf::UnknownFields,
669    pub cached_size: ::protobuf::CachedSize,
670}
671
672impl<'a> ::std::default::Default for &'a Session {
673    fn default() -> &'a Session {
674        <Session as ::protobuf::Message>::default_instance()
675    }
676}
677
678impl Session {
679    pub fn new() -> Session {
680        ::std::default::Default::default()
681    }
682
683    // string name = 1;
684
685
686    pub fn get_name(&self) -> &str {
687        &self.name
688    }
689    pub fn clear_name(&mut self) {
690        self.name.clear();
691    }
692
693    // Param is passed by value, moved
694    pub fn set_name(&mut self, v: ::std::string::String) {
695        self.name = v;
696    }
697
698    // Mutable pointer to the field.
699    // If field is not initialized, it is initialized with default value first.
700    pub fn mut_name(&mut self) -> &mut ::std::string::String {
701        &mut self.name
702    }
703
704    // Take field
705    pub fn take_name(&mut self) -> ::std::string::String {
706        ::std::mem::replace(&mut self.name, ::std::string::String::new())
707    }
708
709    // repeated .google.spanner.v1.Session.LabelsEntry labels = 2;
710
711
712    pub fn get_labels(&self) -> &::std::collections::HashMap<::std::string::String, ::std::string::String> {
713        &self.labels
714    }
715    pub fn clear_labels(&mut self) {
716        self.labels.clear();
717    }
718
719    // Param is passed by value, moved
720    pub fn set_labels(&mut self, v: ::std::collections::HashMap<::std::string::String, ::std::string::String>) {
721        self.labels = v;
722    }
723
724    // Mutable pointer to the field.
725    pub fn mut_labels(&mut self) -> &mut ::std::collections::HashMap<::std::string::String, ::std::string::String> {
726        &mut self.labels
727    }
728
729    // Take field
730    pub fn take_labels(&mut self) -> ::std::collections::HashMap<::std::string::String, ::std::string::String> {
731        ::std::mem::replace(&mut self.labels, ::std::collections::HashMap::new())
732    }
733
734    // .google.protobuf.Timestamp create_time = 3;
735
736
737    pub fn get_create_time(&self) -> &::protobuf::well_known_types::Timestamp {
738        self.create_time.as_ref().unwrap_or_else(|| <::protobuf::well_known_types::Timestamp as ::protobuf::Message>::default_instance())
739    }
740    pub fn clear_create_time(&mut self) {
741        self.create_time.clear();
742    }
743
744    pub fn has_create_time(&self) -> bool {
745        self.create_time.is_some()
746    }
747
748    // Param is passed by value, moved
749    pub fn set_create_time(&mut self, v: ::protobuf::well_known_types::Timestamp) {
750        self.create_time = ::protobuf::SingularPtrField::some(v);
751    }
752
753    // Mutable pointer to the field.
754    // If field is not initialized, it is initialized with default value first.
755    pub fn mut_create_time(&mut self) -> &mut ::protobuf::well_known_types::Timestamp {
756        if self.create_time.is_none() {
757            self.create_time.set_default();
758        }
759        self.create_time.as_mut().unwrap()
760    }
761
762    // Take field
763    pub fn take_create_time(&mut self) -> ::protobuf::well_known_types::Timestamp {
764        self.create_time.take().unwrap_or_else(|| ::protobuf::well_known_types::Timestamp::new())
765    }
766
767    // .google.protobuf.Timestamp approximate_last_use_time = 4;
768
769
770    pub fn get_approximate_last_use_time(&self) -> &::protobuf::well_known_types::Timestamp {
771        self.approximate_last_use_time.as_ref().unwrap_or_else(|| <::protobuf::well_known_types::Timestamp as ::protobuf::Message>::default_instance())
772    }
773    pub fn clear_approximate_last_use_time(&mut self) {
774        self.approximate_last_use_time.clear();
775    }
776
777    pub fn has_approximate_last_use_time(&self) -> bool {
778        self.approximate_last_use_time.is_some()
779    }
780
781    // Param is passed by value, moved
782    pub fn set_approximate_last_use_time(&mut self, v: ::protobuf::well_known_types::Timestamp) {
783        self.approximate_last_use_time = ::protobuf::SingularPtrField::some(v);
784    }
785
786    // Mutable pointer to the field.
787    // If field is not initialized, it is initialized with default value first.
788    pub fn mut_approximate_last_use_time(&mut self) -> &mut ::protobuf::well_known_types::Timestamp {
789        if self.approximate_last_use_time.is_none() {
790            self.approximate_last_use_time.set_default();
791        }
792        self.approximate_last_use_time.as_mut().unwrap()
793    }
794
795    // Take field
796    pub fn take_approximate_last_use_time(&mut self) -> ::protobuf::well_known_types::Timestamp {
797        self.approximate_last_use_time.take().unwrap_or_else(|| ::protobuf::well_known_types::Timestamp::new())
798    }
799
800    // string creator_role = 5;
801
802
803    pub fn get_creator_role(&self) -> &str {
804        &self.creator_role
805    }
806    pub fn clear_creator_role(&mut self) {
807        self.creator_role.clear();
808    }
809
810    // Param is passed by value, moved
811    pub fn set_creator_role(&mut self, v: ::std::string::String) {
812        self.creator_role = v;
813    }
814
815    // Mutable pointer to the field.
816    // If field is not initialized, it is initialized with default value first.
817    pub fn mut_creator_role(&mut self) -> &mut ::std::string::String {
818        &mut self.creator_role
819    }
820
821    // Take field
822    pub fn take_creator_role(&mut self) -> ::std::string::String {
823        ::std::mem::replace(&mut self.creator_role, ::std::string::String::new())
824    }
825}
826
827impl ::protobuf::Message for Session {
828    fn is_initialized(&self) -> bool {
829        for v in &self.create_time {
830            if !v.is_initialized() {
831                return false;
832            }
833        };
834        for v in &self.approximate_last_use_time {
835            if !v.is_initialized() {
836                return false;
837            }
838        };
839        true
840    }
841
842    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
843        while !is.eof()? {
844            let (field_number, wire_type) = is.read_tag_unpack()?;
845            match field_number {
846                1 => {
847                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
848                },
849                2 => {
850                    ::protobuf::rt::read_map_into::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeString>(wire_type, is, &mut self.labels)?;
851                },
852                3 => {
853                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.create_time)?;
854                },
855                4 => {
856                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.approximate_last_use_time)?;
857                },
858                5 => {
859                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.creator_role)?;
860                },
861                _ => {
862                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
863                },
864            };
865        }
866        ::std::result::Result::Ok(())
867    }
868
869    // Compute sizes of nested messages
870    #[allow(unused_variables)]
871    fn compute_size(&self) -> u32 {
872        let mut my_size = 0;
873        if !self.name.is_empty() {
874            my_size += ::protobuf::rt::string_size(1, &self.name);
875        }
876        my_size += ::protobuf::rt::compute_map_size::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeString>(2, &self.labels);
877        if let Some(ref v) = self.create_time.as_ref() {
878            let len = v.compute_size();
879            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
880        }
881        if let Some(ref v) = self.approximate_last_use_time.as_ref() {
882            let len = v.compute_size();
883            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
884        }
885        if !self.creator_role.is_empty() {
886            my_size += ::protobuf::rt::string_size(5, &self.creator_role);
887        }
888        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
889        self.cached_size.set(my_size);
890        my_size
891    }
892
893    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
894        if !self.name.is_empty() {
895            os.write_string(1, &self.name)?;
896        }
897        ::protobuf::rt::write_map_with_cached_sizes::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeString>(2, &self.labels, os)?;
898        if let Some(ref v) = self.create_time.as_ref() {
899            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
900            os.write_raw_varint32(v.get_cached_size())?;
901            v.write_to_with_cached_sizes(os)?;
902        }
903        if let Some(ref v) = self.approximate_last_use_time.as_ref() {
904            os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
905            os.write_raw_varint32(v.get_cached_size())?;
906            v.write_to_with_cached_sizes(os)?;
907        }
908        if !self.creator_role.is_empty() {
909            os.write_string(5, &self.creator_role)?;
910        }
911        os.write_unknown_fields(self.get_unknown_fields())?;
912        ::std::result::Result::Ok(())
913    }
914
915    fn get_cached_size(&self) -> u32 {
916        self.cached_size.get()
917    }
918
919    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
920        &self.unknown_fields
921    }
922
923    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
924        &mut self.unknown_fields
925    }
926
927    fn as_any(&self) -> &dyn (::std::any::Any) {
928        self as &dyn (::std::any::Any)
929    }
930    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
931        self as &mut dyn (::std::any::Any)
932    }
933    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
934        self
935    }
936
937    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
938        Self::descriptor_static()
939    }
940
941    fn new() -> Session {
942        Session::new()
943    }
944
945    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
946        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
947        descriptor.get(|| {
948            let mut fields = ::std::vec::Vec::new();
949            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
950                "name",
951                |m: &Session| { &m.name },
952                |m: &mut Session| { &mut m.name },
953            ));
954            fields.push(::protobuf::reflect::accessor::make_map_accessor::<_, ::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeString>(
955                "labels",
956                |m: &Session| { &m.labels },
957                |m: &mut Session| { &mut m.labels },
958            ));
959            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Timestamp>>(
960                "create_time",
961                |m: &Session| { &m.create_time },
962                |m: &mut Session| { &mut m.create_time },
963            ));
964            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Timestamp>>(
965                "approximate_last_use_time",
966                |m: &Session| { &m.approximate_last_use_time },
967                |m: &mut Session| { &mut m.approximate_last_use_time },
968            ));
969            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
970                "creator_role",
971                |m: &Session| { &m.creator_role },
972                |m: &mut Session| { &mut m.creator_role },
973            ));
974            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Session>(
975                "Session",
976                fields,
977                file_descriptor_proto()
978            )
979        })
980    }
981
982    fn default_instance() -> &'static Session {
983        static instance: ::protobuf::rt::LazyV2<Session> = ::protobuf::rt::LazyV2::INIT;
984        instance.get(Session::new)
985    }
986}
987
988impl ::protobuf::Clear for Session {
989    fn clear(&mut self) {
990        self.name.clear();
991        self.labels.clear();
992        self.create_time.clear();
993        self.approximate_last_use_time.clear();
994        self.creator_role.clear();
995        self.unknown_fields.clear();
996    }
997}
998
999impl ::std::fmt::Debug for Session {
1000    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1001        ::protobuf::text_format::fmt(self, f)
1002    }
1003}
1004
1005impl ::protobuf::reflect::ProtobufValue for Session {
1006    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1007        ::protobuf::reflect::ReflectValueRef::Message(self)
1008    }
1009}
1010
1011#[derive(PartialEq,Clone,Default)]
1012pub struct GetSessionRequest {
1013    // message fields
1014    pub name: ::std::string::String,
1015    // special fields
1016    pub unknown_fields: ::protobuf::UnknownFields,
1017    pub cached_size: ::protobuf::CachedSize,
1018}
1019
1020impl<'a> ::std::default::Default for &'a GetSessionRequest {
1021    fn default() -> &'a GetSessionRequest {
1022        <GetSessionRequest as ::protobuf::Message>::default_instance()
1023    }
1024}
1025
1026impl GetSessionRequest {
1027    pub fn new() -> GetSessionRequest {
1028        ::std::default::Default::default()
1029    }
1030
1031    // string name = 1;
1032
1033
1034    pub fn get_name(&self) -> &str {
1035        &self.name
1036    }
1037    pub fn clear_name(&mut self) {
1038        self.name.clear();
1039    }
1040
1041    // Param is passed by value, moved
1042    pub fn set_name(&mut self, v: ::std::string::String) {
1043        self.name = v;
1044    }
1045
1046    // Mutable pointer to the field.
1047    // If field is not initialized, it is initialized with default value first.
1048    pub fn mut_name(&mut self) -> &mut ::std::string::String {
1049        &mut self.name
1050    }
1051
1052    // Take field
1053    pub fn take_name(&mut self) -> ::std::string::String {
1054        ::std::mem::replace(&mut self.name, ::std::string::String::new())
1055    }
1056}
1057
1058impl ::protobuf::Message for GetSessionRequest {
1059    fn is_initialized(&self) -> bool {
1060        true
1061    }
1062
1063    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1064        while !is.eof()? {
1065            let (field_number, wire_type) = is.read_tag_unpack()?;
1066            match field_number {
1067                1 => {
1068                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
1069                },
1070                _ => {
1071                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1072                },
1073            };
1074        }
1075        ::std::result::Result::Ok(())
1076    }
1077
1078    // Compute sizes of nested messages
1079    #[allow(unused_variables)]
1080    fn compute_size(&self) -> u32 {
1081        let mut my_size = 0;
1082        if !self.name.is_empty() {
1083            my_size += ::protobuf::rt::string_size(1, &self.name);
1084        }
1085        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1086        self.cached_size.set(my_size);
1087        my_size
1088    }
1089
1090    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1091        if !self.name.is_empty() {
1092            os.write_string(1, &self.name)?;
1093        }
1094        os.write_unknown_fields(self.get_unknown_fields())?;
1095        ::std::result::Result::Ok(())
1096    }
1097
1098    fn get_cached_size(&self) -> u32 {
1099        self.cached_size.get()
1100    }
1101
1102    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1103        &self.unknown_fields
1104    }
1105
1106    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1107        &mut self.unknown_fields
1108    }
1109
1110    fn as_any(&self) -> &dyn (::std::any::Any) {
1111        self as &dyn (::std::any::Any)
1112    }
1113    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1114        self as &mut dyn (::std::any::Any)
1115    }
1116    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1117        self
1118    }
1119
1120    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1121        Self::descriptor_static()
1122    }
1123
1124    fn new() -> GetSessionRequest {
1125        GetSessionRequest::new()
1126    }
1127
1128    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1129        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1130        descriptor.get(|| {
1131            let mut fields = ::std::vec::Vec::new();
1132            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1133                "name",
1134                |m: &GetSessionRequest| { &m.name },
1135                |m: &mut GetSessionRequest| { &mut m.name },
1136            ));
1137            ::protobuf::reflect::MessageDescriptor::new_pb_name::<GetSessionRequest>(
1138                "GetSessionRequest",
1139                fields,
1140                file_descriptor_proto()
1141            )
1142        })
1143    }
1144
1145    fn default_instance() -> &'static GetSessionRequest {
1146        static instance: ::protobuf::rt::LazyV2<GetSessionRequest> = ::protobuf::rt::LazyV2::INIT;
1147        instance.get(GetSessionRequest::new)
1148    }
1149}
1150
1151impl ::protobuf::Clear for GetSessionRequest {
1152    fn clear(&mut self) {
1153        self.name.clear();
1154        self.unknown_fields.clear();
1155    }
1156}
1157
1158impl ::std::fmt::Debug for GetSessionRequest {
1159    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1160        ::protobuf::text_format::fmt(self, f)
1161    }
1162}
1163
1164impl ::protobuf::reflect::ProtobufValue for GetSessionRequest {
1165    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1166        ::protobuf::reflect::ReflectValueRef::Message(self)
1167    }
1168}
1169
1170#[derive(PartialEq,Clone,Default)]
1171pub struct ListSessionsRequest {
1172    // message fields
1173    pub database: ::std::string::String,
1174    pub page_size: i32,
1175    pub page_token: ::std::string::String,
1176    pub filter: ::std::string::String,
1177    // special fields
1178    pub unknown_fields: ::protobuf::UnknownFields,
1179    pub cached_size: ::protobuf::CachedSize,
1180}
1181
1182impl<'a> ::std::default::Default for &'a ListSessionsRequest {
1183    fn default() -> &'a ListSessionsRequest {
1184        <ListSessionsRequest as ::protobuf::Message>::default_instance()
1185    }
1186}
1187
1188impl ListSessionsRequest {
1189    pub fn new() -> ListSessionsRequest {
1190        ::std::default::Default::default()
1191    }
1192
1193    // string database = 1;
1194
1195
1196    pub fn get_database(&self) -> &str {
1197        &self.database
1198    }
1199    pub fn clear_database(&mut self) {
1200        self.database.clear();
1201    }
1202
1203    // Param is passed by value, moved
1204    pub fn set_database(&mut self, v: ::std::string::String) {
1205        self.database = v;
1206    }
1207
1208    // Mutable pointer to the field.
1209    // If field is not initialized, it is initialized with default value first.
1210    pub fn mut_database(&mut self) -> &mut ::std::string::String {
1211        &mut self.database
1212    }
1213
1214    // Take field
1215    pub fn take_database(&mut self) -> ::std::string::String {
1216        ::std::mem::replace(&mut self.database, ::std::string::String::new())
1217    }
1218
1219    // int32 page_size = 2;
1220
1221
1222    pub fn get_page_size(&self) -> i32 {
1223        self.page_size
1224    }
1225    pub fn clear_page_size(&mut self) {
1226        self.page_size = 0;
1227    }
1228
1229    // Param is passed by value, moved
1230    pub fn set_page_size(&mut self, v: i32) {
1231        self.page_size = v;
1232    }
1233
1234    // string page_token = 3;
1235
1236
1237    pub fn get_page_token(&self) -> &str {
1238        &self.page_token
1239    }
1240    pub fn clear_page_token(&mut self) {
1241        self.page_token.clear();
1242    }
1243
1244    // Param is passed by value, moved
1245    pub fn set_page_token(&mut self, v: ::std::string::String) {
1246        self.page_token = v;
1247    }
1248
1249    // Mutable pointer to the field.
1250    // If field is not initialized, it is initialized with default value first.
1251    pub fn mut_page_token(&mut self) -> &mut ::std::string::String {
1252        &mut self.page_token
1253    }
1254
1255    // Take field
1256    pub fn take_page_token(&mut self) -> ::std::string::String {
1257        ::std::mem::replace(&mut self.page_token, ::std::string::String::new())
1258    }
1259
1260    // string filter = 4;
1261
1262
1263    pub fn get_filter(&self) -> &str {
1264        &self.filter
1265    }
1266    pub fn clear_filter(&mut self) {
1267        self.filter.clear();
1268    }
1269
1270    // Param is passed by value, moved
1271    pub fn set_filter(&mut self, v: ::std::string::String) {
1272        self.filter = v;
1273    }
1274
1275    // Mutable pointer to the field.
1276    // If field is not initialized, it is initialized with default value first.
1277    pub fn mut_filter(&mut self) -> &mut ::std::string::String {
1278        &mut self.filter
1279    }
1280
1281    // Take field
1282    pub fn take_filter(&mut self) -> ::std::string::String {
1283        ::std::mem::replace(&mut self.filter, ::std::string::String::new())
1284    }
1285}
1286
1287impl ::protobuf::Message for ListSessionsRequest {
1288    fn is_initialized(&self) -> bool {
1289        true
1290    }
1291
1292    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1293        while !is.eof()? {
1294            let (field_number, wire_type) = is.read_tag_unpack()?;
1295            match field_number {
1296                1 => {
1297                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.database)?;
1298                },
1299                2 => {
1300                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
1301                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
1302                    }
1303                    let tmp = is.read_int32()?;
1304                    self.page_size = tmp;
1305                },
1306                3 => {
1307                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.page_token)?;
1308                },
1309                4 => {
1310                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.filter)?;
1311                },
1312                _ => {
1313                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1314                },
1315            };
1316        }
1317        ::std::result::Result::Ok(())
1318    }
1319
1320    // Compute sizes of nested messages
1321    #[allow(unused_variables)]
1322    fn compute_size(&self) -> u32 {
1323        let mut my_size = 0;
1324        if !self.database.is_empty() {
1325            my_size += ::protobuf::rt::string_size(1, &self.database);
1326        }
1327        if self.page_size != 0 {
1328            my_size += ::protobuf::rt::value_size(2, self.page_size, ::protobuf::wire_format::WireTypeVarint);
1329        }
1330        if !self.page_token.is_empty() {
1331            my_size += ::protobuf::rt::string_size(3, &self.page_token);
1332        }
1333        if !self.filter.is_empty() {
1334            my_size += ::protobuf::rt::string_size(4, &self.filter);
1335        }
1336        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1337        self.cached_size.set(my_size);
1338        my_size
1339    }
1340
1341    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1342        if !self.database.is_empty() {
1343            os.write_string(1, &self.database)?;
1344        }
1345        if self.page_size != 0 {
1346            os.write_int32(2, self.page_size)?;
1347        }
1348        if !self.page_token.is_empty() {
1349            os.write_string(3, &self.page_token)?;
1350        }
1351        if !self.filter.is_empty() {
1352            os.write_string(4, &self.filter)?;
1353        }
1354        os.write_unknown_fields(self.get_unknown_fields())?;
1355        ::std::result::Result::Ok(())
1356    }
1357
1358    fn get_cached_size(&self) -> u32 {
1359        self.cached_size.get()
1360    }
1361
1362    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1363        &self.unknown_fields
1364    }
1365
1366    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1367        &mut self.unknown_fields
1368    }
1369
1370    fn as_any(&self) -> &dyn (::std::any::Any) {
1371        self as &dyn (::std::any::Any)
1372    }
1373    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1374        self as &mut dyn (::std::any::Any)
1375    }
1376    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1377        self
1378    }
1379
1380    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1381        Self::descriptor_static()
1382    }
1383
1384    fn new() -> ListSessionsRequest {
1385        ListSessionsRequest::new()
1386    }
1387
1388    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1389        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1390        descriptor.get(|| {
1391            let mut fields = ::std::vec::Vec::new();
1392            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1393                "database",
1394                |m: &ListSessionsRequest| { &m.database },
1395                |m: &mut ListSessionsRequest| { &mut m.database },
1396            ));
1397            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
1398                "page_size",
1399                |m: &ListSessionsRequest| { &m.page_size },
1400                |m: &mut ListSessionsRequest| { &mut m.page_size },
1401            ));
1402            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1403                "page_token",
1404                |m: &ListSessionsRequest| { &m.page_token },
1405                |m: &mut ListSessionsRequest| { &mut m.page_token },
1406            ));
1407            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1408                "filter",
1409                |m: &ListSessionsRequest| { &m.filter },
1410                |m: &mut ListSessionsRequest| { &mut m.filter },
1411            ));
1412            ::protobuf::reflect::MessageDescriptor::new_pb_name::<ListSessionsRequest>(
1413                "ListSessionsRequest",
1414                fields,
1415                file_descriptor_proto()
1416            )
1417        })
1418    }
1419
1420    fn default_instance() -> &'static ListSessionsRequest {
1421        static instance: ::protobuf::rt::LazyV2<ListSessionsRequest> = ::protobuf::rt::LazyV2::INIT;
1422        instance.get(ListSessionsRequest::new)
1423    }
1424}
1425
1426impl ::protobuf::Clear for ListSessionsRequest {
1427    fn clear(&mut self) {
1428        self.database.clear();
1429        self.page_size = 0;
1430        self.page_token.clear();
1431        self.filter.clear();
1432        self.unknown_fields.clear();
1433    }
1434}
1435
1436impl ::std::fmt::Debug for ListSessionsRequest {
1437    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1438        ::protobuf::text_format::fmt(self, f)
1439    }
1440}
1441
1442impl ::protobuf::reflect::ProtobufValue for ListSessionsRequest {
1443    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1444        ::protobuf::reflect::ReflectValueRef::Message(self)
1445    }
1446}
1447
1448#[derive(PartialEq,Clone,Default)]
1449pub struct ListSessionsResponse {
1450    // message fields
1451    pub sessions: ::protobuf::RepeatedField<Session>,
1452    pub next_page_token: ::std::string::String,
1453    // special fields
1454    pub unknown_fields: ::protobuf::UnknownFields,
1455    pub cached_size: ::protobuf::CachedSize,
1456}
1457
1458impl<'a> ::std::default::Default for &'a ListSessionsResponse {
1459    fn default() -> &'a ListSessionsResponse {
1460        <ListSessionsResponse as ::protobuf::Message>::default_instance()
1461    }
1462}
1463
1464impl ListSessionsResponse {
1465    pub fn new() -> ListSessionsResponse {
1466        ::std::default::Default::default()
1467    }
1468
1469    // repeated .google.spanner.v1.Session sessions = 1;
1470
1471
1472    pub fn get_sessions(&self) -> &[Session] {
1473        &self.sessions
1474    }
1475    pub fn clear_sessions(&mut self) {
1476        self.sessions.clear();
1477    }
1478
1479    // Param is passed by value, moved
1480    pub fn set_sessions(&mut self, v: ::protobuf::RepeatedField<Session>) {
1481        self.sessions = v;
1482    }
1483
1484    // Mutable pointer to the field.
1485    pub fn mut_sessions(&mut self) -> &mut ::protobuf::RepeatedField<Session> {
1486        &mut self.sessions
1487    }
1488
1489    // Take field
1490    pub fn take_sessions(&mut self) -> ::protobuf::RepeatedField<Session> {
1491        ::std::mem::replace(&mut self.sessions, ::protobuf::RepeatedField::new())
1492    }
1493
1494    // string next_page_token = 2;
1495
1496
1497    pub fn get_next_page_token(&self) -> &str {
1498        &self.next_page_token
1499    }
1500    pub fn clear_next_page_token(&mut self) {
1501        self.next_page_token.clear();
1502    }
1503
1504    // Param is passed by value, moved
1505    pub fn set_next_page_token(&mut self, v: ::std::string::String) {
1506        self.next_page_token = v;
1507    }
1508
1509    // Mutable pointer to the field.
1510    // If field is not initialized, it is initialized with default value first.
1511    pub fn mut_next_page_token(&mut self) -> &mut ::std::string::String {
1512        &mut self.next_page_token
1513    }
1514
1515    // Take field
1516    pub fn take_next_page_token(&mut self) -> ::std::string::String {
1517        ::std::mem::replace(&mut self.next_page_token, ::std::string::String::new())
1518    }
1519}
1520
1521impl ::protobuf::Message for ListSessionsResponse {
1522    fn is_initialized(&self) -> bool {
1523        for v in &self.sessions {
1524            if !v.is_initialized() {
1525                return false;
1526            }
1527        };
1528        true
1529    }
1530
1531    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1532        while !is.eof()? {
1533            let (field_number, wire_type) = is.read_tag_unpack()?;
1534            match field_number {
1535                1 => {
1536                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.sessions)?;
1537                },
1538                2 => {
1539                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.next_page_token)?;
1540                },
1541                _ => {
1542                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1543                },
1544            };
1545        }
1546        ::std::result::Result::Ok(())
1547    }
1548
1549    // Compute sizes of nested messages
1550    #[allow(unused_variables)]
1551    fn compute_size(&self) -> u32 {
1552        let mut my_size = 0;
1553        for value in &self.sessions {
1554            let len = value.compute_size();
1555            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
1556        };
1557        if !self.next_page_token.is_empty() {
1558            my_size += ::protobuf::rt::string_size(2, &self.next_page_token);
1559        }
1560        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1561        self.cached_size.set(my_size);
1562        my_size
1563    }
1564
1565    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1566        for v in &self.sessions {
1567            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
1568            os.write_raw_varint32(v.get_cached_size())?;
1569            v.write_to_with_cached_sizes(os)?;
1570        };
1571        if !self.next_page_token.is_empty() {
1572            os.write_string(2, &self.next_page_token)?;
1573        }
1574        os.write_unknown_fields(self.get_unknown_fields())?;
1575        ::std::result::Result::Ok(())
1576    }
1577
1578    fn get_cached_size(&self) -> u32 {
1579        self.cached_size.get()
1580    }
1581
1582    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1583        &self.unknown_fields
1584    }
1585
1586    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1587        &mut self.unknown_fields
1588    }
1589
1590    fn as_any(&self) -> &dyn (::std::any::Any) {
1591        self as &dyn (::std::any::Any)
1592    }
1593    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1594        self as &mut dyn (::std::any::Any)
1595    }
1596    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1597        self
1598    }
1599
1600    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1601        Self::descriptor_static()
1602    }
1603
1604    fn new() -> ListSessionsResponse {
1605        ListSessionsResponse::new()
1606    }
1607
1608    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1609        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1610        descriptor.get(|| {
1611            let mut fields = ::std::vec::Vec::new();
1612            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<Session>>(
1613                "sessions",
1614                |m: &ListSessionsResponse| { &m.sessions },
1615                |m: &mut ListSessionsResponse| { &mut m.sessions },
1616            ));
1617            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1618                "next_page_token",
1619                |m: &ListSessionsResponse| { &m.next_page_token },
1620                |m: &mut ListSessionsResponse| { &mut m.next_page_token },
1621            ));
1622            ::protobuf::reflect::MessageDescriptor::new_pb_name::<ListSessionsResponse>(
1623                "ListSessionsResponse",
1624                fields,
1625                file_descriptor_proto()
1626            )
1627        })
1628    }
1629
1630    fn default_instance() -> &'static ListSessionsResponse {
1631        static instance: ::protobuf::rt::LazyV2<ListSessionsResponse> = ::protobuf::rt::LazyV2::INIT;
1632        instance.get(ListSessionsResponse::new)
1633    }
1634}
1635
1636impl ::protobuf::Clear for ListSessionsResponse {
1637    fn clear(&mut self) {
1638        self.sessions.clear();
1639        self.next_page_token.clear();
1640        self.unknown_fields.clear();
1641    }
1642}
1643
1644impl ::std::fmt::Debug for ListSessionsResponse {
1645    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1646        ::protobuf::text_format::fmt(self, f)
1647    }
1648}
1649
1650impl ::protobuf::reflect::ProtobufValue for ListSessionsResponse {
1651    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1652        ::protobuf::reflect::ReflectValueRef::Message(self)
1653    }
1654}
1655
1656#[derive(PartialEq,Clone,Default)]
1657pub struct DeleteSessionRequest {
1658    // message fields
1659    pub name: ::std::string::String,
1660    // special fields
1661    pub unknown_fields: ::protobuf::UnknownFields,
1662    pub cached_size: ::protobuf::CachedSize,
1663}
1664
1665impl<'a> ::std::default::Default for &'a DeleteSessionRequest {
1666    fn default() -> &'a DeleteSessionRequest {
1667        <DeleteSessionRequest as ::protobuf::Message>::default_instance()
1668    }
1669}
1670
1671impl DeleteSessionRequest {
1672    pub fn new() -> DeleteSessionRequest {
1673        ::std::default::Default::default()
1674    }
1675
1676    // string name = 1;
1677
1678
1679    pub fn get_name(&self) -> &str {
1680        &self.name
1681    }
1682    pub fn clear_name(&mut self) {
1683        self.name.clear();
1684    }
1685
1686    // Param is passed by value, moved
1687    pub fn set_name(&mut self, v: ::std::string::String) {
1688        self.name = v;
1689    }
1690
1691    // Mutable pointer to the field.
1692    // If field is not initialized, it is initialized with default value first.
1693    pub fn mut_name(&mut self) -> &mut ::std::string::String {
1694        &mut self.name
1695    }
1696
1697    // Take field
1698    pub fn take_name(&mut self) -> ::std::string::String {
1699        ::std::mem::replace(&mut self.name, ::std::string::String::new())
1700    }
1701}
1702
1703impl ::protobuf::Message for DeleteSessionRequest {
1704    fn is_initialized(&self) -> bool {
1705        true
1706    }
1707
1708    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1709        while !is.eof()? {
1710            let (field_number, wire_type) = is.read_tag_unpack()?;
1711            match field_number {
1712                1 => {
1713                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.name)?;
1714                },
1715                _ => {
1716                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1717                },
1718            };
1719        }
1720        ::std::result::Result::Ok(())
1721    }
1722
1723    // Compute sizes of nested messages
1724    #[allow(unused_variables)]
1725    fn compute_size(&self) -> u32 {
1726        let mut my_size = 0;
1727        if !self.name.is_empty() {
1728            my_size += ::protobuf::rt::string_size(1, &self.name);
1729        }
1730        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1731        self.cached_size.set(my_size);
1732        my_size
1733    }
1734
1735    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1736        if !self.name.is_empty() {
1737            os.write_string(1, &self.name)?;
1738        }
1739        os.write_unknown_fields(self.get_unknown_fields())?;
1740        ::std::result::Result::Ok(())
1741    }
1742
1743    fn get_cached_size(&self) -> u32 {
1744        self.cached_size.get()
1745    }
1746
1747    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1748        &self.unknown_fields
1749    }
1750
1751    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1752        &mut self.unknown_fields
1753    }
1754
1755    fn as_any(&self) -> &dyn (::std::any::Any) {
1756        self as &dyn (::std::any::Any)
1757    }
1758    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1759        self as &mut dyn (::std::any::Any)
1760    }
1761    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1762        self
1763    }
1764
1765    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1766        Self::descriptor_static()
1767    }
1768
1769    fn new() -> DeleteSessionRequest {
1770        DeleteSessionRequest::new()
1771    }
1772
1773    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1774        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1775        descriptor.get(|| {
1776            let mut fields = ::std::vec::Vec::new();
1777            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
1778                "name",
1779                |m: &DeleteSessionRequest| { &m.name },
1780                |m: &mut DeleteSessionRequest| { &mut m.name },
1781            ));
1782            ::protobuf::reflect::MessageDescriptor::new_pb_name::<DeleteSessionRequest>(
1783                "DeleteSessionRequest",
1784                fields,
1785                file_descriptor_proto()
1786            )
1787        })
1788    }
1789
1790    fn default_instance() -> &'static DeleteSessionRequest {
1791        static instance: ::protobuf::rt::LazyV2<DeleteSessionRequest> = ::protobuf::rt::LazyV2::INIT;
1792        instance.get(DeleteSessionRequest::new)
1793    }
1794}
1795
1796impl ::protobuf::Clear for DeleteSessionRequest {
1797    fn clear(&mut self) {
1798        self.name.clear();
1799        self.unknown_fields.clear();
1800    }
1801}
1802
1803impl ::std::fmt::Debug for DeleteSessionRequest {
1804    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1805        ::protobuf::text_format::fmt(self, f)
1806    }
1807}
1808
1809impl ::protobuf::reflect::ProtobufValue for DeleteSessionRequest {
1810    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
1811        ::protobuf::reflect::ReflectValueRef::Message(self)
1812    }
1813}
1814
1815#[derive(PartialEq,Clone,Default)]
1816pub struct RequestOptions {
1817    // message fields
1818    pub priority: RequestOptions_Priority,
1819    pub request_tag: ::std::string::String,
1820    pub transaction_tag: ::std::string::String,
1821    // special fields
1822    pub unknown_fields: ::protobuf::UnknownFields,
1823    pub cached_size: ::protobuf::CachedSize,
1824}
1825
1826impl<'a> ::std::default::Default for &'a RequestOptions {
1827    fn default() -> &'a RequestOptions {
1828        <RequestOptions as ::protobuf::Message>::default_instance()
1829    }
1830}
1831
1832impl RequestOptions {
1833    pub fn new() -> RequestOptions {
1834        ::std::default::Default::default()
1835    }
1836
1837    // .google.spanner.v1.RequestOptions.Priority priority = 1;
1838
1839
1840    pub fn get_priority(&self) -> RequestOptions_Priority {
1841        self.priority
1842    }
1843    pub fn clear_priority(&mut self) {
1844        self.priority = RequestOptions_Priority::PRIORITY_UNSPECIFIED;
1845    }
1846
1847    // Param is passed by value, moved
1848    pub fn set_priority(&mut self, v: RequestOptions_Priority) {
1849        self.priority = v;
1850    }
1851
1852    // string request_tag = 2;
1853
1854
1855    pub fn get_request_tag(&self) -> &str {
1856        &self.request_tag
1857    }
1858    pub fn clear_request_tag(&mut self) {
1859        self.request_tag.clear();
1860    }
1861
1862    // Param is passed by value, moved
1863    pub fn set_request_tag(&mut self, v: ::std::string::String) {
1864        self.request_tag = v;
1865    }
1866
1867    // Mutable pointer to the field.
1868    // If field is not initialized, it is initialized with default value first.
1869    pub fn mut_request_tag(&mut self) -> &mut ::std::string::String {
1870        &mut self.request_tag
1871    }
1872
1873    // Take field
1874    pub fn take_request_tag(&mut self) -> ::std::string::String {
1875        ::std::mem::replace(&mut self.request_tag, ::std::string::String::new())
1876    }
1877
1878    // string transaction_tag = 3;
1879
1880
1881    pub fn get_transaction_tag(&self) -> &str {
1882        &self.transaction_tag
1883    }
1884    pub fn clear_transaction_tag(&mut self) {
1885        self.transaction_tag.clear();
1886    }
1887
1888    // Param is passed by value, moved
1889    pub fn set_transaction_tag(&mut self, v: ::std::string::String) {
1890        self.transaction_tag = v;
1891    }
1892
1893    // Mutable pointer to the field.
1894    // If field is not initialized, it is initialized with default value first.
1895    pub fn mut_transaction_tag(&mut self) -> &mut ::std::string::String {
1896        &mut self.transaction_tag
1897    }
1898
1899    // Take field
1900    pub fn take_transaction_tag(&mut self) -> ::std::string::String {
1901        ::std::mem::replace(&mut self.transaction_tag, ::std::string::String::new())
1902    }
1903}
1904
1905impl ::protobuf::Message for RequestOptions {
1906    fn is_initialized(&self) -> bool {
1907        true
1908    }
1909
1910    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1911        while !is.eof()? {
1912            let (field_number, wire_type) = is.read_tag_unpack()?;
1913            match field_number {
1914                1 => {
1915                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.priority, 1, &mut self.unknown_fields)?
1916                },
1917                2 => {
1918                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.request_tag)?;
1919                },
1920                3 => {
1921                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.transaction_tag)?;
1922                },
1923                _ => {
1924                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
1925                },
1926            };
1927        }
1928        ::std::result::Result::Ok(())
1929    }
1930
1931    // Compute sizes of nested messages
1932    #[allow(unused_variables)]
1933    fn compute_size(&self) -> u32 {
1934        let mut my_size = 0;
1935        if self.priority != RequestOptions_Priority::PRIORITY_UNSPECIFIED {
1936            my_size += ::protobuf::rt::enum_size(1, self.priority);
1937        }
1938        if !self.request_tag.is_empty() {
1939            my_size += ::protobuf::rt::string_size(2, &self.request_tag);
1940        }
1941        if !self.transaction_tag.is_empty() {
1942            my_size += ::protobuf::rt::string_size(3, &self.transaction_tag);
1943        }
1944        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
1945        self.cached_size.set(my_size);
1946        my_size
1947    }
1948
1949    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
1950        if self.priority != RequestOptions_Priority::PRIORITY_UNSPECIFIED {
1951            os.write_enum(1, ::protobuf::ProtobufEnum::value(&self.priority))?;
1952        }
1953        if !self.request_tag.is_empty() {
1954            os.write_string(2, &self.request_tag)?;
1955        }
1956        if !self.transaction_tag.is_empty() {
1957            os.write_string(3, &self.transaction_tag)?;
1958        }
1959        os.write_unknown_fields(self.get_unknown_fields())?;
1960        ::std::result::Result::Ok(())
1961    }
1962
1963    fn get_cached_size(&self) -> u32 {
1964        self.cached_size.get()
1965    }
1966
1967    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
1968        &self.unknown_fields
1969    }
1970
1971    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
1972        &mut self.unknown_fields
1973    }
1974
1975    fn as_any(&self) -> &dyn (::std::any::Any) {
1976        self as &dyn (::std::any::Any)
1977    }
1978    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
1979        self as &mut dyn (::std::any::Any)
1980    }
1981    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
1982        self
1983    }
1984
1985    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
1986        Self::descriptor_static()
1987    }
1988
1989    fn new() -> RequestOptions {
1990        RequestOptions::new()
1991    }
1992
1993    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
1994        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
1995        descriptor.get(|| {
1996            let mut fields = ::std::vec::Vec::new();
1997            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<RequestOptions_Priority>>(
1998                "priority",
1999                |m: &RequestOptions| { &m.priority },
2000                |m: &mut RequestOptions| { &mut m.priority },
2001            ));
2002            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
2003                "request_tag",
2004                |m: &RequestOptions| { &m.request_tag },
2005                |m: &mut RequestOptions| { &mut m.request_tag },
2006            ));
2007            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
2008                "transaction_tag",
2009                |m: &RequestOptions| { &m.transaction_tag },
2010                |m: &mut RequestOptions| { &mut m.transaction_tag },
2011            ));
2012            ::protobuf::reflect::MessageDescriptor::new_pb_name::<RequestOptions>(
2013                "RequestOptions",
2014                fields,
2015                file_descriptor_proto()
2016            )
2017        })
2018    }
2019
2020    fn default_instance() -> &'static RequestOptions {
2021        static instance: ::protobuf::rt::LazyV2<RequestOptions> = ::protobuf::rt::LazyV2::INIT;
2022        instance.get(RequestOptions::new)
2023    }
2024}
2025
2026impl ::protobuf::Clear for RequestOptions {
2027    fn clear(&mut self) {
2028        self.priority = RequestOptions_Priority::PRIORITY_UNSPECIFIED;
2029        self.request_tag.clear();
2030        self.transaction_tag.clear();
2031        self.unknown_fields.clear();
2032    }
2033}
2034
2035impl ::std::fmt::Debug for RequestOptions {
2036    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2037        ::protobuf::text_format::fmt(self, f)
2038    }
2039}
2040
2041impl ::protobuf::reflect::ProtobufValue for RequestOptions {
2042    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
2043        ::protobuf::reflect::ReflectValueRef::Message(self)
2044    }
2045}
2046
2047#[derive(Clone,PartialEq,Eq,Debug,Hash)]
2048pub enum RequestOptions_Priority {
2049    PRIORITY_UNSPECIFIED = 0,
2050    PRIORITY_LOW = 1,
2051    PRIORITY_MEDIUM = 2,
2052    PRIORITY_HIGH = 3,
2053}
2054
2055impl ::protobuf::ProtobufEnum for RequestOptions_Priority {
2056    fn value(&self) -> i32 {
2057        *self as i32
2058    }
2059
2060    fn from_i32(value: i32) -> ::std::option::Option<RequestOptions_Priority> {
2061        match value {
2062            0 => ::std::option::Option::Some(RequestOptions_Priority::PRIORITY_UNSPECIFIED),
2063            1 => ::std::option::Option::Some(RequestOptions_Priority::PRIORITY_LOW),
2064            2 => ::std::option::Option::Some(RequestOptions_Priority::PRIORITY_MEDIUM),
2065            3 => ::std::option::Option::Some(RequestOptions_Priority::PRIORITY_HIGH),
2066            _ => ::std::option::Option::None
2067        }
2068    }
2069
2070    fn values() -> &'static [Self] {
2071        static values: &'static [RequestOptions_Priority] = &[
2072            RequestOptions_Priority::PRIORITY_UNSPECIFIED,
2073            RequestOptions_Priority::PRIORITY_LOW,
2074            RequestOptions_Priority::PRIORITY_MEDIUM,
2075            RequestOptions_Priority::PRIORITY_HIGH,
2076        ];
2077        values
2078    }
2079
2080    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
2081        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT;
2082        descriptor.get(|| {
2083            ::protobuf::reflect::EnumDescriptor::new_pb_name::<RequestOptions_Priority>("RequestOptions.Priority", file_descriptor_proto())
2084        })
2085    }
2086}
2087
2088impl ::std::marker::Copy for RequestOptions_Priority {
2089}
2090
2091impl ::std::default::Default for RequestOptions_Priority {
2092    fn default() -> Self {
2093        RequestOptions_Priority::PRIORITY_UNSPECIFIED
2094    }
2095}
2096
2097impl ::protobuf::reflect::ProtobufValue for RequestOptions_Priority {
2098    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
2099        ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self))
2100    }
2101}
2102
2103#[derive(PartialEq,Clone,Default)]
2104pub struct ExecuteSqlRequest {
2105    // message fields
2106    pub session: ::std::string::String,
2107    pub transaction: ::protobuf::SingularPtrField<super::transaction::TransactionSelector>,
2108    pub sql: ::std::string::String,
2109    pub params: ::protobuf::SingularPtrField<::protobuf::well_known_types::Struct>,
2110    pub param_types: ::std::collections::HashMap<::std::string::String, super::type_pb::Type>,
2111    pub resume_token: ::std::vec::Vec<u8>,
2112    pub query_mode: ExecuteSqlRequest_QueryMode,
2113    pub partition_token: ::std::vec::Vec<u8>,
2114    pub seqno: i64,
2115    pub query_options: ::protobuf::SingularPtrField<ExecuteSqlRequest_QueryOptions>,
2116    pub request_options: ::protobuf::SingularPtrField<RequestOptions>,
2117    pub data_boost_enabled: bool,
2118    // special fields
2119    pub unknown_fields: ::protobuf::UnknownFields,
2120    pub cached_size: ::protobuf::CachedSize,
2121}
2122
2123impl<'a> ::std::default::Default for &'a ExecuteSqlRequest {
2124    fn default() -> &'a ExecuteSqlRequest {
2125        <ExecuteSqlRequest as ::protobuf::Message>::default_instance()
2126    }
2127}
2128
2129impl ExecuteSqlRequest {
2130    pub fn new() -> ExecuteSqlRequest {
2131        ::std::default::Default::default()
2132    }
2133
2134    // string session = 1;
2135
2136
2137    pub fn get_session(&self) -> &str {
2138        &self.session
2139    }
2140    pub fn clear_session(&mut self) {
2141        self.session.clear();
2142    }
2143
2144    // Param is passed by value, moved
2145    pub fn set_session(&mut self, v: ::std::string::String) {
2146        self.session = v;
2147    }
2148
2149    // Mutable pointer to the field.
2150    // If field is not initialized, it is initialized with default value first.
2151    pub fn mut_session(&mut self) -> &mut ::std::string::String {
2152        &mut self.session
2153    }
2154
2155    // Take field
2156    pub fn take_session(&mut self) -> ::std::string::String {
2157        ::std::mem::replace(&mut self.session, ::std::string::String::new())
2158    }
2159
2160    // .google.spanner.v1.TransactionSelector transaction = 2;
2161
2162
2163    pub fn get_transaction(&self) -> &super::transaction::TransactionSelector {
2164        self.transaction.as_ref().unwrap_or_else(|| <super::transaction::TransactionSelector as ::protobuf::Message>::default_instance())
2165    }
2166    pub fn clear_transaction(&mut self) {
2167        self.transaction.clear();
2168    }
2169
2170    pub fn has_transaction(&self) -> bool {
2171        self.transaction.is_some()
2172    }
2173
2174    // Param is passed by value, moved
2175    pub fn set_transaction(&mut self, v: super::transaction::TransactionSelector) {
2176        self.transaction = ::protobuf::SingularPtrField::some(v);
2177    }
2178
2179    // Mutable pointer to the field.
2180    // If field is not initialized, it is initialized with default value first.
2181    pub fn mut_transaction(&mut self) -> &mut super::transaction::TransactionSelector {
2182        if self.transaction.is_none() {
2183            self.transaction.set_default();
2184        }
2185        self.transaction.as_mut().unwrap()
2186    }
2187
2188    // Take field
2189    pub fn take_transaction(&mut self) -> super::transaction::TransactionSelector {
2190        self.transaction.take().unwrap_or_else(|| super::transaction::TransactionSelector::new())
2191    }
2192
2193    // string sql = 3;
2194
2195
2196    pub fn get_sql(&self) -> &str {
2197        &self.sql
2198    }
2199    pub fn clear_sql(&mut self) {
2200        self.sql.clear();
2201    }
2202
2203    // Param is passed by value, moved
2204    pub fn set_sql(&mut self, v: ::std::string::String) {
2205        self.sql = v;
2206    }
2207
2208    // Mutable pointer to the field.
2209    // If field is not initialized, it is initialized with default value first.
2210    pub fn mut_sql(&mut self) -> &mut ::std::string::String {
2211        &mut self.sql
2212    }
2213
2214    // Take field
2215    pub fn take_sql(&mut self) -> ::std::string::String {
2216        ::std::mem::replace(&mut self.sql, ::std::string::String::new())
2217    }
2218
2219    // .google.protobuf.Struct params = 4;
2220
2221
2222    pub fn get_params(&self) -> &::protobuf::well_known_types::Struct {
2223        self.params.as_ref().unwrap_or_else(|| <::protobuf::well_known_types::Struct as ::protobuf::Message>::default_instance())
2224    }
2225    pub fn clear_params(&mut self) {
2226        self.params.clear();
2227    }
2228
2229    pub fn has_params(&self) -> bool {
2230        self.params.is_some()
2231    }
2232
2233    // Param is passed by value, moved
2234    pub fn set_params(&mut self, v: ::protobuf::well_known_types::Struct) {
2235        self.params = ::protobuf::SingularPtrField::some(v);
2236    }
2237
2238    // Mutable pointer to the field.
2239    // If field is not initialized, it is initialized with default value first.
2240    pub fn mut_params(&mut self) -> &mut ::protobuf::well_known_types::Struct {
2241        if self.params.is_none() {
2242            self.params.set_default();
2243        }
2244        self.params.as_mut().unwrap()
2245    }
2246
2247    // Take field
2248    pub fn take_params(&mut self) -> ::protobuf::well_known_types::Struct {
2249        self.params.take().unwrap_or_else(|| ::protobuf::well_known_types::Struct::new())
2250    }
2251
2252    // repeated .google.spanner.v1.ExecuteSqlRequest.ParamTypesEntry param_types = 5;
2253
2254
2255    pub fn get_param_types(&self) -> &::std::collections::HashMap<::std::string::String, super::type_pb::Type> {
2256        &self.param_types
2257    }
2258    pub fn clear_param_types(&mut self) {
2259        self.param_types.clear();
2260    }
2261
2262    // Param is passed by value, moved
2263    pub fn set_param_types(&mut self, v: ::std::collections::HashMap<::std::string::String, super::type_pb::Type>) {
2264        self.param_types = v;
2265    }
2266
2267    // Mutable pointer to the field.
2268    pub fn mut_param_types(&mut self) -> &mut ::std::collections::HashMap<::std::string::String, super::type_pb::Type> {
2269        &mut self.param_types
2270    }
2271
2272    // Take field
2273    pub fn take_param_types(&mut self) -> ::std::collections::HashMap<::std::string::String, super::type_pb::Type> {
2274        ::std::mem::replace(&mut self.param_types, ::std::collections::HashMap::new())
2275    }
2276
2277    // bytes resume_token = 6;
2278
2279
2280    pub fn get_resume_token(&self) -> &[u8] {
2281        &self.resume_token
2282    }
2283    pub fn clear_resume_token(&mut self) {
2284        self.resume_token.clear();
2285    }
2286
2287    // Param is passed by value, moved
2288    pub fn set_resume_token(&mut self, v: ::std::vec::Vec<u8>) {
2289        self.resume_token = v;
2290    }
2291
2292    // Mutable pointer to the field.
2293    // If field is not initialized, it is initialized with default value first.
2294    pub fn mut_resume_token(&mut self) -> &mut ::std::vec::Vec<u8> {
2295        &mut self.resume_token
2296    }
2297
2298    // Take field
2299    pub fn take_resume_token(&mut self) -> ::std::vec::Vec<u8> {
2300        ::std::mem::replace(&mut self.resume_token, ::std::vec::Vec::new())
2301    }
2302
2303    // .google.spanner.v1.ExecuteSqlRequest.QueryMode query_mode = 7;
2304
2305
2306    pub fn get_query_mode(&self) -> ExecuteSqlRequest_QueryMode {
2307        self.query_mode
2308    }
2309    pub fn clear_query_mode(&mut self) {
2310        self.query_mode = ExecuteSqlRequest_QueryMode::NORMAL;
2311    }
2312
2313    // Param is passed by value, moved
2314    pub fn set_query_mode(&mut self, v: ExecuteSqlRequest_QueryMode) {
2315        self.query_mode = v;
2316    }
2317
2318    // bytes partition_token = 8;
2319
2320
2321    pub fn get_partition_token(&self) -> &[u8] {
2322        &self.partition_token
2323    }
2324    pub fn clear_partition_token(&mut self) {
2325        self.partition_token.clear();
2326    }
2327
2328    // Param is passed by value, moved
2329    pub fn set_partition_token(&mut self, v: ::std::vec::Vec<u8>) {
2330        self.partition_token = v;
2331    }
2332
2333    // Mutable pointer to the field.
2334    // If field is not initialized, it is initialized with default value first.
2335    pub fn mut_partition_token(&mut self) -> &mut ::std::vec::Vec<u8> {
2336        &mut self.partition_token
2337    }
2338
2339    // Take field
2340    pub fn take_partition_token(&mut self) -> ::std::vec::Vec<u8> {
2341        ::std::mem::replace(&mut self.partition_token, ::std::vec::Vec::new())
2342    }
2343
2344    // int64 seqno = 9;
2345
2346
2347    pub fn get_seqno(&self) -> i64 {
2348        self.seqno
2349    }
2350    pub fn clear_seqno(&mut self) {
2351        self.seqno = 0;
2352    }
2353
2354    // Param is passed by value, moved
2355    pub fn set_seqno(&mut self, v: i64) {
2356        self.seqno = v;
2357    }
2358
2359    // .google.spanner.v1.ExecuteSqlRequest.QueryOptions query_options = 10;
2360
2361
2362    pub fn get_query_options(&self) -> &ExecuteSqlRequest_QueryOptions {
2363        self.query_options.as_ref().unwrap_or_else(|| <ExecuteSqlRequest_QueryOptions as ::protobuf::Message>::default_instance())
2364    }
2365    pub fn clear_query_options(&mut self) {
2366        self.query_options.clear();
2367    }
2368
2369    pub fn has_query_options(&self) -> bool {
2370        self.query_options.is_some()
2371    }
2372
2373    // Param is passed by value, moved
2374    pub fn set_query_options(&mut self, v: ExecuteSqlRequest_QueryOptions) {
2375        self.query_options = ::protobuf::SingularPtrField::some(v);
2376    }
2377
2378    // Mutable pointer to the field.
2379    // If field is not initialized, it is initialized with default value first.
2380    pub fn mut_query_options(&mut self) -> &mut ExecuteSqlRequest_QueryOptions {
2381        if self.query_options.is_none() {
2382            self.query_options.set_default();
2383        }
2384        self.query_options.as_mut().unwrap()
2385    }
2386
2387    // Take field
2388    pub fn take_query_options(&mut self) -> ExecuteSqlRequest_QueryOptions {
2389        self.query_options.take().unwrap_or_else(|| ExecuteSqlRequest_QueryOptions::new())
2390    }
2391
2392    // .google.spanner.v1.RequestOptions request_options = 11;
2393
2394
2395    pub fn get_request_options(&self) -> &RequestOptions {
2396        self.request_options.as_ref().unwrap_or_else(|| <RequestOptions as ::protobuf::Message>::default_instance())
2397    }
2398    pub fn clear_request_options(&mut self) {
2399        self.request_options.clear();
2400    }
2401
2402    pub fn has_request_options(&self) -> bool {
2403        self.request_options.is_some()
2404    }
2405
2406    // Param is passed by value, moved
2407    pub fn set_request_options(&mut self, v: RequestOptions) {
2408        self.request_options = ::protobuf::SingularPtrField::some(v);
2409    }
2410
2411    // Mutable pointer to the field.
2412    // If field is not initialized, it is initialized with default value first.
2413    pub fn mut_request_options(&mut self) -> &mut RequestOptions {
2414        if self.request_options.is_none() {
2415            self.request_options.set_default();
2416        }
2417        self.request_options.as_mut().unwrap()
2418    }
2419
2420    // Take field
2421    pub fn take_request_options(&mut self) -> RequestOptions {
2422        self.request_options.take().unwrap_or_else(|| RequestOptions::new())
2423    }
2424
2425    // bool data_boost_enabled = 16;
2426
2427
2428    pub fn get_data_boost_enabled(&self) -> bool {
2429        self.data_boost_enabled
2430    }
2431    pub fn clear_data_boost_enabled(&mut self) {
2432        self.data_boost_enabled = false;
2433    }
2434
2435    // Param is passed by value, moved
2436    pub fn set_data_boost_enabled(&mut self, v: bool) {
2437        self.data_boost_enabled = v;
2438    }
2439}
2440
2441impl ::protobuf::Message for ExecuteSqlRequest {
2442    fn is_initialized(&self) -> bool {
2443        for v in &self.transaction {
2444            if !v.is_initialized() {
2445                return false;
2446            }
2447        };
2448        for v in &self.params {
2449            if !v.is_initialized() {
2450                return false;
2451            }
2452        };
2453        for v in &self.query_options {
2454            if !v.is_initialized() {
2455                return false;
2456            }
2457        };
2458        for v in &self.request_options {
2459            if !v.is_initialized() {
2460                return false;
2461            }
2462        };
2463        true
2464    }
2465
2466    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2467        while !is.eof()? {
2468            let (field_number, wire_type) = is.read_tag_unpack()?;
2469            match field_number {
2470                1 => {
2471                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.session)?;
2472                },
2473                2 => {
2474                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.transaction)?;
2475                },
2476                3 => {
2477                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.sql)?;
2478                },
2479                4 => {
2480                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.params)?;
2481                },
2482                5 => {
2483                    ::protobuf::rt::read_map_into::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::type_pb::Type>>(wire_type, is, &mut self.param_types)?;
2484                },
2485                6 => {
2486                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.resume_token)?;
2487                },
2488                7 => {
2489                    ::protobuf::rt::read_proto3_enum_with_unknown_fields_into(wire_type, is, &mut self.query_mode, 7, &mut self.unknown_fields)?
2490                },
2491                8 => {
2492                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.partition_token)?;
2493                },
2494                9 => {
2495                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
2496                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
2497                    }
2498                    let tmp = is.read_int64()?;
2499                    self.seqno = tmp;
2500                },
2501                10 => {
2502                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.query_options)?;
2503                },
2504                11 => {
2505                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.request_options)?;
2506                },
2507                16 => {
2508                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
2509                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
2510                    }
2511                    let tmp = is.read_bool()?;
2512                    self.data_boost_enabled = tmp;
2513                },
2514                _ => {
2515                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
2516                },
2517            };
2518        }
2519        ::std::result::Result::Ok(())
2520    }
2521
2522    // Compute sizes of nested messages
2523    #[allow(unused_variables)]
2524    fn compute_size(&self) -> u32 {
2525        let mut my_size = 0;
2526        if !self.session.is_empty() {
2527            my_size += ::protobuf::rt::string_size(1, &self.session);
2528        }
2529        if let Some(ref v) = self.transaction.as_ref() {
2530            let len = v.compute_size();
2531            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
2532        }
2533        if !self.sql.is_empty() {
2534            my_size += ::protobuf::rt::string_size(3, &self.sql);
2535        }
2536        if let Some(ref v) = self.params.as_ref() {
2537            let len = v.compute_size();
2538            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
2539        }
2540        my_size += ::protobuf::rt::compute_map_size::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::type_pb::Type>>(5, &self.param_types);
2541        if !self.resume_token.is_empty() {
2542            my_size += ::protobuf::rt::bytes_size(6, &self.resume_token);
2543        }
2544        if self.query_mode != ExecuteSqlRequest_QueryMode::NORMAL {
2545            my_size += ::protobuf::rt::enum_size(7, self.query_mode);
2546        }
2547        if !self.partition_token.is_empty() {
2548            my_size += ::protobuf::rt::bytes_size(8, &self.partition_token);
2549        }
2550        if self.seqno != 0 {
2551            my_size += ::protobuf::rt::value_size(9, self.seqno, ::protobuf::wire_format::WireTypeVarint);
2552        }
2553        if let Some(ref v) = self.query_options.as_ref() {
2554            let len = v.compute_size();
2555            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
2556        }
2557        if let Some(ref v) = self.request_options.as_ref() {
2558            let len = v.compute_size();
2559            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
2560        }
2561        if self.data_boost_enabled != false {
2562            my_size += 3;
2563        }
2564        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
2565        self.cached_size.set(my_size);
2566        my_size
2567    }
2568
2569    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2570        if !self.session.is_empty() {
2571            os.write_string(1, &self.session)?;
2572        }
2573        if let Some(ref v) = self.transaction.as_ref() {
2574            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
2575            os.write_raw_varint32(v.get_cached_size())?;
2576            v.write_to_with_cached_sizes(os)?;
2577        }
2578        if !self.sql.is_empty() {
2579            os.write_string(3, &self.sql)?;
2580        }
2581        if let Some(ref v) = self.params.as_ref() {
2582            os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
2583            os.write_raw_varint32(v.get_cached_size())?;
2584            v.write_to_with_cached_sizes(os)?;
2585        }
2586        ::protobuf::rt::write_map_with_cached_sizes::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::type_pb::Type>>(5, &self.param_types, os)?;
2587        if !self.resume_token.is_empty() {
2588            os.write_bytes(6, &self.resume_token)?;
2589        }
2590        if self.query_mode != ExecuteSqlRequest_QueryMode::NORMAL {
2591            os.write_enum(7, ::protobuf::ProtobufEnum::value(&self.query_mode))?;
2592        }
2593        if !self.partition_token.is_empty() {
2594            os.write_bytes(8, &self.partition_token)?;
2595        }
2596        if self.seqno != 0 {
2597            os.write_int64(9, self.seqno)?;
2598        }
2599        if let Some(ref v) = self.query_options.as_ref() {
2600            os.write_tag(10, ::protobuf::wire_format::WireTypeLengthDelimited)?;
2601            os.write_raw_varint32(v.get_cached_size())?;
2602            v.write_to_with_cached_sizes(os)?;
2603        }
2604        if let Some(ref v) = self.request_options.as_ref() {
2605            os.write_tag(11, ::protobuf::wire_format::WireTypeLengthDelimited)?;
2606            os.write_raw_varint32(v.get_cached_size())?;
2607            v.write_to_with_cached_sizes(os)?;
2608        }
2609        if self.data_boost_enabled != false {
2610            os.write_bool(16, self.data_boost_enabled)?;
2611        }
2612        os.write_unknown_fields(self.get_unknown_fields())?;
2613        ::std::result::Result::Ok(())
2614    }
2615
2616    fn get_cached_size(&self) -> u32 {
2617        self.cached_size.get()
2618    }
2619
2620    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
2621        &self.unknown_fields
2622    }
2623
2624    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
2625        &mut self.unknown_fields
2626    }
2627
2628    fn as_any(&self) -> &dyn (::std::any::Any) {
2629        self as &dyn (::std::any::Any)
2630    }
2631    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
2632        self as &mut dyn (::std::any::Any)
2633    }
2634    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
2635        self
2636    }
2637
2638    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
2639        Self::descriptor_static()
2640    }
2641
2642    fn new() -> ExecuteSqlRequest {
2643        ExecuteSqlRequest::new()
2644    }
2645
2646    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
2647        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
2648        descriptor.get(|| {
2649            let mut fields = ::std::vec::Vec::new();
2650            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
2651                "session",
2652                |m: &ExecuteSqlRequest| { &m.session },
2653                |m: &mut ExecuteSqlRequest| { &mut m.session },
2654            ));
2655            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::transaction::TransactionSelector>>(
2656                "transaction",
2657                |m: &ExecuteSqlRequest| { &m.transaction },
2658                |m: &mut ExecuteSqlRequest| { &mut m.transaction },
2659            ));
2660            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
2661                "sql",
2662                |m: &ExecuteSqlRequest| { &m.sql },
2663                |m: &mut ExecuteSqlRequest| { &mut m.sql },
2664            ));
2665            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Struct>>(
2666                "params",
2667                |m: &ExecuteSqlRequest| { &m.params },
2668                |m: &mut ExecuteSqlRequest| { &mut m.params },
2669            ));
2670            fields.push(::protobuf::reflect::accessor::make_map_accessor::<_, ::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::type_pb::Type>>(
2671                "param_types",
2672                |m: &ExecuteSqlRequest| { &m.param_types },
2673                |m: &mut ExecuteSqlRequest| { &mut m.param_types },
2674            ));
2675            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
2676                "resume_token",
2677                |m: &ExecuteSqlRequest| { &m.resume_token },
2678                |m: &mut ExecuteSqlRequest| { &mut m.resume_token },
2679            ));
2680            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeEnum<ExecuteSqlRequest_QueryMode>>(
2681                "query_mode",
2682                |m: &ExecuteSqlRequest| { &m.query_mode },
2683                |m: &mut ExecuteSqlRequest| { &mut m.query_mode },
2684            ));
2685            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
2686                "partition_token",
2687                |m: &ExecuteSqlRequest| { &m.partition_token },
2688                |m: &mut ExecuteSqlRequest| { &mut m.partition_token },
2689            ));
2690            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
2691                "seqno",
2692                |m: &ExecuteSqlRequest| { &m.seqno },
2693                |m: &mut ExecuteSqlRequest| { &mut m.seqno },
2694            ));
2695            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<ExecuteSqlRequest_QueryOptions>>(
2696                "query_options",
2697                |m: &ExecuteSqlRequest| { &m.query_options },
2698                |m: &mut ExecuteSqlRequest| { &mut m.query_options },
2699            ));
2700            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<RequestOptions>>(
2701                "request_options",
2702                |m: &ExecuteSqlRequest| { &m.request_options },
2703                |m: &mut ExecuteSqlRequest| { &mut m.request_options },
2704            ));
2705            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
2706                "data_boost_enabled",
2707                |m: &ExecuteSqlRequest| { &m.data_boost_enabled },
2708                |m: &mut ExecuteSqlRequest| { &mut m.data_boost_enabled },
2709            ));
2710            ::protobuf::reflect::MessageDescriptor::new_pb_name::<ExecuteSqlRequest>(
2711                "ExecuteSqlRequest",
2712                fields,
2713                file_descriptor_proto()
2714            )
2715        })
2716    }
2717
2718    fn default_instance() -> &'static ExecuteSqlRequest {
2719        static instance: ::protobuf::rt::LazyV2<ExecuteSqlRequest> = ::protobuf::rt::LazyV2::INIT;
2720        instance.get(ExecuteSqlRequest::new)
2721    }
2722}
2723
2724impl ::protobuf::Clear for ExecuteSqlRequest {
2725    fn clear(&mut self) {
2726        self.session.clear();
2727        self.transaction.clear();
2728        self.sql.clear();
2729        self.params.clear();
2730        self.param_types.clear();
2731        self.resume_token.clear();
2732        self.query_mode = ExecuteSqlRequest_QueryMode::NORMAL;
2733        self.partition_token.clear();
2734        self.seqno = 0;
2735        self.query_options.clear();
2736        self.request_options.clear();
2737        self.data_boost_enabled = false;
2738        self.unknown_fields.clear();
2739    }
2740}
2741
2742impl ::std::fmt::Debug for ExecuteSqlRequest {
2743    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2744        ::protobuf::text_format::fmt(self, f)
2745    }
2746}
2747
2748impl ::protobuf::reflect::ProtobufValue for ExecuteSqlRequest {
2749    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
2750        ::protobuf::reflect::ReflectValueRef::Message(self)
2751    }
2752}
2753
2754#[derive(PartialEq,Clone,Default)]
2755pub struct ExecuteSqlRequest_QueryOptions {
2756    // message fields
2757    pub optimizer_version: ::std::string::String,
2758    pub optimizer_statistics_package: ::std::string::String,
2759    // special fields
2760    pub unknown_fields: ::protobuf::UnknownFields,
2761    pub cached_size: ::protobuf::CachedSize,
2762}
2763
2764impl<'a> ::std::default::Default for &'a ExecuteSqlRequest_QueryOptions {
2765    fn default() -> &'a ExecuteSqlRequest_QueryOptions {
2766        <ExecuteSqlRequest_QueryOptions as ::protobuf::Message>::default_instance()
2767    }
2768}
2769
2770impl ExecuteSqlRequest_QueryOptions {
2771    pub fn new() -> ExecuteSqlRequest_QueryOptions {
2772        ::std::default::Default::default()
2773    }
2774
2775    // string optimizer_version = 1;
2776
2777
2778    pub fn get_optimizer_version(&self) -> &str {
2779        &self.optimizer_version
2780    }
2781    pub fn clear_optimizer_version(&mut self) {
2782        self.optimizer_version.clear();
2783    }
2784
2785    // Param is passed by value, moved
2786    pub fn set_optimizer_version(&mut self, v: ::std::string::String) {
2787        self.optimizer_version = v;
2788    }
2789
2790    // Mutable pointer to the field.
2791    // If field is not initialized, it is initialized with default value first.
2792    pub fn mut_optimizer_version(&mut self) -> &mut ::std::string::String {
2793        &mut self.optimizer_version
2794    }
2795
2796    // Take field
2797    pub fn take_optimizer_version(&mut self) -> ::std::string::String {
2798        ::std::mem::replace(&mut self.optimizer_version, ::std::string::String::new())
2799    }
2800
2801    // string optimizer_statistics_package = 2;
2802
2803
2804    pub fn get_optimizer_statistics_package(&self) -> &str {
2805        &self.optimizer_statistics_package
2806    }
2807    pub fn clear_optimizer_statistics_package(&mut self) {
2808        self.optimizer_statistics_package.clear();
2809    }
2810
2811    // Param is passed by value, moved
2812    pub fn set_optimizer_statistics_package(&mut self, v: ::std::string::String) {
2813        self.optimizer_statistics_package = v;
2814    }
2815
2816    // Mutable pointer to the field.
2817    // If field is not initialized, it is initialized with default value first.
2818    pub fn mut_optimizer_statistics_package(&mut self) -> &mut ::std::string::String {
2819        &mut self.optimizer_statistics_package
2820    }
2821
2822    // Take field
2823    pub fn take_optimizer_statistics_package(&mut self) -> ::std::string::String {
2824        ::std::mem::replace(&mut self.optimizer_statistics_package, ::std::string::String::new())
2825    }
2826}
2827
2828impl ::protobuf::Message for ExecuteSqlRequest_QueryOptions {
2829    fn is_initialized(&self) -> bool {
2830        true
2831    }
2832
2833    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2834        while !is.eof()? {
2835            let (field_number, wire_type) = is.read_tag_unpack()?;
2836            match field_number {
2837                1 => {
2838                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.optimizer_version)?;
2839                },
2840                2 => {
2841                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.optimizer_statistics_package)?;
2842                },
2843                _ => {
2844                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
2845                },
2846            };
2847        }
2848        ::std::result::Result::Ok(())
2849    }
2850
2851    // Compute sizes of nested messages
2852    #[allow(unused_variables)]
2853    fn compute_size(&self) -> u32 {
2854        let mut my_size = 0;
2855        if !self.optimizer_version.is_empty() {
2856            my_size += ::protobuf::rt::string_size(1, &self.optimizer_version);
2857        }
2858        if !self.optimizer_statistics_package.is_empty() {
2859            my_size += ::protobuf::rt::string_size(2, &self.optimizer_statistics_package);
2860        }
2861        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
2862        self.cached_size.set(my_size);
2863        my_size
2864    }
2865
2866    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
2867        if !self.optimizer_version.is_empty() {
2868            os.write_string(1, &self.optimizer_version)?;
2869        }
2870        if !self.optimizer_statistics_package.is_empty() {
2871            os.write_string(2, &self.optimizer_statistics_package)?;
2872        }
2873        os.write_unknown_fields(self.get_unknown_fields())?;
2874        ::std::result::Result::Ok(())
2875    }
2876
2877    fn get_cached_size(&self) -> u32 {
2878        self.cached_size.get()
2879    }
2880
2881    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
2882        &self.unknown_fields
2883    }
2884
2885    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
2886        &mut self.unknown_fields
2887    }
2888
2889    fn as_any(&self) -> &dyn (::std::any::Any) {
2890        self as &dyn (::std::any::Any)
2891    }
2892    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
2893        self as &mut dyn (::std::any::Any)
2894    }
2895    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
2896        self
2897    }
2898
2899    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
2900        Self::descriptor_static()
2901    }
2902
2903    fn new() -> ExecuteSqlRequest_QueryOptions {
2904        ExecuteSqlRequest_QueryOptions::new()
2905    }
2906
2907    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
2908        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
2909        descriptor.get(|| {
2910            let mut fields = ::std::vec::Vec::new();
2911            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
2912                "optimizer_version",
2913                |m: &ExecuteSqlRequest_QueryOptions| { &m.optimizer_version },
2914                |m: &mut ExecuteSqlRequest_QueryOptions| { &mut m.optimizer_version },
2915            ));
2916            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
2917                "optimizer_statistics_package",
2918                |m: &ExecuteSqlRequest_QueryOptions| { &m.optimizer_statistics_package },
2919                |m: &mut ExecuteSqlRequest_QueryOptions| { &mut m.optimizer_statistics_package },
2920            ));
2921            ::protobuf::reflect::MessageDescriptor::new_pb_name::<ExecuteSqlRequest_QueryOptions>(
2922                "ExecuteSqlRequest.QueryOptions",
2923                fields,
2924                file_descriptor_proto()
2925            )
2926        })
2927    }
2928
2929    fn default_instance() -> &'static ExecuteSqlRequest_QueryOptions {
2930        static instance: ::protobuf::rt::LazyV2<ExecuteSqlRequest_QueryOptions> = ::protobuf::rt::LazyV2::INIT;
2931        instance.get(ExecuteSqlRequest_QueryOptions::new)
2932    }
2933}
2934
2935impl ::protobuf::Clear for ExecuteSqlRequest_QueryOptions {
2936    fn clear(&mut self) {
2937        self.optimizer_version.clear();
2938        self.optimizer_statistics_package.clear();
2939        self.unknown_fields.clear();
2940    }
2941}
2942
2943impl ::std::fmt::Debug for ExecuteSqlRequest_QueryOptions {
2944    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2945        ::protobuf::text_format::fmt(self, f)
2946    }
2947}
2948
2949impl ::protobuf::reflect::ProtobufValue for ExecuteSqlRequest_QueryOptions {
2950    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
2951        ::protobuf::reflect::ReflectValueRef::Message(self)
2952    }
2953}
2954
2955#[derive(Clone,PartialEq,Eq,Debug,Hash)]
2956pub enum ExecuteSqlRequest_QueryMode {
2957    NORMAL = 0,
2958    PLAN = 1,
2959    PROFILE = 2,
2960}
2961
2962impl ::protobuf::ProtobufEnum for ExecuteSqlRequest_QueryMode {
2963    fn value(&self) -> i32 {
2964        *self as i32
2965    }
2966
2967    fn from_i32(value: i32) -> ::std::option::Option<ExecuteSqlRequest_QueryMode> {
2968        match value {
2969            0 => ::std::option::Option::Some(ExecuteSqlRequest_QueryMode::NORMAL),
2970            1 => ::std::option::Option::Some(ExecuteSqlRequest_QueryMode::PLAN),
2971            2 => ::std::option::Option::Some(ExecuteSqlRequest_QueryMode::PROFILE),
2972            _ => ::std::option::Option::None
2973        }
2974    }
2975
2976    fn values() -> &'static [Self] {
2977        static values: &'static [ExecuteSqlRequest_QueryMode] = &[
2978            ExecuteSqlRequest_QueryMode::NORMAL,
2979            ExecuteSqlRequest_QueryMode::PLAN,
2980            ExecuteSqlRequest_QueryMode::PROFILE,
2981        ];
2982        values
2983    }
2984
2985    fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor {
2986        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT;
2987        descriptor.get(|| {
2988            ::protobuf::reflect::EnumDescriptor::new_pb_name::<ExecuteSqlRequest_QueryMode>("ExecuteSqlRequest.QueryMode", file_descriptor_proto())
2989        })
2990    }
2991}
2992
2993impl ::std::marker::Copy for ExecuteSqlRequest_QueryMode {
2994}
2995
2996impl ::std::default::Default for ExecuteSqlRequest_QueryMode {
2997    fn default() -> Self {
2998        ExecuteSqlRequest_QueryMode::NORMAL
2999    }
3000}
3001
3002impl ::protobuf::reflect::ProtobufValue for ExecuteSqlRequest_QueryMode {
3003    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
3004        ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self))
3005    }
3006}
3007
3008#[derive(PartialEq,Clone,Default)]
3009pub struct ExecuteBatchDmlRequest {
3010    // message fields
3011    pub session: ::std::string::String,
3012    pub transaction: ::protobuf::SingularPtrField<super::transaction::TransactionSelector>,
3013    pub statements: ::protobuf::RepeatedField<ExecuteBatchDmlRequest_Statement>,
3014    pub seqno: i64,
3015    pub request_options: ::protobuf::SingularPtrField<RequestOptions>,
3016    // special fields
3017    pub unknown_fields: ::protobuf::UnknownFields,
3018    pub cached_size: ::protobuf::CachedSize,
3019}
3020
3021impl<'a> ::std::default::Default for &'a ExecuteBatchDmlRequest {
3022    fn default() -> &'a ExecuteBatchDmlRequest {
3023        <ExecuteBatchDmlRequest as ::protobuf::Message>::default_instance()
3024    }
3025}
3026
3027impl ExecuteBatchDmlRequest {
3028    pub fn new() -> ExecuteBatchDmlRequest {
3029        ::std::default::Default::default()
3030    }
3031
3032    // string session = 1;
3033
3034
3035    pub fn get_session(&self) -> &str {
3036        &self.session
3037    }
3038    pub fn clear_session(&mut self) {
3039        self.session.clear();
3040    }
3041
3042    // Param is passed by value, moved
3043    pub fn set_session(&mut self, v: ::std::string::String) {
3044        self.session = v;
3045    }
3046
3047    // Mutable pointer to the field.
3048    // If field is not initialized, it is initialized with default value first.
3049    pub fn mut_session(&mut self) -> &mut ::std::string::String {
3050        &mut self.session
3051    }
3052
3053    // Take field
3054    pub fn take_session(&mut self) -> ::std::string::String {
3055        ::std::mem::replace(&mut self.session, ::std::string::String::new())
3056    }
3057
3058    // .google.spanner.v1.TransactionSelector transaction = 2;
3059
3060
3061    pub fn get_transaction(&self) -> &super::transaction::TransactionSelector {
3062        self.transaction.as_ref().unwrap_or_else(|| <super::transaction::TransactionSelector as ::protobuf::Message>::default_instance())
3063    }
3064    pub fn clear_transaction(&mut self) {
3065        self.transaction.clear();
3066    }
3067
3068    pub fn has_transaction(&self) -> bool {
3069        self.transaction.is_some()
3070    }
3071
3072    // Param is passed by value, moved
3073    pub fn set_transaction(&mut self, v: super::transaction::TransactionSelector) {
3074        self.transaction = ::protobuf::SingularPtrField::some(v);
3075    }
3076
3077    // Mutable pointer to the field.
3078    // If field is not initialized, it is initialized with default value first.
3079    pub fn mut_transaction(&mut self) -> &mut super::transaction::TransactionSelector {
3080        if self.transaction.is_none() {
3081            self.transaction.set_default();
3082        }
3083        self.transaction.as_mut().unwrap()
3084    }
3085
3086    // Take field
3087    pub fn take_transaction(&mut self) -> super::transaction::TransactionSelector {
3088        self.transaction.take().unwrap_or_else(|| super::transaction::TransactionSelector::new())
3089    }
3090
3091    // repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3;
3092
3093
3094    pub fn get_statements(&self) -> &[ExecuteBatchDmlRequest_Statement] {
3095        &self.statements
3096    }
3097    pub fn clear_statements(&mut self) {
3098        self.statements.clear();
3099    }
3100
3101    // Param is passed by value, moved
3102    pub fn set_statements(&mut self, v: ::protobuf::RepeatedField<ExecuteBatchDmlRequest_Statement>) {
3103        self.statements = v;
3104    }
3105
3106    // Mutable pointer to the field.
3107    pub fn mut_statements(&mut self) -> &mut ::protobuf::RepeatedField<ExecuteBatchDmlRequest_Statement> {
3108        &mut self.statements
3109    }
3110
3111    // Take field
3112    pub fn take_statements(&mut self) -> ::protobuf::RepeatedField<ExecuteBatchDmlRequest_Statement> {
3113        ::std::mem::replace(&mut self.statements, ::protobuf::RepeatedField::new())
3114    }
3115
3116    // int64 seqno = 4;
3117
3118
3119    pub fn get_seqno(&self) -> i64 {
3120        self.seqno
3121    }
3122    pub fn clear_seqno(&mut self) {
3123        self.seqno = 0;
3124    }
3125
3126    // Param is passed by value, moved
3127    pub fn set_seqno(&mut self, v: i64) {
3128        self.seqno = v;
3129    }
3130
3131    // .google.spanner.v1.RequestOptions request_options = 5;
3132
3133
3134    pub fn get_request_options(&self) -> &RequestOptions {
3135        self.request_options.as_ref().unwrap_or_else(|| <RequestOptions as ::protobuf::Message>::default_instance())
3136    }
3137    pub fn clear_request_options(&mut self) {
3138        self.request_options.clear();
3139    }
3140
3141    pub fn has_request_options(&self) -> bool {
3142        self.request_options.is_some()
3143    }
3144
3145    // Param is passed by value, moved
3146    pub fn set_request_options(&mut self, v: RequestOptions) {
3147        self.request_options = ::protobuf::SingularPtrField::some(v);
3148    }
3149
3150    // Mutable pointer to the field.
3151    // If field is not initialized, it is initialized with default value first.
3152    pub fn mut_request_options(&mut self) -> &mut RequestOptions {
3153        if self.request_options.is_none() {
3154            self.request_options.set_default();
3155        }
3156        self.request_options.as_mut().unwrap()
3157    }
3158
3159    // Take field
3160    pub fn take_request_options(&mut self) -> RequestOptions {
3161        self.request_options.take().unwrap_or_else(|| RequestOptions::new())
3162    }
3163}
3164
3165impl ::protobuf::Message for ExecuteBatchDmlRequest {
3166    fn is_initialized(&self) -> bool {
3167        for v in &self.transaction {
3168            if !v.is_initialized() {
3169                return false;
3170            }
3171        };
3172        for v in &self.statements {
3173            if !v.is_initialized() {
3174                return false;
3175            }
3176        };
3177        for v in &self.request_options {
3178            if !v.is_initialized() {
3179                return false;
3180            }
3181        };
3182        true
3183    }
3184
3185    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
3186        while !is.eof()? {
3187            let (field_number, wire_type) = is.read_tag_unpack()?;
3188            match field_number {
3189                1 => {
3190                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.session)?;
3191                },
3192                2 => {
3193                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.transaction)?;
3194                },
3195                3 => {
3196                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.statements)?;
3197                },
3198                4 => {
3199                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3200                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3201                    }
3202                    let tmp = is.read_int64()?;
3203                    self.seqno = tmp;
3204                },
3205                5 => {
3206                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.request_options)?;
3207                },
3208                _ => {
3209                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
3210                },
3211            };
3212        }
3213        ::std::result::Result::Ok(())
3214    }
3215
3216    // Compute sizes of nested messages
3217    #[allow(unused_variables)]
3218    fn compute_size(&self) -> u32 {
3219        let mut my_size = 0;
3220        if !self.session.is_empty() {
3221            my_size += ::protobuf::rt::string_size(1, &self.session);
3222        }
3223        if let Some(ref v) = self.transaction.as_ref() {
3224            let len = v.compute_size();
3225            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
3226        }
3227        for value in &self.statements {
3228            let len = value.compute_size();
3229            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
3230        };
3231        if self.seqno != 0 {
3232            my_size += ::protobuf::rt::value_size(4, self.seqno, ::protobuf::wire_format::WireTypeVarint);
3233        }
3234        if let Some(ref v) = self.request_options.as_ref() {
3235            let len = v.compute_size();
3236            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
3237        }
3238        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
3239        self.cached_size.set(my_size);
3240        my_size
3241    }
3242
3243    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
3244        if !self.session.is_empty() {
3245            os.write_string(1, &self.session)?;
3246        }
3247        if let Some(ref v) = self.transaction.as_ref() {
3248            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
3249            os.write_raw_varint32(v.get_cached_size())?;
3250            v.write_to_with_cached_sizes(os)?;
3251        }
3252        for v in &self.statements {
3253            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
3254            os.write_raw_varint32(v.get_cached_size())?;
3255            v.write_to_with_cached_sizes(os)?;
3256        };
3257        if self.seqno != 0 {
3258            os.write_int64(4, self.seqno)?;
3259        }
3260        if let Some(ref v) = self.request_options.as_ref() {
3261            os.write_tag(5, ::protobuf::wire_format::WireTypeLengthDelimited)?;
3262            os.write_raw_varint32(v.get_cached_size())?;
3263            v.write_to_with_cached_sizes(os)?;
3264        }
3265        os.write_unknown_fields(self.get_unknown_fields())?;
3266        ::std::result::Result::Ok(())
3267    }
3268
3269    fn get_cached_size(&self) -> u32 {
3270        self.cached_size.get()
3271    }
3272
3273    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
3274        &self.unknown_fields
3275    }
3276
3277    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
3278        &mut self.unknown_fields
3279    }
3280
3281    fn as_any(&self) -> &dyn (::std::any::Any) {
3282        self as &dyn (::std::any::Any)
3283    }
3284    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
3285        self as &mut dyn (::std::any::Any)
3286    }
3287    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
3288        self
3289    }
3290
3291    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
3292        Self::descriptor_static()
3293    }
3294
3295    fn new() -> ExecuteBatchDmlRequest {
3296        ExecuteBatchDmlRequest::new()
3297    }
3298
3299    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
3300        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
3301        descriptor.get(|| {
3302            let mut fields = ::std::vec::Vec::new();
3303            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
3304                "session",
3305                |m: &ExecuteBatchDmlRequest| { &m.session },
3306                |m: &mut ExecuteBatchDmlRequest| { &mut m.session },
3307            ));
3308            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::transaction::TransactionSelector>>(
3309                "transaction",
3310                |m: &ExecuteBatchDmlRequest| { &m.transaction },
3311                |m: &mut ExecuteBatchDmlRequest| { &mut m.transaction },
3312            ));
3313            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<ExecuteBatchDmlRequest_Statement>>(
3314                "statements",
3315                |m: &ExecuteBatchDmlRequest| { &m.statements },
3316                |m: &mut ExecuteBatchDmlRequest| { &mut m.statements },
3317            ));
3318            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
3319                "seqno",
3320                |m: &ExecuteBatchDmlRequest| { &m.seqno },
3321                |m: &mut ExecuteBatchDmlRequest| { &mut m.seqno },
3322            ));
3323            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<RequestOptions>>(
3324                "request_options",
3325                |m: &ExecuteBatchDmlRequest| { &m.request_options },
3326                |m: &mut ExecuteBatchDmlRequest| { &mut m.request_options },
3327            ));
3328            ::protobuf::reflect::MessageDescriptor::new_pb_name::<ExecuteBatchDmlRequest>(
3329                "ExecuteBatchDmlRequest",
3330                fields,
3331                file_descriptor_proto()
3332            )
3333        })
3334    }
3335
3336    fn default_instance() -> &'static ExecuteBatchDmlRequest {
3337        static instance: ::protobuf::rt::LazyV2<ExecuteBatchDmlRequest> = ::protobuf::rt::LazyV2::INIT;
3338        instance.get(ExecuteBatchDmlRequest::new)
3339    }
3340}
3341
3342impl ::protobuf::Clear for ExecuteBatchDmlRequest {
3343    fn clear(&mut self) {
3344        self.session.clear();
3345        self.transaction.clear();
3346        self.statements.clear();
3347        self.seqno = 0;
3348        self.request_options.clear();
3349        self.unknown_fields.clear();
3350    }
3351}
3352
3353impl ::std::fmt::Debug for ExecuteBatchDmlRequest {
3354    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3355        ::protobuf::text_format::fmt(self, f)
3356    }
3357}
3358
3359impl ::protobuf::reflect::ProtobufValue for ExecuteBatchDmlRequest {
3360    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
3361        ::protobuf::reflect::ReflectValueRef::Message(self)
3362    }
3363}
3364
3365#[derive(PartialEq,Clone,Default)]
3366pub struct ExecuteBatchDmlRequest_Statement {
3367    // message fields
3368    pub sql: ::std::string::String,
3369    pub params: ::protobuf::SingularPtrField<::protobuf::well_known_types::Struct>,
3370    pub param_types: ::std::collections::HashMap<::std::string::String, super::type_pb::Type>,
3371    // special fields
3372    pub unknown_fields: ::protobuf::UnknownFields,
3373    pub cached_size: ::protobuf::CachedSize,
3374}
3375
3376impl<'a> ::std::default::Default for &'a ExecuteBatchDmlRequest_Statement {
3377    fn default() -> &'a ExecuteBatchDmlRequest_Statement {
3378        <ExecuteBatchDmlRequest_Statement as ::protobuf::Message>::default_instance()
3379    }
3380}
3381
3382impl ExecuteBatchDmlRequest_Statement {
3383    pub fn new() -> ExecuteBatchDmlRequest_Statement {
3384        ::std::default::Default::default()
3385    }
3386
3387    // string sql = 1;
3388
3389
3390    pub fn get_sql(&self) -> &str {
3391        &self.sql
3392    }
3393    pub fn clear_sql(&mut self) {
3394        self.sql.clear();
3395    }
3396
3397    // Param is passed by value, moved
3398    pub fn set_sql(&mut self, v: ::std::string::String) {
3399        self.sql = v;
3400    }
3401
3402    // Mutable pointer to the field.
3403    // If field is not initialized, it is initialized with default value first.
3404    pub fn mut_sql(&mut self) -> &mut ::std::string::String {
3405        &mut self.sql
3406    }
3407
3408    // Take field
3409    pub fn take_sql(&mut self) -> ::std::string::String {
3410        ::std::mem::replace(&mut self.sql, ::std::string::String::new())
3411    }
3412
3413    // .google.protobuf.Struct params = 2;
3414
3415
3416    pub fn get_params(&self) -> &::protobuf::well_known_types::Struct {
3417        self.params.as_ref().unwrap_or_else(|| <::protobuf::well_known_types::Struct as ::protobuf::Message>::default_instance())
3418    }
3419    pub fn clear_params(&mut self) {
3420        self.params.clear();
3421    }
3422
3423    pub fn has_params(&self) -> bool {
3424        self.params.is_some()
3425    }
3426
3427    // Param is passed by value, moved
3428    pub fn set_params(&mut self, v: ::protobuf::well_known_types::Struct) {
3429        self.params = ::protobuf::SingularPtrField::some(v);
3430    }
3431
3432    // Mutable pointer to the field.
3433    // If field is not initialized, it is initialized with default value first.
3434    pub fn mut_params(&mut self) -> &mut ::protobuf::well_known_types::Struct {
3435        if self.params.is_none() {
3436            self.params.set_default();
3437        }
3438        self.params.as_mut().unwrap()
3439    }
3440
3441    // Take field
3442    pub fn take_params(&mut self) -> ::protobuf::well_known_types::Struct {
3443        self.params.take().unwrap_or_else(|| ::protobuf::well_known_types::Struct::new())
3444    }
3445
3446    // repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement.ParamTypesEntry param_types = 3;
3447
3448
3449    pub fn get_param_types(&self) -> &::std::collections::HashMap<::std::string::String, super::type_pb::Type> {
3450        &self.param_types
3451    }
3452    pub fn clear_param_types(&mut self) {
3453        self.param_types.clear();
3454    }
3455
3456    // Param is passed by value, moved
3457    pub fn set_param_types(&mut self, v: ::std::collections::HashMap<::std::string::String, super::type_pb::Type>) {
3458        self.param_types = v;
3459    }
3460
3461    // Mutable pointer to the field.
3462    pub fn mut_param_types(&mut self) -> &mut ::std::collections::HashMap<::std::string::String, super::type_pb::Type> {
3463        &mut self.param_types
3464    }
3465
3466    // Take field
3467    pub fn take_param_types(&mut self) -> ::std::collections::HashMap<::std::string::String, super::type_pb::Type> {
3468        ::std::mem::replace(&mut self.param_types, ::std::collections::HashMap::new())
3469    }
3470}
3471
3472impl ::protobuf::Message for ExecuteBatchDmlRequest_Statement {
3473    fn is_initialized(&self) -> bool {
3474        for v in &self.params {
3475            if !v.is_initialized() {
3476                return false;
3477            }
3478        };
3479        true
3480    }
3481
3482    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
3483        while !is.eof()? {
3484            let (field_number, wire_type) = is.read_tag_unpack()?;
3485            match field_number {
3486                1 => {
3487                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.sql)?;
3488                },
3489                2 => {
3490                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.params)?;
3491                },
3492                3 => {
3493                    ::protobuf::rt::read_map_into::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::type_pb::Type>>(wire_type, is, &mut self.param_types)?;
3494                },
3495                _ => {
3496                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
3497                },
3498            };
3499        }
3500        ::std::result::Result::Ok(())
3501    }
3502
3503    // Compute sizes of nested messages
3504    #[allow(unused_variables)]
3505    fn compute_size(&self) -> u32 {
3506        let mut my_size = 0;
3507        if !self.sql.is_empty() {
3508            my_size += ::protobuf::rt::string_size(1, &self.sql);
3509        }
3510        if let Some(ref v) = self.params.as_ref() {
3511            let len = v.compute_size();
3512            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
3513        }
3514        my_size += ::protobuf::rt::compute_map_size::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::type_pb::Type>>(3, &self.param_types);
3515        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
3516        self.cached_size.set(my_size);
3517        my_size
3518    }
3519
3520    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
3521        if !self.sql.is_empty() {
3522            os.write_string(1, &self.sql)?;
3523        }
3524        if let Some(ref v) = self.params.as_ref() {
3525            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
3526            os.write_raw_varint32(v.get_cached_size())?;
3527            v.write_to_with_cached_sizes(os)?;
3528        }
3529        ::protobuf::rt::write_map_with_cached_sizes::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::type_pb::Type>>(3, &self.param_types, os)?;
3530        os.write_unknown_fields(self.get_unknown_fields())?;
3531        ::std::result::Result::Ok(())
3532    }
3533
3534    fn get_cached_size(&self) -> u32 {
3535        self.cached_size.get()
3536    }
3537
3538    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
3539        &self.unknown_fields
3540    }
3541
3542    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
3543        &mut self.unknown_fields
3544    }
3545
3546    fn as_any(&self) -> &dyn (::std::any::Any) {
3547        self as &dyn (::std::any::Any)
3548    }
3549    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
3550        self as &mut dyn (::std::any::Any)
3551    }
3552    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
3553        self
3554    }
3555
3556    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
3557        Self::descriptor_static()
3558    }
3559
3560    fn new() -> ExecuteBatchDmlRequest_Statement {
3561        ExecuteBatchDmlRequest_Statement::new()
3562    }
3563
3564    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
3565        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
3566        descriptor.get(|| {
3567            let mut fields = ::std::vec::Vec::new();
3568            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
3569                "sql",
3570                |m: &ExecuteBatchDmlRequest_Statement| { &m.sql },
3571                |m: &mut ExecuteBatchDmlRequest_Statement| { &mut m.sql },
3572            ));
3573            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Struct>>(
3574                "params",
3575                |m: &ExecuteBatchDmlRequest_Statement| { &m.params },
3576                |m: &mut ExecuteBatchDmlRequest_Statement| { &mut m.params },
3577            ));
3578            fields.push(::protobuf::reflect::accessor::make_map_accessor::<_, ::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::type_pb::Type>>(
3579                "param_types",
3580                |m: &ExecuteBatchDmlRequest_Statement| { &m.param_types },
3581                |m: &mut ExecuteBatchDmlRequest_Statement| { &mut m.param_types },
3582            ));
3583            ::protobuf::reflect::MessageDescriptor::new_pb_name::<ExecuteBatchDmlRequest_Statement>(
3584                "ExecuteBatchDmlRequest.Statement",
3585                fields,
3586                file_descriptor_proto()
3587            )
3588        })
3589    }
3590
3591    fn default_instance() -> &'static ExecuteBatchDmlRequest_Statement {
3592        static instance: ::protobuf::rt::LazyV2<ExecuteBatchDmlRequest_Statement> = ::protobuf::rt::LazyV2::INIT;
3593        instance.get(ExecuteBatchDmlRequest_Statement::new)
3594    }
3595}
3596
3597impl ::protobuf::Clear for ExecuteBatchDmlRequest_Statement {
3598    fn clear(&mut self) {
3599        self.sql.clear();
3600        self.params.clear();
3601        self.param_types.clear();
3602        self.unknown_fields.clear();
3603    }
3604}
3605
3606impl ::std::fmt::Debug for ExecuteBatchDmlRequest_Statement {
3607    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3608        ::protobuf::text_format::fmt(self, f)
3609    }
3610}
3611
3612impl ::protobuf::reflect::ProtobufValue for ExecuteBatchDmlRequest_Statement {
3613    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
3614        ::protobuf::reflect::ReflectValueRef::Message(self)
3615    }
3616}
3617
3618#[derive(PartialEq,Clone,Default)]
3619pub struct ExecuteBatchDmlResponse {
3620    // message fields
3621    pub result_sets: ::protobuf::RepeatedField<super::result_set::ResultSet>,
3622    pub status: ::protobuf::SingularPtrField<super::status::Status>,
3623    // special fields
3624    pub unknown_fields: ::protobuf::UnknownFields,
3625    pub cached_size: ::protobuf::CachedSize,
3626}
3627
3628impl<'a> ::std::default::Default for &'a ExecuteBatchDmlResponse {
3629    fn default() -> &'a ExecuteBatchDmlResponse {
3630        <ExecuteBatchDmlResponse as ::protobuf::Message>::default_instance()
3631    }
3632}
3633
3634impl ExecuteBatchDmlResponse {
3635    pub fn new() -> ExecuteBatchDmlResponse {
3636        ::std::default::Default::default()
3637    }
3638
3639    // repeated .google.spanner.v1.ResultSet result_sets = 1;
3640
3641
3642    pub fn get_result_sets(&self) -> &[super::result_set::ResultSet] {
3643        &self.result_sets
3644    }
3645    pub fn clear_result_sets(&mut self) {
3646        self.result_sets.clear();
3647    }
3648
3649    // Param is passed by value, moved
3650    pub fn set_result_sets(&mut self, v: ::protobuf::RepeatedField<super::result_set::ResultSet>) {
3651        self.result_sets = v;
3652    }
3653
3654    // Mutable pointer to the field.
3655    pub fn mut_result_sets(&mut self) -> &mut ::protobuf::RepeatedField<super::result_set::ResultSet> {
3656        &mut self.result_sets
3657    }
3658
3659    // Take field
3660    pub fn take_result_sets(&mut self) -> ::protobuf::RepeatedField<super::result_set::ResultSet> {
3661        ::std::mem::replace(&mut self.result_sets, ::protobuf::RepeatedField::new())
3662    }
3663
3664    // .google.rpc.Status status = 2;
3665
3666
3667    pub fn get_status(&self) -> &super::status::Status {
3668        self.status.as_ref().unwrap_or_else(|| <super::status::Status as ::protobuf::Message>::default_instance())
3669    }
3670    pub fn clear_status(&mut self) {
3671        self.status.clear();
3672    }
3673
3674    pub fn has_status(&self) -> bool {
3675        self.status.is_some()
3676    }
3677
3678    // Param is passed by value, moved
3679    pub fn set_status(&mut self, v: super::status::Status) {
3680        self.status = ::protobuf::SingularPtrField::some(v);
3681    }
3682
3683    // Mutable pointer to the field.
3684    // If field is not initialized, it is initialized with default value first.
3685    pub fn mut_status(&mut self) -> &mut super::status::Status {
3686        if self.status.is_none() {
3687            self.status.set_default();
3688        }
3689        self.status.as_mut().unwrap()
3690    }
3691
3692    // Take field
3693    pub fn take_status(&mut self) -> super::status::Status {
3694        self.status.take().unwrap_or_else(|| super::status::Status::new())
3695    }
3696}
3697
3698impl ::protobuf::Message for ExecuteBatchDmlResponse {
3699    fn is_initialized(&self) -> bool {
3700        for v in &self.result_sets {
3701            if !v.is_initialized() {
3702                return false;
3703            }
3704        };
3705        for v in &self.status {
3706            if !v.is_initialized() {
3707                return false;
3708            }
3709        };
3710        true
3711    }
3712
3713    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
3714        while !is.eof()? {
3715            let (field_number, wire_type) = is.read_tag_unpack()?;
3716            match field_number {
3717                1 => {
3718                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.result_sets)?;
3719                },
3720                2 => {
3721                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.status)?;
3722                },
3723                _ => {
3724                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
3725                },
3726            };
3727        }
3728        ::std::result::Result::Ok(())
3729    }
3730
3731    // Compute sizes of nested messages
3732    #[allow(unused_variables)]
3733    fn compute_size(&self) -> u32 {
3734        let mut my_size = 0;
3735        for value in &self.result_sets {
3736            let len = value.compute_size();
3737            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
3738        };
3739        if let Some(ref v) = self.status.as_ref() {
3740            let len = v.compute_size();
3741            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
3742        }
3743        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
3744        self.cached_size.set(my_size);
3745        my_size
3746    }
3747
3748    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
3749        for v in &self.result_sets {
3750            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
3751            os.write_raw_varint32(v.get_cached_size())?;
3752            v.write_to_with_cached_sizes(os)?;
3753        };
3754        if let Some(ref v) = self.status.as_ref() {
3755            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
3756            os.write_raw_varint32(v.get_cached_size())?;
3757            v.write_to_with_cached_sizes(os)?;
3758        }
3759        os.write_unknown_fields(self.get_unknown_fields())?;
3760        ::std::result::Result::Ok(())
3761    }
3762
3763    fn get_cached_size(&self) -> u32 {
3764        self.cached_size.get()
3765    }
3766
3767    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
3768        &self.unknown_fields
3769    }
3770
3771    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
3772        &mut self.unknown_fields
3773    }
3774
3775    fn as_any(&self) -> &dyn (::std::any::Any) {
3776        self as &dyn (::std::any::Any)
3777    }
3778    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
3779        self as &mut dyn (::std::any::Any)
3780    }
3781    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
3782        self
3783    }
3784
3785    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
3786        Self::descriptor_static()
3787    }
3788
3789    fn new() -> ExecuteBatchDmlResponse {
3790        ExecuteBatchDmlResponse::new()
3791    }
3792
3793    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
3794        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
3795        descriptor.get(|| {
3796            let mut fields = ::std::vec::Vec::new();
3797            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::result_set::ResultSet>>(
3798                "result_sets",
3799                |m: &ExecuteBatchDmlResponse| { &m.result_sets },
3800                |m: &mut ExecuteBatchDmlResponse| { &mut m.result_sets },
3801            ));
3802            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::status::Status>>(
3803                "status",
3804                |m: &ExecuteBatchDmlResponse| { &m.status },
3805                |m: &mut ExecuteBatchDmlResponse| { &mut m.status },
3806            ));
3807            ::protobuf::reflect::MessageDescriptor::new_pb_name::<ExecuteBatchDmlResponse>(
3808                "ExecuteBatchDmlResponse",
3809                fields,
3810                file_descriptor_proto()
3811            )
3812        })
3813    }
3814
3815    fn default_instance() -> &'static ExecuteBatchDmlResponse {
3816        static instance: ::protobuf::rt::LazyV2<ExecuteBatchDmlResponse> = ::protobuf::rt::LazyV2::INIT;
3817        instance.get(ExecuteBatchDmlResponse::new)
3818    }
3819}
3820
3821impl ::protobuf::Clear for ExecuteBatchDmlResponse {
3822    fn clear(&mut self) {
3823        self.result_sets.clear();
3824        self.status.clear();
3825        self.unknown_fields.clear();
3826    }
3827}
3828
3829impl ::std::fmt::Debug for ExecuteBatchDmlResponse {
3830    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3831        ::protobuf::text_format::fmt(self, f)
3832    }
3833}
3834
3835impl ::protobuf::reflect::ProtobufValue for ExecuteBatchDmlResponse {
3836    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
3837        ::protobuf::reflect::ReflectValueRef::Message(self)
3838    }
3839}
3840
3841#[derive(PartialEq,Clone,Default)]
3842pub struct PartitionOptions {
3843    // message fields
3844    pub partition_size_bytes: i64,
3845    pub max_partitions: i64,
3846    // special fields
3847    pub unknown_fields: ::protobuf::UnknownFields,
3848    pub cached_size: ::protobuf::CachedSize,
3849}
3850
3851impl<'a> ::std::default::Default for &'a PartitionOptions {
3852    fn default() -> &'a PartitionOptions {
3853        <PartitionOptions as ::protobuf::Message>::default_instance()
3854    }
3855}
3856
3857impl PartitionOptions {
3858    pub fn new() -> PartitionOptions {
3859        ::std::default::Default::default()
3860    }
3861
3862    // int64 partition_size_bytes = 1;
3863
3864
3865    pub fn get_partition_size_bytes(&self) -> i64 {
3866        self.partition_size_bytes
3867    }
3868    pub fn clear_partition_size_bytes(&mut self) {
3869        self.partition_size_bytes = 0;
3870    }
3871
3872    // Param is passed by value, moved
3873    pub fn set_partition_size_bytes(&mut self, v: i64) {
3874        self.partition_size_bytes = v;
3875    }
3876
3877    // int64 max_partitions = 2;
3878
3879
3880    pub fn get_max_partitions(&self) -> i64 {
3881        self.max_partitions
3882    }
3883    pub fn clear_max_partitions(&mut self) {
3884        self.max_partitions = 0;
3885    }
3886
3887    // Param is passed by value, moved
3888    pub fn set_max_partitions(&mut self, v: i64) {
3889        self.max_partitions = v;
3890    }
3891}
3892
3893impl ::protobuf::Message for PartitionOptions {
3894    fn is_initialized(&self) -> bool {
3895        true
3896    }
3897
3898    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
3899        while !is.eof()? {
3900            let (field_number, wire_type) = is.read_tag_unpack()?;
3901            match field_number {
3902                1 => {
3903                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3904                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3905                    }
3906                    let tmp = is.read_int64()?;
3907                    self.partition_size_bytes = tmp;
3908                },
3909                2 => {
3910                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
3911                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
3912                    }
3913                    let tmp = is.read_int64()?;
3914                    self.max_partitions = tmp;
3915                },
3916                _ => {
3917                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
3918                },
3919            };
3920        }
3921        ::std::result::Result::Ok(())
3922    }
3923
3924    // Compute sizes of nested messages
3925    #[allow(unused_variables)]
3926    fn compute_size(&self) -> u32 {
3927        let mut my_size = 0;
3928        if self.partition_size_bytes != 0 {
3929            my_size += ::protobuf::rt::value_size(1, self.partition_size_bytes, ::protobuf::wire_format::WireTypeVarint);
3930        }
3931        if self.max_partitions != 0 {
3932            my_size += ::protobuf::rt::value_size(2, self.max_partitions, ::protobuf::wire_format::WireTypeVarint);
3933        }
3934        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
3935        self.cached_size.set(my_size);
3936        my_size
3937    }
3938
3939    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
3940        if self.partition_size_bytes != 0 {
3941            os.write_int64(1, self.partition_size_bytes)?;
3942        }
3943        if self.max_partitions != 0 {
3944            os.write_int64(2, self.max_partitions)?;
3945        }
3946        os.write_unknown_fields(self.get_unknown_fields())?;
3947        ::std::result::Result::Ok(())
3948    }
3949
3950    fn get_cached_size(&self) -> u32 {
3951        self.cached_size.get()
3952    }
3953
3954    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
3955        &self.unknown_fields
3956    }
3957
3958    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
3959        &mut self.unknown_fields
3960    }
3961
3962    fn as_any(&self) -> &dyn (::std::any::Any) {
3963        self as &dyn (::std::any::Any)
3964    }
3965    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
3966        self as &mut dyn (::std::any::Any)
3967    }
3968    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
3969        self
3970    }
3971
3972    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
3973        Self::descriptor_static()
3974    }
3975
3976    fn new() -> PartitionOptions {
3977        PartitionOptions::new()
3978    }
3979
3980    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
3981        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
3982        descriptor.get(|| {
3983            let mut fields = ::std::vec::Vec::new();
3984            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
3985                "partition_size_bytes",
3986                |m: &PartitionOptions| { &m.partition_size_bytes },
3987                |m: &mut PartitionOptions| { &mut m.partition_size_bytes },
3988            ));
3989            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
3990                "max_partitions",
3991                |m: &PartitionOptions| { &m.max_partitions },
3992                |m: &mut PartitionOptions| { &mut m.max_partitions },
3993            ));
3994            ::protobuf::reflect::MessageDescriptor::new_pb_name::<PartitionOptions>(
3995                "PartitionOptions",
3996                fields,
3997                file_descriptor_proto()
3998            )
3999        })
4000    }
4001
4002    fn default_instance() -> &'static PartitionOptions {
4003        static instance: ::protobuf::rt::LazyV2<PartitionOptions> = ::protobuf::rt::LazyV2::INIT;
4004        instance.get(PartitionOptions::new)
4005    }
4006}
4007
4008impl ::protobuf::Clear for PartitionOptions {
4009    fn clear(&mut self) {
4010        self.partition_size_bytes = 0;
4011        self.max_partitions = 0;
4012        self.unknown_fields.clear();
4013    }
4014}
4015
4016impl ::std::fmt::Debug for PartitionOptions {
4017    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4018        ::protobuf::text_format::fmt(self, f)
4019    }
4020}
4021
4022impl ::protobuf::reflect::ProtobufValue for PartitionOptions {
4023    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
4024        ::protobuf::reflect::ReflectValueRef::Message(self)
4025    }
4026}
4027
4028#[derive(PartialEq,Clone,Default)]
4029pub struct PartitionQueryRequest {
4030    // message fields
4031    pub session: ::std::string::String,
4032    pub transaction: ::protobuf::SingularPtrField<super::transaction::TransactionSelector>,
4033    pub sql: ::std::string::String,
4034    pub params: ::protobuf::SingularPtrField<::protobuf::well_known_types::Struct>,
4035    pub param_types: ::std::collections::HashMap<::std::string::String, super::type_pb::Type>,
4036    pub partition_options: ::protobuf::SingularPtrField<PartitionOptions>,
4037    // special fields
4038    pub unknown_fields: ::protobuf::UnknownFields,
4039    pub cached_size: ::protobuf::CachedSize,
4040}
4041
4042impl<'a> ::std::default::Default for &'a PartitionQueryRequest {
4043    fn default() -> &'a PartitionQueryRequest {
4044        <PartitionQueryRequest as ::protobuf::Message>::default_instance()
4045    }
4046}
4047
4048impl PartitionQueryRequest {
4049    pub fn new() -> PartitionQueryRequest {
4050        ::std::default::Default::default()
4051    }
4052
4053    // string session = 1;
4054
4055
4056    pub fn get_session(&self) -> &str {
4057        &self.session
4058    }
4059    pub fn clear_session(&mut self) {
4060        self.session.clear();
4061    }
4062
4063    // Param is passed by value, moved
4064    pub fn set_session(&mut self, v: ::std::string::String) {
4065        self.session = v;
4066    }
4067
4068    // Mutable pointer to the field.
4069    // If field is not initialized, it is initialized with default value first.
4070    pub fn mut_session(&mut self) -> &mut ::std::string::String {
4071        &mut self.session
4072    }
4073
4074    // Take field
4075    pub fn take_session(&mut self) -> ::std::string::String {
4076        ::std::mem::replace(&mut self.session, ::std::string::String::new())
4077    }
4078
4079    // .google.spanner.v1.TransactionSelector transaction = 2;
4080
4081
4082    pub fn get_transaction(&self) -> &super::transaction::TransactionSelector {
4083        self.transaction.as_ref().unwrap_or_else(|| <super::transaction::TransactionSelector as ::protobuf::Message>::default_instance())
4084    }
4085    pub fn clear_transaction(&mut self) {
4086        self.transaction.clear();
4087    }
4088
4089    pub fn has_transaction(&self) -> bool {
4090        self.transaction.is_some()
4091    }
4092
4093    // Param is passed by value, moved
4094    pub fn set_transaction(&mut self, v: super::transaction::TransactionSelector) {
4095        self.transaction = ::protobuf::SingularPtrField::some(v);
4096    }
4097
4098    // Mutable pointer to the field.
4099    // If field is not initialized, it is initialized with default value first.
4100    pub fn mut_transaction(&mut self) -> &mut super::transaction::TransactionSelector {
4101        if self.transaction.is_none() {
4102            self.transaction.set_default();
4103        }
4104        self.transaction.as_mut().unwrap()
4105    }
4106
4107    // Take field
4108    pub fn take_transaction(&mut self) -> super::transaction::TransactionSelector {
4109        self.transaction.take().unwrap_or_else(|| super::transaction::TransactionSelector::new())
4110    }
4111
4112    // string sql = 3;
4113
4114
4115    pub fn get_sql(&self) -> &str {
4116        &self.sql
4117    }
4118    pub fn clear_sql(&mut self) {
4119        self.sql.clear();
4120    }
4121
4122    // Param is passed by value, moved
4123    pub fn set_sql(&mut self, v: ::std::string::String) {
4124        self.sql = v;
4125    }
4126
4127    // Mutable pointer to the field.
4128    // If field is not initialized, it is initialized with default value first.
4129    pub fn mut_sql(&mut self) -> &mut ::std::string::String {
4130        &mut self.sql
4131    }
4132
4133    // Take field
4134    pub fn take_sql(&mut self) -> ::std::string::String {
4135        ::std::mem::replace(&mut self.sql, ::std::string::String::new())
4136    }
4137
4138    // .google.protobuf.Struct params = 4;
4139
4140
4141    pub fn get_params(&self) -> &::protobuf::well_known_types::Struct {
4142        self.params.as_ref().unwrap_or_else(|| <::protobuf::well_known_types::Struct as ::protobuf::Message>::default_instance())
4143    }
4144    pub fn clear_params(&mut self) {
4145        self.params.clear();
4146    }
4147
4148    pub fn has_params(&self) -> bool {
4149        self.params.is_some()
4150    }
4151
4152    // Param is passed by value, moved
4153    pub fn set_params(&mut self, v: ::protobuf::well_known_types::Struct) {
4154        self.params = ::protobuf::SingularPtrField::some(v);
4155    }
4156
4157    // Mutable pointer to the field.
4158    // If field is not initialized, it is initialized with default value first.
4159    pub fn mut_params(&mut self) -> &mut ::protobuf::well_known_types::Struct {
4160        if self.params.is_none() {
4161            self.params.set_default();
4162        }
4163        self.params.as_mut().unwrap()
4164    }
4165
4166    // Take field
4167    pub fn take_params(&mut self) -> ::protobuf::well_known_types::Struct {
4168        self.params.take().unwrap_or_else(|| ::protobuf::well_known_types::Struct::new())
4169    }
4170
4171    // repeated .google.spanner.v1.PartitionQueryRequest.ParamTypesEntry param_types = 5;
4172
4173
4174    pub fn get_param_types(&self) -> &::std::collections::HashMap<::std::string::String, super::type_pb::Type> {
4175        &self.param_types
4176    }
4177    pub fn clear_param_types(&mut self) {
4178        self.param_types.clear();
4179    }
4180
4181    // Param is passed by value, moved
4182    pub fn set_param_types(&mut self, v: ::std::collections::HashMap<::std::string::String, super::type_pb::Type>) {
4183        self.param_types = v;
4184    }
4185
4186    // Mutable pointer to the field.
4187    pub fn mut_param_types(&mut self) -> &mut ::std::collections::HashMap<::std::string::String, super::type_pb::Type> {
4188        &mut self.param_types
4189    }
4190
4191    // Take field
4192    pub fn take_param_types(&mut self) -> ::std::collections::HashMap<::std::string::String, super::type_pb::Type> {
4193        ::std::mem::replace(&mut self.param_types, ::std::collections::HashMap::new())
4194    }
4195
4196    // .google.spanner.v1.PartitionOptions partition_options = 6;
4197
4198
4199    pub fn get_partition_options(&self) -> &PartitionOptions {
4200        self.partition_options.as_ref().unwrap_or_else(|| <PartitionOptions as ::protobuf::Message>::default_instance())
4201    }
4202    pub fn clear_partition_options(&mut self) {
4203        self.partition_options.clear();
4204    }
4205
4206    pub fn has_partition_options(&self) -> bool {
4207        self.partition_options.is_some()
4208    }
4209
4210    // Param is passed by value, moved
4211    pub fn set_partition_options(&mut self, v: PartitionOptions) {
4212        self.partition_options = ::protobuf::SingularPtrField::some(v);
4213    }
4214
4215    // Mutable pointer to the field.
4216    // If field is not initialized, it is initialized with default value first.
4217    pub fn mut_partition_options(&mut self) -> &mut PartitionOptions {
4218        if self.partition_options.is_none() {
4219            self.partition_options.set_default();
4220        }
4221        self.partition_options.as_mut().unwrap()
4222    }
4223
4224    // Take field
4225    pub fn take_partition_options(&mut self) -> PartitionOptions {
4226        self.partition_options.take().unwrap_or_else(|| PartitionOptions::new())
4227    }
4228}
4229
4230impl ::protobuf::Message for PartitionQueryRequest {
4231    fn is_initialized(&self) -> bool {
4232        for v in &self.transaction {
4233            if !v.is_initialized() {
4234                return false;
4235            }
4236        };
4237        for v in &self.params {
4238            if !v.is_initialized() {
4239                return false;
4240            }
4241        };
4242        for v in &self.partition_options {
4243            if !v.is_initialized() {
4244                return false;
4245            }
4246        };
4247        true
4248    }
4249
4250    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
4251        while !is.eof()? {
4252            let (field_number, wire_type) = is.read_tag_unpack()?;
4253            match field_number {
4254                1 => {
4255                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.session)?;
4256                },
4257                2 => {
4258                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.transaction)?;
4259                },
4260                3 => {
4261                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.sql)?;
4262                },
4263                4 => {
4264                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.params)?;
4265                },
4266                5 => {
4267                    ::protobuf::rt::read_map_into::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::type_pb::Type>>(wire_type, is, &mut self.param_types)?;
4268                },
4269                6 => {
4270                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.partition_options)?;
4271                },
4272                _ => {
4273                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
4274                },
4275            };
4276        }
4277        ::std::result::Result::Ok(())
4278    }
4279
4280    // Compute sizes of nested messages
4281    #[allow(unused_variables)]
4282    fn compute_size(&self) -> u32 {
4283        let mut my_size = 0;
4284        if !self.session.is_empty() {
4285            my_size += ::protobuf::rt::string_size(1, &self.session);
4286        }
4287        if let Some(ref v) = self.transaction.as_ref() {
4288            let len = v.compute_size();
4289            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
4290        }
4291        if !self.sql.is_empty() {
4292            my_size += ::protobuf::rt::string_size(3, &self.sql);
4293        }
4294        if let Some(ref v) = self.params.as_ref() {
4295            let len = v.compute_size();
4296            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
4297        }
4298        my_size += ::protobuf::rt::compute_map_size::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::type_pb::Type>>(5, &self.param_types);
4299        if let Some(ref v) = self.partition_options.as_ref() {
4300            let len = v.compute_size();
4301            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
4302        }
4303        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
4304        self.cached_size.set(my_size);
4305        my_size
4306    }
4307
4308    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
4309        if !self.session.is_empty() {
4310            os.write_string(1, &self.session)?;
4311        }
4312        if let Some(ref v) = self.transaction.as_ref() {
4313            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
4314            os.write_raw_varint32(v.get_cached_size())?;
4315            v.write_to_with_cached_sizes(os)?;
4316        }
4317        if !self.sql.is_empty() {
4318            os.write_string(3, &self.sql)?;
4319        }
4320        if let Some(ref v) = self.params.as_ref() {
4321            os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
4322            os.write_raw_varint32(v.get_cached_size())?;
4323            v.write_to_with_cached_sizes(os)?;
4324        }
4325        ::protobuf::rt::write_map_with_cached_sizes::<::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::type_pb::Type>>(5, &self.param_types, os)?;
4326        if let Some(ref v) = self.partition_options.as_ref() {
4327            os.write_tag(6, ::protobuf::wire_format::WireTypeLengthDelimited)?;
4328            os.write_raw_varint32(v.get_cached_size())?;
4329            v.write_to_with_cached_sizes(os)?;
4330        }
4331        os.write_unknown_fields(self.get_unknown_fields())?;
4332        ::std::result::Result::Ok(())
4333    }
4334
4335    fn get_cached_size(&self) -> u32 {
4336        self.cached_size.get()
4337    }
4338
4339    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
4340        &self.unknown_fields
4341    }
4342
4343    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
4344        &mut self.unknown_fields
4345    }
4346
4347    fn as_any(&self) -> &dyn (::std::any::Any) {
4348        self as &dyn (::std::any::Any)
4349    }
4350    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
4351        self as &mut dyn (::std::any::Any)
4352    }
4353    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
4354        self
4355    }
4356
4357    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
4358        Self::descriptor_static()
4359    }
4360
4361    fn new() -> PartitionQueryRequest {
4362        PartitionQueryRequest::new()
4363    }
4364
4365    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
4366        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
4367        descriptor.get(|| {
4368            let mut fields = ::std::vec::Vec::new();
4369            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
4370                "session",
4371                |m: &PartitionQueryRequest| { &m.session },
4372                |m: &mut PartitionQueryRequest| { &mut m.session },
4373            ));
4374            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::transaction::TransactionSelector>>(
4375                "transaction",
4376                |m: &PartitionQueryRequest| { &m.transaction },
4377                |m: &mut PartitionQueryRequest| { &mut m.transaction },
4378            ));
4379            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
4380                "sql",
4381                |m: &PartitionQueryRequest| { &m.sql },
4382                |m: &mut PartitionQueryRequest| { &mut m.sql },
4383            ));
4384            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Struct>>(
4385                "params",
4386                |m: &PartitionQueryRequest| { &m.params },
4387                |m: &mut PartitionQueryRequest| { &mut m.params },
4388            ));
4389            fields.push(::protobuf::reflect::accessor::make_map_accessor::<_, ::protobuf::types::ProtobufTypeString, ::protobuf::types::ProtobufTypeMessage<super::type_pb::Type>>(
4390                "param_types",
4391                |m: &PartitionQueryRequest| { &m.param_types },
4392                |m: &mut PartitionQueryRequest| { &mut m.param_types },
4393            ));
4394            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<PartitionOptions>>(
4395                "partition_options",
4396                |m: &PartitionQueryRequest| { &m.partition_options },
4397                |m: &mut PartitionQueryRequest| { &mut m.partition_options },
4398            ));
4399            ::protobuf::reflect::MessageDescriptor::new_pb_name::<PartitionQueryRequest>(
4400                "PartitionQueryRequest",
4401                fields,
4402                file_descriptor_proto()
4403            )
4404        })
4405    }
4406
4407    fn default_instance() -> &'static PartitionQueryRequest {
4408        static instance: ::protobuf::rt::LazyV2<PartitionQueryRequest> = ::protobuf::rt::LazyV2::INIT;
4409        instance.get(PartitionQueryRequest::new)
4410    }
4411}
4412
4413impl ::protobuf::Clear for PartitionQueryRequest {
4414    fn clear(&mut self) {
4415        self.session.clear();
4416        self.transaction.clear();
4417        self.sql.clear();
4418        self.params.clear();
4419        self.param_types.clear();
4420        self.partition_options.clear();
4421        self.unknown_fields.clear();
4422    }
4423}
4424
4425impl ::std::fmt::Debug for PartitionQueryRequest {
4426    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4427        ::protobuf::text_format::fmt(self, f)
4428    }
4429}
4430
4431impl ::protobuf::reflect::ProtobufValue for PartitionQueryRequest {
4432    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
4433        ::protobuf::reflect::ReflectValueRef::Message(self)
4434    }
4435}
4436
4437#[derive(PartialEq,Clone,Default)]
4438pub struct PartitionReadRequest {
4439    // message fields
4440    pub session: ::std::string::String,
4441    pub transaction: ::protobuf::SingularPtrField<super::transaction::TransactionSelector>,
4442    pub table: ::std::string::String,
4443    pub index: ::std::string::String,
4444    pub columns: ::protobuf::RepeatedField<::std::string::String>,
4445    pub key_set: ::protobuf::SingularPtrField<super::keys::KeySet>,
4446    pub partition_options: ::protobuf::SingularPtrField<PartitionOptions>,
4447    // special fields
4448    pub unknown_fields: ::protobuf::UnknownFields,
4449    pub cached_size: ::protobuf::CachedSize,
4450}
4451
4452impl<'a> ::std::default::Default for &'a PartitionReadRequest {
4453    fn default() -> &'a PartitionReadRequest {
4454        <PartitionReadRequest as ::protobuf::Message>::default_instance()
4455    }
4456}
4457
4458impl PartitionReadRequest {
4459    pub fn new() -> PartitionReadRequest {
4460        ::std::default::Default::default()
4461    }
4462
4463    // string session = 1;
4464
4465
4466    pub fn get_session(&self) -> &str {
4467        &self.session
4468    }
4469    pub fn clear_session(&mut self) {
4470        self.session.clear();
4471    }
4472
4473    // Param is passed by value, moved
4474    pub fn set_session(&mut self, v: ::std::string::String) {
4475        self.session = v;
4476    }
4477
4478    // Mutable pointer to the field.
4479    // If field is not initialized, it is initialized with default value first.
4480    pub fn mut_session(&mut self) -> &mut ::std::string::String {
4481        &mut self.session
4482    }
4483
4484    // Take field
4485    pub fn take_session(&mut self) -> ::std::string::String {
4486        ::std::mem::replace(&mut self.session, ::std::string::String::new())
4487    }
4488
4489    // .google.spanner.v1.TransactionSelector transaction = 2;
4490
4491
4492    pub fn get_transaction(&self) -> &super::transaction::TransactionSelector {
4493        self.transaction.as_ref().unwrap_or_else(|| <super::transaction::TransactionSelector as ::protobuf::Message>::default_instance())
4494    }
4495    pub fn clear_transaction(&mut self) {
4496        self.transaction.clear();
4497    }
4498
4499    pub fn has_transaction(&self) -> bool {
4500        self.transaction.is_some()
4501    }
4502
4503    // Param is passed by value, moved
4504    pub fn set_transaction(&mut self, v: super::transaction::TransactionSelector) {
4505        self.transaction = ::protobuf::SingularPtrField::some(v);
4506    }
4507
4508    // Mutable pointer to the field.
4509    // If field is not initialized, it is initialized with default value first.
4510    pub fn mut_transaction(&mut self) -> &mut super::transaction::TransactionSelector {
4511        if self.transaction.is_none() {
4512            self.transaction.set_default();
4513        }
4514        self.transaction.as_mut().unwrap()
4515    }
4516
4517    // Take field
4518    pub fn take_transaction(&mut self) -> super::transaction::TransactionSelector {
4519        self.transaction.take().unwrap_or_else(|| super::transaction::TransactionSelector::new())
4520    }
4521
4522    // string table = 3;
4523
4524
4525    pub fn get_table(&self) -> &str {
4526        &self.table
4527    }
4528    pub fn clear_table(&mut self) {
4529        self.table.clear();
4530    }
4531
4532    // Param is passed by value, moved
4533    pub fn set_table(&mut self, v: ::std::string::String) {
4534        self.table = v;
4535    }
4536
4537    // Mutable pointer to the field.
4538    // If field is not initialized, it is initialized with default value first.
4539    pub fn mut_table(&mut self) -> &mut ::std::string::String {
4540        &mut self.table
4541    }
4542
4543    // Take field
4544    pub fn take_table(&mut self) -> ::std::string::String {
4545        ::std::mem::replace(&mut self.table, ::std::string::String::new())
4546    }
4547
4548    // string index = 4;
4549
4550
4551    pub fn get_index(&self) -> &str {
4552        &self.index
4553    }
4554    pub fn clear_index(&mut self) {
4555        self.index.clear();
4556    }
4557
4558    // Param is passed by value, moved
4559    pub fn set_index(&mut self, v: ::std::string::String) {
4560        self.index = v;
4561    }
4562
4563    // Mutable pointer to the field.
4564    // If field is not initialized, it is initialized with default value first.
4565    pub fn mut_index(&mut self) -> &mut ::std::string::String {
4566        &mut self.index
4567    }
4568
4569    // Take field
4570    pub fn take_index(&mut self) -> ::std::string::String {
4571        ::std::mem::replace(&mut self.index, ::std::string::String::new())
4572    }
4573
4574    // repeated string columns = 5;
4575
4576
4577    pub fn get_columns(&self) -> &[::std::string::String] {
4578        &self.columns
4579    }
4580    pub fn clear_columns(&mut self) {
4581        self.columns.clear();
4582    }
4583
4584    // Param is passed by value, moved
4585    pub fn set_columns(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
4586        self.columns = v;
4587    }
4588
4589    // Mutable pointer to the field.
4590    pub fn mut_columns(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
4591        &mut self.columns
4592    }
4593
4594    // Take field
4595    pub fn take_columns(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
4596        ::std::mem::replace(&mut self.columns, ::protobuf::RepeatedField::new())
4597    }
4598
4599    // .google.spanner.v1.KeySet key_set = 6;
4600
4601
4602    pub fn get_key_set(&self) -> &super::keys::KeySet {
4603        self.key_set.as_ref().unwrap_or_else(|| <super::keys::KeySet as ::protobuf::Message>::default_instance())
4604    }
4605    pub fn clear_key_set(&mut self) {
4606        self.key_set.clear();
4607    }
4608
4609    pub fn has_key_set(&self) -> bool {
4610        self.key_set.is_some()
4611    }
4612
4613    // Param is passed by value, moved
4614    pub fn set_key_set(&mut self, v: super::keys::KeySet) {
4615        self.key_set = ::protobuf::SingularPtrField::some(v);
4616    }
4617
4618    // Mutable pointer to the field.
4619    // If field is not initialized, it is initialized with default value first.
4620    pub fn mut_key_set(&mut self) -> &mut super::keys::KeySet {
4621        if self.key_set.is_none() {
4622            self.key_set.set_default();
4623        }
4624        self.key_set.as_mut().unwrap()
4625    }
4626
4627    // Take field
4628    pub fn take_key_set(&mut self) -> super::keys::KeySet {
4629        self.key_set.take().unwrap_or_else(|| super::keys::KeySet::new())
4630    }
4631
4632    // .google.spanner.v1.PartitionOptions partition_options = 9;
4633
4634
4635    pub fn get_partition_options(&self) -> &PartitionOptions {
4636        self.partition_options.as_ref().unwrap_or_else(|| <PartitionOptions as ::protobuf::Message>::default_instance())
4637    }
4638    pub fn clear_partition_options(&mut self) {
4639        self.partition_options.clear();
4640    }
4641
4642    pub fn has_partition_options(&self) -> bool {
4643        self.partition_options.is_some()
4644    }
4645
4646    // Param is passed by value, moved
4647    pub fn set_partition_options(&mut self, v: PartitionOptions) {
4648        self.partition_options = ::protobuf::SingularPtrField::some(v);
4649    }
4650
4651    // Mutable pointer to the field.
4652    // If field is not initialized, it is initialized with default value first.
4653    pub fn mut_partition_options(&mut self) -> &mut PartitionOptions {
4654        if self.partition_options.is_none() {
4655            self.partition_options.set_default();
4656        }
4657        self.partition_options.as_mut().unwrap()
4658    }
4659
4660    // Take field
4661    pub fn take_partition_options(&mut self) -> PartitionOptions {
4662        self.partition_options.take().unwrap_or_else(|| PartitionOptions::new())
4663    }
4664}
4665
4666impl ::protobuf::Message for PartitionReadRequest {
4667    fn is_initialized(&self) -> bool {
4668        for v in &self.transaction {
4669            if !v.is_initialized() {
4670                return false;
4671            }
4672        };
4673        for v in &self.key_set {
4674            if !v.is_initialized() {
4675                return false;
4676            }
4677        };
4678        for v in &self.partition_options {
4679            if !v.is_initialized() {
4680                return false;
4681            }
4682        };
4683        true
4684    }
4685
4686    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
4687        while !is.eof()? {
4688            let (field_number, wire_type) = is.read_tag_unpack()?;
4689            match field_number {
4690                1 => {
4691                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.session)?;
4692                },
4693                2 => {
4694                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.transaction)?;
4695                },
4696                3 => {
4697                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.table)?;
4698                },
4699                4 => {
4700                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.index)?;
4701                },
4702                5 => {
4703                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.columns)?;
4704                },
4705                6 => {
4706                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.key_set)?;
4707                },
4708                9 => {
4709                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.partition_options)?;
4710                },
4711                _ => {
4712                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
4713                },
4714            };
4715        }
4716        ::std::result::Result::Ok(())
4717    }
4718
4719    // Compute sizes of nested messages
4720    #[allow(unused_variables)]
4721    fn compute_size(&self) -> u32 {
4722        let mut my_size = 0;
4723        if !self.session.is_empty() {
4724            my_size += ::protobuf::rt::string_size(1, &self.session);
4725        }
4726        if let Some(ref v) = self.transaction.as_ref() {
4727            let len = v.compute_size();
4728            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
4729        }
4730        if !self.table.is_empty() {
4731            my_size += ::protobuf::rt::string_size(3, &self.table);
4732        }
4733        if !self.index.is_empty() {
4734            my_size += ::protobuf::rt::string_size(4, &self.index);
4735        }
4736        for value in &self.columns {
4737            my_size += ::protobuf::rt::string_size(5, &value);
4738        };
4739        if let Some(ref v) = self.key_set.as_ref() {
4740            let len = v.compute_size();
4741            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
4742        }
4743        if let Some(ref v) = self.partition_options.as_ref() {
4744            let len = v.compute_size();
4745            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
4746        }
4747        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
4748        self.cached_size.set(my_size);
4749        my_size
4750    }
4751
4752    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
4753        if !self.session.is_empty() {
4754            os.write_string(1, &self.session)?;
4755        }
4756        if let Some(ref v) = self.transaction.as_ref() {
4757            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
4758            os.write_raw_varint32(v.get_cached_size())?;
4759            v.write_to_with_cached_sizes(os)?;
4760        }
4761        if !self.table.is_empty() {
4762            os.write_string(3, &self.table)?;
4763        }
4764        if !self.index.is_empty() {
4765            os.write_string(4, &self.index)?;
4766        }
4767        for v in &self.columns {
4768            os.write_string(5, &v)?;
4769        };
4770        if let Some(ref v) = self.key_set.as_ref() {
4771            os.write_tag(6, ::protobuf::wire_format::WireTypeLengthDelimited)?;
4772            os.write_raw_varint32(v.get_cached_size())?;
4773            v.write_to_with_cached_sizes(os)?;
4774        }
4775        if let Some(ref v) = self.partition_options.as_ref() {
4776            os.write_tag(9, ::protobuf::wire_format::WireTypeLengthDelimited)?;
4777            os.write_raw_varint32(v.get_cached_size())?;
4778            v.write_to_with_cached_sizes(os)?;
4779        }
4780        os.write_unknown_fields(self.get_unknown_fields())?;
4781        ::std::result::Result::Ok(())
4782    }
4783
4784    fn get_cached_size(&self) -> u32 {
4785        self.cached_size.get()
4786    }
4787
4788    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
4789        &self.unknown_fields
4790    }
4791
4792    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
4793        &mut self.unknown_fields
4794    }
4795
4796    fn as_any(&self) -> &dyn (::std::any::Any) {
4797        self as &dyn (::std::any::Any)
4798    }
4799    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
4800        self as &mut dyn (::std::any::Any)
4801    }
4802    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
4803        self
4804    }
4805
4806    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
4807        Self::descriptor_static()
4808    }
4809
4810    fn new() -> PartitionReadRequest {
4811        PartitionReadRequest::new()
4812    }
4813
4814    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
4815        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
4816        descriptor.get(|| {
4817            let mut fields = ::std::vec::Vec::new();
4818            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
4819                "session",
4820                |m: &PartitionReadRequest| { &m.session },
4821                |m: &mut PartitionReadRequest| { &mut m.session },
4822            ));
4823            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::transaction::TransactionSelector>>(
4824                "transaction",
4825                |m: &PartitionReadRequest| { &m.transaction },
4826                |m: &mut PartitionReadRequest| { &mut m.transaction },
4827            ));
4828            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
4829                "table",
4830                |m: &PartitionReadRequest| { &m.table },
4831                |m: &mut PartitionReadRequest| { &mut m.table },
4832            ));
4833            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
4834                "index",
4835                |m: &PartitionReadRequest| { &m.index },
4836                |m: &mut PartitionReadRequest| { &mut m.index },
4837            ));
4838            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
4839                "columns",
4840                |m: &PartitionReadRequest| { &m.columns },
4841                |m: &mut PartitionReadRequest| { &mut m.columns },
4842            ));
4843            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::keys::KeySet>>(
4844                "key_set",
4845                |m: &PartitionReadRequest| { &m.key_set },
4846                |m: &mut PartitionReadRequest| { &mut m.key_set },
4847            ));
4848            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<PartitionOptions>>(
4849                "partition_options",
4850                |m: &PartitionReadRequest| { &m.partition_options },
4851                |m: &mut PartitionReadRequest| { &mut m.partition_options },
4852            ));
4853            ::protobuf::reflect::MessageDescriptor::new_pb_name::<PartitionReadRequest>(
4854                "PartitionReadRequest",
4855                fields,
4856                file_descriptor_proto()
4857            )
4858        })
4859    }
4860
4861    fn default_instance() -> &'static PartitionReadRequest {
4862        static instance: ::protobuf::rt::LazyV2<PartitionReadRequest> = ::protobuf::rt::LazyV2::INIT;
4863        instance.get(PartitionReadRequest::new)
4864    }
4865}
4866
4867impl ::protobuf::Clear for PartitionReadRequest {
4868    fn clear(&mut self) {
4869        self.session.clear();
4870        self.transaction.clear();
4871        self.table.clear();
4872        self.index.clear();
4873        self.columns.clear();
4874        self.key_set.clear();
4875        self.partition_options.clear();
4876        self.unknown_fields.clear();
4877    }
4878}
4879
4880impl ::std::fmt::Debug for PartitionReadRequest {
4881    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
4882        ::protobuf::text_format::fmt(self, f)
4883    }
4884}
4885
4886impl ::protobuf::reflect::ProtobufValue for PartitionReadRequest {
4887    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
4888        ::protobuf::reflect::ReflectValueRef::Message(self)
4889    }
4890}
4891
4892#[derive(PartialEq,Clone,Default)]
4893pub struct Partition {
4894    // message fields
4895    pub partition_token: ::std::vec::Vec<u8>,
4896    // special fields
4897    pub unknown_fields: ::protobuf::UnknownFields,
4898    pub cached_size: ::protobuf::CachedSize,
4899}
4900
4901impl<'a> ::std::default::Default for &'a Partition {
4902    fn default() -> &'a Partition {
4903        <Partition as ::protobuf::Message>::default_instance()
4904    }
4905}
4906
4907impl Partition {
4908    pub fn new() -> Partition {
4909        ::std::default::Default::default()
4910    }
4911
4912    // bytes partition_token = 1;
4913
4914
4915    pub fn get_partition_token(&self) -> &[u8] {
4916        &self.partition_token
4917    }
4918    pub fn clear_partition_token(&mut self) {
4919        self.partition_token.clear();
4920    }
4921
4922    // Param is passed by value, moved
4923    pub fn set_partition_token(&mut self, v: ::std::vec::Vec<u8>) {
4924        self.partition_token = v;
4925    }
4926
4927    // Mutable pointer to the field.
4928    // If field is not initialized, it is initialized with default value first.
4929    pub fn mut_partition_token(&mut self) -> &mut ::std::vec::Vec<u8> {
4930        &mut self.partition_token
4931    }
4932
4933    // Take field
4934    pub fn take_partition_token(&mut self) -> ::std::vec::Vec<u8> {
4935        ::std::mem::replace(&mut self.partition_token, ::std::vec::Vec::new())
4936    }
4937}
4938
4939impl ::protobuf::Message for Partition {
4940    fn is_initialized(&self) -> bool {
4941        true
4942    }
4943
4944    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
4945        while !is.eof()? {
4946            let (field_number, wire_type) = is.read_tag_unpack()?;
4947            match field_number {
4948                1 => {
4949                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.partition_token)?;
4950                },
4951                _ => {
4952                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
4953                },
4954            };
4955        }
4956        ::std::result::Result::Ok(())
4957    }
4958
4959    // Compute sizes of nested messages
4960    #[allow(unused_variables)]
4961    fn compute_size(&self) -> u32 {
4962        let mut my_size = 0;
4963        if !self.partition_token.is_empty() {
4964            my_size += ::protobuf::rt::bytes_size(1, &self.partition_token);
4965        }
4966        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
4967        self.cached_size.set(my_size);
4968        my_size
4969    }
4970
4971    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
4972        if !self.partition_token.is_empty() {
4973            os.write_bytes(1, &self.partition_token)?;
4974        }
4975        os.write_unknown_fields(self.get_unknown_fields())?;
4976        ::std::result::Result::Ok(())
4977    }
4978
4979    fn get_cached_size(&self) -> u32 {
4980        self.cached_size.get()
4981    }
4982
4983    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
4984        &self.unknown_fields
4985    }
4986
4987    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
4988        &mut self.unknown_fields
4989    }
4990
4991    fn as_any(&self) -> &dyn (::std::any::Any) {
4992        self as &dyn (::std::any::Any)
4993    }
4994    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
4995        self as &mut dyn (::std::any::Any)
4996    }
4997    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
4998        self
4999    }
5000
5001    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
5002        Self::descriptor_static()
5003    }
5004
5005    fn new() -> Partition {
5006        Partition::new()
5007    }
5008
5009    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
5010        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
5011        descriptor.get(|| {
5012            let mut fields = ::std::vec::Vec::new();
5013            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
5014                "partition_token",
5015                |m: &Partition| { &m.partition_token },
5016                |m: &mut Partition| { &mut m.partition_token },
5017            ));
5018            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Partition>(
5019                "Partition",
5020                fields,
5021                file_descriptor_proto()
5022            )
5023        })
5024    }
5025
5026    fn default_instance() -> &'static Partition {
5027        static instance: ::protobuf::rt::LazyV2<Partition> = ::protobuf::rt::LazyV2::INIT;
5028        instance.get(Partition::new)
5029    }
5030}
5031
5032impl ::protobuf::Clear for Partition {
5033    fn clear(&mut self) {
5034        self.partition_token.clear();
5035        self.unknown_fields.clear();
5036    }
5037}
5038
5039impl ::std::fmt::Debug for Partition {
5040    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5041        ::protobuf::text_format::fmt(self, f)
5042    }
5043}
5044
5045impl ::protobuf::reflect::ProtobufValue for Partition {
5046    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
5047        ::protobuf::reflect::ReflectValueRef::Message(self)
5048    }
5049}
5050
5051#[derive(PartialEq,Clone,Default)]
5052pub struct PartitionResponse {
5053    // message fields
5054    pub partitions: ::protobuf::RepeatedField<Partition>,
5055    pub transaction: ::protobuf::SingularPtrField<super::transaction::Transaction>,
5056    // special fields
5057    pub unknown_fields: ::protobuf::UnknownFields,
5058    pub cached_size: ::protobuf::CachedSize,
5059}
5060
5061impl<'a> ::std::default::Default for &'a PartitionResponse {
5062    fn default() -> &'a PartitionResponse {
5063        <PartitionResponse as ::protobuf::Message>::default_instance()
5064    }
5065}
5066
5067impl PartitionResponse {
5068    pub fn new() -> PartitionResponse {
5069        ::std::default::Default::default()
5070    }
5071
5072    // repeated .google.spanner.v1.Partition partitions = 1;
5073
5074
5075    pub fn get_partitions(&self) -> &[Partition] {
5076        &self.partitions
5077    }
5078    pub fn clear_partitions(&mut self) {
5079        self.partitions.clear();
5080    }
5081
5082    // Param is passed by value, moved
5083    pub fn set_partitions(&mut self, v: ::protobuf::RepeatedField<Partition>) {
5084        self.partitions = v;
5085    }
5086
5087    // Mutable pointer to the field.
5088    pub fn mut_partitions(&mut self) -> &mut ::protobuf::RepeatedField<Partition> {
5089        &mut self.partitions
5090    }
5091
5092    // Take field
5093    pub fn take_partitions(&mut self) -> ::protobuf::RepeatedField<Partition> {
5094        ::std::mem::replace(&mut self.partitions, ::protobuf::RepeatedField::new())
5095    }
5096
5097    // .google.spanner.v1.Transaction transaction = 2;
5098
5099
5100    pub fn get_transaction(&self) -> &super::transaction::Transaction {
5101        self.transaction.as_ref().unwrap_or_else(|| <super::transaction::Transaction as ::protobuf::Message>::default_instance())
5102    }
5103    pub fn clear_transaction(&mut self) {
5104        self.transaction.clear();
5105    }
5106
5107    pub fn has_transaction(&self) -> bool {
5108        self.transaction.is_some()
5109    }
5110
5111    // Param is passed by value, moved
5112    pub fn set_transaction(&mut self, v: super::transaction::Transaction) {
5113        self.transaction = ::protobuf::SingularPtrField::some(v);
5114    }
5115
5116    // Mutable pointer to the field.
5117    // If field is not initialized, it is initialized with default value first.
5118    pub fn mut_transaction(&mut self) -> &mut super::transaction::Transaction {
5119        if self.transaction.is_none() {
5120            self.transaction.set_default();
5121        }
5122        self.transaction.as_mut().unwrap()
5123    }
5124
5125    // Take field
5126    pub fn take_transaction(&mut self) -> super::transaction::Transaction {
5127        self.transaction.take().unwrap_or_else(|| super::transaction::Transaction::new())
5128    }
5129}
5130
5131impl ::protobuf::Message for PartitionResponse {
5132    fn is_initialized(&self) -> bool {
5133        for v in &self.partitions {
5134            if !v.is_initialized() {
5135                return false;
5136            }
5137        };
5138        for v in &self.transaction {
5139            if !v.is_initialized() {
5140                return false;
5141            }
5142        };
5143        true
5144    }
5145
5146    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
5147        while !is.eof()? {
5148            let (field_number, wire_type) = is.read_tag_unpack()?;
5149            match field_number {
5150                1 => {
5151                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.partitions)?;
5152                },
5153                2 => {
5154                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.transaction)?;
5155                },
5156                _ => {
5157                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
5158                },
5159            };
5160        }
5161        ::std::result::Result::Ok(())
5162    }
5163
5164    // Compute sizes of nested messages
5165    #[allow(unused_variables)]
5166    fn compute_size(&self) -> u32 {
5167        let mut my_size = 0;
5168        for value in &self.partitions {
5169            let len = value.compute_size();
5170            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
5171        };
5172        if let Some(ref v) = self.transaction.as_ref() {
5173            let len = v.compute_size();
5174            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
5175        }
5176        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
5177        self.cached_size.set(my_size);
5178        my_size
5179    }
5180
5181    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
5182        for v in &self.partitions {
5183            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
5184            os.write_raw_varint32(v.get_cached_size())?;
5185            v.write_to_with_cached_sizes(os)?;
5186        };
5187        if let Some(ref v) = self.transaction.as_ref() {
5188            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
5189            os.write_raw_varint32(v.get_cached_size())?;
5190            v.write_to_with_cached_sizes(os)?;
5191        }
5192        os.write_unknown_fields(self.get_unknown_fields())?;
5193        ::std::result::Result::Ok(())
5194    }
5195
5196    fn get_cached_size(&self) -> u32 {
5197        self.cached_size.get()
5198    }
5199
5200    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
5201        &self.unknown_fields
5202    }
5203
5204    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
5205        &mut self.unknown_fields
5206    }
5207
5208    fn as_any(&self) -> &dyn (::std::any::Any) {
5209        self as &dyn (::std::any::Any)
5210    }
5211    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
5212        self as &mut dyn (::std::any::Any)
5213    }
5214    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
5215        self
5216    }
5217
5218    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
5219        Self::descriptor_static()
5220    }
5221
5222    fn new() -> PartitionResponse {
5223        PartitionResponse::new()
5224    }
5225
5226    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
5227        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
5228        descriptor.get(|| {
5229            let mut fields = ::std::vec::Vec::new();
5230            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<Partition>>(
5231                "partitions",
5232                |m: &PartitionResponse| { &m.partitions },
5233                |m: &mut PartitionResponse| { &mut m.partitions },
5234            ));
5235            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::transaction::Transaction>>(
5236                "transaction",
5237                |m: &PartitionResponse| { &m.transaction },
5238                |m: &mut PartitionResponse| { &mut m.transaction },
5239            ));
5240            ::protobuf::reflect::MessageDescriptor::new_pb_name::<PartitionResponse>(
5241                "PartitionResponse",
5242                fields,
5243                file_descriptor_proto()
5244            )
5245        })
5246    }
5247
5248    fn default_instance() -> &'static PartitionResponse {
5249        static instance: ::protobuf::rt::LazyV2<PartitionResponse> = ::protobuf::rt::LazyV2::INIT;
5250        instance.get(PartitionResponse::new)
5251    }
5252}
5253
5254impl ::protobuf::Clear for PartitionResponse {
5255    fn clear(&mut self) {
5256        self.partitions.clear();
5257        self.transaction.clear();
5258        self.unknown_fields.clear();
5259    }
5260}
5261
5262impl ::std::fmt::Debug for PartitionResponse {
5263    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5264        ::protobuf::text_format::fmt(self, f)
5265    }
5266}
5267
5268impl ::protobuf::reflect::ProtobufValue for PartitionResponse {
5269    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
5270        ::protobuf::reflect::ReflectValueRef::Message(self)
5271    }
5272}
5273
5274#[derive(PartialEq,Clone,Default)]
5275pub struct ReadRequest {
5276    // message fields
5277    pub session: ::std::string::String,
5278    pub transaction: ::protobuf::SingularPtrField<super::transaction::TransactionSelector>,
5279    pub table: ::std::string::String,
5280    pub index: ::std::string::String,
5281    pub columns: ::protobuf::RepeatedField<::std::string::String>,
5282    pub key_set: ::protobuf::SingularPtrField<super::keys::KeySet>,
5283    pub limit: i64,
5284    pub resume_token: ::std::vec::Vec<u8>,
5285    pub partition_token: ::std::vec::Vec<u8>,
5286    pub request_options: ::protobuf::SingularPtrField<RequestOptions>,
5287    pub data_boost_enabled: bool,
5288    // special fields
5289    pub unknown_fields: ::protobuf::UnknownFields,
5290    pub cached_size: ::protobuf::CachedSize,
5291}
5292
5293impl<'a> ::std::default::Default for &'a ReadRequest {
5294    fn default() -> &'a ReadRequest {
5295        <ReadRequest as ::protobuf::Message>::default_instance()
5296    }
5297}
5298
5299impl ReadRequest {
5300    pub fn new() -> ReadRequest {
5301        ::std::default::Default::default()
5302    }
5303
5304    // string session = 1;
5305
5306
5307    pub fn get_session(&self) -> &str {
5308        &self.session
5309    }
5310    pub fn clear_session(&mut self) {
5311        self.session.clear();
5312    }
5313
5314    // Param is passed by value, moved
5315    pub fn set_session(&mut self, v: ::std::string::String) {
5316        self.session = v;
5317    }
5318
5319    // Mutable pointer to the field.
5320    // If field is not initialized, it is initialized with default value first.
5321    pub fn mut_session(&mut self) -> &mut ::std::string::String {
5322        &mut self.session
5323    }
5324
5325    // Take field
5326    pub fn take_session(&mut self) -> ::std::string::String {
5327        ::std::mem::replace(&mut self.session, ::std::string::String::new())
5328    }
5329
5330    // .google.spanner.v1.TransactionSelector transaction = 2;
5331
5332
5333    pub fn get_transaction(&self) -> &super::transaction::TransactionSelector {
5334        self.transaction.as_ref().unwrap_or_else(|| <super::transaction::TransactionSelector as ::protobuf::Message>::default_instance())
5335    }
5336    pub fn clear_transaction(&mut self) {
5337        self.transaction.clear();
5338    }
5339
5340    pub fn has_transaction(&self) -> bool {
5341        self.transaction.is_some()
5342    }
5343
5344    // Param is passed by value, moved
5345    pub fn set_transaction(&mut self, v: super::transaction::TransactionSelector) {
5346        self.transaction = ::protobuf::SingularPtrField::some(v);
5347    }
5348
5349    // Mutable pointer to the field.
5350    // If field is not initialized, it is initialized with default value first.
5351    pub fn mut_transaction(&mut self) -> &mut super::transaction::TransactionSelector {
5352        if self.transaction.is_none() {
5353            self.transaction.set_default();
5354        }
5355        self.transaction.as_mut().unwrap()
5356    }
5357
5358    // Take field
5359    pub fn take_transaction(&mut self) -> super::transaction::TransactionSelector {
5360        self.transaction.take().unwrap_or_else(|| super::transaction::TransactionSelector::new())
5361    }
5362
5363    // string table = 3;
5364
5365
5366    pub fn get_table(&self) -> &str {
5367        &self.table
5368    }
5369    pub fn clear_table(&mut self) {
5370        self.table.clear();
5371    }
5372
5373    // Param is passed by value, moved
5374    pub fn set_table(&mut self, v: ::std::string::String) {
5375        self.table = v;
5376    }
5377
5378    // Mutable pointer to the field.
5379    // If field is not initialized, it is initialized with default value first.
5380    pub fn mut_table(&mut self) -> &mut ::std::string::String {
5381        &mut self.table
5382    }
5383
5384    // Take field
5385    pub fn take_table(&mut self) -> ::std::string::String {
5386        ::std::mem::replace(&mut self.table, ::std::string::String::new())
5387    }
5388
5389    // string index = 4;
5390
5391
5392    pub fn get_index(&self) -> &str {
5393        &self.index
5394    }
5395    pub fn clear_index(&mut self) {
5396        self.index.clear();
5397    }
5398
5399    // Param is passed by value, moved
5400    pub fn set_index(&mut self, v: ::std::string::String) {
5401        self.index = v;
5402    }
5403
5404    // Mutable pointer to the field.
5405    // If field is not initialized, it is initialized with default value first.
5406    pub fn mut_index(&mut self) -> &mut ::std::string::String {
5407        &mut self.index
5408    }
5409
5410    // Take field
5411    pub fn take_index(&mut self) -> ::std::string::String {
5412        ::std::mem::replace(&mut self.index, ::std::string::String::new())
5413    }
5414
5415    // repeated string columns = 5;
5416
5417
5418    pub fn get_columns(&self) -> &[::std::string::String] {
5419        &self.columns
5420    }
5421    pub fn clear_columns(&mut self) {
5422        self.columns.clear();
5423    }
5424
5425    // Param is passed by value, moved
5426    pub fn set_columns(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
5427        self.columns = v;
5428    }
5429
5430    // Mutable pointer to the field.
5431    pub fn mut_columns(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
5432        &mut self.columns
5433    }
5434
5435    // Take field
5436    pub fn take_columns(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
5437        ::std::mem::replace(&mut self.columns, ::protobuf::RepeatedField::new())
5438    }
5439
5440    // .google.spanner.v1.KeySet key_set = 6;
5441
5442
5443    pub fn get_key_set(&self) -> &super::keys::KeySet {
5444        self.key_set.as_ref().unwrap_or_else(|| <super::keys::KeySet as ::protobuf::Message>::default_instance())
5445    }
5446    pub fn clear_key_set(&mut self) {
5447        self.key_set.clear();
5448    }
5449
5450    pub fn has_key_set(&self) -> bool {
5451        self.key_set.is_some()
5452    }
5453
5454    // Param is passed by value, moved
5455    pub fn set_key_set(&mut self, v: super::keys::KeySet) {
5456        self.key_set = ::protobuf::SingularPtrField::some(v);
5457    }
5458
5459    // Mutable pointer to the field.
5460    // If field is not initialized, it is initialized with default value first.
5461    pub fn mut_key_set(&mut self) -> &mut super::keys::KeySet {
5462        if self.key_set.is_none() {
5463            self.key_set.set_default();
5464        }
5465        self.key_set.as_mut().unwrap()
5466    }
5467
5468    // Take field
5469    pub fn take_key_set(&mut self) -> super::keys::KeySet {
5470        self.key_set.take().unwrap_or_else(|| super::keys::KeySet::new())
5471    }
5472
5473    // int64 limit = 8;
5474
5475
5476    pub fn get_limit(&self) -> i64 {
5477        self.limit
5478    }
5479    pub fn clear_limit(&mut self) {
5480        self.limit = 0;
5481    }
5482
5483    // Param is passed by value, moved
5484    pub fn set_limit(&mut self, v: i64) {
5485        self.limit = v;
5486    }
5487
5488    // bytes resume_token = 9;
5489
5490
5491    pub fn get_resume_token(&self) -> &[u8] {
5492        &self.resume_token
5493    }
5494    pub fn clear_resume_token(&mut self) {
5495        self.resume_token.clear();
5496    }
5497
5498    // Param is passed by value, moved
5499    pub fn set_resume_token(&mut self, v: ::std::vec::Vec<u8>) {
5500        self.resume_token = v;
5501    }
5502
5503    // Mutable pointer to the field.
5504    // If field is not initialized, it is initialized with default value first.
5505    pub fn mut_resume_token(&mut self) -> &mut ::std::vec::Vec<u8> {
5506        &mut self.resume_token
5507    }
5508
5509    // Take field
5510    pub fn take_resume_token(&mut self) -> ::std::vec::Vec<u8> {
5511        ::std::mem::replace(&mut self.resume_token, ::std::vec::Vec::new())
5512    }
5513
5514    // bytes partition_token = 10;
5515
5516
5517    pub fn get_partition_token(&self) -> &[u8] {
5518        &self.partition_token
5519    }
5520    pub fn clear_partition_token(&mut self) {
5521        self.partition_token.clear();
5522    }
5523
5524    // Param is passed by value, moved
5525    pub fn set_partition_token(&mut self, v: ::std::vec::Vec<u8>) {
5526        self.partition_token = v;
5527    }
5528
5529    // Mutable pointer to the field.
5530    // If field is not initialized, it is initialized with default value first.
5531    pub fn mut_partition_token(&mut self) -> &mut ::std::vec::Vec<u8> {
5532        &mut self.partition_token
5533    }
5534
5535    // Take field
5536    pub fn take_partition_token(&mut self) -> ::std::vec::Vec<u8> {
5537        ::std::mem::replace(&mut self.partition_token, ::std::vec::Vec::new())
5538    }
5539
5540    // .google.spanner.v1.RequestOptions request_options = 11;
5541
5542
5543    pub fn get_request_options(&self) -> &RequestOptions {
5544        self.request_options.as_ref().unwrap_or_else(|| <RequestOptions as ::protobuf::Message>::default_instance())
5545    }
5546    pub fn clear_request_options(&mut self) {
5547        self.request_options.clear();
5548    }
5549
5550    pub fn has_request_options(&self) -> bool {
5551        self.request_options.is_some()
5552    }
5553
5554    // Param is passed by value, moved
5555    pub fn set_request_options(&mut self, v: RequestOptions) {
5556        self.request_options = ::protobuf::SingularPtrField::some(v);
5557    }
5558
5559    // Mutable pointer to the field.
5560    // If field is not initialized, it is initialized with default value first.
5561    pub fn mut_request_options(&mut self) -> &mut RequestOptions {
5562        if self.request_options.is_none() {
5563            self.request_options.set_default();
5564        }
5565        self.request_options.as_mut().unwrap()
5566    }
5567
5568    // Take field
5569    pub fn take_request_options(&mut self) -> RequestOptions {
5570        self.request_options.take().unwrap_or_else(|| RequestOptions::new())
5571    }
5572
5573    // bool data_boost_enabled = 15;
5574
5575
5576    pub fn get_data_boost_enabled(&self) -> bool {
5577        self.data_boost_enabled
5578    }
5579    pub fn clear_data_boost_enabled(&mut self) {
5580        self.data_boost_enabled = false;
5581    }
5582
5583    // Param is passed by value, moved
5584    pub fn set_data_boost_enabled(&mut self, v: bool) {
5585        self.data_boost_enabled = v;
5586    }
5587}
5588
5589impl ::protobuf::Message for ReadRequest {
5590    fn is_initialized(&self) -> bool {
5591        for v in &self.transaction {
5592            if !v.is_initialized() {
5593                return false;
5594            }
5595        };
5596        for v in &self.key_set {
5597            if !v.is_initialized() {
5598                return false;
5599            }
5600        };
5601        for v in &self.request_options {
5602            if !v.is_initialized() {
5603                return false;
5604            }
5605        };
5606        true
5607    }
5608
5609    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
5610        while !is.eof()? {
5611            let (field_number, wire_type) = is.read_tag_unpack()?;
5612            match field_number {
5613                1 => {
5614                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.session)?;
5615                },
5616                2 => {
5617                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.transaction)?;
5618                },
5619                3 => {
5620                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.table)?;
5621                },
5622                4 => {
5623                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.index)?;
5624                },
5625                5 => {
5626                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.columns)?;
5627                },
5628                6 => {
5629                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.key_set)?;
5630                },
5631                8 => {
5632                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
5633                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
5634                    }
5635                    let tmp = is.read_int64()?;
5636                    self.limit = tmp;
5637                },
5638                9 => {
5639                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.resume_token)?;
5640                },
5641                10 => {
5642                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.partition_token)?;
5643                },
5644                11 => {
5645                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.request_options)?;
5646                },
5647                15 => {
5648                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
5649                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
5650                    }
5651                    let tmp = is.read_bool()?;
5652                    self.data_boost_enabled = tmp;
5653                },
5654                _ => {
5655                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
5656                },
5657            };
5658        }
5659        ::std::result::Result::Ok(())
5660    }
5661
5662    // Compute sizes of nested messages
5663    #[allow(unused_variables)]
5664    fn compute_size(&self) -> u32 {
5665        let mut my_size = 0;
5666        if !self.session.is_empty() {
5667            my_size += ::protobuf::rt::string_size(1, &self.session);
5668        }
5669        if let Some(ref v) = self.transaction.as_ref() {
5670            let len = v.compute_size();
5671            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
5672        }
5673        if !self.table.is_empty() {
5674            my_size += ::protobuf::rt::string_size(3, &self.table);
5675        }
5676        if !self.index.is_empty() {
5677            my_size += ::protobuf::rt::string_size(4, &self.index);
5678        }
5679        for value in &self.columns {
5680            my_size += ::protobuf::rt::string_size(5, &value);
5681        };
5682        if let Some(ref v) = self.key_set.as_ref() {
5683            let len = v.compute_size();
5684            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
5685        }
5686        if self.limit != 0 {
5687            my_size += ::protobuf::rt::value_size(8, self.limit, ::protobuf::wire_format::WireTypeVarint);
5688        }
5689        if !self.resume_token.is_empty() {
5690            my_size += ::protobuf::rt::bytes_size(9, &self.resume_token);
5691        }
5692        if !self.partition_token.is_empty() {
5693            my_size += ::protobuf::rt::bytes_size(10, &self.partition_token);
5694        }
5695        if let Some(ref v) = self.request_options.as_ref() {
5696            let len = v.compute_size();
5697            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
5698        }
5699        if self.data_boost_enabled != false {
5700            my_size += 2;
5701        }
5702        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
5703        self.cached_size.set(my_size);
5704        my_size
5705    }
5706
5707    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
5708        if !self.session.is_empty() {
5709            os.write_string(1, &self.session)?;
5710        }
5711        if let Some(ref v) = self.transaction.as_ref() {
5712            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
5713            os.write_raw_varint32(v.get_cached_size())?;
5714            v.write_to_with_cached_sizes(os)?;
5715        }
5716        if !self.table.is_empty() {
5717            os.write_string(3, &self.table)?;
5718        }
5719        if !self.index.is_empty() {
5720            os.write_string(4, &self.index)?;
5721        }
5722        for v in &self.columns {
5723            os.write_string(5, &v)?;
5724        };
5725        if let Some(ref v) = self.key_set.as_ref() {
5726            os.write_tag(6, ::protobuf::wire_format::WireTypeLengthDelimited)?;
5727            os.write_raw_varint32(v.get_cached_size())?;
5728            v.write_to_with_cached_sizes(os)?;
5729        }
5730        if self.limit != 0 {
5731            os.write_int64(8, self.limit)?;
5732        }
5733        if !self.resume_token.is_empty() {
5734            os.write_bytes(9, &self.resume_token)?;
5735        }
5736        if !self.partition_token.is_empty() {
5737            os.write_bytes(10, &self.partition_token)?;
5738        }
5739        if let Some(ref v) = self.request_options.as_ref() {
5740            os.write_tag(11, ::protobuf::wire_format::WireTypeLengthDelimited)?;
5741            os.write_raw_varint32(v.get_cached_size())?;
5742            v.write_to_with_cached_sizes(os)?;
5743        }
5744        if self.data_boost_enabled != false {
5745            os.write_bool(15, self.data_boost_enabled)?;
5746        }
5747        os.write_unknown_fields(self.get_unknown_fields())?;
5748        ::std::result::Result::Ok(())
5749    }
5750
5751    fn get_cached_size(&self) -> u32 {
5752        self.cached_size.get()
5753    }
5754
5755    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
5756        &self.unknown_fields
5757    }
5758
5759    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
5760        &mut self.unknown_fields
5761    }
5762
5763    fn as_any(&self) -> &dyn (::std::any::Any) {
5764        self as &dyn (::std::any::Any)
5765    }
5766    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
5767        self as &mut dyn (::std::any::Any)
5768    }
5769    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
5770        self
5771    }
5772
5773    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
5774        Self::descriptor_static()
5775    }
5776
5777    fn new() -> ReadRequest {
5778        ReadRequest::new()
5779    }
5780
5781    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
5782        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
5783        descriptor.get(|| {
5784            let mut fields = ::std::vec::Vec::new();
5785            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
5786                "session",
5787                |m: &ReadRequest| { &m.session },
5788                |m: &mut ReadRequest| { &mut m.session },
5789            ));
5790            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::transaction::TransactionSelector>>(
5791                "transaction",
5792                |m: &ReadRequest| { &m.transaction },
5793                |m: &mut ReadRequest| { &mut m.transaction },
5794            ));
5795            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
5796                "table",
5797                |m: &ReadRequest| { &m.table },
5798                |m: &mut ReadRequest| { &mut m.table },
5799            ));
5800            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
5801                "index",
5802                |m: &ReadRequest| { &m.index },
5803                |m: &mut ReadRequest| { &mut m.index },
5804            ));
5805            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
5806                "columns",
5807                |m: &ReadRequest| { &m.columns },
5808                |m: &mut ReadRequest| { &mut m.columns },
5809            ));
5810            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::keys::KeySet>>(
5811                "key_set",
5812                |m: &ReadRequest| { &m.key_set },
5813                |m: &mut ReadRequest| { &mut m.key_set },
5814            ));
5815            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeInt64>(
5816                "limit",
5817                |m: &ReadRequest| { &m.limit },
5818                |m: &mut ReadRequest| { &mut m.limit },
5819            ));
5820            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
5821                "resume_token",
5822                |m: &ReadRequest| { &m.resume_token },
5823                |m: &mut ReadRequest| { &mut m.resume_token },
5824            ));
5825            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
5826                "partition_token",
5827                |m: &ReadRequest| { &m.partition_token },
5828                |m: &mut ReadRequest| { &mut m.partition_token },
5829            ));
5830            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<RequestOptions>>(
5831                "request_options",
5832                |m: &ReadRequest| { &m.request_options },
5833                |m: &mut ReadRequest| { &mut m.request_options },
5834            ));
5835            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
5836                "data_boost_enabled",
5837                |m: &ReadRequest| { &m.data_boost_enabled },
5838                |m: &mut ReadRequest| { &mut m.data_boost_enabled },
5839            ));
5840            ::protobuf::reflect::MessageDescriptor::new_pb_name::<ReadRequest>(
5841                "ReadRequest",
5842                fields,
5843                file_descriptor_proto()
5844            )
5845        })
5846    }
5847
5848    fn default_instance() -> &'static ReadRequest {
5849        static instance: ::protobuf::rt::LazyV2<ReadRequest> = ::protobuf::rt::LazyV2::INIT;
5850        instance.get(ReadRequest::new)
5851    }
5852}
5853
5854impl ::protobuf::Clear for ReadRequest {
5855    fn clear(&mut self) {
5856        self.session.clear();
5857        self.transaction.clear();
5858        self.table.clear();
5859        self.index.clear();
5860        self.columns.clear();
5861        self.key_set.clear();
5862        self.limit = 0;
5863        self.resume_token.clear();
5864        self.partition_token.clear();
5865        self.request_options.clear();
5866        self.data_boost_enabled = false;
5867        self.unknown_fields.clear();
5868    }
5869}
5870
5871impl ::std::fmt::Debug for ReadRequest {
5872    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
5873        ::protobuf::text_format::fmt(self, f)
5874    }
5875}
5876
5877impl ::protobuf::reflect::ProtobufValue for ReadRequest {
5878    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
5879        ::protobuf::reflect::ReflectValueRef::Message(self)
5880    }
5881}
5882
5883#[derive(PartialEq,Clone,Default)]
5884pub struct BeginTransactionRequest {
5885    // message fields
5886    pub session: ::std::string::String,
5887    pub options: ::protobuf::SingularPtrField<super::transaction::TransactionOptions>,
5888    pub request_options: ::protobuf::SingularPtrField<RequestOptions>,
5889    // special fields
5890    pub unknown_fields: ::protobuf::UnknownFields,
5891    pub cached_size: ::protobuf::CachedSize,
5892}
5893
5894impl<'a> ::std::default::Default for &'a BeginTransactionRequest {
5895    fn default() -> &'a BeginTransactionRequest {
5896        <BeginTransactionRequest as ::protobuf::Message>::default_instance()
5897    }
5898}
5899
5900impl BeginTransactionRequest {
5901    pub fn new() -> BeginTransactionRequest {
5902        ::std::default::Default::default()
5903    }
5904
5905    // string session = 1;
5906
5907
5908    pub fn get_session(&self) -> &str {
5909        &self.session
5910    }
5911    pub fn clear_session(&mut self) {
5912        self.session.clear();
5913    }
5914
5915    // Param is passed by value, moved
5916    pub fn set_session(&mut self, v: ::std::string::String) {
5917        self.session = v;
5918    }
5919
5920    // Mutable pointer to the field.
5921    // If field is not initialized, it is initialized with default value first.
5922    pub fn mut_session(&mut self) -> &mut ::std::string::String {
5923        &mut self.session
5924    }
5925
5926    // Take field
5927    pub fn take_session(&mut self) -> ::std::string::String {
5928        ::std::mem::replace(&mut self.session, ::std::string::String::new())
5929    }
5930
5931    // .google.spanner.v1.TransactionOptions options = 2;
5932
5933
5934    pub fn get_options(&self) -> &super::transaction::TransactionOptions {
5935        self.options.as_ref().unwrap_or_else(|| <super::transaction::TransactionOptions as ::protobuf::Message>::default_instance())
5936    }
5937    pub fn clear_options(&mut self) {
5938        self.options.clear();
5939    }
5940
5941    pub fn has_options(&self) -> bool {
5942        self.options.is_some()
5943    }
5944
5945    // Param is passed by value, moved
5946    pub fn set_options(&mut self, v: super::transaction::TransactionOptions) {
5947        self.options = ::protobuf::SingularPtrField::some(v);
5948    }
5949
5950    // Mutable pointer to the field.
5951    // If field is not initialized, it is initialized with default value first.
5952    pub fn mut_options(&mut self) -> &mut super::transaction::TransactionOptions {
5953        if self.options.is_none() {
5954            self.options.set_default();
5955        }
5956        self.options.as_mut().unwrap()
5957    }
5958
5959    // Take field
5960    pub fn take_options(&mut self) -> super::transaction::TransactionOptions {
5961        self.options.take().unwrap_or_else(|| super::transaction::TransactionOptions::new())
5962    }
5963
5964    // .google.spanner.v1.RequestOptions request_options = 3;
5965
5966
5967    pub fn get_request_options(&self) -> &RequestOptions {
5968        self.request_options.as_ref().unwrap_or_else(|| <RequestOptions as ::protobuf::Message>::default_instance())
5969    }
5970    pub fn clear_request_options(&mut self) {
5971        self.request_options.clear();
5972    }
5973
5974    pub fn has_request_options(&self) -> bool {
5975        self.request_options.is_some()
5976    }
5977
5978    // Param is passed by value, moved
5979    pub fn set_request_options(&mut self, v: RequestOptions) {
5980        self.request_options = ::protobuf::SingularPtrField::some(v);
5981    }
5982
5983    // Mutable pointer to the field.
5984    // If field is not initialized, it is initialized with default value first.
5985    pub fn mut_request_options(&mut self) -> &mut RequestOptions {
5986        if self.request_options.is_none() {
5987            self.request_options.set_default();
5988        }
5989        self.request_options.as_mut().unwrap()
5990    }
5991
5992    // Take field
5993    pub fn take_request_options(&mut self) -> RequestOptions {
5994        self.request_options.take().unwrap_or_else(|| RequestOptions::new())
5995    }
5996}
5997
5998impl ::protobuf::Message for BeginTransactionRequest {
5999    fn is_initialized(&self) -> bool {
6000        for v in &self.options {
6001            if !v.is_initialized() {
6002                return false;
6003            }
6004        };
6005        for v in &self.request_options {
6006            if !v.is_initialized() {
6007                return false;
6008            }
6009        };
6010        true
6011    }
6012
6013    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
6014        while !is.eof()? {
6015            let (field_number, wire_type) = is.read_tag_unpack()?;
6016            match field_number {
6017                1 => {
6018                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.session)?;
6019                },
6020                2 => {
6021                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.options)?;
6022                },
6023                3 => {
6024                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.request_options)?;
6025                },
6026                _ => {
6027                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
6028                },
6029            };
6030        }
6031        ::std::result::Result::Ok(())
6032    }
6033
6034    // Compute sizes of nested messages
6035    #[allow(unused_variables)]
6036    fn compute_size(&self) -> u32 {
6037        let mut my_size = 0;
6038        if !self.session.is_empty() {
6039            my_size += ::protobuf::rt::string_size(1, &self.session);
6040        }
6041        if let Some(ref v) = self.options.as_ref() {
6042            let len = v.compute_size();
6043            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
6044        }
6045        if let Some(ref v) = self.request_options.as_ref() {
6046            let len = v.compute_size();
6047            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
6048        }
6049        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
6050        self.cached_size.set(my_size);
6051        my_size
6052    }
6053
6054    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
6055        if !self.session.is_empty() {
6056            os.write_string(1, &self.session)?;
6057        }
6058        if let Some(ref v) = self.options.as_ref() {
6059            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
6060            os.write_raw_varint32(v.get_cached_size())?;
6061            v.write_to_with_cached_sizes(os)?;
6062        }
6063        if let Some(ref v) = self.request_options.as_ref() {
6064            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
6065            os.write_raw_varint32(v.get_cached_size())?;
6066            v.write_to_with_cached_sizes(os)?;
6067        }
6068        os.write_unknown_fields(self.get_unknown_fields())?;
6069        ::std::result::Result::Ok(())
6070    }
6071
6072    fn get_cached_size(&self) -> u32 {
6073        self.cached_size.get()
6074    }
6075
6076    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
6077        &self.unknown_fields
6078    }
6079
6080    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
6081        &mut self.unknown_fields
6082    }
6083
6084    fn as_any(&self) -> &dyn (::std::any::Any) {
6085        self as &dyn (::std::any::Any)
6086    }
6087    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
6088        self as &mut dyn (::std::any::Any)
6089    }
6090    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
6091        self
6092    }
6093
6094    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
6095        Self::descriptor_static()
6096    }
6097
6098    fn new() -> BeginTransactionRequest {
6099        BeginTransactionRequest::new()
6100    }
6101
6102    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
6103        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
6104        descriptor.get(|| {
6105            let mut fields = ::std::vec::Vec::new();
6106            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
6107                "session",
6108                |m: &BeginTransactionRequest| { &m.session },
6109                |m: &mut BeginTransactionRequest| { &mut m.session },
6110            ));
6111            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::transaction::TransactionOptions>>(
6112                "options",
6113                |m: &BeginTransactionRequest| { &m.options },
6114                |m: &mut BeginTransactionRequest| { &mut m.options },
6115            ));
6116            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<RequestOptions>>(
6117                "request_options",
6118                |m: &BeginTransactionRequest| { &m.request_options },
6119                |m: &mut BeginTransactionRequest| { &mut m.request_options },
6120            ));
6121            ::protobuf::reflect::MessageDescriptor::new_pb_name::<BeginTransactionRequest>(
6122                "BeginTransactionRequest",
6123                fields,
6124                file_descriptor_proto()
6125            )
6126        })
6127    }
6128
6129    fn default_instance() -> &'static BeginTransactionRequest {
6130        static instance: ::protobuf::rt::LazyV2<BeginTransactionRequest> = ::protobuf::rt::LazyV2::INIT;
6131        instance.get(BeginTransactionRequest::new)
6132    }
6133}
6134
6135impl ::protobuf::Clear for BeginTransactionRequest {
6136    fn clear(&mut self) {
6137        self.session.clear();
6138        self.options.clear();
6139        self.request_options.clear();
6140        self.unknown_fields.clear();
6141    }
6142}
6143
6144impl ::std::fmt::Debug for BeginTransactionRequest {
6145    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6146        ::protobuf::text_format::fmt(self, f)
6147    }
6148}
6149
6150impl ::protobuf::reflect::ProtobufValue for BeginTransactionRequest {
6151    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
6152        ::protobuf::reflect::ReflectValueRef::Message(self)
6153    }
6154}
6155
6156#[derive(PartialEq,Clone,Default)]
6157pub struct CommitRequest {
6158    // message fields
6159    pub session: ::std::string::String,
6160    pub mutations: ::protobuf::RepeatedField<super::mutation::Mutation>,
6161    pub return_commit_stats: bool,
6162    pub request_options: ::protobuf::SingularPtrField<RequestOptions>,
6163    // message oneof groups
6164    pub transaction: ::std::option::Option<CommitRequest_oneof_transaction>,
6165    // special fields
6166    pub unknown_fields: ::protobuf::UnknownFields,
6167    pub cached_size: ::protobuf::CachedSize,
6168}
6169
6170impl<'a> ::std::default::Default for &'a CommitRequest {
6171    fn default() -> &'a CommitRequest {
6172        <CommitRequest as ::protobuf::Message>::default_instance()
6173    }
6174}
6175
6176#[derive(Clone,PartialEq,Debug)]
6177pub enum CommitRequest_oneof_transaction {
6178    transaction_id(::std::vec::Vec<u8>),
6179    single_use_transaction(super::transaction::TransactionOptions),
6180}
6181
6182impl CommitRequest {
6183    pub fn new() -> CommitRequest {
6184        ::std::default::Default::default()
6185    }
6186
6187    // string session = 1;
6188
6189
6190    pub fn get_session(&self) -> &str {
6191        &self.session
6192    }
6193    pub fn clear_session(&mut self) {
6194        self.session.clear();
6195    }
6196
6197    // Param is passed by value, moved
6198    pub fn set_session(&mut self, v: ::std::string::String) {
6199        self.session = v;
6200    }
6201
6202    // Mutable pointer to the field.
6203    // If field is not initialized, it is initialized with default value first.
6204    pub fn mut_session(&mut self) -> &mut ::std::string::String {
6205        &mut self.session
6206    }
6207
6208    // Take field
6209    pub fn take_session(&mut self) -> ::std::string::String {
6210        ::std::mem::replace(&mut self.session, ::std::string::String::new())
6211    }
6212
6213    // bytes transaction_id = 2;
6214
6215
6216    pub fn get_transaction_id(&self) -> &[u8] {
6217        match self.transaction {
6218            ::std::option::Option::Some(CommitRequest_oneof_transaction::transaction_id(ref v)) => v,
6219            _ => &[],
6220        }
6221    }
6222    pub fn clear_transaction_id(&mut self) {
6223        self.transaction = ::std::option::Option::None;
6224    }
6225
6226    pub fn has_transaction_id(&self) -> bool {
6227        match self.transaction {
6228            ::std::option::Option::Some(CommitRequest_oneof_transaction::transaction_id(..)) => true,
6229            _ => false,
6230        }
6231    }
6232
6233    // Param is passed by value, moved
6234    pub fn set_transaction_id(&mut self, v: ::std::vec::Vec<u8>) {
6235        self.transaction = ::std::option::Option::Some(CommitRequest_oneof_transaction::transaction_id(v))
6236    }
6237
6238    // Mutable pointer to the field.
6239    pub fn mut_transaction_id(&mut self) -> &mut ::std::vec::Vec<u8> {
6240        if let ::std::option::Option::Some(CommitRequest_oneof_transaction::transaction_id(_)) = self.transaction {
6241        } else {
6242            self.transaction = ::std::option::Option::Some(CommitRequest_oneof_transaction::transaction_id(::std::vec::Vec::new()));
6243        }
6244        match self.transaction {
6245            ::std::option::Option::Some(CommitRequest_oneof_transaction::transaction_id(ref mut v)) => v,
6246            _ => panic!(),
6247        }
6248    }
6249
6250    // Take field
6251    pub fn take_transaction_id(&mut self) -> ::std::vec::Vec<u8> {
6252        if self.has_transaction_id() {
6253            match self.transaction.take() {
6254                ::std::option::Option::Some(CommitRequest_oneof_transaction::transaction_id(v)) => v,
6255                _ => panic!(),
6256            }
6257        } else {
6258            ::std::vec::Vec::new()
6259        }
6260    }
6261
6262    // .google.spanner.v1.TransactionOptions single_use_transaction = 3;
6263
6264
6265    pub fn get_single_use_transaction(&self) -> &super::transaction::TransactionOptions {
6266        match self.transaction {
6267            ::std::option::Option::Some(CommitRequest_oneof_transaction::single_use_transaction(ref v)) => v,
6268            _ => <super::transaction::TransactionOptions as ::protobuf::Message>::default_instance(),
6269        }
6270    }
6271    pub fn clear_single_use_transaction(&mut self) {
6272        self.transaction = ::std::option::Option::None;
6273    }
6274
6275    pub fn has_single_use_transaction(&self) -> bool {
6276        match self.transaction {
6277            ::std::option::Option::Some(CommitRequest_oneof_transaction::single_use_transaction(..)) => true,
6278            _ => false,
6279        }
6280    }
6281
6282    // Param is passed by value, moved
6283    pub fn set_single_use_transaction(&mut self, v: super::transaction::TransactionOptions) {
6284        self.transaction = ::std::option::Option::Some(CommitRequest_oneof_transaction::single_use_transaction(v))
6285    }
6286
6287    // Mutable pointer to the field.
6288    pub fn mut_single_use_transaction(&mut self) -> &mut super::transaction::TransactionOptions {
6289        if let ::std::option::Option::Some(CommitRequest_oneof_transaction::single_use_transaction(_)) = self.transaction {
6290        } else {
6291            self.transaction = ::std::option::Option::Some(CommitRequest_oneof_transaction::single_use_transaction(super::transaction::TransactionOptions::new()));
6292        }
6293        match self.transaction {
6294            ::std::option::Option::Some(CommitRequest_oneof_transaction::single_use_transaction(ref mut v)) => v,
6295            _ => panic!(),
6296        }
6297    }
6298
6299    // Take field
6300    pub fn take_single_use_transaction(&mut self) -> super::transaction::TransactionOptions {
6301        if self.has_single_use_transaction() {
6302            match self.transaction.take() {
6303                ::std::option::Option::Some(CommitRequest_oneof_transaction::single_use_transaction(v)) => v,
6304                _ => panic!(),
6305            }
6306        } else {
6307            super::transaction::TransactionOptions::new()
6308        }
6309    }
6310
6311    // repeated .google.spanner.v1.Mutation mutations = 4;
6312
6313
6314    pub fn get_mutations(&self) -> &[super::mutation::Mutation] {
6315        &self.mutations
6316    }
6317    pub fn clear_mutations(&mut self) {
6318        self.mutations.clear();
6319    }
6320
6321    // Param is passed by value, moved
6322    pub fn set_mutations(&mut self, v: ::protobuf::RepeatedField<super::mutation::Mutation>) {
6323        self.mutations = v;
6324    }
6325
6326    // Mutable pointer to the field.
6327    pub fn mut_mutations(&mut self) -> &mut ::protobuf::RepeatedField<super::mutation::Mutation> {
6328        &mut self.mutations
6329    }
6330
6331    // Take field
6332    pub fn take_mutations(&mut self) -> ::protobuf::RepeatedField<super::mutation::Mutation> {
6333        ::std::mem::replace(&mut self.mutations, ::protobuf::RepeatedField::new())
6334    }
6335
6336    // bool return_commit_stats = 5;
6337
6338
6339    pub fn get_return_commit_stats(&self) -> bool {
6340        self.return_commit_stats
6341    }
6342    pub fn clear_return_commit_stats(&mut self) {
6343        self.return_commit_stats = false;
6344    }
6345
6346    // Param is passed by value, moved
6347    pub fn set_return_commit_stats(&mut self, v: bool) {
6348        self.return_commit_stats = v;
6349    }
6350
6351    // .google.spanner.v1.RequestOptions request_options = 6;
6352
6353
6354    pub fn get_request_options(&self) -> &RequestOptions {
6355        self.request_options.as_ref().unwrap_or_else(|| <RequestOptions as ::protobuf::Message>::default_instance())
6356    }
6357    pub fn clear_request_options(&mut self) {
6358        self.request_options.clear();
6359    }
6360
6361    pub fn has_request_options(&self) -> bool {
6362        self.request_options.is_some()
6363    }
6364
6365    // Param is passed by value, moved
6366    pub fn set_request_options(&mut self, v: RequestOptions) {
6367        self.request_options = ::protobuf::SingularPtrField::some(v);
6368    }
6369
6370    // Mutable pointer to the field.
6371    // If field is not initialized, it is initialized with default value first.
6372    pub fn mut_request_options(&mut self) -> &mut RequestOptions {
6373        if self.request_options.is_none() {
6374            self.request_options.set_default();
6375        }
6376        self.request_options.as_mut().unwrap()
6377    }
6378
6379    // Take field
6380    pub fn take_request_options(&mut self) -> RequestOptions {
6381        self.request_options.take().unwrap_or_else(|| RequestOptions::new())
6382    }
6383}
6384
6385impl ::protobuf::Message for CommitRequest {
6386    fn is_initialized(&self) -> bool {
6387        if let Some(CommitRequest_oneof_transaction::single_use_transaction(ref v)) = self.transaction {
6388            if !v.is_initialized() {
6389                return false;
6390            }
6391        }
6392        for v in &self.mutations {
6393            if !v.is_initialized() {
6394                return false;
6395            }
6396        };
6397        for v in &self.request_options {
6398            if !v.is_initialized() {
6399                return false;
6400            }
6401        };
6402        true
6403    }
6404
6405    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
6406        while !is.eof()? {
6407            let (field_number, wire_type) = is.read_tag_unpack()?;
6408            match field_number {
6409                1 => {
6410                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.session)?;
6411                },
6412                2 => {
6413                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
6414                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
6415                    }
6416                    self.transaction = ::std::option::Option::Some(CommitRequest_oneof_transaction::transaction_id(is.read_bytes()?));
6417                },
6418                3 => {
6419                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
6420                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
6421                    }
6422                    self.transaction = ::std::option::Option::Some(CommitRequest_oneof_transaction::single_use_transaction(is.read_message()?));
6423                },
6424                4 => {
6425                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.mutations)?;
6426                },
6427                5 => {
6428                    if wire_type != ::protobuf::wire_format::WireTypeVarint {
6429                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
6430                    }
6431                    let tmp = is.read_bool()?;
6432                    self.return_commit_stats = tmp;
6433                },
6434                6 => {
6435                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.request_options)?;
6436                },
6437                _ => {
6438                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
6439                },
6440            };
6441        }
6442        ::std::result::Result::Ok(())
6443    }
6444
6445    // Compute sizes of nested messages
6446    #[allow(unused_variables)]
6447    fn compute_size(&self) -> u32 {
6448        let mut my_size = 0;
6449        if !self.session.is_empty() {
6450            my_size += ::protobuf::rt::string_size(1, &self.session);
6451        }
6452        for value in &self.mutations {
6453            let len = value.compute_size();
6454            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
6455        };
6456        if self.return_commit_stats != false {
6457            my_size += 2;
6458        }
6459        if let Some(ref v) = self.request_options.as_ref() {
6460            let len = v.compute_size();
6461            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
6462        }
6463        if let ::std::option::Option::Some(ref v) = self.transaction {
6464            match v {
6465                &CommitRequest_oneof_transaction::transaction_id(ref v) => {
6466                    my_size += ::protobuf::rt::bytes_size(2, &v);
6467                },
6468                &CommitRequest_oneof_transaction::single_use_transaction(ref v) => {
6469                    let len = v.compute_size();
6470                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
6471                },
6472            };
6473        }
6474        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
6475        self.cached_size.set(my_size);
6476        my_size
6477    }
6478
6479    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
6480        if !self.session.is_empty() {
6481            os.write_string(1, &self.session)?;
6482        }
6483        for v in &self.mutations {
6484            os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
6485            os.write_raw_varint32(v.get_cached_size())?;
6486            v.write_to_with_cached_sizes(os)?;
6487        };
6488        if self.return_commit_stats != false {
6489            os.write_bool(5, self.return_commit_stats)?;
6490        }
6491        if let Some(ref v) = self.request_options.as_ref() {
6492            os.write_tag(6, ::protobuf::wire_format::WireTypeLengthDelimited)?;
6493            os.write_raw_varint32(v.get_cached_size())?;
6494            v.write_to_with_cached_sizes(os)?;
6495        }
6496        if let ::std::option::Option::Some(ref v) = self.transaction {
6497            match v {
6498                &CommitRequest_oneof_transaction::transaction_id(ref v) => {
6499                    os.write_bytes(2, v)?;
6500                },
6501                &CommitRequest_oneof_transaction::single_use_transaction(ref v) => {
6502                    os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
6503                    os.write_raw_varint32(v.get_cached_size())?;
6504                    v.write_to_with_cached_sizes(os)?;
6505                },
6506            };
6507        }
6508        os.write_unknown_fields(self.get_unknown_fields())?;
6509        ::std::result::Result::Ok(())
6510    }
6511
6512    fn get_cached_size(&self) -> u32 {
6513        self.cached_size.get()
6514    }
6515
6516    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
6517        &self.unknown_fields
6518    }
6519
6520    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
6521        &mut self.unknown_fields
6522    }
6523
6524    fn as_any(&self) -> &dyn (::std::any::Any) {
6525        self as &dyn (::std::any::Any)
6526    }
6527    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
6528        self as &mut dyn (::std::any::Any)
6529    }
6530    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
6531        self
6532    }
6533
6534    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
6535        Self::descriptor_static()
6536    }
6537
6538    fn new() -> CommitRequest {
6539        CommitRequest::new()
6540    }
6541
6542    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
6543        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
6544        descriptor.get(|| {
6545            let mut fields = ::std::vec::Vec::new();
6546            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
6547                "session",
6548                |m: &CommitRequest| { &m.session },
6549                |m: &mut CommitRequest| { &mut m.session },
6550            ));
6551            fields.push(::protobuf::reflect::accessor::make_singular_bytes_accessor::<_>(
6552                "transaction_id",
6553                CommitRequest::has_transaction_id,
6554                CommitRequest::get_transaction_id,
6555            ));
6556            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, super::transaction::TransactionOptions>(
6557                "single_use_transaction",
6558                CommitRequest::has_single_use_transaction,
6559                CommitRequest::get_single_use_transaction,
6560            ));
6561            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::mutation::Mutation>>(
6562                "mutations",
6563                |m: &CommitRequest| { &m.mutations },
6564                |m: &mut CommitRequest| { &mut m.mutations },
6565            ));
6566            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBool>(
6567                "return_commit_stats",
6568                |m: &CommitRequest| { &m.return_commit_stats },
6569                |m: &mut CommitRequest| { &mut m.return_commit_stats },
6570            ));
6571            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<RequestOptions>>(
6572                "request_options",
6573                |m: &CommitRequest| { &m.request_options },
6574                |m: &mut CommitRequest| { &mut m.request_options },
6575            ));
6576            ::protobuf::reflect::MessageDescriptor::new_pb_name::<CommitRequest>(
6577                "CommitRequest",
6578                fields,
6579                file_descriptor_proto()
6580            )
6581        })
6582    }
6583
6584    fn default_instance() -> &'static CommitRequest {
6585        static instance: ::protobuf::rt::LazyV2<CommitRequest> = ::protobuf::rt::LazyV2::INIT;
6586        instance.get(CommitRequest::new)
6587    }
6588}
6589
6590impl ::protobuf::Clear for CommitRequest {
6591    fn clear(&mut self) {
6592        self.session.clear();
6593        self.transaction = ::std::option::Option::None;
6594        self.transaction = ::std::option::Option::None;
6595        self.mutations.clear();
6596        self.return_commit_stats = false;
6597        self.request_options.clear();
6598        self.unknown_fields.clear();
6599    }
6600}
6601
6602impl ::std::fmt::Debug for CommitRequest {
6603    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6604        ::protobuf::text_format::fmt(self, f)
6605    }
6606}
6607
6608impl ::protobuf::reflect::ProtobufValue for CommitRequest {
6609    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
6610        ::protobuf::reflect::ReflectValueRef::Message(self)
6611    }
6612}
6613
6614#[derive(PartialEq,Clone,Default)]
6615pub struct RollbackRequest {
6616    // message fields
6617    pub session: ::std::string::String,
6618    pub transaction_id: ::std::vec::Vec<u8>,
6619    // special fields
6620    pub unknown_fields: ::protobuf::UnknownFields,
6621    pub cached_size: ::protobuf::CachedSize,
6622}
6623
6624impl<'a> ::std::default::Default for &'a RollbackRequest {
6625    fn default() -> &'a RollbackRequest {
6626        <RollbackRequest as ::protobuf::Message>::default_instance()
6627    }
6628}
6629
6630impl RollbackRequest {
6631    pub fn new() -> RollbackRequest {
6632        ::std::default::Default::default()
6633    }
6634
6635    // string session = 1;
6636
6637
6638    pub fn get_session(&self) -> &str {
6639        &self.session
6640    }
6641    pub fn clear_session(&mut self) {
6642        self.session.clear();
6643    }
6644
6645    // Param is passed by value, moved
6646    pub fn set_session(&mut self, v: ::std::string::String) {
6647        self.session = v;
6648    }
6649
6650    // Mutable pointer to the field.
6651    // If field is not initialized, it is initialized with default value first.
6652    pub fn mut_session(&mut self) -> &mut ::std::string::String {
6653        &mut self.session
6654    }
6655
6656    // Take field
6657    pub fn take_session(&mut self) -> ::std::string::String {
6658        ::std::mem::replace(&mut self.session, ::std::string::String::new())
6659    }
6660
6661    // bytes transaction_id = 2;
6662
6663
6664    pub fn get_transaction_id(&self) -> &[u8] {
6665        &self.transaction_id
6666    }
6667    pub fn clear_transaction_id(&mut self) {
6668        self.transaction_id.clear();
6669    }
6670
6671    // Param is passed by value, moved
6672    pub fn set_transaction_id(&mut self, v: ::std::vec::Vec<u8>) {
6673        self.transaction_id = v;
6674    }
6675
6676    // Mutable pointer to the field.
6677    // If field is not initialized, it is initialized with default value first.
6678    pub fn mut_transaction_id(&mut self) -> &mut ::std::vec::Vec<u8> {
6679        &mut self.transaction_id
6680    }
6681
6682    // Take field
6683    pub fn take_transaction_id(&mut self) -> ::std::vec::Vec<u8> {
6684        ::std::mem::replace(&mut self.transaction_id, ::std::vec::Vec::new())
6685    }
6686}
6687
6688impl ::protobuf::Message for RollbackRequest {
6689    fn is_initialized(&self) -> bool {
6690        true
6691    }
6692
6693    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
6694        while !is.eof()? {
6695            let (field_number, wire_type) = is.read_tag_unpack()?;
6696            match field_number {
6697                1 => {
6698                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.session)?;
6699                },
6700                2 => {
6701                    ::protobuf::rt::read_singular_proto3_bytes_into(wire_type, is, &mut self.transaction_id)?;
6702                },
6703                _ => {
6704                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
6705                },
6706            };
6707        }
6708        ::std::result::Result::Ok(())
6709    }
6710
6711    // Compute sizes of nested messages
6712    #[allow(unused_variables)]
6713    fn compute_size(&self) -> u32 {
6714        let mut my_size = 0;
6715        if !self.session.is_empty() {
6716            my_size += ::protobuf::rt::string_size(1, &self.session);
6717        }
6718        if !self.transaction_id.is_empty() {
6719            my_size += ::protobuf::rt::bytes_size(2, &self.transaction_id);
6720        }
6721        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
6722        self.cached_size.set(my_size);
6723        my_size
6724    }
6725
6726    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
6727        if !self.session.is_empty() {
6728            os.write_string(1, &self.session)?;
6729        }
6730        if !self.transaction_id.is_empty() {
6731            os.write_bytes(2, &self.transaction_id)?;
6732        }
6733        os.write_unknown_fields(self.get_unknown_fields())?;
6734        ::std::result::Result::Ok(())
6735    }
6736
6737    fn get_cached_size(&self) -> u32 {
6738        self.cached_size.get()
6739    }
6740
6741    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
6742        &self.unknown_fields
6743    }
6744
6745    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
6746        &mut self.unknown_fields
6747    }
6748
6749    fn as_any(&self) -> &dyn (::std::any::Any) {
6750        self as &dyn (::std::any::Any)
6751    }
6752    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
6753        self as &mut dyn (::std::any::Any)
6754    }
6755    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
6756        self
6757    }
6758
6759    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
6760        Self::descriptor_static()
6761    }
6762
6763    fn new() -> RollbackRequest {
6764        RollbackRequest::new()
6765    }
6766
6767    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
6768        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
6769        descriptor.get(|| {
6770            let mut fields = ::std::vec::Vec::new();
6771            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
6772                "session",
6773                |m: &RollbackRequest| { &m.session },
6774                |m: &mut RollbackRequest| { &mut m.session },
6775            ));
6776            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeBytes>(
6777                "transaction_id",
6778                |m: &RollbackRequest| { &m.transaction_id },
6779                |m: &mut RollbackRequest| { &mut m.transaction_id },
6780            ));
6781            ::protobuf::reflect::MessageDescriptor::new_pb_name::<RollbackRequest>(
6782                "RollbackRequest",
6783                fields,
6784                file_descriptor_proto()
6785            )
6786        })
6787    }
6788
6789    fn default_instance() -> &'static RollbackRequest {
6790        static instance: ::protobuf::rt::LazyV2<RollbackRequest> = ::protobuf::rt::LazyV2::INIT;
6791        instance.get(RollbackRequest::new)
6792    }
6793}
6794
6795impl ::protobuf::Clear for RollbackRequest {
6796    fn clear(&mut self) {
6797        self.session.clear();
6798        self.transaction_id.clear();
6799        self.unknown_fields.clear();
6800    }
6801}
6802
6803impl ::std::fmt::Debug for RollbackRequest {
6804    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
6805        ::protobuf::text_format::fmt(self, f)
6806    }
6807}
6808
6809impl ::protobuf::reflect::ProtobufValue for RollbackRequest {
6810    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
6811        ::protobuf::reflect::ReflectValueRef::Message(self)
6812    }
6813}
6814
6815#[derive(PartialEq,Clone,Default)]
6816pub struct BatchWriteRequest {
6817    // message fields
6818    pub session: ::std::string::String,
6819    pub request_options: ::protobuf::SingularPtrField<RequestOptions>,
6820    pub mutation_groups: ::protobuf::RepeatedField<BatchWriteRequest_MutationGroup>,
6821    // special fields
6822    pub unknown_fields: ::protobuf::UnknownFields,
6823    pub cached_size: ::protobuf::CachedSize,
6824}
6825
6826impl<'a> ::std::default::Default for &'a BatchWriteRequest {
6827    fn default() -> &'a BatchWriteRequest {
6828        <BatchWriteRequest as ::protobuf::Message>::default_instance()
6829    }
6830}
6831
6832impl BatchWriteRequest {
6833    pub fn new() -> BatchWriteRequest {
6834        ::std::default::Default::default()
6835    }
6836
6837    // string session = 1;
6838
6839
6840    pub fn get_session(&self) -> &str {
6841        &self.session
6842    }
6843    pub fn clear_session(&mut self) {
6844        self.session.clear();
6845    }
6846
6847    // Param is passed by value, moved
6848    pub fn set_session(&mut self, v: ::std::string::String) {
6849        self.session = v;
6850    }
6851
6852    // Mutable pointer to the field.
6853    // If field is not initialized, it is initialized with default value first.
6854    pub fn mut_session(&mut self) -> &mut ::std::string::String {
6855        &mut self.session
6856    }
6857
6858    // Take field
6859    pub fn take_session(&mut self) -> ::std::string::String {
6860        ::std::mem::replace(&mut self.session, ::std::string::String::new())
6861    }
6862
6863    // .google.spanner.v1.RequestOptions request_options = 3;
6864
6865
6866    pub fn get_request_options(&self) -> &RequestOptions {
6867        self.request_options.as_ref().unwrap_or_else(|| <RequestOptions as ::protobuf::Message>::default_instance())
6868    }
6869    pub fn clear_request_options(&mut self) {
6870        self.request_options.clear();
6871    }
6872
6873    pub fn has_request_options(&self) -> bool {
6874        self.request_options.is_some()
6875    }
6876
6877    // Param is passed by value, moved
6878    pub fn set_request_options(&mut self, v: RequestOptions) {
6879        self.request_options = ::protobuf::SingularPtrField::some(v);
6880    }
6881
6882    // Mutable pointer to the field.
6883    // If field is not initialized, it is initialized with default value first.
6884    pub fn mut_request_options(&mut self) -> &mut RequestOptions {
6885        if self.request_options.is_none() {
6886            self.request_options.set_default();
6887        }
6888        self.request_options.as_mut().unwrap()
6889    }
6890
6891    // Take field
6892    pub fn take_request_options(&mut self) -> RequestOptions {
6893        self.request_options.take().unwrap_or_else(|| RequestOptions::new())
6894    }
6895
6896    // repeated .google.spanner.v1.BatchWriteRequest.MutationGroup mutation_groups = 4;
6897
6898
6899    pub fn get_mutation_groups(&self) -> &[BatchWriteRequest_MutationGroup] {
6900        &self.mutation_groups
6901    }
6902    pub fn clear_mutation_groups(&mut self) {
6903        self.mutation_groups.clear();
6904    }
6905
6906    // Param is passed by value, moved
6907    pub fn set_mutation_groups(&mut self, v: ::protobuf::RepeatedField<BatchWriteRequest_MutationGroup>) {
6908        self.mutation_groups = v;
6909    }
6910
6911    // Mutable pointer to the field.
6912    pub fn mut_mutation_groups(&mut self) -> &mut ::protobuf::RepeatedField<BatchWriteRequest_MutationGroup> {
6913        &mut self.mutation_groups
6914    }
6915
6916    // Take field
6917    pub fn take_mutation_groups(&mut self) -> ::protobuf::RepeatedField<BatchWriteRequest_MutationGroup> {
6918        ::std::mem::replace(&mut self.mutation_groups, ::protobuf::RepeatedField::new())
6919    }
6920}
6921
6922impl ::protobuf::Message for BatchWriteRequest {
6923    fn is_initialized(&self) -> bool {
6924        for v in &self.request_options {
6925            if !v.is_initialized() {
6926                return false;
6927            }
6928        };
6929        for v in &self.mutation_groups {
6930            if !v.is_initialized() {
6931                return false;
6932            }
6933        };
6934        true
6935    }
6936
6937    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
6938        while !is.eof()? {
6939            let (field_number, wire_type) = is.read_tag_unpack()?;
6940            match field_number {
6941                1 => {
6942                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.session)?;
6943                },
6944                3 => {
6945                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.request_options)?;
6946                },
6947                4 => {
6948                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.mutation_groups)?;
6949                },
6950                _ => {
6951                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
6952                },
6953            };
6954        }
6955        ::std::result::Result::Ok(())
6956    }
6957
6958    // Compute sizes of nested messages
6959    #[allow(unused_variables)]
6960    fn compute_size(&self) -> u32 {
6961        let mut my_size = 0;
6962        if !self.session.is_empty() {
6963            my_size += ::protobuf::rt::string_size(1, &self.session);
6964        }
6965        if let Some(ref v) = self.request_options.as_ref() {
6966            let len = v.compute_size();
6967            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
6968        }
6969        for value in &self.mutation_groups {
6970            let len = value.compute_size();
6971            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
6972        };
6973        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
6974        self.cached_size.set(my_size);
6975        my_size
6976    }
6977
6978    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
6979        if !self.session.is_empty() {
6980            os.write_string(1, &self.session)?;
6981        }
6982        if let Some(ref v) = self.request_options.as_ref() {
6983            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
6984            os.write_raw_varint32(v.get_cached_size())?;
6985            v.write_to_with_cached_sizes(os)?;
6986        }
6987        for v in &self.mutation_groups {
6988            os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
6989            os.write_raw_varint32(v.get_cached_size())?;
6990            v.write_to_with_cached_sizes(os)?;
6991        };
6992        os.write_unknown_fields(self.get_unknown_fields())?;
6993        ::std::result::Result::Ok(())
6994    }
6995
6996    fn get_cached_size(&self) -> u32 {
6997        self.cached_size.get()
6998    }
6999
7000    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
7001        &self.unknown_fields
7002    }
7003
7004    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
7005        &mut self.unknown_fields
7006    }
7007
7008    fn as_any(&self) -> &dyn (::std::any::Any) {
7009        self as &dyn (::std::any::Any)
7010    }
7011    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
7012        self as &mut dyn (::std::any::Any)
7013    }
7014    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
7015        self
7016    }
7017
7018    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
7019        Self::descriptor_static()
7020    }
7021
7022    fn new() -> BatchWriteRequest {
7023        BatchWriteRequest::new()
7024    }
7025
7026    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
7027        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
7028        descriptor.get(|| {
7029            let mut fields = ::std::vec::Vec::new();
7030            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
7031                "session",
7032                |m: &BatchWriteRequest| { &m.session },
7033                |m: &mut BatchWriteRequest| { &mut m.session },
7034            ));
7035            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<RequestOptions>>(
7036                "request_options",
7037                |m: &BatchWriteRequest| { &m.request_options },
7038                |m: &mut BatchWriteRequest| { &mut m.request_options },
7039            ));
7040            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<BatchWriteRequest_MutationGroup>>(
7041                "mutation_groups",
7042                |m: &BatchWriteRequest| { &m.mutation_groups },
7043                |m: &mut BatchWriteRequest| { &mut m.mutation_groups },
7044            ));
7045            ::protobuf::reflect::MessageDescriptor::new_pb_name::<BatchWriteRequest>(
7046                "BatchWriteRequest",
7047                fields,
7048                file_descriptor_proto()
7049            )
7050        })
7051    }
7052
7053    fn default_instance() -> &'static BatchWriteRequest {
7054        static instance: ::protobuf::rt::LazyV2<BatchWriteRequest> = ::protobuf::rt::LazyV2::INIT;
7055        instance.get(BatchWriteRequest::new)
7056    }
7057}
7058
7059impl ::protobuf::Clear for BatchWriteRequest {
7060    fn clear(&mut self) {
7061        self.session.clear();
7062        self.request_options.clear();
7063        self.mutation_groups.clear();
7064        self.unknown_fields.clear();
7065    }
7066}
7067
7068impl ::std::fmt::Debug for BatchWriteRequest {
7069    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7070        ::protobuf::text_format::fmt(self, f)
7071    }
7072}
7073
7074impl ::protobuf::reflect::ProtobufValue for BatchWriteRequest {
7075    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
7076        ::protobuf::reflect::ReflectValueRef::Message(self)
7077    }
7078}
7079
7080#[derive(PartialEq,Clone,Default)]
7081pub struct BatchWriteRequest_MutationGroup {
7082    // message fields
7083    pub mutations: ::protobuf::RepeatedField<super::mutation::Mutation>,
7084    // special fields
7085    pub unknown_fields: ::protobuf::UnknownFields,
7086    pub cached_size: ::protobuf::CachedSize,
7087}
7088
7089impl<'a> ::std::default::Default for &'a BatchWriteRequest_MutationGroup {
7090    fn default() -> &'a BatchWriteRequest_MutationGroup {
7091        <BatchWriteRequest_MutationGroup as ::protobuf::Message>::default_instance()
7092    }
7093}
7094
7095impl BatchWriteRequest_MutationGroup {
7096    pub fn new() -> BatchWriteRequest_MutationGroup {
7097        ::std::default::Default::default()
7098    }
7099
7100    // repeated .google.spanner.v1.Mutation mutations = 1;
7101
7102
7103    pub fn get_mutations(&self) -> &[super::mutation::Mutation] {
7104        &self.mutations
7105    }
7106    pub fn clear_mutations(&mut self) {
7107        self.mutations.clear();
7108    }
7109
7110    // Param is passed by value, moved
7111    pub fn set_mutations(&mut self, v: ::protobuf::RepeatedField<super::mutation::Mutation>) {
7112        self.mutations = v;
7113    }
7114
7115    // Mutable pointer to the field.
7116    pub fn mut_mutations(&mut self) -> &mut ::protobuf::RepeatedField<super::mutation::Mutation> {
7117        &mut self.mutations
7118    }
7119
7120    // Take field
7121    pub fn take_mutations(&mut self) -> ::protobuf::RepeatedField<super::mutation::Mutation> {
7122        ::std::mem::replace(&mut self.mutations, ::protobuf::RepeatedField::new())
7123    }
7124}
7125
7126impl ::protobuf::Message for BatchWriteRequest_MutationGroup {
7127    fn is_initialized(&self) -> bool {
7128        for v in &self.mutations {
7129            if !v.is_initialized() {
7130                return false;
7131            }
7132        };
7133        true
7134    }
7135
7136    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
7137        while !is.eof()? {
7138            let (field_number, wire_type) = is.read_tag_unpack()?;
7139            match field_number {
7140                1 => {
7141                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.mutations)?;
7142                },
7143                _ => {
7144                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
7145                },
7146            };
7147        }
7148        ::std::result::Result::Ok(())
7149    }
7150
7151    // Compute sizes of nested messages
7152    #[allow(unused_variables)]
7153    fn compute_size(&self) -> u32 {
7154        let mut my_size = 0;
7155        for value in &self.mutations {
7156            let len = value.compute_size();
7157            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
7158        };
7159        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
7160        self.cached_size.set(my_size);
7161        my_size
7162    }
7163
7164    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
7165        for v in &self.mutations {
7166            os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
7167            os.write_raw_varint32(v.get_cached_size())?;
7168            v.write_to_with_cached_sizes(os)?;
7169        };
7170        os.write_unknown_fields(self.get_unknown_fields())?;
7171        ::std::result::Result::Ok(())
7172    }
7173
7174    fn get_cached_size(&self) -> u32 {
7175        self.cached_size.get()
7176    }
7177
7178    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
7179        &self.unknown_fields
7180    }
7181
7182    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
7183        &mut self.unknown_fields
7184    }
7185
7186    fn as_any(&self) -> &dyn (::std::any::Any) {
7187        self as &dyn (::std::any::Any)
7188    }
7189    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
7190        self as &mut dyn (::std::any::Any)
7191    }
7192    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
7193        self
7194    }
7195
7196    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
7197        Self::descriptor_static()
7198    }
7199
7200    fn new() -> BatchWriteRequest_MutationGroup {
7201        BatchWriteRequest_MutationGroup::new()
7202    }
7203
7204    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
7205        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
7206        descriptor.get(|| {
7207            let mut fields = ::std::vec::Vec::new();
7208            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::mutation::Mutation>>(
7209                "mutations",
7210                |m: &BatchWriteRequest_MutationGroup| { &m.mutations },
7211                |m: &mut BatchWriteRequest_MutationGroup| { &mut m.mutations },
7212            ));
7213            ::protobuf::reflect::MessageDescriptor::new_pb_name::<BatchWriteRequest_MutationGroup>(
7214                "BatchWriteRequest.MutationGroup",
7215                fields,
7216                file_descriptor_proto()
7217            )
7218        })
7219    }
7220
7221    fn default_instance() -> &'static BatchWriteRequest_MutationGroup {
7222        static instance: ::protobuf::rt::LazyV2<BatchWriteRequest_MutationGroup> = ::protobuf::rt::LazyV2::INIT;
7223        instance.get(BatchWriteRequest_MutationGroup::new)
7224    }
7225}
7226
7227impl ::protobuf::Clear for BatchWriteRequest_MutationGroup {
7228    fn clear(&mut self) {
7229        self.mutations.clear();
7230        self.unknown_fields.clear();
7231    }
7232}
7233
7234impl ::std::fmt::Debug for BatchWriteRequest_MutationGroup {
7235    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7236        ::protobuf::text_format::fmt(self, f)
7237    }
7238}
7239
7240impl ::protobuf::reflect::ProtobufValue for BatchWriteRequest_MutationGroup {
7241    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
7242        ::protobuf::reflect::ReflectValueRef::Message(self)
7243    }
7244}
7245
7246#[derive(PartialEq,Clone,Default)]
7247pub struct BatchWriteResponse {
7248    // message fields
7249    pub indexes: ::std::vec::Vec<i32>,
7250    pub status: ::protobuf::SingularPtrField<super::status::Status>,
7251    pub commit_timestamp: ::protobuf::SingularPtrField<::protobuf::well_known_types::Timestamp>,
7252    // special fields
7253    pub unknown_fields: ::protobuf::UnknownFields,
7254    pub cached_size: ::protobuf::CachedSize,
7255}
7256
7257impl<'a> ::std::default::Default for &'a BatchWriteResponse {
7258    fn default() -> &'a BatchWriteResponse {
7259        <BatchWriteResponse as ::protobuf::Message>::default_instance()
7260    }
7261}
7262
7263impl BatchWriteResponse {
7264    pub fn new() -> BatchWriteResponse {
7265        ::std::default::Default::default()
7266    }
7267
7268    // repeated int32 indexes = 1;
7269
7270
7271    pub fn get_indexes(&self) -> &[i32] {
7272        &self.indexes
7273    }
7274    pub fn clear_indexes(&mut self) {
7275        self.indexes.clear();
7276    }
7277
7278    // Param is passed by value, moved
7279    pub fn set_indexes(&mut self, v: ::std::vec::Vec<i32>) {
7280        self.indexes = v;
7281    }
7282
7283    // Mutable pointer to the field.
7284    pub fn mut_indexes(&mut self) -> &mut ::std::vec::Vec<i32> {
7285        &mut self.indexes
7286    }
7287
7288    // Take field
7289    pub fn take_indexes(&mut self) -> ::std::vec::Vec<i32> {
7290        ::std::mem::replace(&mut self.indexes, ::std::vec::Vec::new())
7291    }
7292
7293    // .google.rpc.Status status = 2;
7294
7295
7296    pub fn get_status(&self) -> &super::status::Status {
7297        self.status.as_ref().unwrap_or_else(|| <super::status::Status as ::protobuf::Message>::default_instance())
7298    }
7299    pub fn clear_status(&mut self) {
7300        self.status.clear();
7301    }
7302
7303    pub fn has_status(&self) -> bool {
7304        self.status.is_some()
7305    }
7306
7307    // Param is passed by value, moved
7308    pub fn set_status(&mut self, v: super::status::Status) {
7309        self.status = ::protobuf::SingularPtrField::some(v);
7310    }
7311
7312    // Mutable pointer to the field.
7313    // If field is not initialized, it is initialized with default value first.
7314    pub fn mut_status(&mut self) -> &mut super::status::Status {
7315        if self.status.is_none() {
7316            self.status.set_default();
7317        }
7318        self.status.as_mut().unwrap()
7319    }
7320
7321    // Take field
7322    pub fn take_status(&mut self) -> super::status::Status {
7323        self.status.take().unwrap_or_else(|| super::status::Status::new())
7324    }
7325
7326    // .google.protobuf.Timestamp commit_timestamp = 3;
7327
7328
7329    pub fn get_commit_timestamp(&self) -> &::protobuf::well_known_types::Timestamp {
7330        self.commit_timestamp.as_ref().unwrap_or_else(|| <::protobuf::well_known_types::Timestamp as ::protobuf::Message>::default_instance())
7331    }
7332    pub fn clear_commit_timestamp(&mut self) {
7333        self.commit_timestamp.clear();
7334    }
7335
7336    pub fn has_commit_timestamp(&self) -> bool {
7337        self.commit_timestamp.is_some()
7338    }
7339
7340    // Param is passed by value, moved
7341    pub fn set_commit_timestamp(&mut self, v: ::protobuf::well_known_types::Timestamp) {
7342        self.commit_timestamp = ::protobuf::SingularPtrField::some(v);
7343    }
7344
7345    // Mutable pointer to the field.
7346    // If field is not initialized, it is initialized with default value first.
7347    pub fn mut_commit_timestamp(&mut self) -> &mut ::protobuf::well_known_types::Timestamp {
7348        if self.commit_timestamp.is_none() {
7349            self.commit_timestamp.set_default();
7350        }
7351        self.commit_timestamp.as_mut().unwrap()
7352    }
7353
7354    // Take field
7355    pub fn take_commit_timestamp(&mut self) -> ::protobuf::well_known_types::Timestamp {
7356        self.commit_timestamp.take().unwrap_or_else(|| ::protobuf::well_known_types::Timestamp::new())
7357    }
7358}
7359
7360impl ::protobuf::Message for BatchWriteResponse {
7361    fn is_initialized(&self) -> bool {
7362        for v in &self.status {
7363            if !v.is_initialized() {
7364                return false;
7365            }
7366        };
7367        for v in &self.commit_timestamp {
7368            if !v.is_initialized() {
7369                return false;
7370            }
7371        };
7372        true
7373    }
7374
7375    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
7376        while !is.eof()? {
7377            let (field_number, wire_type) = is.read_tag_unpack()?;
7378            match field_number {
7379                1 => {
7380                    ::protobuf::rt::read_repeated_int32_into(wire_type, is, &mut self.indexes)?;
7381                },
7382                2 => {
7383                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.status)?;
7384                },
7385                3 => {
7386                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.commit_timestamp)?;
7387                },
7388                _ => {
7389                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
7390                },
7391            };
7392        }
7393        ::std::result::Result::Ok(())
7394    }
7395
7396    // Compute sizes of nested messages
7397    #[allow(unused_variables)]
7398    fn compute_size(&self) -> u32 {
7399        let mut my_size = 0;
7400        for value in &self.indexes {
7401            my_size += ::protobuf::rt::value_size(1, *value, ::protobuf::wire_format::WireTypeVarint);
7402        };
7403        if let Some(ref v) = self.status.as_ref() {
7404            let len = v.compute_size();
7405            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
7406        }
7407        if let Some(ref v) = self.commit_timestamp.as_ref() {
7408            let len = v.compute_size();
7409            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
7410        }
7411        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
7412        self.cached_size.set(my_size);
7413        my_size
7414    }
7415
7416    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
7417        for v in &self.indexes {
7418            os.write_int32(1, *v)?;
7419        };
7420        if let Some(ref v) = self.status.as_ref() {
7421            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
7422            os.write_raw_varint32(v.get_cached_size())?;
7423            v.write_to_with_cached_sizes(os)?;
7424        }
7425        if let Some(ref v) = self.commit_timestamp.as_ref() {
7426            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
7427            os.write_raw_varint32(v.get_cached_size())?;
7428            v.write_to_with_cached_sizes(os)?;
7429        }
7430        os.write_unknown_fields(self.get_unknown_fields())?;
7431        ::std::result::Result::Ok(())
7432    }
7433
7434    fn get_cached_size(&self) -> u32 {
7435        self.cached_size.get()
7436    }
7437
7438    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
7439        &self.unknown_fields
7440    }
7441
7442    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
7443        &mut self.unknown_fields
7444    }
7445
7446    fn as_any(&self) -> &dyn (::std::any::Any) {
7447        self as &dyn (::std::any::Any)
7448    }
7449    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
7450        self as &mut dyn (::std::any::Any)
7451    }
7452    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
7453        self
7454    }
7455
7456    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
7457        Self::descriptor_static()
7458    }
7459
7460    fn new() -> BatchWriteResponse {
7461        BatchWriteResponse::new()
7462    }
7463
7464    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
7465        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
7466        descriptor.get(|| {
7467            let mut fields = ::std::vec::Vec::new();
7468            fields.push(::protobuf::reflect::accessor::make_vec_accessor::<_, ::protobuf::types::ProtobufTypeInt32>(
7469                "indexes",
7470                |m: &BatchWriteResponse| { &m.indexes },
7471                |m: &mut BatchWriteResponse| { &mut m.indexes },
7472            ));
7473            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::status::Status>>(
7474                "status",
7475                |m: &BatchWriteResponse| { &m.status },
7476                |m: &mut BatchWriteResponse| { &mut m.status },
7477            ));
7478            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::Timestamp>>(
7479                "commit_timestamp",
7480                |m: &BatchWriteResponse| { &m.commit_timestamp },
7481                |m: &mut BatchWriteResponse| { &mut m.commit_timestamp },
7482            ));
7483            ::protobuf::reflect::MessageDescriptor::new_pb_name::<BatchWriteResponse>(
7484                "BatchWriteResponse",
7485                fields,
7486                file_descriptor_proto()
7487            )
7488        })
7489    }
7490
7491    fn default_instance() -> &'static BatchWriteResponse {
7492        static instance: ::protobuf::rt::LazyV2<BatchWriteResponse> = ::protobuf::rt::LazyV2::INIT;
7493        instance.get(BatchWriteResponse::new)
7494    }
7495}
7496
7497impl ::protobuf::Clear for BatchWriteResponse {
7498    fn clear(&mut self) {
7499        self.indexes.clear();
7500        self.status.clear();
7501        self.commit_timestamp.clear();
7502        self.unknown_fields.clear();
7503    }
7504}
7505
7506impl ::std::fmt::Debug for BatchWriteResponse {
7507    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
7508        ::protobuf::text_format::fmt(self, f)
7509    }
7510}
7511
7512impl ::protobuf::reflect::ProtobufValue for BatchWriteResponse {
7513    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
7514        ::protobuf::reflect::ReflectValueRef::Message(self)
7515    }
7516}
7517
7518static file_descriptor_proto_data: &'static [u8] = b"\
7519    \n\x1fgoogle/spanner/v1/spanner.proto\x12\x11google.spanner.v1\x1a\x1cgo\
7520    ogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/\
7521    api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1bgoogle/\
7522    protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/p\
7523    rotobuf/timestamp.proto\x1a\x17google/rpc/status.proto\x1a'google/spanne\
7524    r/v1/commit_response.proto\x1a\x1cgoogle/spanner/v1/keys.proto\x1a\x20go\
7525    ogle/spanner/v1/mutation.proto\x1a\"google/spanner/v1/result_set.proto\
7526    \x1a#google/spanner/v1/transaction.proto\x1a\x1cgoogle/spanner/v1/type.p\
7527    rotoP\x08\"\x96\x01\n\x14CreateSessionRequest\x12C\n\x08database\x18\x01\
7528    \x20\x01(\tR\x08databaseB'\xfaA!\n\x1fspanner.googleapis.com/Database\
7529    \xe0A\x02\x129\n\x07session\x18\x02\x20\x01(\x0b2\x1a.google.spanner.v1.\
7530    SessionR\x07sessionB\x03\xe0A\x02\"\xd2\x01\n\x1aBatchCreateSessionsRequ\
7531    est\x12C\n\x08database\x18\x01\x20\x01(\tR\x08databaseB'\xfaA!\n\x1fspan\
7532    ner.googleapis.com/Database\xe0A\x02\x12E\n\x10session_template\x18\x02\
7533    \x20\x01(\x0b2\x1a.google.spanner.v1.SessionR\x0fsessionTemplate\x12(\n\
7534    \rsession_count\x18\x03\x20\x01(\x05R\x0csessionCountB\x03\xe0A\x02\"S\n\
7535    \x1bBatchCreateSessionsResponse\x124\n\x07session\x18\x01\x20\x03(\x0b2\
7536    \x1a.google.spanner.v1.SessionR\x07session\"\xd4\x03\n\x07Session\x12\
7537    \x17\n\x04name\x18\x01\x20\x01(\tR\x04nameB\x03\xe0A\x03\x12>\n\x06label\
7538    s\x18\x02\x20\x03(\x0b2&.google.spanner.v1.Session.LabelsEntryR\x06label\
7539    s\x12@\n\x0bcreate_time\x18\x03\x20\x01(\x0b2\x1a.google.protobuf.Timest\
7540    ampR\ncreateTimeB\x03\xe0A\x03\x12Z\n\x19approximate_last_use_time\x18\
7541    \x04\x20\x01(\x0b2\x1a.google.protobuf.TimestampR\x16approximateLastUseT\
7542    imeB\x03\xe0A\x03\x12!\n\x0ccreator_role\x18\x05\x20\x01(\tR\x0bcreatorR\
7543    ole\x1a9\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01\x20\x01(\tR\x03key\
7544    \x12\x14\n\x05value\x18\x02\x20\x01(\tR\x05value:\x028\x01:t\xeaAq\n\x1e\
7545    spanner.googleapis.com/Session\x12Oprojects/{project}/instances/{instanc\
7546    e}/databases/{database}/sessions/{session}\"O\n\x11GetSessionRequest\x12\
7547    :\n\x04name\x18\x01\x20\x01(\tR\x04nameB&\xfaA\x20\n\x1espanner.googleap\
7548    is.com/Session\xe0A\x02\"\xae\x01\n\x13ListSessionsRequest\x12C\n\x08dat\
7549    abase\x18\x01\x20\x01(\tR\x08databaseB'\xfaA!\n\x1fspanner.googleapis.co\
7550    m/Database\xe0A\x02\x12\x1b\n\tpage_size\x18\x02\x20\x01(\x05R\x08pageSi\
7551    ze\x12\x1d\n\npage_token\x18\x03\x20\x01(\tR\tpageToken\x12\x16\n\x06fil\
7552    ter\x18\x04\x20\x01(\tR\x06filter\"v\n\x14ListSessionsResponse\x126\n\
7553    \x08sessions\x18\x01\x20\x03(\x0b2\x1a.google.spanner.v1.SessionR\x08ses\
7554    sions\x12&\n\x0fnext_page_token\x18\x02\x20\x01(\tR\rnextPageToken\"R\n\
7555    \x14DeleteSessionRequest\x12:\n\x04name\x18\x01\x20\x01(\tR\x04nameB&\
7556    \xfaA\x20\n\x1espanner.googleapis.com/Session\xe0A\x02\"\x82\x02\n\x0eRe\
7557    questOptions\x12F\n\x08priority\x18\x01\x20\x01(\x0e2*.google.spanner.v1\
7558    .RequestOptions.PriorityR\x08priority\x12\x1f\n\x0brequest_tag\x18\x02\
7559    \x20\x01(\tR\nrequestTag\x12'\n\x0ftransaction_tag\x18\x03\x20\x01(\tR\
7560    \x0etransactionTag\"^\n\x08Priority\x12\x18\n\x14PRIORITY_UNSPECIFIED\
7561    \x10\0\x12\x10\n\x0cPRIORITY_LOW\x10\x01\x12\x13\n\x0fPRIORITY_MEDIUM\
7562    \x10\x02\x12\x11\n\rPRIORITY_HIGH\x10\x03\"\xc8\x07\n\x11ExecuteSqlReque\
7563    st\x12@\n\x07session\x18\x01\x20\x01(\tR\x07sessionB&\xfaA\x20\n\x1espan\
7564    ner.googleapis.com/Session\xe0A\x02\x12H\n\x0btransaction\x18\x02\x20\
7565    \x01(\x0b2&.google.spanner.v1.TransactionSelectorR\x0btransaction\x12\
7566    \x15\n\x03sql\x18\x03\x20\x01(\tR\x03sqlB\x03\xe0A\x02\x12/\n\x06params\
7567    \x18\x04\x20\x01(\x0b2\x17.google.protobuf.StructR\x06params\x12U\n\x0bp\
7568    aram_types\x18\x05\x20\x03(\x0b24.google.spanner.v1.ExecuteSqlRequest.Pa\
7569    ramTypesEntryR\nparamTypes\x12!\n\x0cresume_token\x18\x06\x20\x01(\x0cR\
7570    \x0bresumeToken\x12M\n\nquery_mode\x18\x07\x20\x01(\x0e2..google.spanner\
7571    .v1.ExecuteSqlRequest.QueryModeR\tqueryMode\x12'\n\x0fpartition_token\
7572    \x18\x08\x20\x01(\x0cR\x0epartitionToken\x12\x14\n\x05seqno\x18\t\x20\
7573    \x01(\x03R\x05seqno\x12V\n\rquery_options\x18\n\x20\x01(\x0b21.google.sp\
7574    anner.v1.ExecuteSqlRequest.QueryOptionsR\x0cqueryOptions\x12J\n\x0freque\
7575    st_options\x18\x0b\x20\x01(\x0b2!.google.spanner.v1.RequestOptionsR\x0er\
7576    equestOptions\x12,\n\x12data_boost_enabled\x18\x10\x20\x01(\x08R\x10data\
7577    BoostEnabled\x1a}\n\x0cQueryOptions\x12+\n\x11optimizer_version\x18\x01\
7578    \x20\x01(\tR\x10optimizerVersion\x12@\n\x1coptimizer_statistics_package\
7579    \x18\x02\x20\x01(\tR\x1aoptimizerStatisticsPackage\x1aV\n\x0fParamTypesE\
7580    ntry\x12\x10\n\x03key\x18\x01\x20\x01(\tR\x03key\x12-\n\x05value\x18\x02\
7581    \x20\x01(\x0b2\x17.google.spanner.v1.TypeR\x05value:\x028\x01\".\n\tQuer\
7582    yMode\x12\n\n\x06NORMAL\x10\0\x12\x08\n\x04PLAN\x10\x01\x12\x0b\n\x07PRO\
7583    FILE\x10\x02\"\xfe\x04\n\x16ExecuteBatchDmlRequest\x12@\n\x07session\x18\
7584    \x01\x20\x01(\tR\x07sessionB&\xfaA\x20\n\x1espanner.googleapis.com/Sessi\
7585    on\xe0A\x02\x12M\n\x0btransaction\x18\x02\x20\x01(\x0b2&.google.spanner.\
7586    v1.TransactionSelectorR\x0btransactionB\x03\xe0A\x02\x12X\n\nstatements\
7587    \x18\x03\x20\x03(\x0b23.google.spanner.v1.ExecuteBatchDmlRequest.Stateme\
7588    ntR\nstatementsB\x03\xe0A\x02\x12\x19\n\x05seqno\x18\x04\x20\x01(\x03R\
7589    \x05seqnoB\x03\xe0A\x02\x12J\n\x0frequest_options\x18\x05\x20\x01(\x0b2!\
7590    .google.spanner.v1.RequestOptionsR\x0erequestOptions\x1a\x91\x02\n\tStat\
7591    ement\x12\x15\n\x03sql\x18\x01\x20\x01(\tR\x03sqlB\x03\xe0A\x02\x12/\n\
7592    \x06params\x18\x02\x20\x01(\x0b2\x17.google.protobuf.StructR\x06params\
7593    \x12d\n\x0bparam_types\x18\x03\x20\x03(\x0b2C.google.spanner.v1.ExecuteB\
7594    atchDmlRequest.Statement.ParamTypesEntryR\nparamTypes\x1aV\n\x0fParamTyp\
7595    esEntry\x12\x10\n\x03key\x18\x01\x20\x01(\tR\x03key\x12-\n\x05value\x18\
7596    \x02\x20\x01(\x0b2\x17.google.spanner.v1.TypeR\x05value:\x028\x01\"\x84\
7597    \x01\n\x17ExecuteBatchDmlResponse\x12=\n\x0bresult_sets\x18\x01\x20\x03(\
7598    \x0b2\x1c.google.spanner.v1.ResultSetR\nresultSets\x12*\n\x06status\x18\
7599    \x02\x20\x01(\x0b2\x12.google.rpc.StatusR\x06status\"k\n\x10PartitionOpt\
7600    ions\x120\n\x14partition_size_bytes\x18\x01\x20\x01(\x03R\x12partitionSi\
7601    zeBytes\x12%\n\x0emax_partitions\x18\x02\x20\x01(\x03R\rmaxPartitions\"\
7602    \xf0\x03\n\x15PartitionQueryRequest\x12@\n\x07session\x18\x01\x20\x01(\t\
7603    R\x07sessionB&\xfaA\x20\n\x1espanner.googleapis.com/Session\xe0A\x02\x12\
7604    H\n\x0btransaction\x18\x02\x20\x01(\x0b2&.google.spanner.v1.TransactionS\
7605    electorR\x0btransaction\x12\x15\n\x03sql\x18\x03\x20\x01(\tR\x03sqlB\x03\
7606    \xe0A\x02\x12/\n\x06params\x18\x04\x20\x01(\x0b2\x17.google.protobuf.Str\
7607    uctR\x06params\x12Y\n\x0bparam_types\x18\x05\x20\x03(\x0b28.google.spann\
7608    er.v1.PartitionQueryRequest.ParamTypesEntryR\nparamTypes\x12P\n\x11parti\
7609    tion_options\x18\x06\x20\x01(\x0b2#.google.spanner.v1.PartitionOptionsR\
7610    \x10partitionOptions\x1aV\n\x0fParamTypesEntry\x12\x10\n\x03key\x18\x01\
7611    \x20\x01(\tR\x03key\x12-\n\x05value\x18\x02\x20\x01(\x0b2\x17.google.spa\
7612    nner.v1.TypeR\x05value:\x028\x01\"\xf8\x02\n\x14PartitionReadRequest\x12\
7613    @\n\x07session\x18\x01\x20\x01(\tR\x07sessionB&\xfaA\x20\n\x1espanner.go\
7614    ogleapis.com/Session\xe0A\x02\x12H\n\x0btransaction\x18\x02\x20\x01(\x0b\
7615    2&.google.spanner.v1.TransactionSelectorR\x0btransaction\x12\x19\n\x05ta\
7616    ble\x18\x03\x20\x01(\tR\x05tableB\x03\xe0A\x02\x12\x14\n\x05index\x18\
7617    \x04\x20\x01(\tR\x05index\x12\x18\n\x07columns\x18\x05\x20\x03(\tR\x07co\
7618    lumns\x127\n\x07key_set\x18\x06\x20\x01(\x0b2\x19.google.spanner.v1.KeyS\
7619    etR\x06keySetB\x03\xe0A\x02\x12P\n\x11partition_options\x18\t\x20\x01(\
7620    \x0b2#.google.spanner.v1.PartitionOptionsR\x10partitionOptions\"4\n\tPar\
7621    tition\x12'\n\x0fpartition_token\x18\x01\x20\x01(\x0cR\x0epartitionToken\
7622    \"\x93\x01\n\x11PartitionResponse\x12<\n\npartitions\x18\x01\x20\x03(\
7623    \x0b2\x1c.google.spanner.v1.PartitionR\npartitions\x12@\n\x0btransaction\
7624    \x18\x02\x20\x01(\x0b2\x1e.google.spanner.v1.TransactionR\x0btransaction\
7625    \"\xfe\x03\n\x0bReadRequest\x12@\n\x07session\x18\x01\x20\x01(\tR\x07ses\
7626    sionB&\xfaA\x20\n\x1espanner.googleapis.com/Session\xe0A\x02\x12H\n\x0bt\
7627    ransaction\x18\x02\x20\x01(\x0b2&.google.spanner.v1.TransactionSelectorR\
7628    \x0btransaction\x12\x19\n\x05table\x18\x03\x20\x01(\tR\x05tableB\x03\xe0\
7629    A\x02\x12\x14\n\x05index\x18\x04\x20\x01(\tR\x05index\x12\x1d\n\x07colum\
7630    ns\x18\x05\x20\x03(\tR\x07columnsB\x03\xe0A\x02\x127\n\x07key_set\x18\
7631    \x06\x20\x01(\x0b2\x19.google.spanner.v1.KeySetR\x06keySetB\x03\xe0A\x02\
7632    \x12\x14\n\x05limit\x18\x08\x20\x01(\x03R\x05limit\x12!\n\x0cresume_toke\
7633    n\x18\t\x20\x01(\x0cR\x0bresumeToken\x12'\n\x0fpartition_token\x18\n\x20\
7634    \x01(\x0cR\x0epartitionToken\x12J\n\x0frequest_options\x18\x0b\x20\x01(\
7635    \x0b2!.google.spanner.v1.RequestOptionsR\x0erequestOptions\x12,\n\x12dat\
7636    a_boost_enabled\x18\x0f\x20\x01(\x08R\x10dataBoostEnabled\"\xed\x01\n\
7637    \x17BeginTransactionRequest\x12@\n\x07session\x18\x01\x20\x01(\tR\x07ses\
7638    sionB&\xfaA\x20\n\x1espanner.googleapis.com/Session\xe0A\x02\x12D\n\x07o\
7639    ptions\x18\x02\x20\x01(\x0b2%.google.spanner.v1.TransactionOptionsR\x07o\
7640    ptionsB\x03\xe0A\x02\x12J\n\x0frequest_options\x18\x03\x20\x01(\x0b2!.go\
7641    ogle.spanner.v1.RequestOptionsR\x0erequestOptions\"\x9f\x03\n\rCommitReq\
7642    uest\x12@\n\x07session\x18\x01\x20\x01(\tR\x07sessionB&\xfaA\x20\n\x1esp\
7643    anner.googleapis.com/Session\xe0A\x02\x12'\n\x0etransaction_id\x18\x02\
7644    \x20\x01(\x0cH\0R\rtransactionId\x12]\n\x16single_use_transaction\x18\
7645    \x03\x20\x01(\x0b2%.google.spanner.v1.TransactionOptionsH\0R\x14singleUs\
7646    eTransaction\x129\n\tmutations\x18\x04\x20\x03(\x0b2\x1b.google.spanner.\
7647    v1.MutationR\tmutations\x12.\n\x13return_commit_stats\x18\x05\x20\x01(\
7648    \x08R\x11returnCommitStats\x12J\n\x0frequest_options\x18\x06\x20\x01(\
7649    \x0b2!.google.spanner.v1.RequestOptionsR\x0erequestOptionsB\r\n\x0btrans\
7650    action\"\x7f\n\x0fRollbackRequest\x12@\n\x07session\x18\x01\x20\x01(\tR\
7651    \x07sessionB&\xfaA\x20\n\x1espanner.googleapis.com/Session\xe0A\x02\x12*\
7652    \n\x0etransaction_id\x18\x02\x20\x01(\x0cR\rtransactionIdB\x03\xe0A\x02\
7653    \"\xd4\x02\n\x11BatchWriteRequest\x12@\n\x07session\x18\x01\x20\x01(\tR\
7654    \x07sessionB&\xfaA\x20\n\x1espanner.googleapis.com/Session\xe0A\x02\x12J\
7655    \n\x0frequest_options\x18\x03\x20\x01(\x0b2!.google.spanner.v1.RequestOp\
7656    tionsR\x0erequestOptions\x12`\n\x0fmutation_groups\x18\x04\x20\x03(\x0b2\
7657    2.google.spanner.v1.BatchWriteRequest.MutationGroupR\x0emutationGroupsB\
7658    \x03\xe0A\x02\x1aO\n\rMutationGroup\x12>\n\tmutations\x18\x01\x20\x03(\
7659    \x0b2\x1b.google.spanner.v1.MutationR\tmutationsB\x03\xe0A\x02\"\xa1\x01\
7660    \n\x12BatchWriteResponse\x12\x18\n\x07indexes\x18\x01\x20\x03(\x05R\x07i\
7661    ndexes\x12*\n\x06status\x18\x02\x20\x01(\x0b2\x12.google.rpc.StatusR\x06\
7662    status\x12E\n\x10commit_timestamp\x18\x03\x20\x01(\x0b2\x1a.google.proto\
7663    buf.TimestampR\x0fcommitTimestamp2\x8b\x18\n\x07Spanner\x12\xa6\x01\n\rC\
7664    reateSession\x12'.google.spanner.v1.CreateSessionRequest\x1a\x1a.google.\
7665    spanner.v1.Session\"P\x82\xd3\xe4\x93\x02?\":/v1/{database=projects/*/in\
7666    stances/*/databases/*}/sessions:\x01*\xdaA\x08database\x12\xe0\x01\n\x13\
7667    BatchCreateSessions\x12-.google.spanner.v1.BatchCreateSessionsRequest\
7668    \x1a..google.spanner.v1.BatchCreateSessionsResponse\"j\x82\xd3\xe4\x93\
7669    \x02K\"F/v1/{database=projects/*/instances/*/databases/*}/sessions:batch\
7670    Create:\x01*\xdaA\x16database,session_count\x12\x97\x01\n\nGetSession\
7671    \x12$.google.spanner.v1.GetSessionRequest\x1a\x1a.google.spanner.v1.Sess\
7672    ion\"G\x82\xd3\xe4\x93\x02:\x128/v1/{name=projects/*/instances/*/databas\
7673    es/*/sessions/*}\xdaA\x04name\x12\xae\x01\n\x0cListSessions\x12&.google.\
7674    spanner.v1.ListSessionsRequest\x1a'.google.spanner.v1.ListSessionsRespon\
7675    se\"M\x82\xd3\xe4\x93\x02<\x12:/v1/{database=projects/*/instances/*/data\
7676    bases/*}/sessions\xdaA\x08database\x12\x99\x01\n\rDeleteSession\x12'.goo\
7677    gle.spanner.v1.DeleteSessionRequest\x1a\x16.google.protobuf.Empty\"G\x82\
7678    \xd3\xe4\x93\x02:*8/v1/{name=projects/*/instances/*/databases/*/sessions\
7679    /*}\xdaA\x04name\x12\xa3\x01\n\nExecuteSql\x12$.google.spanner.v1.Execut\
7680    eSqlRequest\x1a\x1c.google.spanner.v1.ResultSet\"Q\x82\xd3\xe4\x93\x02K\
7681    \"F/v1/{session=projects/*/instances/*/databases/*/sessions/*}:executeSq\
7682    l:\x01*\x12\xbe\x01\n\x13ExecuteStreamingSql\x12$.google.spanner.v1.Exec\
7683    uteSqlRequest\x1a#.google.spanner.v1.PartialResultSet\"Z\x82\xd3\xe4\x93\
7684    \x02T\"O/v1/{session=projects/*/instances/*/databases/*/sessions/*}:exec\
7685    uteStreamingSql:\x01*0\x01\x12\xc0\x01\n\x0fExecuteBatchDml\x12).google.\
7686    spanner.v1.ExecuteBatchDmlRequest\x1a*.google.spanner.v1.ExecuteBatchDml\
7687    Response\"V\x82\xd3\xe4\x93\x02P\"K/v1/{session=projects/*/instances/*/d\
7688    atabases/*/sessions/*}:executeBatchDml:\x01*\x12\x91\x01\n\x04Read\x12\
7689    \x1e.google.spanner.v1.ReadRequest\x1a\x1c.google.spanner.v1.ResultSet\"\
7690    K\x82\xd3\xe4\x93\x02E\"@/v1/{session=projects/*/instances/*/databases/*\
7691    /sessions/*}:read:\x01*\x12\xac\x01\n\rStreamingRead\x12\x1e.google.span\
7692    ner.v1.ReadRequest\x1a#.google.spanner.v1.PartialResultSet\"T\x82\xd3\
7693    \xe4\x93\x02N\"I/v1/{session=projects/*/instances/*/databases/*/sessions\
7694    /*}:streamingRead:\x01*0\x01\x12\xc9\x01\n\x10BeginTransaction\x12*.goog\
7695    le.spanner.v1.BeginTransactionRequest\x1a\x1e.google.spanner.v1.Transact\
7696    ion\"i\x82\xd3\xe4\x93\x02Q\"L/v1/{session=projects/*/instances/*/databa\
7697    ses/*/sessions/*}:beginTransaction:\x01*\xdaA\x0fsession,options\x12\xeb\
7698    \x01\n\x06Commit\x12\x20.google.spanner.v1.CommitRequest\x1a!.google.spa\
7699    nner.v1.CommitResponse\"\x9b\x01\x82\xd3\xe4\x93\x02G\"B/v1/{session=pro\
7700    jects/*/instances/*/databases/*/sessions/*}:commit:\x01*\xdaA\x20session\
7701    ,transaction_id,mutations\xdaA(session,single_use_transaction,mutations\
7702    \x12\xb0\x01\n\x08Rollback\x12\".google.spanner.v1.RollbackRequest\x1a\
7703    \x16.google.protobuf.Empty\"h\x82\xd3\xe4\x93\x02I\"D/v1/{session=projec\
7704    ts/*/instances/*/databases/*/sessions/*}:rollback:\x01*\xdaA\x16session,\
7705    transaction_id\x12\xb7\x01\n\x0ePartitionQuery\x12(.google.spanner.v1.Pa\
7706    rtitionQueryRequest\x1a$.google.spanner.v1.PartitionResponse\"U\x82\xd3\
7707    \xe4\x93\x02O\"J/v1/{session=projects/*/instances/*/databases/*/sessions\
7708    /*}:partitionQuery:\x01*\x12\xb4\x01\n\rPartitionRead\x12'.google.spanne\
7709    r.v1.PartitionReadRequest\x1a$.google.spanner.v1.PartitionResponse\"T\
7710    \x82\xd3\xe4\x93\x02N\"I/v1/{session=projects/*/instances/*/databases/*/\
7711    sessions/*}:partitionRead:\x01*\x12\xc8\x01\n\nBatchWrite\x12$.google.sp\
7712    anner.v1.BatchWriteRequest\x1a%.google.spanner.v1.BatchWriteResponse\"k\
7713    \x82\xd3\xe4\x93\x02K\"F/v1/{session=projects/*/instances/*/databases/*/\
7714    sessions/*}:batchWrite:\x01*\xdaA\x17session,mutation_groups0\x01\x1aw\
7715    \xd2A[https://www.googleapis.com/auth/cloud-platform,https://www.googlea\
7716    pis.com/auth/spanner.data\xcaA\x16spanner.googleapis.comB\x91\x02\n\x15c\
7717    om.google.spanner.v1B\x0cSpannerProtoP\x01Z5cloud.google.com/go/spanner/\
7718    apiv1/spannerpb;spannerpb\xaa\x02\x17Google.Cloud.Spanner.V1\xca\x02\x17\
7719    Google\\Cloud\\Spanner\\V1\xea\x02\x1aGoogle::Cloud::Spanner::V1\xeaA_\n\
7720    \x1fspanner.googleapis.com/Database\x12<projects/{project}/instances/{in\
7721    stance}/databases/{database}J\xbb\xe0\x02\n\x07\x12\x05\x0e\0\xce\x08\
7722    \x01\n\xbc\x04\n\x01\x0c\x12\x03\x0e\0\x122\xb1\x04\x20Copyright\x202022\
7723    \x20Google\x20LLC\n\n\x20Licensed\x20under\x20the\x20Apache\x20License,\
7724    \x20Version\x202.0\x20(the\x20\"License\");\n\x20you\x20may\x20not\x20us\
7725    e\x20this\x20file\x20except\x20in\x20compliance\x20with\x20the\x20Licens\
7726    e.\n\x20You\x20may\x20obtain\x20a\x20copy\x20of\x20the\x20License\x20at\
7727    \n\n\x20\x20\x20\x20\x20http://www.apache.org/licenses/LICENSE-2.0\n\n\
7728    \x20Unless\x20required\x20by\x20applicable\x20law\x20or\x20agreed\x20to\
7729    \x20in\x20writing,\x20software\n\x20distributed\x20under\x20the\x20Licen\
7730    se\x20is\x20distributed\x20on\x20an\x20\"AS\x20IS\"\x20BASIS,\n\x20WITHO\
7731    UT\x20WARRANTIES\x20OR\x20CONDITIONS\x20OF\x20ANY\x20KIND,\x20either\x20\
7732    express\x20or\x20implied.\n\x20See\x20the\x20License\x20for\x20the\x20sp\
7733    ecific\x20language\x20governing\x20permissions\x20and\n\x20limitations\
7734    \x20under\x20the\x20License.\n\n\x08\n\x01\x02\x12\x03\x10\0\x1a\n\t\n\
7735    \x02\x03\0\x12\x03\x12\0&\n\t\n\x02\x03\x01\x12\x03\x13\0!\n\t\n\x02\x03\
7736    \x02\x12\x03\x14\0)\n\t\n\x02\x03\x03\x12\x03\x15\0#\n\t\n\x02\x03\x04\
7737    \x12\x03\x16\0%\n\t\n\x02\x03\x05\x12\x03\x17\0&\n\t\n\x02\x03\x06\x12\
7738    \x03\x18\0)\n\t\n\x02\x03\x07\x12\x03\x19\0!\n\t\n\x02\x03\x08\x12\x03\
7739    \x1a\08\n\t\n\x02\n\0\x12\x03\x1a\x07\r\n\t\n\x02\x03\t\x12\x03\x1b\0&\n\
7740    \t\n\x02\x03\n\x12\x03\x1c\0*\n\t\n\x02\x03\x0b\x12\x03\x1d\0,\n\t\n\x02\
7741    \x03\x0c\x12\x03\x1e\0-\n\t\n\x02\x03\r\x12\x03\x1f\0&\n\x08\n\x01\x08\
7742    \x12\x03!\04\n\t\n\x02\x08%\x12\x03!\04\n\x08\n\x01\x08\x12\x03\"\0L\n\t\
7743    \n\x02\x08\x0b\x12\x03\"\0L\n\x08\n\x01\x08\x12\x03#\0\"\n\t\n\x02\x08\n\
7744    \x12\x03#\0\"\n\x08\n\x01\x08\x12\x03$\0-\n\t\n\x02\x08\x08\x12\x03$\0-\
7745    \n\x08\n\x01\x08\x12\x03%\0.\n\t\n\x02\x08\x01\x12\x03%\0.\n\x08\n\x01\
7746    \x08\x12\x03&\04\n\t\n\x02\x08)\x12\x03&\04\n\x08\n\x01\x08\x12\x03'\03\
7747    \n\t\n\x02\x08-\x12\x03'\03\n\t\n\x01\x08\x12\x04(\0+\x02\n\x0c\n\x04\
7748    \x08\x9d\x08\0\x12\x04(\0+\x02\n\x9d\x01\n\x02\x06\0\x12\x051\0\xb9\x02\
7749    \x01\x1a\x8f\x01\x20Cloud\x20Spanner\x20API\n\n\x20The\x20Cloud\x20Spann\
7750    er\x20API\x20can\x20be\x20used\x20to\x20manage\x20sessions\x20and\x20exe\
7751    cute\n\x20transactions\x20on\x20data\x20stored\x20in\x20Cloud\x20Spanner\
7752    \x20databases.\n\n\n\n\x03\x06\0\x01\x12\x031\x08\x0f\n\n\n\x03\x06\0\
7753    \x03\x12\x032\x02>\n\x0c\n\x05\x06\0\x03\x99\x08\x12\x032\x02>\n\x0b\n\
7754    \x03\x06\0\x03\x12\x043\x0255\n\r\n\x05\x06\0\x03\x9a\x08\x12\x043\x0255\
7755    \n\xe7\x06\n\x04\x06\0\x02\0\x12\x04J\x02P\x03\x1a\xd8\x06\x20Creates\
7756    \x20a\x20new\x20session.\x20A\x20session\x20can\x20be\x20used\x20to\x20p\
7757    erform\n\x20transactions\x20that\x20read\x20and/or\x20modify\x20data\x20\
7758    in\x20a\x20Cloud\x20Spanner\x20database.\n\x20Sessions\x20are\x20meant\
7759    \x20to\x20be\x20reused\x20for\x20many\x20consecutive\n\x20transactions.\
7760    \n\n\x20Sessions\x20can\x20only\x20execute\x20one\x20transaction\x20at\
7761    \x20a\x20time.\x20To\x20execute\n\x20multiple\x20concurrent\x20read-writ\
7762    e/write-only\x20transactions,\x20create\n\x20multiple\x20sessions.\x20No\
7763    te\x20that\x20standalone\x20reads\x20and\x20queries\x20use\x20a\n\x20tra\
7764    nsaction\x20internally,\x20and\x20count\x20toward\x20the\x20one\x20trans\
7765    action\n\x20limit.\n\n\x20Active\x20sessions\x20use\x20additional\x20ser\
7766    ver\x20resources,\x20so\x20it\x20is\x20a\x20good\x20idea\x20to\n\x20dele\
7767    te\x20idle\x20and\x20unneeded\x20sessions.\n\x20Aside\x20from\x20explici\
7768    t\x20deletes,\x20Cloud\x20Spanner\x20may\x20delete\x20sessions\x20for\
7769    \x20which\x20no\n\x20operations\x20are\x20sent\x20for\x20more\x20than\
7770    \x20an\x20hour.\x20If\x20a\x20session\x20is\x20deleted,\n\x20requests\
7771    \x20to\x20it\x20return\x20`NOT_FOUND`.\n\n\x20Idle\x20sessions\x20can\
7772    \x20be\x20kept\x20alive\x20by\x20sending\x20a\x20trivial\x20SQL\x20query\
7773    \n\x20periodically,\x20e.g.,\x20`\"SELECT\x201\"`.\n\n\x0c\n\x05\x06\0\
7774    \x02\0\x01\x12\x03J\x06\x13\n\x0c\n\x05\x06\0\x02\0\x02\x12\x03J\x14(\n\
7775    \x0c\n\x05\x06\0\x02\0\x03\x12\x03J3:\n\r\n\x05\x06\0\x02\0\x04\x12\x04K\
7776    \x04N\x06\n\x11\n\t\x06\0\x02\0\x04\xb0\xca\xbc\"\x12\x04K\x04N\x06\n\
7777    \x0c\n\x05\x06\0\x02\0\x04\x12\x03O\x046\n\x0f\n\x08\x06\0\x02\0\x04\x9b\
7778    \x08\0\x12\x03O\x046\n\xbf\x01\n\x04\x06\0\x02\x01\x12\x04V\x02\\\x03\
7779    \x1a\xb0\x01\x20Creates\x20multiple\x20new\x20sessions.\n\n\x20This\x20A\
7780    PI\x20can\x20be\x20used\x20to\x20initialize\x20a\x20session\x20cache\x20\
7781    on\x20the\x20clients.\n\x20See\x20https://goo.gl/TgSFN2\x20for\x20best\
7782    \x20practices\x20on\x20session\x20cache\x20management.\n\n\x0c\n\x05\x06\
7783    \0\x02\x01\x01\x12\x03V\x06\x19\n\x0c\n\x05\x06\0\x02\x01\x02\x12\x03V\
7784    \x1a4\n\x0c\n\x05\x06\0\x02\x01\x03\x12\x03V?Z\n\r\n\x05\x06\0\x02\x01\
7785    \x04\x12\x04W\x04Z\x06\n\x11\n\t\x06\0\x02\x01\x04\xb0\xca\xbc\"\x12\x04\
7786    W\x04Z\x06\n\x0c\n\x05\x06\0\x02\x01\x04\x12\x03[\x04D\n\x0f\n\x08\x06\0\
7787    \x02\x01\x04\x9b\x08\0\x12\x03[\x04D\n\x9d\x01\n\x04\x06\0\x02\x02\x12\
7788    \x04a\x02f\x03\x1a\x8e\x01\x20Gets\x20a\x20session.\x20Returns\x20`NOT_F\
7789    OUND`\x20if\x20the\x20session\x20does\x20not\x20exist.\n\x20This\x20is\
7790    \x20mainly\x20useful\x20for\x20determining\x20whether\x20a\x20session\
7791    \x20is\x20still\n\x20alive.\n\n\x0c\n\x05\x06\0\x02\x02\x01\x12\x03a\x06\
7792    \x10\n\x0c\n\x05\x06\0\x02\x02\x02\x12\x03a\x11\"\n\x0c\n\x05\x06\0\x02\
7793    \x02\x03\x12\x03a-4\n\r\n\x05\x06\0\x02\x02\x04\x12\x04b\x04d\x06\n\x11\
7794    \n\t\x06\0\x02\x02\x04\xb0\xca\xbc\"\x12\x04b\x04d\x06\n\x0c\n\x05\x06\0\
7795    \x02\x02\x04\x12\x03e\x042\n\x0f\n\x08\x06\0\x02\x02\x04\x9b\x08\0\x12\
7796    \x03e\x042\n7\n\x04\x06\0\x02\x03\x12\x04i\x02n\x03\x1a)\x20Lists\x20all\
7797    \x20sessions\x20in\x20a\x20given\x20database.\n\n\x0c\n\x05\x06\0\x02\
7798    \x03\x01\x12\x03i\x06\x12\n\x0c\n\x05\x06\0\x02\x03\x02\x12\x03i\x13&\n\
7799    \x0c\n\x05\x06\0\x02\x03\x03\x12\x03i1E\n\r\n\x05\x06\0\x02\x03\x04\x12\
7800    \x04j\x04l\x06\n\x11\n\t\x06\0\x02\x03\x04\xb0\xca\xbc\"\x12\x04j\x04l\
7801    \x06\n\x0c\n\x05\x06\0\x02\x03\x04\x12\x03m\x046\n\x0f\n\x08\x06\0\x02\
7802    \x03\x04\x9b\x08\0\x12\x03m\x046\n\xb5\x01\n\x04\x06\0\x02\x04\x12\x04s\
7803    \x02x\x03\x1a\xa6\x01\x20Ends\x20a\x20session,\x20releasing\x20server\
7804    \x20resources\x20associated\x20with\x20it.\x20This\x20will\n\x20asynchro\
7805    nously\x20trigger\x20cancellation\x20of\x20any\x20operations\x20that\x20\
7806    are\x20running\x20with\n\x20this\x20session.\n\n\x0c\n\x05\x06\0\x02\x04\
7807    \x01\x12\x03s\x06\x13\n\x0c\n\x05\x06\0\x02\x04\x02\x12\x03s\x14(\n\x0c\
7808    \n\x05\x06\0\x02\x04\x03\x12\x03s3H\n\r\n\x05\x06\0\x02\x04\x04\x12\x04t\
7809    \x04v\x06\n\x11\n\t\x06\0\x02\x04\x04\xb0\xca\xbc\"\x12\x04t\x04v\x06\n\
7810    \x0c\n\x05\x06\0\x02\x04\x04\x12\x03w\x042\n\x0f\n\x08\x06\0\x02\x04\x04\
7811    \x9b\x08\0\x12\x03w\x042\n\xeb\x04\n\x04\x06\0\x02\x05\x12\x06\x85\x01\
7812    \x02\x8a\x01\x03\x1a\xda\x04\x20Executes\x20an\x20SQL\x20statement,\x20r\
7813    eturning\x20all\x20results\x20in\x20a\x20single\x20reply.\x20This\n\x20m\
7814    ethod\x20cannot\x20be\x20used\x20to\x20return\x20a\x20result\x20set\x20l\
7815    arger\x20than\x2010\x20MiB;\n\x20if\x20the\x20query\x20yields\x20more\
7816    \x20data\x20than\x20that,\x20the\x20query\x20fails\x20with\n\x20a\x20`FA\
7817    ILED_PRECONDITION`\x20error.\n\n\x20Operations\x20inside\x20read-write\
7818    \x20transactions\x20might\x20return\x20`ABORTED`.\x20If\n\x20this\x20occ\
7819    urs,\x20the\x20application\x20should\x20restart\x20the\x20transaction\
7820    \x20from\n\x20the\x20beginning.\x20See\x20[Transaction][google.spanner.v\
7821    1.Transaction]\x20for\x20more\x20details.\n\n\x20Larger\x20result\x20set\
7822    s\x20can\x20be\x20fetched\x20in\x20streaming\x20fashion\x20by\x20calling\
7823    \n\x20[ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreamingSq\
7824    l]\x20instead.\n\n\r\n\x05\x06\0\x02\x05\x01\x12\x04\x85\x01\x06\x10\n\r\
7825    \n\x05\x06\0\x02\x05\x02\x12\x04\x85\x01\x11\"\n\r\n\x05\x06\0\x02\x05\
7826    \x03\x12\x04\x85\x01-6\n\x0f\n\x05\x06\0\x02\x05\x04\x12\x06\x86\x01\x04\
7827    \x89\x01\x06\n\x13\n\t\x06\0\x02\x05\x04\xb0\xca\xbc\"\x12\x06\x86\x01\
7828    \x04\x89\x01\x06\n\xd7\x02\n\x04\x06\0\x02\x06\x12\x06\x91\x01\x02\x96\
7829    \x01\x03\x1a\xc6\x02\x20Like\x20[ExecuteSql][google.spanner.v1.Spanner.E\
7830    xecuteSql],\x20except\x20returns\x20the\x20result\n\x20set\x20as\x20a\
7831    \x20stream.\x20Unlike\x20[ExecuteSql][google.spanner.v1.Spanner.ExecuteS\
7832    ql],\x20there\n\x20is\x20no\x20limit\x20on\x20the\x20size\x20of\x20the\
7833    \x20returned\x20result\x20set.\x20However,\x20no\n\x20individual\x20row\
7834    \x20in\x20the\x20result\x20set\x20can\x20exceed\x20100\x20MiB,\x20and\
7835    \x20no\n\x20column\x20value\x20can\x20exceed\x2010\x20MiB.\n\n\r\n\x05\
7836    \x06\0\x02\x06\x01\x12\x04\x91\x01\x06\x19\n\r\n\x05\x06\0\x02\x06\x02\
7837    \x12\x04\x91\x01\x1a+\n\r\n\x05\x06\0\x02\x06\x06\x12\x04\x91\x016<\n\r\
7838    \n\x05\x06\0\x02\x06\x03\x12\x04\x91\x01=M\n\x0f\n\x05\x06\0\x02\x06\x04\
7839    \x12\x06\x92\x01\x04\x95\x01\x06\n\x13\n\t\x06\0\x02\x06\x04\xb0\xca\xbc\
7840    \"\x12\x06\x92\x01\x04\x95\x01\x06\n\x85\x05\n\x04\x06\0\x02\x07\x12\x06\
7841    \xa3\x01\x02\xa8\x01\x03\x1a\xf4\x04\x20Executes\x20a\x20batch\x20of\x20\
7842    SQL\x20DML\x20statements.\x20This\x20method\x20allows\x20many\x20stateme\
7843    nts\n\x20to\x20be\x20run\x20with\x20lower\x20latency\x20than\x20submitti\
7844    ng\x20them\x20sequentially\x20with\n\x20[ExecuteSql][google.spanner.v1.S\
7845    panner.ExecuteSql].\n\n\x20Statements\x20are\x20executed\x20in\x20sequen\
7846    tial\x20order.\x20A\x20request\x20can\x20succeed\x20even\x20if\n\x20a\
7847    \x20statement\x20fails.\x20The\x20[ExecuteBatchDmlResponse.status][googl\
7848    e.spanner.v1.ExecuteBatchDmlResponse.status]\x20field\x20in\x20the\n\x20\
7849    response\x20provides\x20information\x20about\x20the\x20statement\x20that\
7850    \x20failed.\x20Clients\x20must\n\x20inspect\x20this\x20field\x20to\x20de\
7851    termine\x20whether\x20an\x20error\x20occurred.\n\n\x20Execution\x20stops\
7852    \x20after\x20the\x20first\x20failed\x20statement;\x20the\x20remaining\
7853    \x20statements\n\x20are\x20not\x20executed.\n\n\r\n\x05\x06\0\x02\x07\
7854    \x01\x12\x04\xa3\x01\x06\x15\n\r\n\x05\x06\0\x02\x07\x02\x12\x04\xa3\x01\
7855    \x16,\n\r\n\x05\x06\0\x02\x07\x03\x12\x04\xa3\x017N\n\x0f\n\x05\x06\0\
7856    \x02\x07\x04\x12\x06\xa4\x01\x04\xa7\x01\x06\n\x13\n\t\x06\0\x02\x07\x04\
7857    \xb0\xca\xbc\"\x12\x06\xa4\x01\x04\xa7\x01\x06\n\xb1\x05\n\x04\x06\0\x02\
7858    \x08\x12\x06\xb7\x01\x02\xbc\x01\x03\x1a\xa0\x05\x20Reads\x20rows\x20fro\
7859    m\x20the\x20database\x20using\x20key\x20lookups\x20and\x20scans,\x20as\
7860    \x20a\n\x20simple\x20key/value\x20style\x20alternative\x20to\n\x20[Execu\
7861    teSql][google.spanner.v1.Spanner.ExecuteSql].\x20\x20This\x20method\x20c\
7862    annot\x20be\x20used\x20to\n\x20return\x20a\x20result\x20set\x20larger\
7863    \x20than\x2010\x20MiB;\x20if\x20the\x20read\x20matches\x20more\n\x20data\
7864    \x20than\x20that,\x20the\x20read\x20fails\x20with\x20a\x20`FAILED_PRECON\
7865    DITION`\n\x20error.\n\n\x20Reads\x20inside\x20read-write\x20transactions\
7866    \x20might\x20return\x20`ABORTED`.\x20If\n\x20this\x20occurs,\x20the\x20a\
7867    pplication\x20should\x20restart\x20the\x20transaction\x20from\n\x20the\
7868    \x20beginning.\x20See\x20[Transaction][google.spanner.v1.Transaction]\
7869    \x20for\x20more\x20details.\n\n\x20Larger\x20result\x20sets\x20can\x20be\
7870    \x20yielded\x20in\x20streaming\x20fashion\x20by\x20calling\n\x20[Streami\
7871    ngRead][google.spanner.v1.Spanner.StreamingRead]\x20instead.\n\n\r\n\x05\
7872    \x06\0\x02\x08\x01\x12\x04\xb7\x01\x06\n\n\r\n\x05\x06\0\x02\x08\x02\x12\
7873    \x04\xb7\x01\x0b\x16\n\r\n\x05\x06\0\x02\x08\x03\x12\x04\xb7\x01!*\n\x0f\
7874    \n\x05\x06\0\x02\x08\x04\x12\x06\xb8\x01\x04\xbb\x01\x06\n\x13\n\t\x06\0\
7875    \x02\x08\x04\xb0\xca\xbc\"\x12\x06\xb8\x01\x04\xbb\x01\x06\n\xbf\x02\n\
7876    \x04\x06\0\x02\t\x12\x06\xc3\x01\x02\xc8\x01\x03\x1a\xae\x02\x20Like\x20\
7877    [Read][google.spanner.v1.Spanner.Read],\x20except\x20returns\x20the\x20r\
7878    esult\x20set\x20as\x20a\n\x20stream.\x20Unlike\x20[Read][google.spanner.\
7879    v1.Spanner.Read],\x20there\x20is\x20no\x20limit\x20on\x20the\n\x20size\
7880    \x20of\x20the\x20returned\x20result\x20set.\x20However,\x20no\x20individ\
7881    ual\x20row\x20in\n\x20the\x20result\x20set\x20can\x20exceed\x20100\x20Mi\
7882    B,\x20and\x20no\x20column\x20value\x20can\x20exceed\n\x2010\x20MiB.\n\n\
7883    \r\n\x05\x06\0\x02\t\x01\x12\x04\xc3\x01\x06\x13\n\r\n\x05\x06\0\x02\t\
7884    \x02\x12\x04\xc3\x01\x14\x1f\n\r\n\x05\x06\0\x02\t\x06\x12\x04\xc3\x01*0\
7885    \n\r\n\x05\x06\0\x02\t\x03\x12\x04\xc3\x011A\n\x0f\n\x05\x06\0\x02\t\x04\
7886    \x12\x06\xc4\x01\x04\xc7\x01\x06\n\x13\n\t\x06\0\x02\t\x04\xb0\xca\xbc\"\
7887    \x12\x06\xc4\x01\x04\xc7\x01\x06\n\x87\x02\n\x04\x06\0\x02\n\x12\x06\xce\
7888    \x01\x02\xd4\x01\x03\x1a\xf6\x01\x20Begins\x20a\x20new\x20transaction.\
7889    \x20This\x20step\x20can\x20often\x20be\x20skipped:\n\x20[Read][google.sp\
7890    anner.v1.Spanner.Read],\x20[ExecuteSql][google.spanner.v1.Spanner.Execut\
7891    eSql]\x20and\n\x20[Commit][google.spanner.v1.Spanner.Commit]\x20can\x20b\
7892    egin\x20a\x20new\x20transaction\x20as\x20a\n\x20side-effect.\n\n\r\n\x05\
7893    \x06\0\x02\n\x01\x12\x04\xce\x01\x06\x16\n\r\n\x05\x06\0\x02\n\x02\x12\
7894    \x04\xce\x01\x17.\n\r\n\x05\x06\0\x02\n\x03\x12\x04\xce\x019D\n\x0f\n\
7895    \x05\x06\0\x02\n\x04\x12\x06\xcf\x01\x04\xd2\x01\x06\n\x13\n\t\x06\0\x02\
7896    \n\x04\xb0\xca\xbc\"\x12\x06\xcf\x01\x04\xd2\x01\x06\n\r\n\x05\x06\0\x02\
7897    \n\x04\x12\x04\xd3\x01\x04=\n\x10\n\x08\x06\0\x02\n\x04\x9b\x08\0\x12\
7898    \x04\xd3\x01\x04=\n\x83\x06\n\x04\x06\0\x02\x0b\x12\x06\xe4\x01\x02\xeb\
7899    \x01\x03\x1a\xf2\x05\x20Commits\x20a\x20transaction.\x20The\x20request\
7900    \x20includes\x20the\x20mutations\x20to\x20be\n\x20applied\x20to\x20rows\
7901    \x20in\x20the\x20database.\n\n\x20`Commit`\x20might\x20return\x20an\x20`\
7902    ABORTED`\x20error.\x20This\x20can\x20occur\x20at\x20any\x20time;\n\x20co\
7903    mmonly,\x20the\x20cause\x20is\x20conflicts\x20with\x20concurrent\n\x20tr\
7904    ansactions.\x20However,\x20it\x20can\x20also\x20happen\x20for\x20a\x20va\
7905    riety\x20of\x20other\n\x20reasons.\x20If\x20`Commit`\x20returns\x20`ABOR\
7906    TED`,\x20the\x20caller\x20should\x20re-attempt\n\x20the\x20transaction\
7907    \x20from\x20the\x20beginning,\x20re-using\x20the\x20same\x20session.\n\n\
7908    \x20On\x20very\x20rare\x20occasions,\x20`Commit`\x20might\x20return\x20`\
7909    UNKNOWN`.\x20This\x20can\x20happen,\n\x20for\x20example,\x20if\x20the\
7910    \x20client\x20job\x20experiences\x20a\x201+\x20hour\x20networking\x20fai\
7911    lure.\n\x20At\x20that\x20point,\x20Cloud\x20Spanner\x20has\x20lost\x20tr\
7912    ack\x20of\x20the\x20transaction\x20outcome\x20and\n\x20we\x20recommend\
7913    \x20that\x20you\x20perform\x20another\x20read\x20from\x20the\x20database\
7914    \x20to\x20see\x20the\n\x20state\x20of\x20things\x20as\x20they\x20are\x20\
7915    now.\n\n\r\n\x05\x06\0\x02\x0b\x01\x12\x04\xe4\x01\x06\x0c\n\r\n\x05\x06\
7916    \0\x02\x0b\x02\x12\x04\xe4\x01\r\x1a\n\r\n\x05\x06\0\x02\x0b\x03\x12\x04\
7917    \xe4\x01%3\n\x0f\n\x05\x06\0\x02\x0b\x04\x12\x06\xe5\x01\x04\xe8\x01\x06\
7918    \n\x13\n\t\x06\0\x02\x0b\x04\xb0\xca\xbc\"\x12\x06\xe5\x01\x04\xe8\x01\
7919    \x06\n\r\n\x05\x06\0\x02\x0b\x04\x12\x04\xe9\x01\x04N\n\x10\n\x08\x06\0\
7920    \x02\x0b\x04\x9b\x08\0\x12\x04\xe9\x01\x04N\n\r\n\x05\x06\0\x02\x0b\x04\
7921    \x12\x04\xea\x01\x04V\n\x10\n\x08\x06\0\x02\x0b\x04\x9b\x08\x01\x12\x04\
7922    \xea\x01\x04V\n\xd7\x03\n\x04\x06\0\x02\x0c\x12\x06\xf5\x01\x02\xfb\x01\
7923    \x03\x1a\xc6\x03\x20Rolls\x20back\x20a\x20transaction,\x20releasing\x20a\
7924    ny\x20locks\x20it\x20holds.\x20It\x20is\x20a\x20good\n\x20idea\x20to\x20\
7925    call\x20this\x20for\x20any\x20transaction\x20that\x20includes\x20one\x20\
7926    or\x20more\n\x20[Read][google.spanner.v1.Spanner.Read]\x20or\x20[Execute\
7927    Sql][google.spanner.v1.Spanner.ExecuteSql]\x20requests\x20and\n\x20ultim\
7928    ately\x20decides\x20not\x20to\x20commit.\n\n\x20`Rollback`\x20returns\
7929    \x20`OK`\x20if\x20it\x20successfully\x20aborts\x20the\x20transaction,\
7930    \x20the\n\x20transaction\x20was\x20already\x20aborted,\x20or\x20the\x20t\
7931    ransaction\x20is\x20not\n\x20found.\x20`Rollback`\x20never\x20returns\
7932    \x20`ABORTED`.\n\n\r\n\x05\x06\0\x02\x0c\x01\x12\x04\xf5\x01\x06\x0e\n\r\
7933    \n\x05\x06\0\x02\x0c\x02\x12\x04\xf5\x01\x0f\x1e\n\r\n\x05\x06\0\x02\x0c\
7934    \x03\x12\x04\xf5\x01)>\n\x0f\n\x05\x06\0\x02\x0c\x04\x12\x06\xf6\x01\x04\
7935    \xf9\x01\x06\n\x13\n\t\x06\0\x02\x0c\x04\xb0\xca\xbc\"\x12\x06\xf6\x01\
7936    \x04\xf9\x01\x06\n\r\n\x05\x06\0\x02\x0c\x04\x12\x04\xfa\x01\x04D\n\x10\
7937    \n\x08\x06\0\x02\x0c\x04\x9b\x08\0\x12\x04\xfa\x01\x04D\n\xef\x05\n\x04\
7938    \x06\0\x02\r\x12\x06\x88\x02\x02\x8d\x02\x03\x1a\xde\x05\x20Creates\x20a\
7939    \x20set\x20of\x20partition\x20tokens\x20that\x20can\x20be\x20used\x20to\
7940    \x20execute\x20a\x20query\n\x20operation\x20in\x20parallel.\x20\x20Each\
7941    \x20of\x20the\x20returned\x20partition\x20tokens\x20can\x20be\x20used\n\
7942    \x20by\x20[ExecuteStreamingSql][google.spanner.v1.Spanner.ExecuteStreami\
7943    ngSql]\x20to\x20specify\x20a\x20subset\n\x20of\x20the\x20query\x20result\
7944    \x20to\x20read.\x20\x20The\x20same\x20session\x20and\x20read-only\x20tra\
7945    nsaction\n\x20must\x20be\x20used\x20by\x20the\x20PartitionQueryRequest\
7946    \x20used\x20to\x20create\x20the\n\x20partition\x20tokens\x20and\x20the\
7947    \x20ExecuteSqlRequests\x20that\x20use\x20the\x20partition\x20tokens.\n\n\
7948    \x20Partition\x20tokens\x20become\x20invalid\x20when\x20the\x20session\
7949    \x20used\x20to\x20create\x20them\n\x20is\x20deleted,\x20is\x20idle\x20fo\
7950    r\x20too\x20long,\x20begins\x20a\x20new\x20transaction,\x20or\x20becomes\
7951    \x20too\n\x20old.\x20\x20When\x20any\x20of\x20these\x20happen,\x20it\x20\
7952    is\x20not\x20possible\x20to\x20resume\x20the\x20query,\x20and\n\x20the\
7953    \x20whole\x20operation\x20must\x20be\x20restarted\x20from\x20the\x20begi\
7954    nning.\n\n\r\n\x05\x06\0\x02\r\x01\x12\x04\x88\x02\x06\x14\n\r\n\x05\x06\
7955    \0\x02\r\x02\x12\x04\x88\x02\x15*\n\r\n\x05\x06\0\x02\r\x03\x12\x04\x88\
7956    \x025F\n\x0f\n\x05\x06\0\x02\r\x04\x12\x06\x89\x02\x04\x8c\x02\x06\n\x13\
7957    \n\t\x06\0\x02\r\x04\xb0\xca\xbc\"\x12\x06\x89\x02\x04\x8c\x02\x06\n\x84\
7958    \x07\n\x04\x06\0\x02\x0e\x12\x06\x9c\x02\x02\xa1\x02\x03\x1a\xf3\x06\x20\
7959    Creates\x20a\x20set\x20of\x20partition\x20tokens\x20that\x20can\x20be\
7960    \x20used\x20to\x20execute\x20a\x20read\n\x20operation\x20in\x20parallel.\
7961    \x20\x20Each\x20of\x20the\x20returned\x20partition\x20tokens\x20can\x20b\
7962    e\x20used\n\x20by\x20[StreamingRead][google.spanner.v1.Spanner.Streaming\
7963    Read]\x20to\x20specify\x20a\x20subset\x20of\x20the\x20read\n\x20result\
7964    \x20to\x20read.\x20\x20The\x20same\x20session\x20and\x20read-only\x20tra\
7965    nsaction\x20must\x20be\x20used\x20by\n\x20the\x20PartitionReadRequest\
7966    \x20used\x20to\x20create\x20the\x20partition\x20tokens\x20and\x20the\n\
7967    \x20ReadRequests\x20that\x20use\x20the\x20partition\x20tokens.\x20\x20Th\
7968    ere\x20are\x20no\x20ordering\n\x20guarantees\x20on\x20rows\x20returned\
7969    \x20among\x20the\x20returned\x20partition\x20tokens,\x20or\x20even\n\x20\
7970    within\x20each\x20individual\x20StreamingRead\x20call\x20issued\x20with\
7971    \x20a\x20partition_token.\n\n\x20Partition\x20tokens\x20become\x20invali\
7972    d\x20when\x20the\x20session\x20used\x20to\x20create\x20them\n\x20is\x20d\
7973    eleted,\x20is\x20idle\x20for\x20too\x20long,\x20begins\x20a\x20new\x20tr\
7974    ansaction,\x20or\x20becomes\x20too\n\x20old.\x20\x20When\x20any\x20of\
7975    \x20these\x20happen,\x20it\x20is\x20not\x20possible\x20to\x20resume\x20t\
7976    he\x20read,\x20and\n\x20the\x20whole\x20operation\x20must\x20be\x20resta\
7977    rted\x20from\x20the\x20beginning.\n\n\r\n\x05\x06\0\x02\x0e\x01\x12\x04\
7978    \x9c\x02\x06\x13\n\r\n\x05\x06\0\x02\x0e\x02\x12\x04\x9c\x02\x14(\n\r\n\
7979    \x05\x06\0\x02\x0e\x03\x12\x04\x9c\x023D\n\x0f\n\x05\x06\0\x02\x0e\x04\
7980    \x12\x06\x9d\x02\x04\xa0\x02\x06\n\x13\n\t\x06\0\x02\x0e\x04\xb0\xca\xbc\
7981    \"\x12\x06\x9d\x02\x04\xa0\x02\x06\n\xcd\x07\n\x04\x06\0\x02\x0f\x12\x06\
7982    \xb2\x02\x02\xb8\x02\x03\x1a\xbc\x07\x20Batches\x20the\x20supplied\x20mu\
7983    tation\x20groups\x20in\x20a\x20collection\x20of\x20efficient\n\x20transa\
7984    ctions.\x20All\x20mutations\x20in\x20a\x20group\x20are\x20committed\x20a\
7985    tomically.\x20However,\n\x20mutations\x20across\x20groups\x20can\x20be\
7986    \x20committed\x20non-atomically\x20in\x20an\x20unspecified\n\x20order\
7987    \x20and\x20thus,\x20they\x20must\x20be\x20independent\x20of\x20each\x20o\
7988    ther.\x20Partial\x20failure\x20is\n\x20possible,\x20i.e.,\x20some\x20gro\
7989    ups\x20may\x20have\x20been\x20committed\x20successfully,\x20while\n\x20s\
7990    ome\x20may\x20have\x20failed.\x20The\x20results\x20of\x20individual\x20b\
7991    atches\x20are\x20streamed\x20into\n\x20the\x20response\x20as\x20the\x20b\
7992    atches\x20are\x20applied.\n\n\x20BatchWrite\x20requests\x20are\x20not\
7993    \x20replay\x20protected,\x20meaning\x20that\x20each\x20mutation\n\x20gro\
7994    up\x20may\x20be\x20applied\x20more\x20than\x20once.\x20Replays\x20of\x20\
7995    non-idempotent\x20mutations\n\x20may\x20have\x20undesirable\x20effects.\
7996    \x20For\x20example,\x20replays\x20of\x20an\x20insert\x20mutation\n\x20ma\
7997    y\x20produce\x20an\x20already\x20exists\x20error\x20or\x20if\x20you\x20u\
7998    se\x20generated\x20or\x20commit\n\x20timestamp-based\x20keys,\x20it\x20m\
7999    ay\x20result\x20in\x20additional\x20rows\x20being\x20added\x20to\x20the\
8000    \n\x20mutation's\x20table.\x20We\x20recommend\x20structuring\x20your\x20\
8001    mutation\x20groups\x20to\x20be\n\x20idempotent\x20to\x20avoid\x20this\
8002    \x20issue.\n\n\r\n\x05\x06\0\x02\x0f\x01\x12\x04\xb2\x02\x06\x10\n\r\n\
8003    \x05\x06\0\x02\x0f\x02\x12\x04\xb2\x02\x11\"\n\r\n\x05\x06\0\x02\x0f\x06\
8004    \x12\x04\xb2\x02-3\n\r\n\x05\x06\0\x02\x0f\x03\x12\x04\xb2\x024F\n\x0f\n\
8005    \x05\x06\0\x02\x0f\x04\x12\x06\xb3\x02\x04\xb6\x02\x06\n\x13\n\t\x06\0\
8006    \x02\x0f\x04\xb0\xca\xbc\"\x12\x06\xb3\x02\x04\xb6\x02\x06\n\r\n\x05\x06\
8007    \0\x02\x0f\x04\x12\x04\xb7\x02\x04E\n\x10\n\x08\x06\0\x02\x0f\x04\x9b\
8008    \x08\0\x12\x04\xb7\x02\x04E\nY\n\x02\x04\0\x12\x06\xbc\x02\0\xc7\x02\x01\
8009    \x1aK\x20The\x20request\x20for\x20[CreateSession][google.spanner.v1.Span\
8010    ner.CreateSession].\n\n\x0b\n\x03\x04\0\x01\x12\x04\xbc\x02\x08\x1c\nM\n\
8011    \x04\x04\0\x02\0\x12\x06\xbe\x02\x02\xc3\x02\x04\x1a=\x20Required.\x20Th\
8012    e\x20database\x20in\x20which\x20the\x20new\x20session\x20is\x20created.\
8013    \n\n\r\n\x05\x04\0\x02\0\x05\x12\x04\xbe\x02\x02\x08\n\r\n\x05\x04\0\x02\
8014    \0\x01\x12\x04\xbe\x02\t\x11\n\r\n\x05\x04\0\x02\0\x03\x12\x04\xbe\x02\
8015    \x14\x15\n\x0f\n\x05\x04\0\x02\0\x08\x12\x06\xbe\x02\x16\xc3\x02\x03\n\
8016    \x10\n\x08\x04\0\x02\0\x08\x9c\x08\0\x12\x04\xbf\x02\x04*\n\x11\n\x07\
8017    \x04\0\x02\0\x08\x9f\x08\x12\x06\xc0\x02\x04\xc2\x02\x05\n0\n\x04\x04\0\
8018    \x02\x01\x12\x04\xc6\x02\x02?\x1a\"\x20Required.\x20The\x20session\x20to\
8019    \x20create.\n\n\r\n\x05\x04\0\x02\x01\x06\x12\x04\xc6\x02\x02\t\n\r\n\
8020    \x05\x04\0\x02\x01\x01\x12\x04\xc6\x02\n\x11\n\r\n\x05\x04\0\x02\x01\x03\
8021    \x12\x04\xc6\x02\x14\x15\n\r\n\x05\x04\0\x02\x01\x08\x12\x04\xc6\x02\x16\
8022    >\n\x10\n\x08\x04\0\x02\x01\x08\x9c\x08\0\x12\x04\xc6\x02\x17=\ne\n\x02\
8023    \x04\x01\x12\x06\xca\x02\0\xdc\x02\x01\x1aW\x20The\x20request\x20for\x20\
8024    [BatchCreateSessions][google.spanner.v1.Spanner.BatchCreateSessions].\n\
8025    \n\x0b\n\x03\x04\x01\x01\x12\x04\xca\x02\x08\"\nO\n\x04\x04\x01\x02\0\
8026    \x12\x06\xcc\x02\x02\xd1\x02\x04\x1a?\x20Required.\x20The\x20database\
8027    \x20in\x20which\x20the\x20new\x20sessions\x20are\x20created.\n\n\r\n\x05\
8028    \x04\x01\x02\0\x05\x12\x04\xcc\x02\x02\x08\n\r\n\x05\x04\x01\x02\0\x01\
8029    \x12\x04\xcc\x02\t\x11\n\r\n\x05\x04\x01\x02\0\x03\x12\x04\xcc\x02\x14\
8030    \x15\n\x0f\n\x05\x04\x01\x02\0\x08\x12\x06\xcc\x02\x16\xd1\x02\x03\n\x10\
8031    \n\x08\x04\x01\x02\0\x08\x9c\x08\0\x12\x04\xcd\x02\x04*\n\x11\n\x07\x04\
8032    \x01\x02\0\x08\x9f\x08\x12\x06\xce\x02\x04\xd0\x02\x05\nA\n\x04\x04\x01\
8033    \x02\x01\x12\x04\xd4\x02\x02\x1f\x1a3\x20Parameters\x20to\x20be\x20appli\
8034    ed\x20to\x20each\x20created\x20session.\n\n\r\n\x05\x04\x01\x02\x01\x06\
8035    \x12\x04\xd4\x02\x02\t\n\r\n\x05\x04\x01\x02\x01\x01\x12\x04\xd4\x02\n\
8036    \x1a\n\r\n\x05\x04\x01\x02\x01\x03\x12\x04\xd4\x02\x1d\x1e\n\xe7\x02\n\
8037    \x04\x04\x01\x02\x02\x12\x04\xdb\x02\x02C\x1a\xd8\x02\x20Required.\x20Th\
8038    e\x20number\x20of\x20sessions\x20to\x20be\x20created\x20in\x20this\x20ba\
8039    tch\x20call.\n\x20The\x20API\x20may\x20return\x20fewer\x20than\x20the\
8040    \x20requested\x20number\x20of\x20sessions.\x20If\x20a\n\x20specific\x20n\
8041    umber\x20of\x20sessions\x20are\x20desired,\x20the\x20client\x20can\x20ma\
8042    ke\x20additional\n\x20calls\x20to\x20BatchCreateSessions\x20(adjusting\n\
8043    \x20[session_count][google.spanner.v1.BatchCreateSessionsRequest.session\
8044    _count]\x20as\x20necessary).\n\n\r\n\x05\x04\x01\x02\x02\x05\x12\x04\xdb\
8045    \x02\x02\x07\n\r\n\x05\x04\x01\x02\x02\x01\x12\x04\xdb\x02\x08\x15\n\r\n\
8046    \x05\x04\x01\x02\x02\x03\x12\x04\xdb\x02\x18\x19\n\r\n\x05\x04\x01\x02\
8047    \x02\x08\x12\x04\xdb\x02\x1aB\n\x10\n\x08\x04\x01\x02\x02\x08\x9c\x08\0\
8048    \x12\x04\xdb\x02\x1bA\nf\n\x02\x04\x02\x12\x06\xdf\x02\0\xe2\x02\x01\x1a\
8049    X\x20The\x20response\x20for\x20[BatchCreateSessions][google.spanner.v1.S\
8050    panner.BatchCreateSessions].\n\n\x0b\n\x03\x04\x02\x01\x12\x04\xdf\x02\
8051    \x08#\n-\n\x04\x04\x02\x02\0\x12\x04\xe1\x02\x02\x1f\x1a\x1f\x20The\x20f\
8052    reshly\x20created\x20sessions.\n\n\r\n\x05\x04\x02\x02\0\x04\x12\x04\xe1\
8053    \x02\x02\n\n\r\n\x05\x04\x02\x02\0\x06\x12\x04\xe1\x02\x0b\x12\n\r\n\x05\
8054    \x04\x02\x02\0\x01\x12\x04\xe1\x02\x13\x1a\n\r\n\x05\x04\x02\x02\0\x03\
8055    \x12\x04\xe1\x02\x1d\x1e\n3\n\x02\x04\x03\x12\x06\xe5\x02\0\x82\x03\x01\
8056    \x1a%\x20A\x20session\x20in\x20the\x20Cloud\x20Spanner\x20API.\n\n\x0b\n\
8057    \x03\x04\x03\x01\x12\x04\xe5\x02\x08\x0f\n\r\n\x03\x04\x03\x07\x12\x06\
8058    \xe6\x02\x02\xe9\x02\x04\n\x0f\n\x05\x04\x03\x07\x9d\x08\x12\x06\xe6\x02\
8059    \x02\xe9\x02\x04\nU\n\x04\x04\x03\x02\0\x12\x04\xec\x02\x02>\x1aG\x20Out\
8060    put\x20only.\x20The\x20name\x20of\x20the\x20session.\x20This\x20is\x20al\
8061    ways\x20system-assigned.\n\n\r\n\x05\x04\x03\x02\0\x05\x12\x04\xec\x02\
8062    \x02\x08\n\r\n\x05\x04\x03\x02\0\x01\x12\x04\xec\x02\t\r\n\r\n\x05\x04\
8063    \x03\x02\0\x03\x12\x04\xec\x02\x10\x11\n\r\n\x05\x04\x03\x02\0\x08\x12\
8064    \x04\xec\x02\x12=\n\x10\n\x08\x04\x03\x02\0\x08\x9c\x08\0\x12\x04\xec\
8065    \x02\x13<\n\xd6\x03\n\x04\x04\x03\x02\x01\x12\x04\xf7\x02\x02!\x1a\xc7\
8066    \x03\x20The\x20labels\x20for\x20the\x20session.\n\n\x20\x20*\x20Label\
8067    \x20keys\x20must\x20be\x20between\x201\x20and\x2063\x20characters\x20lon\
8068    g\x20and\x20must\x20conform\x20to\n\x20\x20\x20\x20the\x20following\x20r\
8069    egular\x20expression:\x20`[a-z]([-a-z0-9]*[a-z0-9])?`.\n\x20\x20*\x20Lab\
8070    el\x20values\x20must\x20be\x20between\x200\x20and\x2063\x20characters\
8071    \x20long\x20and\x20must\x20conform\n\x20\x20\x20\x20to\x20the\x20regular\
8072    \x20expression\x20`([a-z]([-a-z0-9]*[a-z0-9])?)?`.\n\x20\x20*\x20No\x20m\
8073    ore\x20than\x2064\x20labels\x20can\x20be\x20associated\x20with\x20a\x20g\
8074    iven\x20session.\n\n\x20See\x20https://goo.gl/xmQnxf\x20for\x20more\x20i\
8075    nformation\x20on\x20and\x20examples\x20of\x20labels.\n\n\r\n\x05\x04\x03\
8076    \x02\x01\x06\x12\x04\xf7\x02\x02\x15\n\r\n\x05\x04\x03\x02\x01\x01\x12\
8077    \x04\xf7\x02\x16\x1c\n\r\n\x05\x04\x03\x02\x01\x03\x12\x04\xf7\x02\x1f\
8078    \x20\nG\n\x04\x04\x03\x02\x02\x12\x04\xfa\x02\x02X\x1a9\x20Output\x20onl\
8079    y.\x20The\x20timestamp\x20when\x20the\x20session\x20is\x20created.\n\n\r\
8080    \n\x05\x04\x03\x02\x02\x06\x12\x04\xfa\x02\x02\x1b\n\r\n\x05\x04\x03\x02\
8081    \x02\x01\x12\x04\xfa\x02\x1c'\n\r\n\x05\x04\x03\x02\x02\x03\x12\x04\xfa\
8082    \x02*+\n\r\n\x05\x04\x03\x02\x02\x08\x12\x04\xfa\x02,W\n\x10\n\x08\x04\
8083    \x03\x02\x02\x08\x9c\x08\0\x12\x04\xfa\x02-V\n\x8d\x01\n\x04\x04\x03\x02\
8084    \x03\x12\x04\xfe\x02\x02f\x1a\x7f\x20Output\x20only.\x20The\x20approxima\
8085    te\x20timestamp\x20when\x20the\x20session\x20is\x20last\x20used.\x20It\
8086    \x20is\n\x20typically\x20earlier\x20than\x20the\x20actual\x20last\x20use\
8087    \x20time.\n\n\r\n\x05\x04\x03\x02\x03\x06\x12\x04\xfe\x02\x02\x1b\n\r\n\
8088    \x05\x04\x03\x02\x03\x01\x12\x04\xfe\x02\x1c5\n\r\n\x05\x04\x03\x02\x03\
8089    \x03\x12\x04\xfe\x0289\n\r\n\x05\x04\x03\x02\x03\x08\x12\x04\xfe\x02:e\n\
8090    \x10\n\x08\x04\x03\x02\x03\x08\x9c\x08\0\x12\x04\xfe\x02;d\n=\n\x04\x04\
8091    \x03\x02\x04\x12\x04\x81\x03\x02\x1a\x1a/\x20The\x20database\x20role\x20\
8092    which\x20created\x20this\x20session.\n\n\r\n\x05\x04\x03\x02\x04\x05\x12\
8093    \x04\x81\x03\x02\x08\n\r\n\x05\x04\x03\x02\x04\x01\x12\x04\x81\x03\t\x15\
8094    \n\r\n\x05\x04\x03\x02\x04\x03\x12\x04\x81\x03\x18\x19\nS\n\x02\x04\x04\
8095    \x12\x06\x85\x03\0\x8d\x03\x01\x1aE\x20The\x20request\x20for\x20[GetSess\
8096    ion][google.spanner.v1.Spanner.GetSession].\n\n\x0b\n\x03\x04\x04\x01\
8097    \x12\x04\x85\x03\x08\x19\n@\n\x04\x04\x04\x02\0\x12\x06\x87\x03\x02\x8c\
8098    \x03\x04\x1a0\x20Required.\x20The\x20name\x20of\x20the\x20session\x20to\
8099    \x20retrieve.\n\n\r\n\x05\x04\x04\x02\0\x05\x12\x04\x87\x03\x02\x08\n\r\
8100    \n\x05\x04\x04\x02\0\x01\x12\x04\x87\x03\t\r\n\r\n\x05\x04\x04\x02\0\x03\
8101    \x12\x04\x87\x03\x10\x11\n\x0f\n\x05\x04\x04\x02\0\x08\x12\x06\x87\x03\
8102    \x12\x8c\x03\x03\n\x10\n\x08\x04\x04\x02\0\x08\x9c\x08\0\x12\x04\x88\x03\
8103    \x04*\n\x11\n\x07\x04\x04\x02\0\x08\x9f\x08\x12\x06\x89\x03\x04\x8b\x03\
8104    \x05\nW\n\x02\x04\x05\x12\x06\x90\x03\0\xad\x03\x01\x1aI\x20The\x20reque\
8105    st\x20for\x20[ListSessions][google.spanner.v1.Spanner.ListSessions].\n\n\
8106    \x0b\n\x03\x04\x05\x01\x12\x04\x90\x03\x08\x1b\nC\n\x04\x04\x05\x02\0\
8107    \x12\x06\x92\x03\x02\x97\x03\x04\x1a3\x20Required.\x20The\x20database\
8108    \x20in\x20which\x20to\x20list\x20sessions.\n\n\r\n\x05\x04\x05\x02\0\x05\
8109    \x12\x04\x92\x03\x02\x08\n\r\n\x05\x04\x05\x02\0\x01\x12\x04\x92\x03\t\
8110    \x11\n\r\n\x05\x04\x05\x02\0\x03\x12\x04\x92\x03\x14\x15\n\x0f\n\x05\x04\
8111    \x05\x02\0\x08\x12\x06\x92\x03\x16\x97\x03\x03\n\x10\n\x08\x04\x05\x02\0\
8112    \x08\x9c\x08\0\x12\x04\x93\x03\x04*\n\x11\n\x07\x04\x05\x02\0\x08\x9f\
8113    \x08\x12\x06\x94\x03\x04\x96\x03\x05\n\x85\x01\n\x04\x04\x05\x02\x01\x12\
8114    \x04\x9b\x03\x02\x16\x1aw\x20Number\x20of\x20sessions\x20to\x20be\x20ret\
8115    urned\x20in\x20the\x20response.\x20If\x200\x20or\x20less,\x20defaults\n\
8116    \x20to\x20the\x20server's\x20maximum\x20allowed\x20page\x20size.\n\n\r\n\
8117    \x05\x04\x05\x02\x01\x05\x12\x04\x9b\x03\x02\x07\n\r\n\x05\x04\x05\x02\
8118    \x01\x01\x12\x04\x9b\x03\x08\x11\n\r\n\x05\x04\x05\x02\x01\x03\x12\x04\
8119    \x9b\x03\x14\x15\n\xd8\x01\n\x04\x04\x05\x02\x02\x12\x04\xa0\x03\x02\x18\
8120    \x1a\xc9\x01\x20If\x20non-empty,\x20`page_token`\x20should\x20contain\
8121    \x20a\n\x20[next_page_token][google.spanner.v1.ListSessionsResponse.next\
8122    _page_token]\x20from\x20a\x20previous\n\x20[ListSessionsResponse][google\
8123    .spanner.v1.ListSessionsResponse].\n\n\r\n\x05\x04\x05\x02\x02\x05\x12\
8124    \x04\xa0\x03\x02\x08\n\r\n\x05\x04\x05\x02\x02\x01\x12\x04\xa0\x03\t\x13\
8125    \n\r\n\x05\x04\x05\x02\x02\x03\x12\x04\xa0\x03\x16\x17\n\xaf\x03\n\x04\
8126    \x04\x05\x02\x03\x12\x04\xac\x03\x02\x14\x1a\xa0\x03\x20An\x20expression\
8127    \x20for\x20filtering\x20the\x20results\x20of\x20the\x20request.\x20Filte\
8128    r\x20rules\x20are\n\x20case\x20insensitive.\x20The\x20fields\x20eligible\
8129    \x20for\x20filtering\x20are:\n\n\x20\x20\x20*\x20`labels.key`\x20where\
8130    \x20key\x20is\x20the\x20name\x20of\x20a\x20label\n\n\x20Some\x20examples\
8131    \x20of\x20using\x20filters\x20are:\n\n\x20\x20\x20*\x20`labels.env:*`\
8132    \x20-->\x20The\x20session\x20has\x20the\x20label\x20\"env\".\n\x20\x20\
8133    \x20*\x20`labels.env:dev`\x20-->\x20The\x20session\x20has\x20the\x20labe\
8134    l\x20\"env\"\x20and\x20the\x20value\x20of\n\x20\x20\x20\x20\x20\x20\x20\
8135    \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20the\
8136    \x20label\x20contains\x20the\x20string\x20\"dev\".\n\n\r\n\x05\x04\x05\
8137    \x02\x03\x05\x12\x04\xac\x03\x02\x08\n\r\n\x05\x04\x05\x02\x03\x01\x12\
8138    \x04\xac\x03\t\x0f\n\r\n\x05\x04\x05\x02\x03\x03\x12\x04\xac\x03\x12\x13\
8139    \nX\n\x02\x04\x06\x12\x06\xb0\x03\0\xb8\x03\x01\x1aJ\x20The\x20response\
8140    \x20for\x20[ListSessions][google.spanner.v1.Spanner.ListSessions].\n\n\
8141    \x0b\n\x03\x04\x06\x01\x12\x04\xb0\x03\x08\x1c\n/\n\x04\x04\x06\x02\0\
8142    \x12\x04\xb2\x03\x02\x20\x1a!\x20The\x20list\x20of\x20requested\x20sessi\
8143    ons.\n\n\r\n\x05\x04\x06\x02\0\x04\x12\x04\xb2\x03\x02\n\n\r\n\x05\x04\
8144    \x06\x02\0\x06\x12\x04\xb2\x03\x0b\x12\n\r\n\x05\x04\x06\x02\0\x01\x12\
8145    \x04\xb2\x03\x13\x1b\n\r\n\x05\x04\x06\x02\0\x03\x12\x04\xb2\x03\x1e\x1f\
8146    \n\xa4\x01\n\x04\x04\x06\x02\x01\x12\x04\xb7\x03\x02\x1d\x1a\x95\x01\x20\
8147    `next_page_token`\x20can\x20be\x20sent\x20in\x20a\x20subsequent\n\x20[Li\
8148    stSessions][google.spanner.v1.Spanner.ListSessions]\x20call\x20to\x20fet\
8149    ch\x20more\x20of\x20the\x20matching\n\x20sessions.\n\n\r\n\x05\x04\x06\
8150    \x02\x01\x05\x12\x04\xb7\x03\x02\x08\n\r\n\x05\x04\x06\x02\x01\x01\x12\
8151    \x04\xb7\x03\t\x18\n\r\n\x05\x04\x06\x02\x01\x03\x12\x04\xb7\x03\x1b\x1c\
8152    \nY\n\x02\x04\x07\x12\x06\xbb\x03\0\xc3\x03\x01\x1aK\x20The\x20request\
8153    \x20for\x20[DeleteSession][google.spanner.v1.Spanner.DeleteSession].\n\n\
8154    \x0b\n\x03\x04\x07\x01\x12\x04\xbb\x03\x08\x1c\n>\n\x04\x04\x07\x02\0\
8155    \x12\x06\xbd\x03\x02\xc2\x03\x04\x1a.\x20Required.\x20The\x20name\x20of\
8156    \x20the\x20session\x20to\x20delete.\n\n\r\n\x05\x04\x07\x02\0\x05\x12\
8157    \x04\xbd\x03\x02\x08\n\r\n\x05\x04\x07\x02\0\x01\x12\x04\xbd\x03\t\r\n\r\
8158    \n\x05\x04\x07\x02\0\x03\x12\x04\xbd\x03\x10\x11\n\x0f\n\x05\x04\x07\x02\
8159    \0\x08\x12\x06\xbd\x03\x12\xc2\x03\x03\n\x10\n\x08\x04\x07\x02\0\x08\x9c\
8160    \x08\0\x12\x04\xbe\x03\x04*\n\x11\n\x07\x04\x07\x02\0\x08\x9f\x08\x12\
8161    \x06\xbf\x03\x04\xc1\x03\x05\n8\n\x02\x04\x08\x12\x06\xc6\x03\0\x80\x04\
8162    \x01\x1a*\x20Common\x20request\x20options\x20for\x20various\x20APIs.\n\n\
8163    \x0b\n\x03\x04\x08\x01\x12\x04\xc6\x03\x08\x16\n\x83\x07\n\x04\x04\x08\
8164    \x04\0\x12\x06\xd7\x03\x02\xe3\x03\x03\x1a\xf2\x06\x20The\x20relative\
8165    \x20priority\x20for\x20requests.\x20Note\x20that\x20priority\x20is\x20no\
8166    t\x20applicable\n\x20for\x20[BeginTransaction][google.spanner.v1.Spanner\
8167    .BeginTransaction].\n\n\x20The\x20priority\x20acts\x20as\x20a\x20hint\
8168    \x20to\x20the\x20Cloud\x20Spanner\x20scheduler\x20and\x20does\x20not\n\
8169    \x20guarantee\x20priority\x20or\x20order\x20of\x20execution.\x20For\x20e\
8170    xample:\n\n\x20*\x20Some\x20parts\x20of\x20a\x20write\x20operation\x20al\
8171    ways\x20execute\x20at\x20`PRIORITY_HIGH`,\n\x20\x20\x20regardless\x20of\
8172    \x20the\x20specified\x20priority.\x20This\x20may\x20cause\x20you\x20to\
8173    \x20see\x20an\n\x20\x20\x20increase\x20in\x20high\x20priority\x20workloa\
8174    d\x20even\x20when\x20executing\x20a\x20low\x20priority\n\x20\x20\x20requ\
8175    est.\x20This\x20can\x20also\x20potentially\x20cause\x20a\x20priority\x20\
8176    inversion\x20where\x20a\n\x20\x20\x20lower\x20priority\x20request\x20wil\
8177    l\x20be\x20fulfilled\x20ahead\x20of\x20a\x20higher\x20priority\n\x20\x20\
8178    \x20request.\n\x20*\x20If\x20a\x20transaction\x20contains\x20multiple\
8179    \x20operations\x20with\x20different\x20priorities,\n\x20\x20\x20Cloud\
8180    \x20Spanner\x20does\x20not\x20guarantee\x20to\x20process\x20the\x20highe\
8181    r\x20priority\n\x20\x20\x20operations\x20first.\x20There\x20may\x20be\
8182    \x20other\x20constraints\x20to\x20satisfy,\x20such\x20as\n\x20\x20\x20or\
8183    der\x20of\x20operations.\n\n\r\n\x05\x04\x08\x04\0\x01\x12\x04\xd7\x03\
8184    \x07\x0f\nJ\n\x06\x04\x08\x04\0\x02\0\x12\x04\xd9\x03\x04\x1d\x1a:\x20`P\
8185    RIORITY_UNSPECIFIED`\x20is\x20equivalent\x20to\x20`PRIORITY_HIGH`.\n\n\
8186    \x0f\n\x07\x04\x08\x04\0\x02\0\x01\x12\x04\xd9\x03\x04\x18\n\x0f\n\x07\
8187    \x04\x08\x04\0\x02\0\x02\x12\x04\xd9\x03\x1b\x1c\nB\n\x06\x04\x08\x04\0\
8188    \x02\x01\x12\x04\xdc\x03\x04\x15\x1a2\x20This\x20specifies\x20that\x20th\
8189    e\x20request\x20is\x20low\x20priority.\n\n\x0f\n\x07\x04\x08\x04\0\x02\
8190    \x01\x01\x12\x04\xdc\x03\x04\x10\n\x0f\n\x07\x04\x08\x04\0\x02\x01\x02\
8191    \x12\x04\xdc\x03\x13\x14\nE\n\x06\x04\x08\x04\0\x02\x02\x12\x04\xdf\x03\
8192    \x04\x18\x1a5\x20This\x20specifies\x20that\x20the\x20request\x20is\x20me\
8193    dium\x20priority.\n\n\x0f\n\x07\x04\x08\x04\0\x02\x02\x01\x12\x04\xdf\
8194    \x03\x04\x13\n\x0f\n\x07\x04\x08\x04\0\x02\x02\x02\x12\x04\xdf\x03\x16\
8195    \x17\nC\n\x06\x04\x08\x04\0\x02\x03\x12\x04\xe2\x03\x04\x16\x1a3\x20This\
8196    \x20specifies\x20that\x20the\x20request\x20is\x20high\x20priority.\n\n\
8197    \x0f\n\x07\x04\x08\x04\0\x02\x03\x01\x12\x04\xe2\x03\x04\x11\n\x0f\n\x07\
8198    \x04\x08\x04\0\x02\x03\x02\x12\x04\xe2\x03\x14\x15\n)\n\x04\x04\x08\x02\
8199    \0\x12\x04\xe6\x03\x02\x18\x1a\x1b\x20Priority\x20for\x20the\x20request.\
8200    \n\n\r\n\x05\x04\x08\x02\0\x06\x12\x04\xe6\x03\x02\n\n\r\n\x05\x04\x08\
8201    \x02\0\x01\x12\x04\xe6\x03\x0b\x13\n\r\n\x05\x04\x08\x02\0\x03\x12\x04\
8202    \xe6\x03\x16\x17\n\xba\x04\n\x04\x04\x08\x02\x01\x12\x04\xf2\x03\x02\x19\
8203    \x1a\xab\x04\x20A\x20per-request\x20tag\x20which\x20can\x20be\x20applied\
8204    \x20to\x20queries\x20or\x20reads,\x20used\x20for\n\x20statistics\x20coll\
8205    ection.\n\x20Both\x20request_tag\x20and\x20transaction_tag\x20can\x20be\
8206    \x20specified\x20for\x20a\x20read\x20or\x20query\n\x20that\x20belongs\
8207    \x20to\x20a\x20transaction.\n\x20This\x20field\x20is\x20ignored\x20for\
8208    \x20requests\x20where\x20it's\x20not\x20applicable\x20(e.g.\n\x20CommitR\
8209    equest).\n\x20Legal\x20characters\x20for\x20`request_tag`\x20values\x20a\
8210    re\x20all\x20printable\x20characters\n\x20(ASCII\x2032\x20-\x20126)\x20a\
8211    nd\x20the\x20length\x20of\x20a\x20request_tag\x20is\x20limited\x20to\x20\
8212    50\n\x20characters.\x20Values\x20that\x20exceed\x20this\x20limit\x20are\
8213    \x20truncated.\n\x20Any\x20leading\x20underscore\x20(_)\x20characters\
8214    \x20will\x20be\x20removed\x20from\x20the\x20string.\n\n\r\n\x05\x04\x08\
8215    \x02\x01\x05\x12\x04\xf2\x03\x02\x08\n\r\n\x05\x04\x08\x02\x01\x01\x12\
8216    \x04\xf2\x03\t\x14\n\r\n\x05\x04\x08\x02\x01\x03\x12\x04\xf2\x03\x17\x18\
8217    \n\x89\x05\n\x04\x04\x08\x02\x02\x12\x04\xff\x03\x02\x1d\x1a\xfa\x04\x20\
8218    A\x20tag\x20used\x20for\x20statistics\x20collection\x20about\x20this\x20\
8219    transaction.\n\x20Both\x20request_tag\x20and\x20transaction_tag\x20can\
8220    \x20be\x20specified\x20for\x20a\x20read\x20or\x20query\n\x20that\x20belo\
8221    ngs\x20to\x20a\x20transaction.\n\x20The\x20value\x20of\x20transaction_ta\
8222    g\x20should\x20be\x20the\x20same\x20for\x20all\x20requests\x20belonging\
8223    \n\x20to\x20the\x20same\x20transaction.\n\x20If\x20this\x20request\x20do\
8224    esn't\x20belong\x20to\x20any\x20transaction,\x20transaction_tag\x20will\
8225    \x20be\n\x20ignored.\n\x20Legal\x20characters\x20for\x20`transaction_tag\
8226    `\x20values\x20are\x20all\x20printable\x20characters\n\x20(ASCII\x2032\
8227    \x20-\x20126)\x20and\x20the\x20length\x20of\x20a\x20transaction_tag\x20i\
8228    s\x20limited\x20to\x2050\n\x20characters.\x20Values\x20that\x20exceed\
8229    \x20this\x20limit\x20are\x20truncated.\n\x20Any\x20leading\x20underscore\
8230    \x20(_)\x20characters\x20will\x20be\x20removed\x20from\x20the\x20string.\
8231    \n\n\r\n\x05\x04\x08\x02\x02\x05\x12\x04\xff\x03\x02\x08\n\r\n\x05\x04\
8232    \x08\x02\x02\x01\x12\x04\xff\x03\t\x18\n\r\n\x05\x04\x08\x02\x02\x03\x12\
8233    \x04\xff\x03\x1b\x1c\n\x9e\x01\n\x02\x04\t\x12\x06\x84\x04\0\xa3\x05\x01\
8234    \x1a\x8f\x01\x20The\x20request\x20for\x20[ExecuteSql][google.spanner.v1.\
8235    Spanner.ExecuteSql]\x20and\n\x20[ExecuteStreamingSql][google.spanner.v1.\
8236    Spanner.ExecuteStreamingSql].\n\n\x0b\n\x03\x04\t\x01\x12\x04\x84\x04\
8237    \x08\x19\n@\n\x04\x04\t\x04\0\x12\x06\x86\x04\x02\x91\x04\x03\x1a0\x20Mo\
8238    de\x20in\x20which\x20the\x20statement\x20must\x20be\x20processed.\n\n\r\
8239    \n\x05\x04\t\x04\0\x01\x12\x04\x86\x04\x07\x10\nL\n\x06\x04\t\x04\0\x02\
8240    \0\x12\x04\x88\x04\x04\x0f\x1a<\x20The\x20default\x20mode.\x20Only\x20th\
8241    e\x20statement\x20results\x20are\x20returned.\n\n\x0f\n\x07\x04\t\x04\0\
8242    \x02\0\x01\x12\x04\x88\x04\x04\n\n\x0f\n\x07\x04\t\x04\0\x02\0\x02\x12\
8243    \x04\x88\x04\r\x0e\nr\n\x06\x04\t\x04\0\x02\x01\x12\x04\x8c\x04\x04\r\
8244    \x1ab\x20This\x20mode\x20returns\x20only\x20the\x20query\x20plan,\x20wit\
8245    hout\x20any\x20results\x20or\n\x20execution\x20statistics\x20information\
8246    .\n\n\x0f\n\x07\x04\t\x04\0\x02\x01\x01\x12\x04\x8c\x04\x04\x08\n\x0f\n\
8247    \x07\x04\t\x04\0\x02\x01\x02\x12\x04\x8c\x04\x0b\x0c\nm\n\x06\x04\t\x04\
8248    \0\x02\x02\x12\x04\x90\x04\x04\x10\x1a]\x20This\x20mode\x20returns\x20bo\
8249    th\x20the\x20query\x20plan\x20and\x20the\x20execution\x20statistics\x20a\
8250    long\n\x20with\x20the\x20results.\n\n\x0f\n\x07\x04\t\x04\0\x02\x02\x01\
8251    \x12\x04\x90\x04\x04\x0b\n\x0f\n\x07\x04\t\x04\0\x02\x02\x02\x12\x04\x90\
8252    \x04\x0e\x0f\n0\n\x04\x04\t\x03\0\x12\x06\x94\x04\x02\xc6\x04\x03\x1a\
8253    \x20\x20Query\x20optimizer\x20configuration.\n\n\r\n\x05\x04\t\x03\0\x01\
8254    \x12\x04\x94\x04\n\x16\n\xa2\x07\n\x06\x04\t\x03\0\x02\0\x12\x04\xab\x04\
8255    \x04!\x1a\x91\x07\x20An\x20option\x20to\x20control\x20the\x20selection\
8256    \x20of\x20optimizer\x20version.\n\n\x20This\x20parameter\x20allows\x20in\
8257    dividual\x20queries\x20to\x20pick\x20different\x20query\n\x20optimizer\
8258    \x20versions.\n\n\x20Specifying\x20`latest`\x20as\x20a\x20value\x20instr\
8259    ucts\x20Cloud\x20Spanner\x20to\x20use\x20the\n\x20latest\x20supported\
8260    \x20query\x20optimizer\x20version.\x20If\x20not\x20specified,\x20Cloud\
8261    \x20Spanner\n\x20uses\x20the\x20optimizer\x20version\x20set\x20at\x20the\
8262    \x20database\x20level\x20options.\x20Any\x20other\n\x20positive\x20integ\
8263    er\x20(from\x20the\x20list\x20of\x20supported\x20optimizer\x20versions)\
8264    \n\x20overrides\x20the\x20default\x20optimizer\x20version\x20for\x20quer\
8265    y\x20execution.\n\n\x20The\x20list\x20of\x20supported\x20optimizer\x20ve\
8266    rsions\x20can\x20be\x20queried\x20from\n\x20SPANNER_SYS.SUPPORTED_OPTIMI\
8267    ZER_VERSIONS.\n\n\x20Executing\x20a\x20SQL\x20statement\x20with\x20an\
8268    \x20invalid\x20optimizer\x20version\x20fails\x20with\n\x20an\x20`INVALID\
8269    _ARGUMENT`\x20error.\n\n\x20See\n\x20https://cloud.google.com/spanner/do\
8270    cs/query-optimizer/manage-query-optimizer\n\x20for\x20more\x20informatio\
8271    n\x20on\x20managing\x20the\x20query\x20optimizer.\n\n\x20The\x20`optimiz\
8272    er_version`\x20statement\x20hint\x20has\x20precedence\x20over\x20this\
8273    \x20setting.\n\n\x0f\n\x07\x04\t\x03\0\x02\0\x05\x12\x04\xab\x04\x04\n\n\
8274    \x0f\n\x07\x04\t\x03\0\x02\0\x01\x12\x04\xab\x04\x0b\x1c\n\x0f\n\x07\x04\
8275    \t\x03\0\x02\0\x03\x12\x04\xab\x04\x1f\x20\n\xb2\x07\n\x06\x04\t\x03\0\
8276    \x02\x01\x12\x04\xc5\x04\x04,\x1a\xa1\x07\x20An\x20option\x20to\x20contr\
8277    ol\x20the\x20selection\x20of\x20optimizer\x20statistics\x20package.\n\n\
8278    \x20This\x20parameter\x20allows\x20individual\x20queries\x20to\x20use\
8279    \x20a\x20different\x20query\n\x20optimizer\x20statistics\x20package.\n\n\
8280    \x20Specifying\x20`latest`\x20as\x20a\x20value\x20instructs\x20Cloud\x20\
8281    Spanner\x20to\x20use\x20the\x20latest\n\x20generated\x20statistics\x20pa\
8282    ckage.\x20If\x20not\x20specified,\x20Cloud\x20Spanner\x20uses\n\x20the\
8283    \x20statistics\x20package\x20set\x20at\x20the\x20database\x20level\x20op\
8284    tions,\x20or\x20the\x20latest\n\x20package\x20if\x20the\x20database\x20o\
8285    ption\x20is\x20not\x20set.\n\n\x20The\x20statistics\x20package\x20reques\
8286    ted\x20by\x20the\x20query\x20has\x20to\x20be\x20exempt\x20from\n\x20garb\
8287    age\x20collection.\x20This\x20can\x20be\x20achieved\x20with\x20the\x20fo\
8288    llowing\x20DDL\n\x20statement:\n\n\x20```\n\x20ALTER\x20STATISTICS\x20<p\
8289    ackage_name>\x20SET\x20OPTIONS\x20(allow_gc=false)\n\x20```\n\n\x20The\
8290    \x20list\x20of\x20available\x20statistics\x20packages\x20can\x20be\x20qu\
8291    eried\x20from\n\x20`INFORMATION_SCHEMA.SPANNER_STATISTICS`.\n\n\x20Execu\
8292    ting\x20a\x20SQL\x20statement\x20with\x20an\x20invalid\x20optimizer\x20s\
8293    tatistics\x20package\n\x20or\x20with\x20a\x20statistics\x20package\x20th\
8294    at\x20allows\x20garbage\x20collection\x20fails\x20with\n\x20an\x20`INVAL\
8295    ID_ARGUMENT`\x20error.\n\n\x0f\n\x07\x04\t\x03\0\x02\x01\x05\x12\x04\xc5\
8296    \x04\x04\n\n\x0f\n\x07\x04\t\x03\0\x02\x01\x01\x12\x04\xc5\x04\x0b'\n\
8297    \x0f\n\x07\x04\t\x03\0\x02\x01\x03\x12\x04\xc5\x04*+\nS\n\x04\x04\t\x02\
8298    \0\x12\x06\xc9\x04\x02\xce\x04\x04\x1aC\x20Required.\x20The\x20session\
8299    \x20in\x20which\x20the\x20SQL\x20query\x20should\x20be\x20performed.\n\n\
8300    \r\n\x05\x04\t\x02\0\x05\x12\x04\xc9\x04\x02\x08\n\r\n\x05\x04\t\x02\0\
8301    \x01\x12\x04\xc9\x04\t\x10\n\r\n\x05\x04\t\x02\0\x03\x12\x04\xc9\x04\x13\
8302    \x14\n\x0f\n\x05\x04\t\x02\0\x08\x12\x06\xc9\x04\x15\xce\x04\x03\n\x10\n\
8303    \x08\x04\t\x02\0\x08\x9c\x08\0\x12\x04\xca\x04\x04*\n\x11\n\x07\x04\t\
8304    \x02\0\x08\x9f\x08\x12\x06\xcb\x04\x04\xcd\x04\x05\n\xb9\x03\n\x04\x04\t\
8305    \x02\x01\x12\x04\xda\x04\x02&\x1a\xaa\x03\x20The\x20transaction\x20to\
8306    \x20use.\n\n\x20For\x20queries,\x20if\x20none\x20is\x20provided,\x20the\
8307    \x20default\x20is\x20a\x20temporary\x20read-only\n\x20transaction\x20wit\
8308    h\x20strong\x20concurrency.\n\n\x20Standard\x20DML\x20statements\x20requ\
8309    ire\x20a\x20read-write\x20transaction.\x20To\x20protect\n\x20against\x20\
8310    replays,\x20single-use\x20transactions\x20are\x20not\x20supported.\x20\
8311    \x20The\x20caller\n\x20must\x20either\x20supply\x20an\x20existing\x20tra\
8312    nsaction\x20ID\x20or\x20begin\x20a\x20new\x20transaction.\n\n\x20Partiti\
8313    oned\x20DML\x20requires\x20an\x20existing\x20Partitioned\x20DML\x20trans\
8314    action\x20ID.\n\n\r\n\x05\x04\t\x02\x01\x06\x12\x04\xda\x04\x02\x15\n\r\
8315    \n\x05\x04\t\x02\x01\x01\x12\x04\xda\x04\x16!\n\r\n\x05\x04\t\x02\x01\
8316    \x03\x12\x04\xda\x04$%\n)\n\x04\x04\t\x02\x02\x12\x04\xdd\x04\x02:\x1a\
8317    \x1b\x20Required.\x20The\x20SQL\x20string.\n\n\r\n\x05\x04\t\x02\x02\x05\
8318    \x12\x04\xdd\x04\x02\x08\n\r\n\x05\x04\t\x02\x02\x01\x12\x04\xdd\x04\t\
8319    \x0c\n\r\n\x05\x04\t\x02\x02\x03\x12\x04\xdd\x04\x0f\x10\n\r\n\x05\x04\t\
8320    \x02\x02\x08\x12\x04\xdd\x04\x119\n\x10\n\x08\x04\t\x02\x02\x08\x9c\x08\
8321    \0\x12\x04\xdd\x04\x128\n\xdc\x04\n\x04\x04\t\x02\x03\x12\x04\xec\x04\
8322    \x02$\x1a\xcd\x04\x20Parameter\x20names\x20and\x20values\x20that\x20bind\
8323    \x20to\x20placeholders\x20in\x20the\x20SQL\x20string.\n\n\x20A\x20parame\
8324    ter\x20placeholder\x20consists\x20of\x20the\x20`@`\x20character\x20follo\
8325    wed\x20by\x20the\n\x20parameter\x20name\x20(for\x20example,\x20`@firstNa\
8326    me`).\x20Parameter\x20names\x20must\x20conform\n\x20to\x20the\x20naming\
8327    \x20requirements\x20of\x20identifiers\x20as\x20specified\x20at\n\x20http\
8328    s://cloud.google.com/spanner/docs/lexical#identifiers.\n\n\x20Parameters\
8329    \x20can\x20appear\x20anywhere\x20that\x20a\x20literal\x20value\x20is\x20\
8330    expected.\x20\x20The\x20same\n\x20parameter\x20name\x20can\x20be\x20used\
8331    \x20more\x20than\x20once,\x20for\x20example:\n\n\x20`\"WHERE\x20id\x20>\
8332    \x20@msg_id\x20AND\x20id\x20<\x20@msg_id\x20+\x20100\"`\n\n\x20It\x20is\
8333    \x20an\x20error\x20to\x20execute\x20a\x20SQL\x20statement\x20with\x20unb\
8334    ound\x20parameters.\n\n\r\n\x05\x04\t\x02\x03\x06\x12\x04\xec\x04\x02\
8335    \x18\n\r\n\x05\x04\t\x02\x03\x01\x12\x04\xec\x04\x19\x1f\n\r\n\x05\x04\t\
8336    \x02\x03\x03\x12\x04\xec\x04\"#\n\xdc\x03\n\x04\x04\t\x02\x04\x12\x04\
8337    \xf6\x04\x02$\x1a\xcd\x03\x20It\x20is\x20not\x20always\x20possible\x20fo\
8338    r\x20Cloud\x20Spanner\x20to\x20infer\x20the\x20right\x20SQL\x20type\n\
8339    \x20from\x20a\x20JSON\x20value.\x20\x20For\x20example,\x20values\x20of\
8340    \x20type\x20`BYTES`\x20and\x20values\n\x20of\x20type\x20`STRING`\x20both\
8341    \x20appear\x20in\x20[params][google.spanner.v1.ExecuteSqlRequest.params]\
8342    \x20as\x20JSON\x20strings.\n\n\x20In\x20these\x20cases,\x20`param_types`\
8343    \x20can\x20be\x20used\x20to\x20specify\x20the\x20exact\n\x20SQL\x20type\
8344    \x20for\x20some\x20or\x20all\x20of\x20the\x20SQL\x20statement\x20paramet\
8345    ers.\x20See\x20the\n\x20definition\x20of\x20[Type][google.spanner.v1.Typ\
8346    e]\x20for\x20more\x20information\n\x20about\x20SQL\x20types.\n\n\r\n\x05\
8347    \x04\t\x02\x04\x06\x12\x04\xf6\x04\x02\x13\n\r\n\x05\x04\t\x02\x04\x01\
8348    \x12\x04\xf6\x04\x14\x1f\n\r\n\x05\x04\t\x02\x04\x03\x12\x04\xf6\x04\"#\
8349    \n\x9e\x03\n\x04\x04\t\x02\x05\x12\x04\xfe\x04\x02\x19\x1a\x8f\x03\x20If\
8350    \x20this\x20request\x20is\x20resuming\x20a\x20previously\x20interrupted\
8351    \x20SQL\x20statement\n\x20execution,\x20`resume_token`\x20should\x20be\
8352    \x20copied\x20from\x20the\x20last\n\x20[PartialResultSet][google.spanner\
8353    .v1.PartialResultSet]\x20yielded\x20before\x20the\x20interruption.\x20Do\
8354    ing\x20this\n\x20enables\x20the\x20new\x20SQL\x20statement\x20execution\
8355    \x20to\x20resume\x20where\x20the\x20last\x20one\x20left\n\x20off.\x20The\
8356    \x20rest\x20of\x20the\x20request\x20parameters\x20must\x20exactly\x20mat\
8357    ch\x20the\n\x20request\x20that\x20yielded\x20this\x20token.\n\n\r\n\x05\
8358    \x04\t\x02\x05\x05\x12\x04\xfe\x04\x02\x07\n\r\n\x05\x04\t\x02\x05\x01\
8359    \x12\x04\xfe\x04\x08\x14\n\r\n\x05\x04\t\x02\x05\x03\x12\x04\xfe\x04\x17\
8360    \x18\n\xf2\x02\n\x04\x04\t\x02\x06\x12\x04\x83\x05\x02\x1b\x1a\xe3\x02\
8361    \x20Used\x20to\x20control\x20the\x20amount\x20of\x20debugging\x20informa\
8362    tion\x20returned\x20in\n\x20[ResultSetStats][google.spanner.v1.ResultSet\
8363    Stats].\x20If\x20[partition_token][google.spanner.v1.ExecuteSqlRequest.p\
8364    artition_token]\x20is\x20set,\x20[query_mode][google.spanner.v1.ExecuteS\
8365    qlRequest.query_mode]\x20can\x20only\n\x20be\x20set\x20to\x20[QueryMode.\
8366    NORMAL][google.spanner.v1.ExecuteSqlRequest.QueryMode.NORMAL].\n\n\r\n\
8367    \x05\x04\t\x02\x06\x06\x12\x04\x83\x05\x02\x0b\n\r\n\x05\x04\t\x02\x06\
8368    \x01\x12\x04\x83\x05\x0c\x16\n\r\n\x05\x04\t\x02\x06\x03\x12\x04\x83\x05\
8369    \x19\x1a\n\x99\x02\n\x04\x04\t\x02\x07\x12\x04\x89\x05\x02\x1c\x1a\x8a\
8370    \x02\x20If\x20present,\x20results\x20will\x20be\x20restricted\x20to\x20t\
8371    he\x20specified\x20partition\n\x20previously\x20created\x20using\x20Part\
8372    itionQuery().\x20\x20There\x20must\x20be\x20an\x20exact\n\x20match\x20fo\
8373    r\x20the\x20values\x20of\x20fields\x20common\x20to\x20this\x20message\
8374    \x20and\x20the\n\x20PartitionQueryRequest\x20message\x20used\x20to\x20cr\
8375    eate\x20this\x20partition_token.\n\n\r\n\x05\x04\t\x02\x07\x05\x12\x04\
8376    \x89\x05\x02\x07\n\r\n\x05\x04\t\x02\x07\x01\x12\x04\x89\x05\x08\x17\n\r\
8377    \n\x05\x04\t\x02\x07\x03\x12\x04\x89\x05\x1a\x1b\n\x9b\x04\n\x04\x04\t\
8378    \x02\x08\x12\x04\x95\x05\x02\x12\x1a\x8c\x04\x20A\x20per-transaction\x20\
8379    sequence\x20number\x20used\x20to\x20identify\x20this\x20request.\x20This\
8380    \x20field\n\x20makes\x20each\x20request\x20idempotent\x20such\x20that\
8381    \x20if\x20the\x20request\x20is\x20received\x20multiple\n\x20times,\x20at\
8382    \x20most\x20one\x20will\x20succeed.\n\n\x20The\x20sequence\x20number\x20\
8383    must\x20be\x20monotonically\x20increasing\x20within\x20the\n\x20transact\
8384    ion.\x20If\x20a\x20request\x20arrives\x20for\x20the\x20first\x20time\x20\
8385    with\x20an\x20out-of-order\n\x20sequence\x20number,\x20the\x20transactio\
8386    n\x20may\x20be\x20aborted.\x20Replays\x20of\x20previously\n\x20handled\
8387    \x20requests\x20will\x20yield\x20the\x20same\x20response\x20as\x20the\
8388    \x20first\x20execution.\n\n\x20Required\x20for\x20DML\x20statements.\x20\
8389    Ignored\x20for\x20queries.\n\n\r\n\x05\x04\t\x02\x08\x05\x12\x04\x95\x05\
8390    \x02\x07\n\r\n\x05\x04\t\x02\x08\x01\x12\x04\x95\x05\x08\r\n\r\n\x05\x04\
8391    \t\x02\x08\x03\x12\x04\x95\x05\x10\x11\nI\n\x04\x04\t\x02\t\x12\x04\x98\
8392    \x05\x02\"\x1a;\x20Query\x20optimizer\x20configuration\x20to\x20use\x20f\
8393    or\x20the\x20given\x20query.\n\n\r\n\x05\x04\t\x02\t\x06\x12\x04\x98\x05\
8394    \x02\x0e\n\r\n\x05\x04\t\x02\t\x01\x12\x04\x98\x05\x0f\x1c\n\r\n\x05\x04\
8395    \t\x02\t\x03\x12\x04\x98\x05\x1f!\n0\n\x04\x04\t\x02\n\x12\x04\x9b\x05\
8396    \x02&\x1a\"\x20Common\x20options\x20for\x20this\x20request.\n\n\r\n\x05\
8397    \x04\t\x02\n\x06\x12\x04\x9b\x05\x02\x10\n\r\n\x05\x04\t\x02\n\x01\x12\
8398    \x04\x9b\x05\x11\x20\n\r\n\x05\x04\t\x02\n\x03\x12\x04\x9b\x05#%\n\x9f\
8399    \x02\n\x04\x04\t\x02\x0b\x12\x04\xa2\x05\x02\x1f\x1a\x90\x02\x20If\x20th\
8400    is\x20is\x20for\x20a\x20partitioned\x20query\x20and\x20this\x20field\x20\
8401    is\x20set\x20to\x20`true`,\x20the\n\x20request\x20will\x20be\x20executed\
8402    \x20via\x20Spanner\x20independent\x20compute\x20resources.\n\n\x20If\x20\
8403    the\x20field\x20is\x20set\x20to\x20`true`\x20but\x20the\x20request\x20do\
8404    es\x20not\x20set\n\x20`partition_token`,\x20the\x20API\x20will\x20return\
8405    \x20an\x20`INVALID_ARGUMENT`\x20error.\n\n\r\n\x05\x04\t\x02\x0b\x05\x12\
8406    \x04\xa2\x05\x02\x06\n\r\n\x05\x04\t\x02\x0b\x01\x12\x04\xa2\x05\x07\x19\
8407    \n\r\n\x05\x04\t\x02\x0b\x03\x12\x04\xa2\x05\x1c\x1e\n]\n\x02\x04\n\x12\
8408    \x06\xa6\x05\0\xe8\x05\x01\x1aO\x20The\x20request\x20for\x20[ExecuteBatc\
8409    hDml][google.spanner.v1.Spanner.ExecuteBatchDml].\n\n\x0b\n\x03\x04\n\
8410    \x01\x12\x04\xa6\x05\x08\x1e\n)\n\x04\x04\n\x03\0\x12\x06\xa8\x05\x02\
8411    \xc3\x05\x03\x1a\x19\x20A\x20single\x20DML\x20statement.\n\n\r\n\x05\x04\
8412    \n\x03\0\x01\x12\x04\xa8\x05\n\x13\n+\n\x06\x04\n\x03\0\x02\0\x12\x04\
8413    \xaa\x05\x04<\x1a\x1b\x20Required.\x20The\x20DML\x20string.\n\n\x0f\n\
8414    \x07\x04\n\x03\0\x02\0\x05\x12\x04\xaa\x05\x04\n\n\x0f\n\x07\x04\n\x03\0\
8415    \x02\0\x01\x12\x04\xaa\x05\x0b\x0e\n\x0f\n\x07\x04\n\x03\0\x02\0\x03\x12\
8416    \x04\xaa\x05\x11\x12\n\x0f\n\x07\x04\n\x03\0\x02\0\x08\x12\x04\xaa\x05\
8417    \x13;\n\x12\n\n\x04\n\x03\0\x02\0\x08\x9c\x08\0\x12\x04\xaa\x05\x14:\n\
8418    \x8a\x04\n\x06\x04\n\x03\0\x02\x01\x12\x04\xb8\x05\x04&\x1a\xf9\x03\x20P\
8419    arameter\x20names\x20and\x20values\x20that\x20bind\x20to\x20placeholders\
8420    \x20in\x20the\x20DML\x20string.\n\n\x20A\x20parameter\x20placeholder\x20\
8421    consists\x20of\x20the\x20`@`\x20character\x20followed\x20by\x20the\n\x20\
8422    parameter\x20name\x20(for\x20example,\x20`@firstName`).\x20Parameter\x20\
8423    names\x20can\x20contain\n\x20letters,\x20numbers,\x20and\x20underscores.\
8424    \n\n\x20Parameters\x20can\x20appear\x20anywhere\x20that\x20a\x20literal\
8425    \x20value\x20is\x20expected.\x20\x20The\n\x20same\x20parameter\x20name\
8426    \x20can\x20be\x20used\x20more\x20than\x20once,\x20for\x20example:\n\n\
8427    \x20`\"WHERE\x20id\x20>\x20@msg_id\x20AND\x20id\x20<\x20@msg_id\x20+\x20\
8428    100\"`\n\n\x20It\x20is\x20an\x20error\x20to\x20execute\x20a\x20SQL\x20st\
8429    atement\x20with\x20unbound\x20parameters.\n\n\x0f\n\x07\x04\n\x03\0\x02\
8430    \x01\x06\x12\x04\xb8\x05\x04\x1a\n\x0f\n\x07\x04\n\x03\0\x02\x01\x01\x12\
8431    \x04\xb8\x05\x1b!\n\x0f\n\x07\x04\n\x03\0\x02\x01\x03\x12\x04\xb8\x05$%\
8432    \n\xed\x03\n\x06\x04\n\x03\0\x02\x02\x12\x04\xc2\x05\x04&\x1a\xdc\x03\
8433    \x20It\x20is\x20not\x20always\x20possible\x20for\x20Cloud\x20Spanner\x20\
8434    to\x20infer\x20the\x20right\x20SQL\x20type\n\x20from\x20a\x20JSON\x20val\
8435    ue.\x20\x20For\x20example,\x20values\x20of\x20type\x20`BYTES`\x20and\x20\
8436    values\n\x20of\x20type\x20`STRING`\x20both\x20appear\x20in\x20[params][g\
8437    oogle.spanner.v1.ExecuteBatchDmlRequest.Statement.params]\x20as\x20JSON\
8438    \x20strings.\n\n\x20In\x20these\x20cases,\x20`param_types`\x20can\x20be\
8439    \x20used\x20to\x20specify\x20the\x20exact\n\x20SQL\x20type\x20for\x20som\
8440    e\x20or\x20all\x20of\x20the\x20SQL\x20statement\x20parameters.\x20See\
8441    \x20the\n\x20definition\x20of\x20[Type][google.spanner.v1.Type]\x20for\
8442    \x20more\x20information\n\x20about\x20SQL\x20types.\n\n\x0f\n\x07\x04\n\
8443    \x03\0\x02\x02\x06\x12\x04\xc2\x05\x04\x15\n\x0f\n\x07\x04\n\x03\0\x02\
8444    \x02\x01\x12\x04\xc2\x05\x16!\n\x0f\n\x07\x04\n\x03\0\x02\x02\x03\x12\
8445    \x04\xc2\x05$%\nX\n\x04\x04\n\x02\0\x12\x06\xc6\x05\x02\xcb\x05\x04\x1aH\
8446    \x20Required.\x20The\x20session\x20in\x20which\x20the\x20DML\x20statemen\
8447    ts\x20should\x20be\x20performed.\n\n\r\n\x05\x04\n\x02\0\x05\x12\x04\xc6\
8448    \x05\x02\x08\n\r\n\x05\x04\n\x02\0\x01\x12\x04\xc6\x05\t\x10\n\r\n\x05\
8449    \x04\n\x02\0\x03\x12\x04\xc6\x05\x13\x14\n\x0f\n\x05\x04\n\x02\0\x08\x12\
8450    \x06\xc6\x05\x15\xcb\x05\x03\n\x10\n\x08\x04\n\x02\0\x08\x9c\x08\0\x12\
8451    \x04\xc7\x05\x04*\n\x11\n\x07\x04\n\x02\0\x08\x9f\x08\x12\x06\xc8\x05\
8452    \x04\xca\x05\x05\n\xf4\x01\n\x04\x04\n\x02\x01\x12\x04\xd2\x05\x02O\x1a\
8453    \xe5\x01\x20Required.\x20The\x20transaction\x20to\x20use.\x20Must\x20be\
8454    \x20a\x20read-write\x20transaction.\n\n\x20To\x20protect\x20against\x20r\
8455    eplays,\x20single-use\x20transactions\x20are\x20not\x20supported.\x20The\
8456    \n\x20caller\x20must\x20either\x20supply\x20an\x20existing\x20transactio\
8457    n\x20ID\x20or\x20begin\x20a\x20new\n\x20transaction.\n\n\r\n\x05\x04\n\
8458    \x02\x01\x06\x12\x04\xd2\x05\x02\x15\n\r\n\x05\x04\n\x02\x01\x01\x12\x04\
8459    \xd2\x05\x16!\n\r\n\x05\x04\n\x02\x01\x03\x12\x04\xd2\x05$%\n\r\n\x05\
8460    \x04\n\x02\x01\x08\x12\x04\xd2\x05&N\n\x10\n\x08\x04\n\x02\x01\x08\x9c\
8461    \x08\0\x12\x04\xd2\x05'M\n\xe8\x02\n\x04\x04\n\x02\x02\x12\x04\xda\x05\
8462    \x02M\x1a\xd9\x02\x20Required.\x20The\x20list\x20of\x20statements\x20to\
8463    \x20execute\x20in\x20this\x20batch.\x20Statements\x20are\x20executed\n\
8464    \x20serially,\x20such\x20that\x20the\x20effects\x20of\x20statement\x20`i\
8465    `\x20are\x20visible\x20to\x20statement\n\x20`i+1`.\x20Each\x20statement\
8466    \x20must\x20be\x20a\x20DML\x20statement.\x20Execution\x20stops\x20at\x20\
8467    the\n\x20first\x20failed\x20statement;\x20the\x20remaining\x20statements\
8468    \x20are\x20not\x20executed.\n\n\x20Callers\x20must\x20provide\x20at\x20l\
8469    east\x20one\x20statement.\n\n\r\n\x05\x04\n\x02\x02\x04\x12\x04\xda\x05\
8470    \x02\n\n\r\n\x05\x04\n\x02\x02\x06\x12\x04\xda\x05\x0b\x14\n\r\n\x05\x04\
8471    \n\x02\x02\x01\x12\x04\xda\x05\x15\x1f\n\r\n\x05\x04\n\x02\x02\x03\x12\
8472    \x04\xda\x05\"#\n\r\n\x05\x04\n\x02\x02\x08\x12\x04\xda\x05$L\n\x10\n\
8473    \x08\x04\n\x02\x02\x08\x9c\x08\0\x12\x04\xda\x05%K\n\xf1\x03\n\x04\x04\n\
8474    \x02\x03\x12\x04\xe4\x05\x02;\x1a\xe2\x03\x20Required.\x20A\x20per-trans\
8475    action\x20sequence\x20number\x20used\x20to\x20identify\x20this\x20reques\
8476    t.\x20This\x20field\n\x20makes\x20each\x20request\x20idempotent\x20such\
8477    \x20that\x20if\x20the\x20request\x20is\x20received\x20multiple\n\x20time\
8478    s,\x20at\x20most\x20one\x20will\x20succeed.\n\n\x20The\x20sequence\x20nu\
8479    mber\x20must\x20be\x20monotonically\x20increasing\x20within\x20the\n\x20\
8480    transaction.\x20If\x20a\x20request\x20arrives\x20for\x20the\x20first\x20\
8481    time\x20with\x20an\x20out-of-order\n\x20sequence\x20number,\x20the\x20tr\
8482    ansaction\x20may\x20be\x20aborted.\x20Replays\x20of\x20previously\n\x20h\
8483    andled\x20requests\x20will\x20yield\x20the\x20same\x20response\x20as\x20\
8484    the\x20first\x20execution.\n\n\r\n\x05\x04\n\x02\x03\x05\x12\x04\xe4\x05\
8485    \x02\x07\n\r\n\x05\x04\n\x02\x03\x01\x12\x04\xe4\x05\x08\r\n\r\n\x05\x04\
8486    \n\x02\x03\x03\x12\x04\xe4\x05\x10\x11\n\r\n\x05\x04\n\x02\x03\x08\x12\
8487    \x04\xe4\x05\x12:\n\x10\n\x08\x04\n\x02\x03\x08\x9c\x08\0\x12\x04\xe4\
8488    \x05\x139\n0\n\x04\x04\n\x02\x04\x12\x04\xe7\x05\x02%\x1a\"\x20Common\
8489    \x20options\x20for\x20this\x20request.\n\n\r\n\x05\x04\n\x02\x04\x06\x12\
8490    \x04\xe7\x05\x02\x10\n\r\n\x05\x04\n\x02\x04\x01\x12\x04\xe7\x05\x11\x20\
8491    \n\r\n\x05\x04\n\x02\x04\x03\x12\x04\xe7\x05#$\n\xbf\n\n\x02\x04\x0b\x12\
8492    \x06\x82\x06\0\x8f\x06\x01\x1a\xb0\n\x20The\x20response\x20for\x20[Execu\
8493    teBatchDml][google.spanner.v1.Spanner.ExecuteBatchDml].\x20Contains\x20a\
8494    \x20list\n\x20of\x20[ResultSet][google.spanner.v1.ResultSet]\x20messages\
8495    ,\x20one\x20for\x20each\x20DML\x20statement\x20that\x20has\x20successful\
8496    ly\n\x20executed,\x20in\x20the\x20same\x20order\x20as\x20the\x20statemen\
8497    ts\x20in\x20the\x20request.\x20If\x20a\x20statement\n\x20fails,\x20the\
8498    \x20status\x20in\x20the\x20response\x20body\x20identifies\x20the\x20caus\
8499    e\x20of\x20the\x20failure.\n\n\x20To\x20check\x20for\x20DML\x20statement\
8500    s\x20that\x20failed,\x20use\x20the\x20following\x20approach:\n\n\x201.\
8501    \x20Check\x20the\x20status\x20in\x20the\x20response\x20message.\x20The\
8502    \x20[google.rpc.Code][google.rpc.Code]\x20enum\n\x20\x20\x20\x20value\
8503    \x20`OK`\x20indicates\x20that\x20all\x20statements\x20were\x20executed\
8504    \x20successfully.\n\x202.\x20If\x20the\x20status\x20was\x20not\x20`OK`,\
8505    \x20check\x20the\x20number\x20of\x20result\x20sets\x20in\x20the\n\x20\
8506    \x20\x20\x20response.\x20If\x20the\x20response\x20contains\x20`N`\x20[Re\
8507    sultSet][google.spanner.v1.ResultSet]\x20messages,\x20then\n\x20\x20\x20\
8508    \x20statement\x20`N+1`\x20in\x20the\x20request\x20failed.\n\n\x20Example\
8509    \x201:\n\n\x20*\x20Request:\x205\x20DML\x20statements,\x20all\x20execute\
8510    d\x20successfully.\n\x20*\x20Response:\x205\x20[ResultSet][google.spanne\
8511    r.v1.ResultSet]\x20messages,\x20with\x20the\x20status\x20`OK`.\n\n\x20Ex\
8512    ample\x202:\n\n\x20*\x20Request:\x205\x20DML\x20statements.\x20The\x20th\
8513    ird\x20statement\x20has\x20a\x20syntax\x20error.\n\x20*\x20Response:\x20\
8514    2\x20[ResultSet][google.spanner.v1.ResultSet]\x20messages,\x20and\x20a\
8515    \x20syntax\x20error\x20(`INVALID_ARGUMENT`)\n\x20\x20\x20status.\x20The\
8516    \x20number\x20of\x20[ResultSet][google.spanner.v1.ResultSet]\x20messages\
8517    \x20indicates\x20that\x20the\x20third\n\x20\x20\x20statement\x20failed,\
8518    \x20and\x20the\x20fourth\x20and\x20fifth\x20statements\x20were\x20not\
8519    \x20executed.\n\n\x0b\n\x03\x04\x0b\x01\x12\x04\x82\x06\x08\x1f\n\xa8\
8520    \x04\n\x04\x04\x0b\x02\0\x12\x04\x8a\x06\x02%\x1a\x99\x04\x20One\x20[Res\
8521    ultSet][google.spanner.v1.ResultSet]\x20for\x20each\x20statement\x20in\
8522    \x20the\x20request\x20that\x20ran\x20successfully,\n\x20in\x20the\x20sam\
8523    e\x20order\x20as\x20the\x20statements\x20in\x20the\x20request.\x20Each\
8524    \x20[ResultSet][google.spanner.v1.ResultSet]\x20does\n\x20not\x20contain\
8525    \x20any\x20rows.\x20The\x20[ResultSetStats][google.spanner.v1.ResultSetS\
8526    tats]\x20in\x20each\x20[ResultSet][google.spanner.v1.ResultSet]\x20conta\
8527    in\n\x20the\x20number\x20of\x20rows\x20modified\x20by\x20the\x20statemen\
8528    t.\n\n\x20Only\x20the\x20first\x20[ResultSet][google.spanner.v1.ResultSe\
8529    t]\x20in\x20the\x20response\x20contains\x20valid\n\x20[ResultSetMetadata\
8530    ][google.spanner.v1.ResultSetMetadata].\n\n\r\n\x05\x04\x0b\x02\0\x04\
8531    \x12\x04\x8a\x06\x02\n\n\r\n\x05\x04\x0b\x02\0\x06\x12\x04\x8a\x06\x0b\
8532    \x14\n\r\n\x05\x04\x0b\x02\0\x01\x12\x04\x8a\x06\x15\x20\n\r\n\x05\x04\
8533    \x0b\x02\0\x03\x12\x04\x8a\x06#$\n\x91\x01\n\x04\x04\x0b\x02\x01\x12\x04\
8534    \x8e\x06\x02\x1f\x1a\x82\x01\x20If\x20all\x20DML\x20statements\x20are\
8535    \x20executed\x20successfully,\x20the\x20status\x20is\x20`OK`.\n\x20Other\
8536    wise,\x20the\x20error\x20status\x20of\x20the\x20first\x20failed\x20state\
8537    ment.\n\n\r\n\x05\x04\x0b\x02\x01\x06\x12\x04\x8e\x06\x02\x13\n\r\n\x05\
8538    \x04\x0b\x02\x01\x01\x12\x04\x8e\x06\x14\x1a\n\r\n\x05\x04\x0b\x02\x01\
8539    \x03\x12\x04\x8e\x06\x1d\x1e\nN\n\x02\x04\x0c\x12\x06\x93\x06\0\xa5\x06\
8540    \x01\x1a@\x20Options\x20for\x20a\x20PartitionQueryRequest\x20and\n\x20Pa\
8541    rtitionReadRequest.\n\n\x0b\n\x03\x04\x0c\x01\x12\x04\x93\x06\x08\x18\n\
8542    \xba\x02\n\x04\x04\x0c\x02\0\x12\x04\x9a\x06\x02!\x1a\xab\x02\x20**Note:\
8543    **\x20This\x20hint\x20is\x20currently\x20ignored\x20by\x20PartitionQuery\
8544    \x20and\n\x20PartitionRead\x20requests.\n\n\x20The\x20desired\x20data\
8545    \x20size\x20for\x20each\x20partition\x20generated.\x20\x20The\x20default\
8546    \x20for\x20this\n\x20option\x20is\x20currently\x201\x20GiB.\x20\x20This\
8547    \x20is\x20only\x20a\x20hint.\x20The\x20actual\x20size\x20of\x20each\n\
8548    \x20partition\x20may\x20be\x20smaller\x20or\x20larger\x20than\x20this\
8549    \x20size\x20request.\n\n\r\n\x05\x04\x0c\x02\0\x05\x12\x04\x9a\x06\x02\
8550    \x07\n\r\n\x05\x04\x0c\x02\0\x01\x12\x04\x9a\x06\x08\x1c\n\r\n\x05\x04\
8551    \x0c\x02\0\x03\x12\x04\x9a\x06\x1f\x20\n\xb8\x03\n\x04\x04\x0c\x02\x01\
8552    \x12\x04\xa4\x06\x02\x1b\x1a\xa9\x03\x20**Note:**\x20This\x20hint\x20is\
8553    \x20currently\x20ignored\x20by\x20PartitionQuery\x20and\n\x20PartitionRe\
8554    ad\x20requests.\n\n\x20The\x20desired\x20maximum\x20number\x20of\x20part\
8555    itions\x20to\x20return.\x20\x20For\x20example,\x20this\x20may\n\x20be\
8556    \x20set\x20to\x20the\x20number\x20of\x20workers\x20available.\x20\x20The\
8557    \x20default\x20for\x20this\x20option\n\x20is\x20currently\x2010,000.\x20\
8558    The\x20maximum\x20value\x20is\x20currently\x20200,000.\x20\x20This\x20is\
8559    \x20only\n\x20a\x20hint.\x20\x20The\x20actual\x20number\x20of\x20partiti\
8560    ons\x20returned\x20may\x20be\x20smaller\x20or\x20larger\n\x20than\x20thi\
8561    s\x20maximum\x20count\x20request.\n\n\r\n\x05\x04\x0c\x02\x01\x05\x12\
8562    \x04\xa4\x06\x02\x07\n\r\n\x05\x04\x0c\x02\x01\x01\x12\x04\xa4\x06\x08\
8563    \x16\n\r\n\x05\x04\x0c\x02\x01\x03\x12\x04\xa4\x06\x19\x1a\nZ\n\x02\x04\
8564    \r\x12\x06\xa8\x06\0\xdb\x06\x01\x1aL\x20The\x20request\x20for\x20[Parti\
8565    tionQuery][google.spanner.v1.Spanner.PartitionQuery]\n\n\x0b\n\x03\x04\r\
8566    \x01\x12\x04\xa8\x06\x08\x1d\nF\n\x04\x04\r\x02\0\x12\x06\xaa\x06\x02\
8567    \xaf\x06\x04\x1a6\x20Required.\x20The\x20session\x20used\x20to\x20create\
8568    \x20the\x20partitions.\n\n\r\n\x05\x04\r\x02\0\x05\x12\x04\xaa\x06\x02\
8569    \x08\n\r\n\x05\x04\r\x02\0\x01\x12\x04\xaa\x06\t\x10\n\r\n\x05\x04\r\x02\
8570    \0\x03\x12\x04\xaa\x06\x13\x14\n\x0f\n\x05\x04\r\x02\0\x08\x12\x06\xaa\
8571    \x06\x15\xaf\x06\x03\n\x10\n\x08\x04\r\x02\0\x08\x9c\x08\0\x12\x04\xab\
8572    \x06\x04*\n\x11\n\x07\x04\r\x02\0\x08\x9f\x08\x12\x06\xac\x06\x04\xae\
8573    \x06\x05\no\n\x04\x04\r\x02\x01\x12\x04\xb3\x06\x02&\x1aa\x20Read\x20onl\
8574    y\x20snapshot\x20transactions\x20are\x20supported,\x20read/write\x20and\
8575    \x20single\x20use\n\x20transactions\x20are\x20not.\n\n\r\n\x05\x04\r\x02\
8576    \x01\x06\x12\x04\xb3\x06\x02\x15\n\r\n\x05\x04\r\x02\x01\x01\x12\x04\xb3\
8577    \x06\x16!\n\r\n\x05\x04\r\x02\x01\x03\x12\x04\xb3\x06$%\n\xf8\x04\n\x04\
8578    \x04\r\x02\x02\x12\x04\xbf\x06\x02:\x1a\xe9\x04\x20Required.\x20The\x20q\
8579    uery\x20request\x20to\x20generate\x20partitions\x20for.\x20The\x20reques\
8580    t\x20will\x20fail\x20if\n\x20the\x20query\x20is\x20not\x20root\x20partit\
8581    ionable.\x20The\x20query\x20plan\x20of\x20a\x20root\n\x20partitionable\
8582    \x20query\x20has\x20a\x20single\x20distributed\x20union\x20operator.\x20\
8583    A\x20distributed\n\x20union\x20operator\x20conceptually\x20divides\x20on\
8584    e\x20or\x20more\x20tables\x20into\x20multiple\n\x20splits,\x20remotely\
8585    \x20evaluates\x20a\x20subquery\x20independently\x20on\x20each\x20split,\
8586    \x20and\n\x20then\x20unions\x20all\x20results.\n\n\x20This\x20must\x20no\
8587    t\x20contain\x20DML\x20commands,\x20such\x20as\x20INSERT,\x20UPDATE,\x20\
8588    or\n\x20DELETE.\x20Use\x20[ExecuteStreamingSql][google.spanner.v1.Spanne\
8589    r.ExecuteStreamingSql]\x20with\x20a\n\x20PartitionedDml\x20transaction\
8590    \x20for\x20large,\x20partition-friendly\x20DML\x20operations.\n\n\r\n\
8591    \x05\x04\r\x02\x02\x05\x12\x04\xbf\x06\x02\x08\n\r\n\x05\x04\r\x02\x02\
8592    \x01\x12\x04\xbf\x06\t\x0c\n\r\n\x05\x04\r\x02\x02\x03\x12\x04\xbf\x06\
8593    \x0f\x10\n\r\n\x05\x04\r\x02\x02\x08\x12\x04\xbf\x06\x119\n\x10\n\x08\
8594    \x04\r\x02\x02\x08\x9c\x08\0\x12\x04\xbf\x06\x128\n\x88\x04\n\x04\x04\r\
8595    \x02\x03\x12\x04\xcd\x06\x02$\x1a\xf9\x03\x20Parameter\x20names\x20and\
8596    \x20values\x20that\x20bind\x20to\x20placeholders\x20in\x20the\x20SQL\x20\
8597    string.\n\n\x20A\x20parameter\x20placeholder\x20consists\x20of\x20the\
8598    \x20`@`\x20character\x20followed\x20by\x20the\n\x20parameter\x20name\x20\
8599    (for\x20example,\x20`@firstName`).\x20Parameter\x20names\x20can\x20conta\
8600    in\n\x20letters,\x20numbers,\x20and\x20underscores.\n\n\x20Parameters\
8601    \x20can\x20appear\x20anywhere\x20that\x20a\x20literal\x20value\x20is\x20\
8602    expected.\x20\x20The\x20same\n\x20parameter\x20name\x20can\x20be\x20used\
8603    \x20more\x20than\x20once,\x20for\x20example:\n\n\x20`\"WHERE\x20id\x20>\
8604    \x20@msg_id\x20AND\x20id\x20<\x20@msg_id\x20+\x20100\"`\n\n\x20It\x20is\
8605    \x20an\x20error\x20to\x20execute\x20a\x20SQL\x20statement\x20with\x20unb\
8606    ound\x20parameters.\n\n\r\n\x05\x04\r\x02\x03\x06\x12\x04\xcd\x06\x02\
8607    \x18\n\r\n\x05\x04\r\x02\x03\x01\x12\x04\xcd\x06\x19\x1f\n\r\n\x05\x04\r\
8608    \x02\x03\x03\x12\x04\xcd\x06\"#\n\xdc\x03\n\x04\x04\r\x02\x04\x12\x04\
8609    \xd7\x06\x02$\x1a\xcd\x03\x20It\x20is\x20not\x20always\x20possible\x20fo\
8610    r\x20Cloud\x20Spanner\x20to\x20infer\x20the\x20right\x20SQL\x20type\n\
8611    \x20from\x20a\x20JSON\x20value.\x20\x20For\x20example,\x20values\x20of\
8612    \x20type\x20`BYTES`\x20and\x20values\n\x20of\x20type\x20`STRING`\x20both\
8613    \x20appear\x20in\x20[params][google.spanner.v1.PartitionQueryRequest.par\
8614    ams]\x20as\x20JSON\x20strings.\n\n\x20In\x20these\x20cases,\x20`param_ty\
8615    pes`\x20can\x20be\x20used\x20to\x20specify\x20the\x20exact\n\x20SQL\x20t\
8616    ype\x20for\x20some\x20or\x20all\x20of\x20the\x20SQL\x20query\x20paramete\
8617    rs.\x20See\x20the\n\x20definition\x20of\x20[Type][google.spanner.v1.Type\
8618    ]\x20for\x20more\x20information\n\x20about\x20SQL\x20types.\n\n\r\n\x05\
8619    \x04\r\x02\x04\x06\x12\x04\xd7\x06\x02\x13\n\r\n\x05\x04\r\x02\x04\x01\
8620    \x12\x04\xd7\x06\x14\x1f\n\r\n\x05\x04\r\x02\x04\x03\x12\x04\xd7\x06\"#\
8621    \nO\n\x04\x04\r\x02\x05\x12\x04\xda\x06\x02)\x1aA\x20Additional\x20optio\
8622    ns\x20that\x20affect\x20how\x20many\x20partitions\x20are\x20created.\n\n\
8623    \r\n\x05\x04\r\x02\x05\x06\x12\x04\xda\x06\x02\x12\n\r\n\x05\x04\r\x02\
8624    \x05\x01\x12\x04\xda\x06\x13$\n\r\n\x05\x04\r\x02\x05\x03\x12\x04\xda\
8625    \x06'(\nX\n\x02\x04\x0e\x12\x06\xde\x06\0\x82\x07\x01\x1aJ\x20The\x20req\
8626    uest\x20for\x20[PartitionRead][google.spanner.v1.Spanner.PartitionRead]\
8627    \n\n\x0b\n\x03\x04\x0e\x01\x12\x04\xde\x06\x08\x1c\nF\n\x04\x04\x0e\x02\
8628    \0\x12\x06\xe0\x06\x02\xe5\x06\x04\x1a6\x20Required.\x20The\x20session\
8629    \x20used\x20to\x20create\x20the\x20partitions.\n\n\r\n\x05\x04\x0e\x02\0\
8630    \x05\x12\x04\xe0\x06\x02\x08\n\r\n\x05\x04\x0e\x02\0\x01\x12\x04\xe0\x06\
8631    \t\x10\n\r\n\x05\x04\x0e\x02\0\x03\x12\x04\xe0\x06\x13\x14\n\x0f\n\x05\
8632    \x04\x0e\x02\0\x08\x12\x06\xe0\x06\x15\xe5\x06\x03\n\x10\n\x08\x04\x0e\
8633    \x02\0\x08\x9c\x08\0\x12\x04\xe1\x06\x04*\n\x11\n\x07\x04\x0e\x02\0\x08\
8634    \x9f\x08\x12\x06\xe2\x06\x04\xe4\x06\x05\no\n\x04\x04\x0e\x02\x01\x12\
8635    \x04\xe9\x06\x02&\x1aa\x20Read\x20only\x20snapshot\x20transactions\x20ar\
8636    e\x20supported,\x20read/write\x20and\x20single\x20use\n\x20transactions\
8637    \x20are\x20not.\n\n\r\n\x05\x04\x0e\x02\x01\x06\x12\x04\xe9\x06\x02\x15\
8638    \n\r\n\x05\x04\x0e\x02\x01\x01\x12\x04\xe9\x06\x16!\n\r\n\x05\x04\x0e\
8639    \x02\x01\x03\x12\x04\xe9\x06$%\nK\n\x04\x04\x0e\x02\x02\x12\x04\xec\x06\
8640    \x02<\x1a=\x20Required.\x20The\x20name\x20of\x20the\x20table\x20in\x20th\
8641    e\x20database\x20to\x20be\x20read.\n\n\r\n\x05\x04\x0e\x02\x02\x05\x12\
8642    \x04\xec\x06\x02\x08\n\r\n\x05\x04\x0e\x02\x02\x01\x12\x04\xec\x06\t\x0e\
8643    \n\r\n\x05\x04\x0e\x02\x02\x03\x12\x04\xec\x06\x11\x12\n\r\n\x05\x04\x0e\
8644    \x02\x02\x08\x12\x04\xec\x06\x13;\n\x10\n\x08\x04\x0e\x02\x02\x08\x9c\
8645    \x08\0\x12\x04\xec\x06\x14:\n\xdf\x02\n\x04\x04\x0e\x02\x03\x12\x04\xf1\
8646    \x06\x02\x13\x1a\xd0\x02\x20If\x20non-empty,\x20the\x20name\x20of\x20an\
8647    \x20index\x20on\x20[table][google.spanner.v1.PartitionReadRequest.table]\
8648    .\x20This\x20index\x20is\n\x20used\x20instead\x20of\x20the\x20table\x20p\
8649    rimary\x20key\x20when\x20interpreting\x20[key_set][google.spanner.v1.Par\
8650    titionReadRequest.key_set]\n\x20and\x20sorting\x20result\x20rows.\x20See\
8651    \x20[key_set][google.spanner.v1.PartitionReadRequest.key_set]\x20for\x20\
8652    further\x20information.\n\n\r\n\x05\x04\x0e\x02\x03\x05\x12\x04\xf1\x06\
8653    \x02\x08\n\r\n\x05\x04\x0e\x02\x03\x01\x12\x04\xf1\x06\t\x0e\n\r\n\x05\
8654    \x04\x0e\x02\x03\x03\x12\x04\xf1\x06\x11\x12\n\x88\x01\n\x04\x04\x0e\x02\
8655    \x04\x12\x04\xf5\x06\x02\x1e\x1az\x20The\x20columns\x20of\x20[table][goo\
8656    gle.spanner.v1.PartitionReadRequest.table]\x20to\x20be\x20returned\x20fo\
8657    r\x20each\x20row\x20matching\n\x20this\x20request.\n\n\r\n\x05\x04\x0e\
8658    \x02\x04\x04\x12\x04\xf5\x06\x02\n\n\r\n\x05\x04\x0e\x02\x04\x05\x12\x04\
8659    \xf5\x06\x0b\x11\n\r\n\x05\x04\x0e\x02\x04\x01\x12\x04\xf5\x06\x12\x19\n\
8660    \r\n\x05\x04\x0e\x02\x04\x03\x12\x04\xf5\x06\x1c\x1d\n\xe1\x04\n\x04\x04\
8661    \x0e\x02\x05\x12\x04\xfe\x06\x02>\x1a\xd2\x04\x20Required.\x20`key_set`\
8662    \x20identifies\x20the\x20rows\x20to\x20be\x20yielded.\x20`key_set`\x20na\
8663    mes\x20the\n\x20primary\x20keys\x20of\x20the\x20rows\x20in\x20[table][go\
8664    ogle.spanner.v1.PartitionReadRequest.table]\x20to\x20be\x20yielded,\x20u\
8665    nless\x20[index][google.spanner.v1.PartitionReadRequest.index]\n\x20is\
8666    \x20present.\x20If\x20[index][google.spanner.v1.PartitionReadRequest.ind\
8667    ex]\x20is\x20present,\x20then\x20[key_set][google.spanner.v1.PartitionRe\
8668    adRequest.key_set]\x20instead\x20names\n\x20index\x20keys\x20in\x20[inde\
8669    x][google.spanner.v1.PartitionReadRequest.index].\n\n\x20It\x20is\x20not\
8670    \x20an\x20error\x20for\x20the\x20`key_set`\x20to\x20name\x20rows\x20that\
8671    \x20do\x20not\n\x20exist\x20in\x20the\x20database.\x20Read\x20yields\x20\
8672    nothing\x20for\x20nonexistent\x20rows.\n\n\r\n\x05\x04\x0e\x02\x05\x06\
8673    \x12\x04\xfe\x06\x02\x08\n\r\n\x05\x04\x0e\x02\x05\x01\x12\x04\xfe\x06\t\
8674    \x10\n\r\n\x05\x04\x0e\x02\x05\x03\x12\x04\xfe\x06\x13\x14\n\r\n\x05\x04\
8675    \x0e\x02\x05\x08\x12\x04\xfe\x06\x15=\n\x10\n\x08\x04\x0e\x02\x05\x08\
8676    \x9c\x08\0\x12\x04\xfe\x06\x16<\nO\n\x04\x04\x0e\x02\x06\x12\x04\x81\x07\
8677    \x02)\x1aA\x20Additional\x20options\x20that\x20affect\x20how\x20many\x20\
8678    partitions\x20are\x20created.\n\n\r\n\x05\x04\x0e\x02\x06\x06\x12\x04\
8679    \x81\x07\x02\x12\n\r\n\x05\x04\x0e\x02\x06\x01\x12\x04\x81\x07\x13$\n\r\
8680    \n\x05\x04\x0e\x02\x06\x03\x12\x04\x81\x07'(\nY\n\x02\x04\x0f\x12\x06\
8681    \x86\x07\0\x8b\x07\x01\x1aK\x20Information\x20returned\x20for\x20each\
8682    \x20partition\x20returned\x20in\x20a\n\x20PartitionResponse.\n\n\x0b\n\
8683    \x03\x04\x0f\x01\x12\x04\x86\x07\x08\x11\n\xb4\x01\n\x04\x04\x0f\x02\0\
8684    \x12\x04\x8a\x07\x02\x1c\x1a\xa5\x01\x20This\x20token\x20can\x20be\x20pa\
8685    ssed\x20to\x20Read,\x20StreamingRead,\x20ExecuteSql,\x20or\n\x20ExecuteS\
8686    treamingSql\x20requests\x20to\x20restrict\x20the\x20results\x20to\x20tho\
8687    se\x20identified\x20by\n\x20this\x20partition\x20token.\n\n\r\n\x05\x04\
8688    \x0f\x02\0\x05\x12\x04\x8a\x07\x02\x07\n\r\n\x05\x04\x0f\x02\0\x01\x12\
8689    \x04\x8a\x07\x08\x17\n\r\n\x05\x04\x0f\x02\0\x03\x12\x04\x8a\x07\x1a\x1b\
8690    \n\x99\x01\n\x02\x04\x10\x12\x06\x8f\x07\0\x95\x07\x01\x1a\x8a\x01\x20Th\
8691    e\x20response\x20for\x20[PartitionQuery][google.spanner.v1.Spanner.Parti\
8692    tionQuery]\n\x20or\x20[PartitionRead][google.spanner.v1.Spanner.Partitio\
8693    nRead]\n\n\x0b\n\x03\x04\x10\x01\x12\x04\x8f\x07\x08\x19\n3\n\x04\x04\
8694    \x10\x02\0\x12\x04\x91\x07\x02$\x1a%\x20Partitions\x20created\x20by\x20t\
8695    his\x20request.\n\n\r\n\x05\x04\x10\x02\0\x04\x12\x04\x91\x07\x02\n\n\r\
8696    \n\x05\x04\x10\x02\0\x06\x12\x04\x91\x07\x0b\x14\n\r\n\x05\x04\x10\x02\0\
8697    \x01\x12\x04\x91\x07\x15\x1f\n\r\n\x05\x04\x10\x02\0\x03\x12\x04\x91\x07\
8698    \"#\n4\n\x04\x04\x10\x02\x01\x12\x04\x94\x07\x02\x1e\x1a&\x20Transaction\
8699    \x20created\x20by\x20this\x20request.\n\n\r\n\x05\x04\x10\x02\x01\x06\
8700    \x12\x04\x94\x07\x02\r\n\r\n\x05\x04\x10\x02\x01\x01\x12\x04\x94\x07\x0e\
8701    \x19\n\r\n\x05\x04\x10\x02\x01\x03\x12\x04\x94\x07\x1c\x1d\n\x85\x01\n\
8702    \x02\x04\x11\x12\x06\x99\x07\0\xdc\x07\x01\x1aw\x20The\x20request\x20for\
8703    \x20[Read][google.spanner.v1.Spanner.Read]\x20and\n\x20[StreamingRead][g\
8704    oogle.spanner.v1.Spanner.StreamingRead].\n\n\x0b\n\x03\x04\x11\x01\x12\
8705    \x04\x99\x07\x08\x13\nN\n\x04\x04\x11\x02\0\x12\x06\x9b\x07\x02\xa0\x07\
8706    \x04\x1a>\x20Required.\x20The\x20session\x20in\x20which\x20the\x20read\
8707    \x20should\x20be\x20performed.\n\n\r\n\x05\x04\x11\x02\0\x05\x12\x04\x9b\
8708    \x07\x02\x08\n\r\n\x05\x04\x11\x02\0\x01\x12\x04\x9b\x07\t\x10\n\r\n\x05\
8709    \x04\x11\x02\0\x03\x12\x04\x9b\x07\x13\x14\n\x0f\n\x05\x04\x11\x02\0\x08\
8710    \x12\x06\x9b\x07\x15\xa0\x07\x03\n\x10\n\x08\x04\x11\x02\0\x08\x9c\x08\0\
8711    \x12\x04\x9c\x07\x04*\n\x11\n\x07\x04\x11\x02\0\x08\x9f\x08\x12\x06\x9d\
8712    \x07\x04\x9f\x07\x05\n\x87\x01\n\x04\x04\x11\x02\x01\x12\x04\xa4\x07\x02\
8713    &\x1ay\x20The\x20transaction\x20to\x20use.\x20If\x20none\x20is\x20provid\
8714    ed,\x20the\x20default\x20is\x20a\n\x20temporary\x20read-only\x20transact\
8715    ion\x20with\x20strong\x20concurrency.\n\n\r\n\x05\x04\x11\x02\x01\x06\
8716    \x12\x04\xa4\x07\x02\x15\n\r\n\x05\x04\x11\x02\x01\x01\x12\x04\xa4\x07\
8717    \x16!\n\r\n\x05\x04\x11\x02\x01\x03\x12\x04\xa4\x07$%\nK\n\x04\x04\x11\
8718    \x02\x02\x12\x04\xa7\x07\x02<\x1a=\x20Required.\x20The\x20name\x20of\x20\
8719    the\x20table\x20in\x20the\x20database\x20to\x20be\x20read.\n\n\r\n\x05\
8720    \x04\x11\x02\x02\x05\x12\x04\xa7\x07\x02\x08\n\r\n\x05\x04\x11\x02\x02\
8721    \x01\x12\x04\xa7\x07\t\x0e\n\r\n\x05\x04\x11\x02\x02\x03\x12\x04\xa7\x07\
8722    \x11\x12\n\r\n\x05\x04\x11\x02\x02\x08\x12\x04\xa7\x07\x13;\n\x10\n\x08\
8723    \x04\x11\x02\x02\x08\x9c\x08\0\x12\x04\xa7\x07\x14:\n\xc4\x02\n\x04\x04\
8724    \x11\x02\x03\x12\x04\xac\x07\x02\x13\x1a\xb5\x02\x20If\x20non-empty,\x20\
8725    the\x20name\x20of\x20an\x20index\x20on\x20[table][google.spanner.v1.Read\
8726    Request.table].\x20This\x20index\x20is\n\x20used\x20instead\x20of\x20the\
8727    \x20table\x20primary\x20key\x20when\x20interpreting\x20[key_set][google.\
8728    spanner.v1.ReadRequest.key_set]\n\x20and\x20sorting\x20result\x20rows.\
8729    \x20See\x20[key_set][google.spanner.v1.ReadRequest.key_set]\x20for\x20fu\
8730    rther\x20information.\n\n\r\n\x05\x04\x11\x02\x03\x05\x12\x04\xac\x07\
8731    \x02\x08\n\r\n\x05\x04\x11\x02\x03\x01\x12\x04\xac\x07\t\x0e\n\r\n\x05\
8732    \x04\x11\x02\x03\x03\x12\x04\xac\x07\x11\x12\n\x89\x01\n\x04\x04\x11\x02\
8733    \x04\x12\x04\xb0\x07\x02G\x1a{\x20Required.\x20The\x20columns\x20of\x20[\
8734    table][google.spanner.v1.ReadRequest.table]\x20to\x20be\x20returned\x20f\
8735    or\x20each\x20row\x20matching\n\x20this\x20request.\n\n\r\n\x05\x04\x11\
8736    \x02\x04\x04\x12\x04\xb0\x07\x02\n\n\r\n\x05\x04\x11\x02\x04\x05\x12\x04\
8737    \xb0\x07\x0b\x11\n\r\n\x05\x04\x11\x02\x04\x01\x12\x04\xb0\x07\x12\x19\n\
8738    \r\n\x05\x04\x11\x02\x04\x03\x12\x04\xb0\x07\x1c\x1d\n\r\n\x05\x04\x11\
8739    \x02\x04\x08\x12\x04\xb0\x07\x1eF\n\x10\n\x08\x04\x11\x02\x04\x08\x9c\
8740    \x08\0\x12\x04\xb0\x07\x1fE\n\xd6\x07\n\x04\x04\x11\x02\x05\x12\x04\xbe\
8741    \x07\x02>\x1a\xc7\x07\x20Required.\x20`key_set`\x20identifies\x20the\x20\
8742    rows\x20to\x20be\x20yielded.\x20`key_set`\x20names\x20the\n\x20primary\
8743    \x20keys\x20of\x20the\x20rows\x20in\x20[table][google.spanner.v1.ReadReq\
8744    uest.table]\x20to\x20be\x20yielded,\x20unless\x20[index][google.spanner.\
8745    v1.ReadRequest.index]\n\x20is\x20present.\x20If\x20[index][google.spanne\
8746    r.v1.ReadRequest.index]\x20is\x20present,\x20then\x20[key_set][google.sp\
8747    anner.v1.ReadRequest.key_set]\x20instead\x20names\n\x20index\x20keys\x20\
8748    in\x20[index][google.spanner.v1.ReadRequest.index].\n\n\x20If\x20the\x20\
8749    [partition_token][google.spanner.v1.ReadRequest.partition_token]\x20fiel\
8750    d\x20is\x20empty,\x20rows\x20are\x20yielded\n\x20in\x20table\x20primary\
8751    \x20key\x20order\x20(if\x20[index][google.spanner.v1.ReadRequest.index]\
8752    \x20is\x20empty)\x20or\x20index\x20key\x20order\n\x20(if\x20[index][goog\
8753    le.spanner.v1.ReadRequest.index]\x20is\x20non-empty).\x20\x20If\x20the\
8754    \x20[partition_token][google.spanner.v1.ReadRequest.partition_token]\x20\
8755    field\x20is\x20not\n\x20empty,\x20rows\x20will\x20be\x20yielded\x20in\
8756    \x20an\x20unspecified\x20order.\n\n\x20It\x20is\x20not\x20an\x20error\
8757    \x20for\x20the\x20`key_set`\x20to\x20name\x20rows\x20that\x20do\x20not\n\
8758    \x20exist\x20in\x20the\x20database.\x20Read\x20yields\x20nothing\x20for\
8759    \x20nonexistent\x20rows.\n\n\r\n\x05\x04\x11\x02\x05\x06\x12\x04\xbe\x07\
8760    \x02\x08\n\r\n\x05\x04\x11\x02\x05\x01\x12\x04\xbe\x07\t\x10\n\r\n\x05\
8761    \x04\x11\x02\x05\x03\x12\x04\xbe\x07\x13\x14\n\r\n\x05\x04\x11\x02\x05\
8762    \x08\x12\x04\xbe\x07\x15=\n\x10\n\x08\x04\x11\x02\x05\x08\x9c\x08\0\x12\
8763    \x04\xbe\x07\x16<\n\xb7\x01\n\x04\x04\x11\x02\x06\x12\x04\xc3\x07\x02\
8764    \x12\x1a\xa8\x01\x20If\x20greater\x20than\x20zero,\x20only\x20the\x20fir\
8765    st\x20`limit`\x20rows\x20are\x20yielded.\x20If\x20`limit`\n\x20is\x20zer\
8766    o,\x20the\x20default\x20is\x20no\x20limit.\x20A\x20limit\x20cannot\x20be\
8767    \x20specified\x20if\n\x20`partition_token`\x20is\x20set.\n\n\r\n\x05\x04\
8768    \x11\x02\x06\x05\x12\x04\xc3\x07\x02\x07\n\r\n\x05\x04\x11\x02\x06\x01\
8769    \x12\x04\xc3\x07\x08\r\n\r\n\x05\x04\x11\x02\x06\x03\x12\x04\xc3\x07\x10\
8770    \x11\n\xf9\x02\n\x04\x04\x11\x02\x07\x12\x04\xcb\x07\x02\x19\x1a\xea\x02\
8771    \x20If\x20this\x20request\x20is\x20resuming\x20a\x20previously\x20interr\
8772    upted\x20read,\n\x20`resume_token`\x20should\x20be\x20copied\x20from\x20\
8773    the\x20last\n\x20[PartialResultSet][google.spanner.v1.PartialResultSet]\
8774    \x20yielded\x20before\x20the\x20interruption.\x20Doing\x20this\n\x20enab\
8775    les\x20the\x20new\x20read\x20to\x20resume\x20where\x20the\x20last\x20rea\
8776    d\x20left\x20off.\x20The\n\x20rest\x20of\x20the\x20request\x20parameters\
8777    \x20must\x20exactly\x20match\x20the\x20request\n\x20that\x20yielded\x20t\
8778    his\x20token.\n\n\r\n\x05\x04\x11\x02\x07\x05\x12\x04\xcb\x07\x02\x07\n\
8779    \r\n\x05\x04\x11\x02\x07\x01\x12\x04\xcb\x07\x08\x14\n\r\n\x05\x04\x11\
8780    \x02\x07\x03\x12\x04\xcb\x07\x17\x18\n\x99\x02\n\x04\x04\x11\x02\x08\x12\
8781    \x04\xd1\x07\x02\x1d\x1a\x8a\x02\x20If\x20present,\x20results\x20will\
8782    \x20be\x20restricted\x20to\x20the\x20specified\x20partition\n\x20previou\
8783    sly\x20created\x20using\x20PartitionRead().\x20\x20\x20\x20There\x20must\
8784    \x20be\x20an\x20exact\n\x20match\x20for\x20the\x20values\x20of\x20fields\
8785    \x20common\x20to\x20this\x20message\x20and\x20the\n\x20PartitionReadRequ\
8786    est\x20message\x20used\x20to\x20create\x20this\x20partition_token.\n\n\r\
8787    \n\x05\x04\x11\x02\x08\x05\x12\x04\xd1\x07\x02\x07\n\r\n\x05\x04\x11\x02\
8788    \x08\x01\x12\x04\xd1\x07\x08\x17\n\r\n\x05\x04\x11\x02\x08\x03\x12\x04\
8789    \xd1\x07\x1a\x1c\n0\n\x04\x04\x11\x02\t\x12\x04\xd4\x07\x02&\x1a\"\x20Co\
8790    mmon\x20options\x20for\x20this\x20request.\n\n\r\n\x05\x04\x11\x02\t\x06\
8791    \x12\x04\xd4\x07\x02\x10\n\r\n\x05\x04\x11\x02\t\x01\x12\x04\xd4\x07\x11\
8792    \x20\n\r\n\x05\x04\x11\x02\t\x03\x12\x04\xd4\x07#%\n\x9e\x02\n\x04\x04\
8793    \x11\x02\n\x12\x04\xdb\x07\x02\x1f\x1a\x8f\x02\x20If\x20this\x20is\x20fo\
8794    r\x20a\x20partitioned\x20read\x20and\x20this\x20field\x20is\x20set\x20to\
8795    \x20`true`,\x20the\n\x20request\x20will\x20be\x20executed\x20via\x20Span\
8796    ner\x20independent\x20compute\x20resources.\n\n\x20If\x20the\x20field\
8797    \x20is\x20set\x20to\x20`true`\x20but\x20the\x20request\x20does\x20not\
8798    \x20set\n\x20`partition_token`,\x20the\x20API\x20will\x20return\x20an\
8799    \x20`INVALID_ARGUMENT`\x20error.\n\n\r\n\x05\x04\x11\x02\n\x05\x12\x04\
8800    \xdb\x07\x02\x06\n\r\n\x05\x04\x11\x02\n\x01\x12\x04\xdb\x07\x07\x19\n\r\
8801    \n\x05\x04\x11\x02\n\x03\x12\x04\xdb\x07\x1c\x1e\n_\n\x02\x04\x12\x12\
8802    \x06\xdf\x07\0\xf1\x07\x01\x1aQ\x20The\x20request\x20for\x20[BeginTransa\
8803    ction][google.spanner.v1.Spanner.BeginTransaction].\n\n\x0b\n\x03\x04\
8804    \x12\x01\x12\x04\xdf\x07\x08\x1f\nF\n\x04\x04\x12\x02\0\x12\x06\xe1\x07\
8805    \x02\xe6\x07\x04\x1a6\x20Required.\x20The\x20session\x20in\x20which\x20t\
8806    he\x20transaction\x20runs.\n\n\r\n\x05\x04\x12\x02\0\x05\x12\x04\xe1\x07\
8807    \x02\x08\n\r\n\x05\x04\x12\x02\0\x01\x12\x04\xe1\x07\t\x10\n\r\n\x05\x04\
8808    \x12\x02\0\x03\x12\x04\xe1\x07\x13\x14\n\x0f\n\x05\x04\x12\x02\0\x08\x12\
8809    \x06\xe1\x07\x15\xe6\x07\x03\n\x10\n\x08\x04\x12\x02\0\x08\x9c\x08\0\x12\
8810    \x04\xe2\x07\x04*\n\x11\n\x07\x04\x12\x02\0\x08\x9f\x08\x12\x06\xe3\x07\
8811    \x04\xe5\x07\x05\n:\n\x04\x04\x12\x02\x01\x12\x04\xe9\x07\x02J\x1a,\x20R\
8812    equired.\x20Options\x20for\x20the\x20new\x20transaction.\n\n\r\n\x05\x04\
8813    \x12\x02\x01\x06\x12\x04\xe9\x07\x02\x14\n\r\n\x05\x04\x12\x02\x01\x01\
8814    \x12\x04\xe9\x07\x15\x1c\n\r\n\x05\x04\x12\x02\x01\x03\x12\x04\xe9\x07\
8815    \x1f\x20\n\r\n\x05\x04\x12\x02\x01\x08\x12\x04\xe9\x07!I\n\x10\n\x08\x04\
8816    \x12\x02\x01\x08\x9c\x08\0\x12\x04\xe9\x07\"H\n\x96\x02\n\x04\x04\x12\
8817    \x02\x02\x12\x04\xf0\x07\x02%\x1a\x87\x02\x20Common\x20options\x20for\
8818    \x20this\x20request.\n\x20Priority\x20is\x20ignored\x20for\x20this\x20re\
8819    quest.\x20Setting\x20the\x20priority\x20in\x20this\n\x20request_options\
8820    \x20struct\x20will\x20not\x20do\x20anything.\x20To\x20set\x20the\x20prio\
8821    rity\x20for\x20a\n\x20transaction,\x20set\x20it\x20on\x20the\x20reads\
8822    \x20and\x20writes\x20that\x20are\x20part\x20of\x20this\n\x20transaction\
8823    \x20instead.\n\n\r\n\x05\x04\x12\x02\x02\x06\x12\x04\xf0\x07\x02\x10\n\r\
8824    \n\x05\x04\x12\x02\x02\x01\x12\x04\xf0\x07\x11\x20\n\r\n\x05\x04\x12\x02\
8825    \x02\x03\x12\x04\xf0\x07#$\nK\n\x02\x04\x13\x12\x06\xf4\x07\0\x9a\x08\
8826    \x01\x1a=\x20The\x20request\x20for\x20[Commit][google.spanner.v1.Spanner\
8827    .Commit].\n\n\x0b\n\x03\x04\x13\x01\x12\x04\xf4\x07\x08\x15\n\\\n\x04\
8828    \x04\x13\x02\0\x12\x06\xf6\x07\x02\xfb\x07\x04\x1aL\x20Required.\x20The\
8829    \x20session\x20in\x20which\x20the\x20transaction\x20to\x20be\x20committe\
8830    d\x20is\x20running.\n\n\r\n\x05\x04\x13\x02\0\x05\x12\x04\xf6\x07\x02\
8831    \x08\n\r\n\x05\x04\x13\x02\0\x01\x12\x04\xf6\x07\t\x10\n\r\n\x05\x04\x13\
8832    \x02\0\x03\x12\x04\xf6\x07\x13\x14\n\x0f\n\x05\x04\x13\x02\0\x08\x12\x06\
8833    \xf6\x07\x15\xfb\x07\x03\n\x10\n\x08\x04\x13\x02\0\x08\x9c\x08\0\x12\x04\
8834    \xf7\x07\x04*\n\x11\n\x07\x04\x13\x02\0\x08\x9f\x08\x12\x06\xf8\x07\x04\
8835    \xfa\x07\x05\n?\n\x04\x04\x13\x08\0\x12\x06\xfe\x07\x02\x8c\x08\x03\x1a/\
8836    \x20Required.\x20The\x20transaction\x20in\x20which\x20to\x20commit.\n\n\
8837    \r\n\x05\x04\x13\x08\0\x01\x12\x04\xfe\x07\x08\x13\n8\n\x04\x04\x13\x02\
8838    \x01\x12\x04\x80\x08\x04\x1d\x1a*\x20Commit\x20a\x20previously-started\
8839    \x20transaction.\n\n\r\n\x05\x04\x13\x02\x01\x05\x12\x04\x80\x08\x04\t\n\
8840    \r\n\x05\x04\x13\x02\x01\x01\x12\x04\x80\x08\n\x18\n\r\n\x05\x04\x13\x02\
8841    \x01\x03\x12\x04\x80\x08\x1b\x1c\n\xa4\x04\n\x04\x04\x13\x02\x02\x12\x04\
8842    \x8b\x08\x042\x1a\x95\x04\x20Execute\x20mutations\x20in\x20a\x20temporar\
8843    y\x20transaction.\x20Note\x20that\x20unlike\n\x20commit\x20of\x20a\x20pr\
8844    eviously-started\x20transaction,\x20commit\x20with\x20a\n\x20temporary\
8845    \x20transaction\x20is\x20non-idempotent.\x20That\x20is,\x20if\x20the\n\
8846    \x20`CommitRequest`\x20is\x20sent\x20to\x20Cloud\x20Spanner\x20more\x20t\
8847    han\x20once\x20(for\n\x20instance,\x20due\x20to\x20retries\x20in\x20the\
8848    \x20application,\x20or\x20in\x20the\n\x20transport\x20library),\x20it\
8849    \x20is\x20possible\x20that\x20the\x20mutations\x20are\n\x20executed\x20m\
8850    ore\x20than\x20once.\x20If\x20this\x20is\x20undesirable,\x20use\n\x20[Be\
8851    ginTransaction][google.spanner.v1.Spanner.BeginTransaction]\x20and\n\x20\
8852    [Commit][google.spanner.v1.Spanner.Commit]\x20instead.\n\n\r\n\x05\x04\
8853    \x13\x02\x02\x06\x12\x04\x8b\x08\x04\x16\n\r\n\x05\x04\x13\x02\x02\x01\
8854    \x12\x04\x8b\x08\x17-\n\r\n\x05\x04\x13\x02\x02\x03\x12\x04\x8b\x0801\n\
8855    \x9b\x01\n\x04\x04\x13\x02\x03\x12\x04\x91\x08\x02\"\x1a\x8c\x01\x20The\
8856    \x20mutations\x20to\x20be\x20executed\x20when\x20this\x20transaction\x20\
8857    commits.\x20All\n\x20mutations\x20are\x20applied\x20atomically,\x20in\
8858    \x20the\x20order\x20they\x20appear\x20in\n\x20this\x20list.\n\n\r\n\x05\
8859    \x04\x13\x02\x03\x04\x12\x04\x91\x08\x02\n\n\r\n\x05\x04\x13\x02\x03\x06\
8860    \x12\x04\x91\x08\x0b\x13\n\r\n\x05\x04\x13\x02\x03\x01\x12\x04\x91\x08\
8861    \x14\x1d\n\r\n\x05\x04\x13\x02\x03\x03\x12\x04\x91\x08\x20!\n\xbb\x01\n\
8862    \x04\x04\x13\x02\x04\x12\x04\x96\x08\x02\x1f\x1a\xac\x01\x20If\x20`true`\
8863    ,\x20then\x20statistics\x20related\x20to\x20the\x20transaction\x20will\
8864    \x20be\x20included\x20in\n\x20the\x20[CommitResponse][google.spanner.v1.\
8865    CommitResponse.commit_stats].\x20Default\x20value\x20is\n\x20`false`.\n\
8866    \n\r\n\x05\x04\x13\x02\x04\x05\x12\x04\x96\x08\x02\x06\n\r\n\x05\x04\x13\
8867    \x02\x04\x01\x12\x04\x96\x08\x07\x1a\n\r\n\x05\x04\x13\x02\x04\x03\x12\
8868    \x04\x96\x08\x1d\x1e\n0\n\x04\x04\x13\x02\x05\x12\x04\x99\x08\x02%\x1a\"\
8869    \x20Common\x20options\x20for\x20this\x20request.\n\n\r\n\x05\x04\x13\x02\
8870    \x05\x06\x12\x04\x99\x08\x02\x10\n\r\n\x05\x04\x13\x02\x05\x01\x12\x04\
8871    \x99\x08\x11\x20\n\r\n\x05\x04\x13\x02\x05\x03\x12\x04\x99\x08#$\nO\n\
8872    \x02\x04\x14\x12\x06\x9d\x08\0\xa8\x08\x01\x1aA\x20The\x20request\x20for\
8873    \x20[Rollback][google.spanner.v1.Spanner.Rollback].\n\n\x0b\n\x03\x04\
8874    \x14\x01\x12\x04\x9d\x08\x08\x17\nY\n\x04\x04\x14\x02\0\x12\x06\x9f\x08\
8875    \x02\xa4\x08\x04\x1aI\x20Required.\x20The\x20session\x20in\x20which\x20t\
8876    he\x20transaction\x20to\x20roll\x20back\x20is\x20running.\n\n\r\n\x05\
8877    \x04\x14\x02\0\x05\x12\x04\x9f\x08\x02\x08\n\r\n\x05\x04\x14\x02\0\x01\
8878    \x12\x04\x9f\x08\t\x10\n\r\n\x05\x04\x14\x02\0\x03\x12\x04\x9f\x08\x13\
8879    \x14\n\x0f\n\x05\x04\x14\x02\0\x08\x12\x06\x9f\x08\x15\xa4\x08\x03\n\x10\
8880    \n\x08\x04\x14\x02\0\x08\x9c\x08\0\x12\x04\xa0\x08\x04*\n\x11\n\x07\x04\
8881    \x14\x02\0\x08\x9f\x08\x12\x06\xa1\x08\x04\xa3\x08\x05\n7\n\x04\x04\x14\
8882    \x02\x01\x12\x04\xa7\x08\x02D\x1a)\x20Required.\x20The\x20transaction\
8883    \x20to\x20roll\x20back.\n\n\r\n\x05\x04\x14\x02\x01\x05\x12\x04\xa7\x08\
8884    \x02\x07\n\r\n\x05\x04\x14\x02\x01\x01\x12\x04\xa7\x08\x08\x16\n\r\n\x05\
8885    \x04\x14\x02\x01\x03\x12\x04\xa7\x08\x19\x1a\n\r\n\x05\x04\x14\x02\x01\
8886    \x08\x12\x04\xa7\x08\x1bC\n\x10\n\x08\x04\x14\x02\x01\x08\x9c\x08\0\x12\
8887    \x04\xa7\x08\x1cB\nS\n\x02\x04\x15\x12\x06\xab\x08\0\xc0\x08\x01\x1aE\
8888    \x20The\x20request\x20for\x20[BatchWrite][google.spanner.v1.Spanner.Batc\
8889    hWrite].\n\n\x0b\n\x03\x04\x15\x01\x12\x04\xab\x08\x08\x19\n\xea\x01\n\
8890    \x04\x04\x15\x03\0\x12\x06\xaf\x08\x02\xb2\x08\x03\x1a\xd9\x01\x20A\x20g\
8891    roup\x20of\x20mutations\x20to\x20be\x20committed\x20together.\x20Related\
8892    \x20mutations\x20should\x20be\n\x20placed\x20in\x20a\x20group.\x20For\
8893    \x20example,\x20two\x20mutations\x20inserting\x20rows\x20with\x20the\x20\
8894    same\n\x20primary\x20key\x20prefix\x20in\x20both\x20parent\x20and\x20chi\
8895    ld\x20tables\x20are\x20related.\n\n\r\n\x05\x04\x15\x03\0\x01\x12\x04\
8896    \xaf\x08\n\x17\n8\n\x06\x04\x15\x03\0\x02\0\x12\x04\xb1\x08\x04M\x1a(\
8897    \x20Required.\x20The\x20mutations\x20in\x20this\x20group.\n\n\x0f\n\x07\
8898    \x04\x15\x03\0\x02\0\x04\x12\x04\xb1\x08\x04\x0c\n\x0f\n\x07\x04\x15\x03\
8899    \0\x02\0\x06\x12\x04\xb1\x08\r\x15\n\x0f\n\x07\x04\x15\x03\0\x02\0\x01\
8900    \x12\x04\xb1\x08\x16\x1f\n\x0f\n\x07\x04\x15\x03\0\x02\0\x03\x12\x04\xb1\
8901    \x08\"#\n\x0f\n\x07\x04\x15\x03\0\x02\0\x08\x12\x04\xb1\x08$L\n\x12\n\n\
8902    \x04\x15\x03\0\x02\0\x08\x9c\x08\0\x12\x04\xb1\x08%K\nP\n\x04\x04\x15\
8903    \x02\0\x12\x06\xb5\x08\x02\xb8\x08\x04\x1a@\x20Required.\x20The\x20sessi\
8904    on\x20in\x20which\x20the\x20batch\x20request\x20is\x20to\x20be\x20run.\n\
8905    \n\r\n\x05\x04\x15\x02\0\x05\x12\x04\xb5\x08\x02\x08\n\r\n\x05\x04\x15\
8906    \x02\0\x01\x12\x04\xb5\x08\t\x10\n\r\n\x05\x04\x15\x02\0\x03\x12\x04\xb5\
8907    \x08\x13\x14\n\x0f\n\x05\x04\x15\x02\0\x08\x12\x06\xb5\x08\x15\xb8\x08\
8908    \x03\n\x10\n\x08\x04\x15\x02\0\x08\x9c\x08\0\x12\x04\xb6\x08\x04*\n\x0f\
8909    \n\x07\x04\x15\x02\0\x08\x9f\x08\x12\x04\xb7\x08\x04P\n0\n\x04\x04\x15\
8910    \x02\x01\x12\x04\xbb\x08\x02%\x1a\"\x20Common\x20options\x20for\x20this\
8911    \x20request.\n\n\r\n\x05\x04\x15\x02\x01\x06\x12\x04\xbb\x08\x02\x10\n\r\
8912    \n\x05\x04\x15\x02\x01\x01\x12\x04\xbb\x08\x11\x20\n\r\n\x05\x04\x15\x02\
8913    \x01\x03\x12\x04\xbb\x08#$\nB\n\x04\x04\x15\x02\x02\x12\x06\xbe\x08\x02\
8914    \xbf\x08/\x1a2\x20Required.\x20The\x20groups\x20of\x20mutations\x20to\
8915    \x20be\x20applied.\n\n\r\n\x05\x04\x15\x02\x02\x04\x12\x04\xbe\x08\x02\n\
8916    \n\r\n\x05\x04\x15\x02\x02\x06\x12\x04\xbe\x08\x0b\x18\n\r\n\x05\x04\x15\
8917    \x02\x02\x01\x12\x04\xbe\x08\x19(\n\r\n\x05\x04\x15\x02\x02\x03\x12\x04\
8918    \xbe\x08+,\n\r\n\x05\x04\x15\x02\x02\x08\x12\x04\xbf\x08\x06.\n\x10\n\
8919    \x08\x04\x15\x02\x02\x08\x9c\x08\0\x12\x04\xbf\x08\x07-\n<\n\x02\x04\x16\
8920    \x12\x06\xc3\x08\0\xce\x08\x01\x1a.\x20The\x20result\x20of\x20applying\
8921    \x20a\x20batch\x20of\x20mutations.\n\n\x0b\n\x03\x04\x16\x01\x12\x04\xc3\
8922    \x08\x08\x1a\n\x98\x01\n\x04\x04\x16\x02\0\x12\x04\xc6\x08\x02\x1d\x1a\
8923    \x89\x01\x20The\x20mutation\x20groups\x20applied\x20in\x20this\x20batch.\
8924    \x20The\x20values\x20index\x20into\x20the\n\x20`mutation_groups`\x20fiel\
8925    d\x20in\x20the\x20corresponding\x20`BatchWriteRequest`.\n\n\r\n\x05\x04\
8926    \x16\x02\0\x04\x12\x04\xc6\x08\x02\n\n\r\n\x05\x04\x16\x02\0\x05\x12\x04\
8927    \xc6\x08\x0b\x10\n\r\n\x05\x04\x16\x02\0\x01\x12\x04\xc6\x08\x11\x18\n\r\
8928    \n\x05\x04\x16\x02\0\x03\x12\x04\xc6\x08\x1b\x1c\nW\n\x04\x04\x16\x02\
8929    \x01\x12\x04\xc9\x08\x02\x1f\x1aI\x20An\x20`OK`\x20status\x20indicates\
8930    \x20success.\x20Any\x20other\x20status\x20indicates\x20a\x20failure.\n\n\
8931    \r\n\x05\x04\x16\x02\x01\x06\x12\x04\xc9\x08\x02\x13\n\r\n\x05\x04\x16\
8932    \x02\x01\x01\x12\x04\xc9\x08\x14\x1a\n\r\n\x05\x04\x16\x02\x01\x03\x12\
8933    \x04\xc9\x08\x1d\x1e\n\x80\x01\n\x04\x04\x16\x02\x02\x12\x04\xcd\x08\x02\
8934    1\x1ar\x20The\x20commit\x20timestamp\x20of\x20the\x20transaction\x20that\
8935    \x20applied\x20this\x20batch.\n\x20Present\x20if\x20`status`\x20is\x20`O\
8936    K`,\x20absent\x20otherwise.\n\n\r\n\x05\x04\x16\x02\x02\x06\x12\x04\xcd\
8937    \x08\x02\x1b\n\r\n\x05\x04\x16\x02\x02\x01\x12\x04\xcd\x08\x1c,\n\r\n\
8938    \x05\x04\x16\x02\x02\x03\x12\x04\xcd\x08/0b\x06proto3\
8939";
8940
8941static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;
8942
8943fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
8944    ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
8945}
8946
8947pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
8948    file_descriptor_proto_lazy.get(|| {
8949        parse_descriptor_proto()
8950    })
8951}