google_cloud_rust_raw/spanner/v1/
mutation.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/mutation.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 Mutation {
28    // message oneof groups
29    pub operation: ::std::option::Option<Mutation_oneof_operation>,
30    // special fields
31    pub unknown_fields: ::protobuf::UnknownFields,
32    pub cached_size: ::protobuf::CachedSize,
33}
34
35impl<'a> ::std::default::Default for &'a Mutation {
36    fn default() -> &'a Mutation {
37        <Mutation as ::protobuf::Message>::default_instance()
38    }
39}
40
41#[derive(Clone,PartialEq,Debug)]
42pub enum Mutation_oneof_operation {
43    insert(Mutation_Write),
44    update(Mutation_Write),
45    insert_or_update(Mutation_Write),
46    replace(Mutation_Write),
47    delete(Mutation_Delete),
48}
49
50impl Mutation {
51    pub fn new() -> Mutation {
52        ::std::default::Default::default()
53    }
54
55    // .google.spanner.v1.Mutation.Write insert = 1;
56
57
58    pub fn get_insert(&self) -> &Mutation_Write {
59        match self.operation {
60            ::std::option::Option::Some(Mutation_oneof_operation::insert(ref v)) => v,
61            _ => <Mutation_Write as ::protobuf::Message>::default_instance(),
62        }
63    }
64    pub fn clear_insert(&mut self) {
65        self.operation = ::std::option::Option::None;
66    }
67
68    pub fn has_insert(&self) -> bool {
69        match self.operation {
70            ::std::option::Option::Some(Mutation_oneof_operation::insert(..)) => true,
71            _ => false,
72        }
73    }
74
75    // Param is passed by value, moved
76    pub fn set_insert(&mut self, v: Mutation_Write) {
77        self.operation = ::std::option::Option::Some(Mutation_oneof_operation::insert(v))
78    }
79
80    // Mutable pointer to the field.
81    pub fn mut_insert(&mut self) -> &mut Mutation_Write {
82        if let ::std::option::Option::Some(Mutation_oneof_operation::insert(_)) = self.operation {
83        } else {
84            self.operation = ::std::option::Option::Some(Mutation_oneof_operation::insert(Mutation_Write::new()));
85        }
86        match self.operation {
87            ::std::option::Option::Some(Mutation_oneof_operation::insert(ref mut v)) => v,
88            _ => panic!(),
89        }
90    }
91
92    // Take field
93    pub fn take_insert(&mut self) -> Mutation_Write {
94        if self.has_insert() {
95            match self.operation.take() {
96                ::std::option::Option::Some(Mutation_oneof_operation::insert(v)) => v,
97                _ => panic!(),
98            }
99        } else {
100            Mutation_Write::new()
101        }
102    }
103
104    // .google.spanner.v1.Mutation.Write update = 2;
105
106
107    pub fn get_update(&self) -> &Mutation_Write {
108        match self.operation {
109            ::std::option::Option::Some(Mutation_oneof_operation::update(ref v)) => v,
110            _ => <Mutation_Write as ::protobuf::Message>::default_instance(),
111        }
112    }
113    pub fn clear_update(&mut self) {
114        self.operation = ::std::option::Option::None;
115    }
116
117    pub fn has_update(&self) -> bool {
118        match self.operation {
119            ::std::option::Option::Some(Mutation_oneof_operation::update(..)) => true,
120            _ => false,
121        }
122    }
123
124    // Param is passed by value, moved
125    pub fn set_update(&mut self, v: Mutation_Write) {
126        self.operation = ::std::option::Option::Some(Mutation_oneof_operation::update(v))
127    }
128
129    // Mutable pointer to the field.
130    pub fn mut_update(&mut self) -> &mut Mutation_Write {
131        if let ::std::option::Option::Some(Mutation_oneof_operation::update(_)) = self.operation {
132        } else {
133            self.operation = ::std::option::Option::Some(Mutation_oneof_operation::update(Mutation_Write::new()));
134        }
135        match self.operation {
136            ::std::option::Option::Some(Mutation_oneof_operation::update(ref mut v)) => v,
137            _ => panic!(),
138        }
139    }
140
141    // Take field
142    pub fn take_update(&mut self) -> Mutation_Write {
143        if self.has_update() {
144            match self.operation.take() {
145                ::std::option::Option::Some(Mutation_oneof_operation::update(v)) => v,
146                _ => panic!(),
147            }
148        } else {
149            Mutation_Write::new()
150        }
151    }
152
153    // .google.spanner.v1.Mutation.Write insert_or_update = 3;
154
155
156    pub fn get_insert_or_update(&self) -> &Mutation_Write {
157        match self.operation {
158            ::std::option::Option::Some(Mutation_oneof_operation::insert_or_update(ref v)) => v,
159            _ => <Mutation_Write as ::protobuf::Message>::default_instance(),
160        }
161    }
162    pub fn clear_insert_or_update(&mut self) {
163        self.operation = ::std::option::Option::None;
164    }
165
166    pub fn has_insert_or_update(&self) -> bool {
167        match self.operation {
168            ::std::option::Option::Some(Mutation_oneof_operation::insert_or_update(..)) => true,
169            _ => false,
170        }
171    }
172
173    // Param is passed by value, moved
174    pub fn set_insert_or_update(&mut self, v: Mutation_Write) {
175        self.operation = ::std::option::Option::Some(Mutation_oneof_operation::insert_or_update(v))
176    }
177
178    // Mutable pointer to the field.
179    pub fn mut_insert_or_update(&mut self) -> &mut Mutation_Write {
180        if let ::std::option::Option::Some(Mutation_oneof_operation::insert_or_update(_)) = self.operation {
181        } else {
182            self.operation = ::std::option::Option::Some(Mutation_oneof_operation::insert_or_update(Mutation_Write::new()));
183        }
184        match self.operation {
185            ::std::option::Option::Some(Mutation_oneof_operation::insert_or_update(ref mut v)) => v,
186            _ => panic!(),
187        }
188    }
189
190    // Take field
191    pub fn take_insert_or_update(&mut self) -> Mutation_Write {
192        if self.has_insert_or_update() {
193            match self.operation.take() {
194                ::std::option::Option::Some(Mutation_oneof_operation::insert_or_update(v)) => v,
195                _ => panic!(),
196            }
197        } else {
198            Mutation_Write::new()
199        }
200    }
201
202    // .google.spanner.v1.Mutation.Write replace = 4;
203
204
205    pub fn get_replace(&self) -> &Mutation_Write {
206        match self.operation {
207            ::std::option::Option::Some(Mutation_oneof_operation::replace(ref v)) => v,
208            _ => <Mutation_Write as ::protobuf::Message>::default_instance(),
209        }
210    }
211    pub fn clear_replace(&mut self) {
212        self.operation = ::std::option::Option::None;
213    }
214
215    pub fn has_replace(&self) -> bool {
216        match self.operation {
217            ::std::option::Option::Some(Mutation_oneof_operation::replace(..)) => true,
218            _ => false,
219        }
220    }
221
222    // Param is passed by value, moved
223    pub fn set_replace(&mut self, v: Mutation_Write) {
224        self.operation = ::std::option::Option::Some(Mutation_oneof_operation::replace(v))
225    }
226
227    // Mutable pointer to the field.
228    pub fn mut_replace(&mut self) -> &mut Mutation_Write {
229        if let ::std::option::Option::Some(Mutation_oneof_operation::replace(_)) = self.operation {
230        } else {
231            self.operation = ::std::option::Option::Some(Mutation_oneof_operation::replace(Mutation_Write::new()));
232        }
233        match self.operation {
234            ::std::option::Option::Some(Mutation_oneof_operation::replace(ref mut v)) => v,
235            _ => panic!(),
236        }
237    }
238
239    // Take field
240    pub fn take_replace(&mut self) -> Mutation_Write {
241        if self.has_replace() {
242            match self.operation.take() {
243                ::std::option::Option::Some(Mutation_oneof_operation::replace(v)) => v,
244                _ => panic!(),
245            }
246        } else {
247            Mutation_Write::new()
248        }
249    }
250
251    // .google.spanner.v1.Mutation.Delete delete = 5;
252
253
254    pub fn get_delete(&self) -> &Mutation_Delete {
255        match self.operation {
256            ::std::option::Option::Some(Mutation_oneof_operation::delete(ref v)) => v,
257            _ => <Mutation_Delete as ::protobuf::Message>::default_instance(),
258        }
259    }
260    pub fn clear_delete(&mut self) {
261        self.operation = ::std::option::Option::None;
262    }
263
264    pub fn has_delete(&self) -> bool {
265        match self.operation {
266            ::std::option::Option::Some(Mutation_oneof_operation::delete(..)) => true,
267            _ => false,
268        }
269    }
270
271    // Param is passed by value, moved
272    pub fn set_delete(&mut self, v: Mutation_Delete) {
273        self.operation = ::std::option::Option::Some(Mutation_oneof_operation::delete(v))
274    }
275
276    // Mutable pointer to the field.
277    pub fn mut_delete(&mut self) -> &mut Mutation_Delete {
278        if let ::std::option::Option::Some(Mutation_oneof_operation::delete(_)) = self.operation {
279        } else {
280            self.operation = ::std::option::Option::Some(Mutation_oneof_operation::delete(Mutation_Delete::new()));
281        }
282        match self.operation {
283            ::std::option::Option::Some(Mutation_oneof_operation::delete(ref mut v)) => v,
284            _ => panic!(),
285        }
286    }
287
288    // Take field
289    pub fn take_delete(&mut self) -> Mutation_Delete {
290        if self.has_delete() {
291            match self.operation.take() {
292                ::std::option::Option::Some(Mutation_oneof_operation::delete(v)) => v,
293                _ => panic!(),
294            }
295        } else {
296            Mutation_Delete::new()
297        }
298    }
299}
300
301impl ::protobuf::Message for Mutation {
302    fn is_initialized(&self) -> bool {
303        if let Some(Mutation_oneof_operation::insert(ref v)) = self.operation {
304            if !v.is_initialized() {
305                return false;
306            }
307        }
308        if let Some(Mutation_oneof_operation::update(ref v)) = self.operation {
309            if !v.is_initialized() {
310                return false;
311            }
312        }
313        if let Some(Mutation_oneof_operation::insert_or_update(ref v)) = self.operation {
314            if !v.is_initialized() {
315                return false;
316            }
317        }
318        if let Some(Mutation_oneof_operation::replace(ref v)) = self.operation {
319            if !v.is_initialized() {
320                return false;
321            }
322        }
323        if let Some(Mutation_oneof_operation::delete(ref v)) = self.operation {
324            if !v.is_initialized() {
325                return false;
326            }
327        }
328        true
329    }
330
331    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
332        while !is.eof()? {
333            let (field_number, wire_type) = is.read_tag_unpack()?;
334            match field_number {
335                1 => {
336                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
337                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
338                    }
339                    self.operation = ::std::option::Option::Some(Mutation_oneof_operation::insert(is.read_message()?));
340                },
341                2 => {
342                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
343                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
344                    }
345                    self.operation = ::std::option::Option::Some(Mutation_oneof_operation::update(is.read_message()?));
346                },
347                3 => {
348                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
349                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
350                    }
351                    self.operation = ::std::option::Option::Some(Mutation_oneof_operation::insert_or_update(is.read_message()?));
352                },
353                4 => {
354                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
355                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
356                    }
357                    self.operation = ::std::option::Option::Some(Mutation_oneof_operation::replace(is.read_message()?));
358                },
359                5 => {
360                    if wire_type != ::protobuf::wire_format::WireTypeLengthDelimited {
361                        return ::std::result::Result::Err(::protobuf::rt::unexpected_wire_type(wire_type));
362                    }
363                    self.operation = ::std::option::Option::Some(Mutation_oneof_operation::delete(is.read_message()?));
364                },
365                _ => {
366                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
367                },
368            };
369        }
370        ::std::result::Result::Ok(())
371    }
372
373    // Compute sizes of nested messages
374    #[allow(unused_variables)]
375    fn compute_size(&self) -> u32 {
376        let mut my_size = 0;
377        if let ::std::option::Option::Some(ref v) = self.operation {
378            match v {
379                &Mutation_oneof_operation::insert(ref v) => {
380                    let len = v.compute_size();
381                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
382                },
383                &Mutation_oneof_operation::update(ref v) => {
384                    let len = v.compute_size();
385                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
386                },
387                &Mutation_oneof_operation::insert_or_update(ref v) => {
388                    let len = v.compute_size();
389                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
390                },
391                &Mutation_oneof_operation::replace(ref v) => {
392                    let len = v.compute_size();
393                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
394                },
395                &Mutation_oneof_operation::delete(ref v) => {
396                    let len = v.compute_size();
397                    my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
398                },
399            };
400        }
401        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
402        self.cached_size.set(my_size);
403        my_size
404    }
405
406    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
407        if let ::std::option::Option::Some(ref v) = self.operation {
408            match v {
409                &Mutation_oneof_operation::insert(ref v) => {
410                    os.write_tag(1, ::protobuf::wire_format::WireTypeLengthDelimited)?;
411                    os.write_raw_varint32(v.get_cached_size())?;
412                    v.write_to_with_cached_sizes(os)?;
413                },
414                &Mutation_oneof_operation::update(ref v) => {
415                    os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
416                    os.write_raw_varint32(v.get_cached_size())?;
417                    v.write_to_with_cached_sizes(os)?;
418                },
419                &Mutation_oneof_operation::insert_or_update(ref v) => {
420                    os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
421                    os.write_raw_varint32(v.get_cached_size())?;
422                    v.write_to_with_cached_sizes(os)?;
423                },
424                &Mutation_oneof_operation::replace(ref v) => {
425                    os.write_tag(4, ::protobuf::wire_format::WireTypeLengthDelimited)?;
426                    os.write_raw_varint32(v.get_cached_size())?;
427                    v.write_to_with_cached_sizes(os)?;
428                },
429                &Mutation_oneof_operation::delete(ref v) => {
430                    os.write_tag(5, ::protobuf::wire_format::WireTypeLengthDelimited)?;
431                    os.write_raw_varint32(v.get_cached_size())?;
432                    v.write_to_with_cached_sizes(os)?;
433                },
434            };
435        }
436        os.write_unknown_fields(self.get_unknown_fields())?;
437        ::std::result::Result::Ok(())
438    }
439
440    fn get_cached_size(&self) -> u32 {
441        self.cached_size.get()
442    }
443
444    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
445        &self.unknown_fields
446    }
447
448    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
449        &mut self.unknown_fields
450    }
451
452    fn as_any(&self) -> &dyn (::std::any::Any) {
453        self as &dyn (::std::any::Any)
454    }
455    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
456        self as &mut dyn (::std::any::Any)
457    }
458    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
459        self
460    }
461
462    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
463        Self::descriptor_static()
464    }
465
466    fn new() -> Mutation {
467        Mutation::new()
468    }
469
470    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
471        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
472        descriptor.get(|| {
473            let mut fields = ::std::vec::Vec::new();
474            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, Mutation_Write>(
475                "insert",
476                Mutation::has_insert,
477                Mutation::get_insert,
478            ));
479            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, Mutation_Write>(
480                "update",
481                Mutation::has_update,
482                Mutation::get_update,
483            ));
484            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, Mutation_Write>(
485                "insert_or_update",
486                Mutation::has_insert_or_update,
487                Mutation::get_insert_or_update,
488            ));
489            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, Mutation_Write>(
490                "replace",
491                Mutation::has_replace,
492                Mutation::get_replace,
493            ));
494            fields.push(::protobuf::reflect::accessor::make_singular_message_accessor::<_, Mutation_Delete>(
495                "delete",
496                Mutation::has_delete,
497                Mutation::get_delete,
498            ));
499            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Mutation>(
500                "Mutation",
501                fields,
502                file_descriptor_proto()
503            )
504        })
505    }
506
507    fn default_instance() -> &'static Mutation {
508        static instance: ::protobuf::rt::LazyV2<Mutation> = ::protobuf::rt::LazyV2::INIT;
509        instance.get(Mutation::new)
510    }
511}
512
513impl ::protobuf::Clear for Mutation {
514    fn clear(&mut self) {
515        self.operation = ::std::option::Option::None;
516        self.operation = ::std::option::Option::None;
517        self.operation = ::std::option::Option::None;
518        self.operation = ::std::option::Option::None;
519        self.operation = ::std::option::Option::None;
520        self.unknown_fields.clear();
521    }
522}
523
524impl ::std::fmt::Debug for Mutation {
525    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
526        ::protobuf::text_format::fmt(self, f)
527    }
528}
529
530impl ::protobuf::reflect::ProtobufValue for Mutation {
531    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
532        ::protobuf::reflect::ReflectValueRef::Message(self)
533    }
534}
535
536#[derive(PartialEq,Clone,Default)]
537pub struct Mutation_Write {
538    // message fields
539    pub table: ::std::string::String,
540    pub columns: ::protobuf::RepeatedField<::std::string::String>,
541    pub values: ::protobuf::RepeatedField<::protobuf::well_known_types::ListValue>,
542    // special fields
543    pub unknown_fields: ::protobuf::UnknownFields,
544    pub cached_size: ::protobuf::CachedSize,
545}
546
547impl<'a> ::std::default::Default for &'a Mutation_Write {
548    fn default() -> &'a Mutation_Write {
549        <Mutation_Write as ::protobuf::Message>::default_instance()
550    }
551}
552
553impl Mutation_Write {
554    pub fn new() -> Mutation_Write {
555        ::std::default::Default::default()
556    }
557
558    // string table = 1;
559
560
561    pub fn get_table(&self) -> &str {
562        &self.table
563    }
564    pub fn clear_table(&mut self) {
565        self.table.clear();
566    }
567
568    // Param is passed by value, moved
569    pub fn set_table(&mut self, v: ::std::string::String) {
570        self.table = v;
571    }
572
573    // Mutable pointer to the field.
574    // If field is not initialized, it is initialized with default value first.
575    pub fn mut_table(&mut self) -> &mut ::std::string::String {
576        &mut self.table
577    }
578
579    // Take field
580    pub fn take_table(&mut self) -> ::std::string::String {
581        ::std::mem::replace(&mut self.table, ::std::string::String::new())
582    }
583
584    // repeated string columns = 2;
585
586
587    pub fn get_columns(&self) -> &[::std::string::String] {
588        &self.columns
589    }
590    pub fn clear_columns(&mut self) {
591        self.columns.clear();
592    }
593
594    // Param is passed by value, moved
595    pub fn set_columns(&mut self, v: ::protobuf::RepeatedField<::std::string::String>) {
596        self.columns = v;
597    }
598
599    // Mutable pointer to the field.
600    pub fn mut_columns(&mut self) -> &mut ::protobuf::RepeatedField<::std::string::String> {
601        &mut self.columns
602    }
603
604    // Take field
605    pub fn take_columns(&mut self) -> ::protobuf::RepeatedField<::std::string::String> {
606        ::std::mem::replace(&mut self.columns, ::protobuf::RepeatedField::new())
607    }
608
609    // repeated .google.protobuf.ListValue values = 3;
610
611
612    pub fn get_values(&self) -> &[::protobuf::well_known_types::ListValue] {
613        &self.values
614    }
615    pub fn clear_values(&mut self) {
616        self.values.clear();
617    }
618
619    // Param is passed by value, moved
620    pub fn set_values(&mut self, v: ::protobuf::RepeatedField<::protobuf::well_known_types::ListValue>) {
621        self.values = v;
622    }
623
624    // Mutable pointer to the field.
625    pub fn mut_values(&mut self) -> &mut ::protobuf::RepeatedField<::protobuf::well_known_types::ListValue> {
626        &mut self.values
627    }
628
629    // Take field
630    pub fn take_values(&mut self) -> ::protobuf::RepeatedField<::protobuf::well_known_types::ListValue> {
631        ::std::mem::replace(&mut self.values, ::protobuf::RepeatedField::new())
632    }
633}
634
635impl ::protobuf::Message for Mutation_Write {
636    fn is_initialized(&self) -> bool {
637        for v in &self.values {
638            if !v.is_initialized() {
639                return false;
640            }
641        };
642        true
643    }
644
645    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
646        while !is.eof()? {
647            let (field_number, wire_type) = is.read_tag_unpack()?;
648            match field_number {
649                1 => {
650                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.table)?;
651                },
652                2 => {
653                    ::protobuf::rt::read_repeated_string_into(wire_type, is, &mut self.columns)?;
654                },
655                3 => {
656                    ::protobuf::rt::read_repeated_message_into(wire_type, is, &mut self.values)?;
657                },
658                _ => {
659                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
660                },
661            };
662        }
663        ::std::result::Result::Ok(())
664    }
665
666    // Compute sizes of nested messages
667    #[allow(unused_variables)]
668    fn compute_size(&self) -> u32 {
669        let mut my_size = 0;
670        if !self.table.is_empty() {
671            my_size += ::protobuf::rt::string_size(1, &self.table);
672        }
673        for value in &self.columns {
674            my_size += ::protobuf::rt::string_size(2, &value);
675        };
676        for value in &self.values {
677            let len = value.compute_size();
678            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
679        };
680        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
681        self.cached_size.set(my_size);
682        my_size
683    }
684
685    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
686        if !self.table.is_empty() {
687            os.write_string(1, &self.table)?;
688        }
689        for v in &self.columns {
690            os.write_string(2, &v)?;
691        };
692        for v in &self.values {
693            os.write_tag(3, ::protobuf::wire_format::WireTypeLengthDelimited)?;
694            os.write_raw_varint32(v.get_cached_size())?;
695            v.write_to_with_cached_sizes(os)?;
696        };
697        os.write_unknown_fields(self.get_unknown_fields())?;
698        ::std::result::Result::Ok(())
699    }
700
701    fn get_cached_size(&self) -> u32 {
702        self.cached_size.get()
703    }
704
705    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
706        &self.unknown_fields
707    }
708
709    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
710        &mut self.unknown_fields
711    }
712
713    fn as_any(&self) -> &dyn (::std::any::Any) {
714        self as &dyn (::std::any::Any)
715    }
716    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
717        self as &mut dyn (::std::any::Any)
718    }
719    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
720        self
721    }
722
723    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
724        Self::descriptor_static()
725    }
726
727    fn new() -> Mutation_Write {
728        Mutation_Write::new()
729    }
730
731    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
732        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
733        descriptor.get(|| {
734            let mut fields = ::std::vec::Vec::new();
735            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
736                "table",
737                |m: &Mutation_Write| { &m.table },
738                |m: &mut Mutation_Write| { &mut m.table },
739            ));
740            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
741                "columns",
742                |m: &Mutation_Write| { &m.columns },
743                |m: &mut Mutation_Write| { &mut m.columns },
744            ));
745            fields.push(::protobuf::reflect::accessor::make_repeated_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<::protobuf::well_known_types::ListValue>>(
746                "values",
747                |m: &Mutation_Write| { &m.values },
748                |m: &mut Mutation_Write| { &mut m.values },
749            ));
750            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Mutation_Write>(
751                "Mutation.Write",
752                fields,
753                file_descriptor_proto()
754            )
755        })
756    }
757
758    fn default_instance() -> &'static Mutation_Write {
759        static instance: ::protobuf::rt::LazyV2<Mutation_Write> = ::protobuf::rt::LazyV2::INIT;
760        instance.get(Mutation_Write::new)
761    }
762}
763
764impl ::protobuf::Clear for Mutation_Write {
765    fn clear(&mut self) {
766        self.table.clear();
767        self.columns.clear();
768        self.values.clear();
769        self.unknown_fields.clear();
770    }
771}
772
773impl ::std::fmt::Debug for Mutation_Write {
774    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
775        ::protobuf::text_format::fmt(self, f)
776    }
777}
778
779impl ::protobuf::reflect::ProtobufValue for Mutation_Write {
780    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
781        ::protobuf::reflect::ReflectValueRef::Message(self)
782    }
783}
784
785#[derive(PartialEq,Clone,Default)]
786pub struct Mutation_Delete {
787    // message fields
788    pub table: ::std::string::String,
789    pub key_set: ::protobuf::SingularPtrField<super::keys::KeySet>,
790    // special fields
791    pub unknown_fields: ::protobuf::UnknownFields,
792    pub cached_size: ::protobuf::CachedSize,
793}
794
795impl<'a> ::std::default::Default for &'a Mutation_Delete {
796    fn default() -> &'a Mutation_Delete {
797        <Mutation_Delete as ::protobuf::Message>::default_instance()
798    }
799}
800
801impl Mutation_Delete {
802    pub fn new() -> Mutation_Delete {
803        ::std::default::Default::default()
804    }
805
806    // string table = 1;
807
808
809    pub fn get_table(&self) -> &str {
810        &self.table
811    }
812    pub fn clear_table(&mut self) {
813        self.table.clear();
814    }
815
816    // Param is passed by value, moved
817    pub fn set_table(&mut self, v: ::std::string::String) {
818        self.table = v;
819    }
820
821    // Mutable pointer to the field.
822    // If field is not initialized, it is initialized with default value first.
823    pub fn mut_table(&mut self) -> &mut ::std::string::String {
824        &mut self.table
825    }
826
827    // Take field
828    pub fn take_table(&mut self) -> ::std::string::String {
829        ::std::mem::replace(&mut self.table, ::std::string::String::new())
830    }
831
832    // .google.spanner.v1.KeySet key_set = 2;
833
834
835    pub fn get_key_set(&self) -> &super::keys::KeySet {
836        self.key_set.as_ref().unwrap_or_else(|| <super::keys::KeySet as ::protobuf::Message>::default_instance())
837    }
838    pub fn clear_key_set(&mut self) {
839        self.key_set.clear();
840    }
841
842    pub fn has_key_set(&self) -> bool {
843        self.key_set.is_some()
844    }
845
846    // Param is passed by value, moved
847    pub fn set_key_set(&mut self, v: super::keys::KeySet) {
848        self.key_set = ::protobuf::SingularPtrField::some(v);
849    }
850
851    // Mutable pointer to the field.
852    // If field is not initialized, it is initialized with default value first.
853    pub fn mut_key_set(&mut self) -> &mut super::keys::KeySet {
854        if self.key_set.is_none() {
855            self.key_set.set_default();
856        }
857        self.key_set.as_mut().unwrap()
858    }
859
860    // Take field
861    pub fn take_key_set(&mut self) -> super::keys::KeySet {
862        self.key_set.take().unwrap_or_else(|| super::keys::KeySet::new())
863    }
864}
865
866impl ::protobuf::Message for Mutation_Delete {
867    fn is_initialized(&self) -> bool {
868        for v in &self.key_set {
869            if !v.is_initialized() {
870                return false;
871            }
872        };
873        true
874    }
875
876    fn merge_from(&mut self, is: &mut ::protobuf::CodedInputStream<'_>) -> ::protobuf::ProtobufResult<()> {
877        while !is.eof()? {
878            let (field_number, wire_type) = is.read_tag_unpack()?;
879            match field_number {
880                1 => {
881                    ::protobuf::rt::read_singular_proto3_string_into(wire_type, is, &mut self.table)?;
882                },
883                2 => {
884                    ::protobuf::rt::read_singular_message_into(wire_type, is, &mut self.key_set)?;
885                },
886                _ => {
887                    ::protobuf::rt::read_unknown_or_skip_group(field_number, wire_type, is, self.mut_unknown_fields())?;
888                },
889            };
890        }
891        ::std::result::Result::Ok(())
892    }
893
894    // Compute sizes of nested messages
895    #[allow(unused_variables)]
896    fn compute_size(&self) -> u32 {
897        let mut my_size = 0;
898        if !self.table.is_empty() {
899            my_size += ::protobuf::rt::string_size(1, &self.table);
900        }
901        if let Some(ref v) = self.key_set.as_ref() {
902            let len = v.compute_size();
903            my_size += 1 + ::protobuf::rt::compute_raw_varint32_size(len) + len;
904        }
905        my_size += ::protobuf::rt::unknown_fields_size(self.get_unknown_fields());
906        self.cached_size.set(my_size);
907        my_size
908    }
909
910    fn write_to_with_cached_sizes(&self, os: &mut ::protobuf::CodedOutputStream<'_>) -> ::protobuf::ProtobufResult<()> {
911        if !self.table.is_empty() {
912            os.write_string(1, &self.table)?;
913        }
914        if let Some(ref v) = self.key_set.as_ref() {
915            os.write_tag(2, ::protobuf::wire_format::WireTypeLengthDelimited)?;
916            os.write_raw_varint32(v.get_cached_size())?;
917            v.write_to_with_cached_sizes(os)?;
918        }
919        os.write_unknown_fields(self.get_unknown_fields())?;
920        ::std::result::Result::Ok(())
921    }
922
923    fn get_cached_size(&self) -> u32 {
924        self.cached_size.get()
925    }
926
927    fn get_unknown_fields(&self) -> &::protobuf::UnknownFields {
928        &self.unknown_fields
929    }
930
931    fn mut_unknown_fields(&mut self) -> &mut ::protobuf::UnknownFields {
932        &mut self.unknown_fields
933    }
934
935    fn as_any(&self) -> &dyn (::std::any::Any) {
936        self as &dyn (::std::any::Any)
937    }
938    fn as_any_mut(&mut self) -> &mut dyn (::std::any::Any) {
939        self as &mut dyn (::std::any::Any)
940    }
941    fn into_any(self: ::std::boxed::Box<Self>) -> ::std::boxed::Box<dyn (::std::any::Any)> {
942        self
943    }
944
945    fn descriptor(&self) -> &'static ::protobuf::reflect::MessageDescriptor {
946        Self::descriptor_static()
947    }
948
949    fn new() -> Mutation_Delete {
950        Mutation_Delete::new()
951    }
952
953    fn descriptor_static() -> &'static ::protobuf::reflect::MessageDescriptor {
954        static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::MessageDescriptor> = ::protobuf::rt::LazyV2::INIT;
955        descriptor.get(|| {
956            let mut fields = ::std::vec::Vec::new();
957            fields.push(::protobuf::reflect::accessor::make_simple_field_accessor::<_, ::protobuf::types::ProtobufTypeString>(
958                "table",
959                |m: &Mutation_Delete| { &m.table },
960                |m: &mut Mutation_Delete| { &mut m.table },
961            ));
962            fields.push(::protobuf::reflect::accessor::make_singular_ptr_field_accessor::<_, ::protobuf::types::ProtobufTypeMessage<super::keys::KeySet>>(
963                "key_set",
964                |m: &Mutation_Delete| { &m.key_set },
965                |m: &mut Mutation_Delete| { &mut m.key_set },
966            ));
967            ::protobuf::reflect::MessageDescriptor::new_pb_name::<Mutation_Delete>(
968                "Mutation.Delete",
969                fields,
970                file_descriptor_proto()
971            )
972        })
973    }
974
975    fn default_instance() -> &'static Mutation_Delete {
976        static instance: ::protobuf::rt::LazyV2<Mutation_Delete> = ::protobuf::rt::LazyV2::INIT;
977        instance.get(Mutation_Delete::new)
978    }
979}
980
981impl ::protobuf::Clear for Mutation_Delete {
982    fn clear(&mut self) {
983        self.table.clear();
984        self.key_set.clear();
985        self.unknown_fields.clear();
986    }
987}
988
989impl ::std::fmt::Debug for Mutation_Delete {
990    fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
991        ::protobuf::text_format::fmt(self, f)
992    }
993}
994
995impl ::protobuf::reflect::ProtobufValue for Mutation_Delete {
996    fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef {
997        ::protobuf::reflect::ReflectValueRef::Message(self)
998    }
999}
1000
1001static file_descriptor_proto_data: &'static [u8] = b"\
1002    \n\x20google/spanner/v1/mutation.proto\x12\x11google.spanner.v1\x1a\x1fg\
1003    oogle/api/field_behavior.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\
1004    \x1cgoogle/spanner/v1/keys.proto\"\xad\x04\n\x08Mutation\x12;\n\x06inser\
1005    t\x18\x01\x20\x01(\x0b2!.google.spanner.v1.Mutation.WriteH\0R\x06insert\
1006    \x12;\n\x06update\x18\x02\x20\x01(\x0b2!.google.spanner.v1.Mutation.Writ\
1007    eH\0R\x06update\x12M\n\x10insert_or_update\x18\x03\x20\x01(\x0b2!.google\
1008    .spanner.v1.Mutation.WriteH\0R\x0einsertOrUpdate\x12=\n\x07replace\x18\
1009    \x04\x20\x01(\x0b2!.google.spanner.v1.Mutation.WriteH\0R\x07replace\x12<\
1010    \n\x06delete\x18\x05\x20\x01(\x0b2\".google.spanner.v1.Mutation.DeleteH\
1011    \0R\x06delete\x1ap\n\x05Write\x12\x19\n\x05table\x18\x01\x20\x01(\tR\x05\
1012    tableB\x03\xe0A\x02\x12\x18\n\x07columns\x18\x02\x20\x03(\tR\x07columns\
1013    \x122\n\x06values\x18\x03\x20\x03(\x0b2\x1a.google.protobuf.ListValueR\
1014    \x06values\x1a\\\n\x06Delete\x12\x19\n\x05table\x18\x01\x20\x01(\tR\x05t\
1015    ableB\x03\xe0A\x02\x127\n\x07key_set\x18\x02\x20\x01(\x0b2\x19.google.sp\
1016    anner.v1.KeySetR\x06keySetB\x03\xe0A\x02B\x0b\n\toperationB\xb0\x01\n\
1017    \x15com.google.spanner.v1B\rMutationProtoP\x01Z5cloud.google.com/go/span\
1018    ner/apiv1/spannerpb;spannerpb\xaa\x02\x17Google.Cloud.Spanner.V1\xca\x02\
1019    \x17Google\\Cloud\\Spanner\\V1\xea\x02\x1aGoogle::Cloud::Spanner::V1J\
1020    \x88&\n\x06\x12\x04\x0e\0j\x01\n\xbc\x04\n\x01\x0c\x12\x03\x0e\0\x122\
1021    \xb1\x04\x20Copyright\x202022\x20Google\x20LLC\n\n\x20Licensed\x20under\
1022    \x20the\x20Apache\x20License,\x20Version\x202.0\x20(the\x20\"License\");\
1023    \n\x20you\x20may\x20not\x20use\x20this\x20file\x20except\x20in\x20compli\
1024    ance\x20with\x20the\x20License.\n\x20You\x20may\x20obtain\x20a\x20copy\
1025    \x20of\x20the\x20License\x20at\n\n\x20\x20\x20\x20\x20http://www.apache.\
1026    org/licenses/LICENSE-2.0\n\n\x20Unless\x20required\x20by\x20applicable\
1027    \x20law\x20or\x20agreed\x20to\x20in\x20writing,\x20software\n\x20distrib\
1028    uted\x20under\x20the\x20License\x20is\x20distributed\x20on\x20an\x20\"AS\
1029    \x20IS\"\x20BASIS,\n\x20WITHOUT\x20WARRANTIES\x20OR\x20CONDITIONS\x20OF\
1030    \x20ANY\x20KIND,\x20either\x20express\x20or\x20implied.\n\x20See\x20the\
1031    \x20License\x20for\x20the\x20specific\x20language\x20governing\x20permis\
1032    sions\x20and\n\x20limitations\x20under\x20the\x20License.\n\n\x08\n\x01\
1033    \x02\x12\x03\x10\0\x1a\n\t\n\x02\x03\0\x12\x03\x12\0)\n\t\n\x02\x03\x01\
1034    \x12\x03\x13\0&\n\t\n\x02\x03\x02\x12\x03\x14\0&\n\x08\n\x01\x08\x12\x03\
1035    \x16\04\n\t\n\x02\x08%\x12\x03\x16\04\n\x08\n\x01\x08\x12\x03\x17\0L\n\t\
1036    \n\x02\x08\x0b\x12\x03\x17\0L\n\x08\n\x01\x08\x12\x03\x18\0\"\n\t\n\x02\
1037    \x08\n\x12\x03\x18\0\"\n\x08\n\x01\x08\x12\x03\x19\0.\n\t\n\x02\x08\x08\
1038    \x12\x03\x19\0.\n\x08\n\x01\x08\x12\x03\x1a\0.\n\t\n\x02\x08\x01\x12\x03\
1039    \x1a\0.\n\x08\n\x01\x08\x12\x03\x1b\04\n\t\n\x02\x08)\x12\x03\x1b\04\n\
1040    \x08\n\x01\x08\x12\x03\x1c\03\n\t\n\x02\x08-\x12\x03\x1c\03\n\xbe\x01\n\
1041    \x02\x04\0\x12\x04!\0j\x01\x1a\xb1\x01\x20A\x20modification\x20to\x20one\
1042    \x20or\x20more\x20Cloud\x20Spanner\x20rows.\x20\x20Mutations\x20can\x20b\
1043    e\n\x20applied\x20to\x20a\x20Cloud\x20Spanner\x20database\x20by\x20sendi\
1044    ng\x20them\x20in\x20a\n\x20[Commit][google.spanner.v1.Spanner.Commit]\
1045    \x20call.\n\n\n\n\x03\x04\0\x01\x12\x03!\x08\x10\n\xf7\x01\n\x04\x04\0\
1046    \x03\0\x12\x04$\x028\x03\x1a\xe8\x01\x20Arguments\x20to\x20[insert][goog\
1047    le.spanner.v1.Mutation.insert],\x20[update][google.spanner.v1.Mutation.u\
1048    pdate],\x20[insert_or_update][google.spanner.v1.Mutation.insert_or_updat\
1049    e],\x20and\n\x20[replace][google.spanner.v1.Mutation.replace]\x20operati\
1050    ons.\n\n\x0c\n\x05\x04\0\x03\0\x01\x12\x03$\n\x0f\n@\n\x06\x04\0\x03\0\
1051    \x02\0\x12\x03&\x04>\x1a1\x20Required.\x20The\x20table\x20whose\x20rows\
1052    \x20will\x20be\x20written.\n\n\x0e\n\x07\x04\0\x03\0\x02\0\x05\x12\x03&\
1053    \x04\n\n\x0e\n\x07\x04\0\x03\0\x02\0\x01\x12\x03&\x0b\x10\n\x0e\n\x07\
1054    \x04\0\x03\0\x02\0\x03\x12\x03&\x13\x14\n\x0e\n\x07\x04\0\x03\0\x02\0\
1055    \x08\x12\x03&\x15=\n\x11\n\n\x04\0\x03\0\x02\0\x08\x9c\x08\0\x12\x03&\
1056    \x16<\n\x82\x02\n\x06\x04\0\x03\0\x02\x01\x12\x03-\x04\x20\x1a\xf2\x01\
1057    \x20The\x20names\x20of\x20the\x20columns\x20in\x20[table][google.spanner\
1058    .v1.Mutation.Write.table]\x20to\x20be\x20written.\n\n\x20The\x20list\x20\
1059    of\x20columns\x20must\x20contain\x20enough\x20columns\x20to\x20allow\n\
1060    \x20Cloud\x20Spanner\x20to\x20derive\x20values\x20for\x20all\x20primary\
1061    \x20key\x20columns\x20in\x20the\n\x20row(s)\x20to\x20be\x20modified.\n\n\
1062    \x0e\n\x07\x04\0\x03\0\x02\x01\x04\x12\x03-\x04\x0c\n\x0e\n\x07\x04\0\
1063    \x03\0\x02\x01\x05\x12\x03-\r\x13\n\x0e\n\x07\x04\0\x03\0\x02\x01\x01\
1064    \x12\x03-\x14\x1b\n\x0e\n\x07\x04\0\x03\0\x02\x01\x03\x12\x03-\x1e\x1f\n\
1065    \xf8\x04\n\x06\x04\0\x03\0\x02\x02\x12\x037\x042\x1a\xe8\x04\x20The\x20v\
1066    alues\x20to\x20be\x20written.\x20`values`\x20can\x20contain\x20more\x20t\
1067    han\x20one\n\x20list\x20of\x20values.\x20If\x20it\x20does,\x20then\x20mu\
1068    ltiple\x20rows\x20are\x20written,\x20one\n\x20for\x20each\x20entry\x20in\
1069    \x20`values`.\x20Each\x20list\x20in\x20`values`\x20must\x20have\n\x20exa\
1070    ctly\x20as\x20many\x20entries\x20as\x20there\x20are\x20entries\x20in\x20\
1071    [columns][google.spanner.v1.Mutation.Write.columns]\n\x20above.\x20Sendi\
1072    ng\x20multiple\x20lists\x20is\x20equivalent\x20to\x20sending\x20multiple\
1073    \n\x20`Mutation`s,\x20each\x20containing\x20one\x20`values`\x20entry\x20\
1074    and\x20repeating\n\x20[table][google.spanner.v1.Mutation.Write.table]\
1075    \x20and\x20[columns][google.spanner.v1.Mutation.Write.columns].\x20Indiv\
1076    idual\x20values\x20in\x20each\x20list\x20are\n\x20encoded\x20as\x20descr\
1077    ibed\x20[here][google.spanner.v1.TypeCode].\n\n\x0e\n\x07\x04\0\x03\0\
1078    \x02\x02\x04\x12\x037\x04\x0c\n\x0e\n\x07\x04\0\x03\0\x02\x02\x06\x12\
1079    \x037\r&\n\x0e\n\x07\x04\0\x03\0\x02\x02\x01\x12\x037'-\n\x0e\n\x07\x04\
1080    \0\x03\0\x02\x02\x03\x12\x03701\nT\n\x04\x04\0\x03\x01\x12\x04;\x02F\x03\
1081    \x1aF\x20Arguments\x20to\x20[delete][google.spanner.v1.Mutation.delete]\
1082    \x20operations.\n\n\x0c\n\x05\x04\0\x03\x01\x01\x12\x03;\n\x10\n@\n\x06\
1083    \x04\0\x03\x01\x02\0\x12\x03=\x04>\x1a1\x20Required.\x20The\x20table\x20\
1084    whose\x20rows\x20will\x20be\x20deleted.\n\n\x0e\n\x07\x04\0\x03\x01\x02\
1085    \0\x05\x12\x03=\x04\n\n\x0e\n\x07\x04\0\x03\x01\x02\0\x01\x12\x03=\x0b\
1086    \x10\n\x0e\n\x07\x04\0\x03\x01\x02\0\x03\x12\x03=\x13\x14\n\x0e\n\x07\
1087    \x04\0\x03\x01\x02\0\x08\x12\x03=\x15=\n\x11\n\n\x04\0\x03\x01\x02\0\x08\
1088    \x9c\x08\0\x12\x03=\x16<\n\x94\x03\n\x06\x04\0\x03\x01\x02\x01\x12\x03E\
1089    \x04@\x1a\x84\x03\x20Required.\x20The\x20primary\x20keys\x20of\x20the\
1090    \x20rows\x20within\x20[table][google.spanner.v1.Mutation.Delete.table]\
1091    \x20to\x20delete.\x20\x20The\n\x20primary\x20keys\x20must\x20be\x20speci\
1092    fied\x20in\x20the\x20order\x20in\x20which\x20they\x20appear\x20in\x20the\
1093    \n\x20`PRIMARY\x20KEY()`\x20clause\x20of\x20the\x20table's\x20equivalent\
1094    \x20DDL\x20statement\x20(the\x20DDL\n\x20statement\x20used\x20to\x20crea\
1095    te\x20the\x20table).\n\x20Delete\x20is\x20idempotent.\x20The\x20transact\
1096    ion\x20will\x20succeed\x20even\x20if\x20some\x20or\x20all\n\x20rows\x20d\
1097    o\x20not\x20exist.\n\n\x0e\n\x07\x04\0\x03\x01\x02\x01\x06\x12\x03E\x04\
1098    \n\n\x0e\n\x07\x04\0\x03\x01\x02\x01\x01\x12\x03E\x0b\x12\n\x0e\n\x07\
1099    \x04\0\x03\x01\x02\x01\x03\x12\x03E\x15\x16\n\x0e\n\x07\x04\0\x03\x01\
1100    \x02\x01\x08\x12\x03E\x17?\n\x11\n\n\x04\0\x03\x01\x02\x01\x08\x9c\x08\0\
1101    \x12\x03E\x18>\n3\n\x04\x04\0\x08\0\x12\x04I\x02i\x03\x1a%\x20Required.\
1102    \x20The\x20operation\x20to\x20perform.\n\n\x0c\n\x05\x04\0\x08\0\x01\x12\
1103    \x03I\x08\x11\n\x89\x01\n\x04\x04\0\x02\0\x12\x03L\x04\x15\x1a|\x20Inser\
1104    t\x20new\x20rows\x20in\x20a\x20table.\x20If\x20any\x20of\x20the\x20rows\
1105    \x20already\x20exist,\n\x20the\x20write\x20or\x20transaction\x20fails\
1106    \x20with\x20error\x20`ALREADY_EXISTS`.\n\n\x0c\n\x05\x04\0\x02\0\x06\x12\
1107    \x03L\x04\t\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03L\n\x10\n\x0c\n\x05\x04\0\
1108    \x02\0\x03\x12\x03L\x13\x14\n\x89\x01\n\x04\x04\0\x02\x01\x12\x03P\x04\
1109    \x15\x1a|\x20Update\x20existing\x20rows\x20in\x20a\x20table.\x20If\x20an\
1110    y\x20of\x20the\x20rows\x20does\x20not\n\x20already\x20exist,\x20the\x20t\
1111    ransaction\x20fails\x20with\x20error\x20`NOT_FOUND`.\n\n\x0c\n\x05\x04\0\
1112    \x02\x01\x06\x12\x03P\x04\t\n\x0c\n\x05\x04\0\x02\x01\x01\x12\x03P\n\x10\
1113    \n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03P\x13\x14\n\x85\x04\n\x04\x04\0\
1114    \x02\x02\x12\x03Y\x04\x1f\x1a\xf7\x03\x20Like\x20[insert][google.spanner\
1115    .v1.Mutation.insert],\x20except\x20that\x20if\x20the\x20row\x20already\
1116    \x20exists,\x20then\n\x20its\x20column\x20values\x20are\x20overwritten\
1117    \x20with\x20the\x20ones\x20provided.\x20Any\n\x20column\x20values\x20not\
1118    \x20explicitly\x20written\x20are\x20preserved.\n\n\x20When\x20using\x20[\
1119    insert_or_update][google.spanner.v1.Mutation.insert_or_update],\x20just\
1120    \x20as\x20when\x20using\x20[insert][google.spanner.v1.Mutation.insert],\
1121    \x20all\x20`NOT\n\x20NULL`\x20columns\x20in\x20the\x20table\x20must\x20b\
1122    e\x20given\x20a\x20value.\x20This\x20holds\x20true\n\x20even\x20when\x20\
1123    the\x20row\x20already\x20exists\x20and\x20will\x20therefore\x20actually\
1124    \x20be\x20updated.\n\n\x0c\n\x05\x04\0\x02\x02\x06\x12\x03Y\x04\t\n\x0c\
1125    \n\x05\x04\0\x02\x02\x01\x12\x03Y\n\x1a\n\x0c\n\x05\x04\0\x02\x02\x03\
1126    \x12\x03Y\x1d\x1e\n\x9e\x04\n\x04\x04\0\x02\x03\x12\x03d\x04\x16\x1a\x90\
1127    \x04\x20Like\x20[insert][google.spanner.v1.Mutation.insert],\x20except\
1128    \x20that\x20if\x20the\x20row\x20already\x20exists,\x20it\x20is\n\x20dele\
1129    ted,\x20and\x20the\x20column\x20values\x20provided\x20are\x20inserted\n\
1130    \x20instead.\x20Unlike\x20[insert_or_update][google.spanner.v1.Mutation.\
1131    insert_or_update],\x20this\x20means\x20any\x20values\x20not\n\x20explici\
1132    tly\x20written\x20become\x20`NULL`.\n\n\x20In\x20an\x20interleaved\x20ta\
1133    ble,\x20if\x20you\x20create\x20the\x20child\x20table\x20with\x20the\n\
1134    \x20`ON\x20DELETE\x20CASCADE`\x20annotation,\x20then\x20replacing\x20a\
1135    \x20parent\x20row\n\x20also\x20deletes\x20the\x20child\x20rows.\x20Other\
1136    wise,\x20you\x20must\x20delete\x20the\n\x20child\x20rows\x20before\x20yo\
1137    u\x20replace\x20the\x20parent\x20row.\n\n\x0c\n\x05\x04\0\x02\x03\x06\
1138    \x12\x03d\x04\t\n\x0c\n\x05\x04\0\x02\x03\x01\x12\x03d\n\x11\n\x0c\n\x05\
1139    \x04\0\x02\x03\x03\x12\x03d\x14\x15\n^\n\x04\x04\0\x02\x04\x12\x03h\x04\
1140    \x16\x1aQ\x20Delete\x20rows\x20from\x20a\x20table.\x20Succeeds\x20whethe\
1141    r\x20or\x20not\x20the\x20named\n\x20rows\x20were\x20present.\n\n\x0c\n\
1142    \x05\x04\0\x02\x04\x06\x12\x03h\x04\n\n\x0c\n\x05\x04\0\x02\x04\x01\x12\
1143    \x03h\x0b\x11\n\x0c\n\x05\x04\0\x02\x04\x03\x12\x03h\x14\x15b\x06proto3\
1144";
1145
1146static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;
1147
1148fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto {
1149    ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap()
1150}
1151
1152pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto {
1153    file_descriptor_proto_lazy.get(|| {
1154        parse_descriptor_proto()
1155    })
1156}