google-cloud-spanner 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. checksums.yaml +7 -0
  2. data/lib/google-cloud-spanner.rb +106 -0
  3. data/lib/google/cloud/spanner.rb +382 -0
  4. data/lib/google/cloud/spanner/admin/database/v1.rb +17 -0
  5. data/lib/google/cloud/spanner/admin/database/v1/database_admin_client.rb +703 -0
  6. data/lib/google/cloud/spanner/admin/database/v1/database_admin_client_config.json +73 -0
  7. data/lib/google/cloud/spanner/admin/database/v1/doc/google/iam/v1/policy.rb +139 -0
  8. data/lib/google/cloud/spanner/admin/database/v1/doc/google/protobuf/any.rb +114 -0
  9. data/lib/google/cloud/spanner/admin/database/v1/doc/google/rpc/status.rb +83 -0
  10. data/lib/google/cloud/spanner/admin/database/v1/doc/google/spanner/admin/database/v1/spanner_database_admin.rb +188 -0
  11. data/lib/google/cloud/spanner/admin/instance/v1.rb +17 -0
  12. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/iam/v1/policy.rb +139 -0
  13. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/protobuf/any.rb +114 -0
  14. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/protobuf/field_mask.rb +223 -0
  15. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/rpc/status.rb +83 -0
  16. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/spanner/admin/instance/v1/spanner_instance_admin.rb +268 -0
  17. data/lib/google/cloud/spanner/admin/instance/v1/instance_admin_client.rb +868 -0
  18. data/lib/google/cloud/spanner/admin/instance/v1/instance_admin_client_config.json +78 -0
  19. data/lib/google/cloud/spanner/client.rb +1034 -0
  20. data/lib/google/cloud/spanner/commit.rb +351 -0
  21. data/lib/google/cloud/spanner/convert.rb +311 -0
  22. data/lib/google/cloud/spanner/credentials.rb +32 -0
  23. data/lib/google/cloud/spanner/data.rb +199 -0
  24. data/lib/google/cloud/spanner/database.rb +377 -0
  25. data/lib/google/cloud/spanner/database/job.rb +179 -0
  26. data/lib/google/cloud/spanner/database/list.rb +171 -0
  27. data/lib/google/cloud/spanner/errors.rb +73 -0
  28. data/lib/google/cloud/spanner/fields.rb +252 -0
  29. data/lib/google/cloud/spanner/instance.rb +472 -0
  30. data/lib/google/cloud/spanner/instance/config.rb +99 -0
  31. data/lib/google/cloud/spanner/instance/config/list.rb +171 -0
  32. data/lib/google/cloud/spanner/instance/job.rb +197 -0
  33. data/lib/google/cloud/spanner/instance/list.rb +167 -0
  34. data/lib/google/cloud/spanner/policy.rb +201 -0
  35. data/lib/google/cloud/spanner/pool.rb +279 -0
  36. data/lib/google/cloud/spanner/project.rb +480 -0
  37. data/lib/google/cloud/spanner/range.rb +99 -0
  38. data/lib/google/cloud/spanner/results.rb +280 -0
  39. data/lib/google/cloud/spanner/service.rb +458 -0
  40. data/lib/google/cloud/spanner/session.rb +565 -0
  41. data/lib/google/cloud/spanner/snapshot.rb +260 -0
  42. data/lib/google/cloud/spanner/transaction.rb +533 -0
  43. data/lib/google/cloud/spanner/v1.rb +17 -0
  44. data/lib/google/cloud/spanner/v1/doc/google/protobuf/duration.rb +77 -0
  45. data/lib/google/cloud/spanner/v1/doc/google/protobuf/struct.rb +73 -0
  46. data/lib/google/cloud/spanner/v1/doc/google/protobuf/timestamp.rb +81 -0
  47. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/keys.rb +148 -0
  48. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/mutation.rb +80 -0
  49. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/query_plan.rb +120 -0
  50. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/result_set.rb +175 -0
  51. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/spanner.rb +206 -0
  52. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/transaction.rb +351 -0
  53. data/lib/google/cloud/spanner/v1/spanner_client.rb +850 -0
  54. data/lib/google/cloud/spanner/v1/spanner_client_config.json +78 -0
  55. data/lib/google/cloud/spanner/version.rb +22 -0
  56. data/lib/google/spanner/admin/database/v1/spanner_database_admin_pb.rb +85 -0
  57. data/lib/google/spanner/admin/database/v1/spanner_database_admin_services_pb.rb +95 -0
  58. data/lib/google/spanner/admin/instance/v1/spanner_instance_admin_pb.rb +106 -0
  59. data/lib/google/spanner/admin/instance/v1/spanner_instance_admin_services_pb.rb +180 -0
  60. data/lib/google/spanner/v1/keys_pb.rb +33 -0
  61. data/lib/google/spanner/v1/mutation_pb.rb +38 -0
  62. data/lib/google/spanner/v1/query_plan_pb.rb +47 -0
  63. data/lib/google/spanner/v1/result_set_pb.rb +43 -0
  64. data/lib/google/spanner/v1/spanner_pb.rb +90 -0
  65. data/lib/google/spanner/v1/spanner_services_pb.rb +131 -0
  66. data/lib/google/spanner/v1/transaction_pb.rb +51 -0
  67. data/lib/google/spanner/v1/type_pb.rb +43 -0
  68. metadata +309 -0
@@ -0,0 +1,17 @@
1
+
2
+ # Copyright 2016 Google Inc. All rights reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+
17
+ require "google/cloud/spanner/v1/spanner_client"
@@ -0,0 +1,77 @@
1
+ # Copyright 2017, Google Inc. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ module Google
16
+ module Protobuf
17
+ # A Duration represents a signed, fixed-length span of time represented
18
+ # as a count of seconds and fractions of seconds at nanosecond
19
+ # resolution. It is independent of any calendar and concepts like "day"
20
+ # or "month". It is related to Timestamp in that the difference between
21
+ # two Timestamp values is a Duration and it can be added or subtracted
22
+ # from a Timestamp. Range is approximately +-10,000 years.
23
+ #
24
+ # Example 1: Compute Duration from two Timestamps in pseudo code.
25
+ #
26
+ # Timestamp start = ...;
27
+ # Timestamp end = ...;
28
+ # Duration duration = ...;
29
+ #
30
+ # duration.seconds = end.seconds - start.seconds;
31
+ # duration.nanos = end.nanos - start.nanos;
32
+ #
33
+ # if (duration.seconds < 0 && duration.nanos > 0) {
34
+ # duration.seconds += 1;
35
+ # duration.nanos -= 1000000000;
36
+ # } else if (durations.seconds > 0 && duration.nanos < 0) {
37
+ # duration.seconds -= 1;
38
+ # duration.nanos += 1000000000;
39
+ # }
40
+ #
41
+ # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
42
+ #
43
+ # Timestamp start = ...;
44
+ # Duration duration = ...;
45
+ # Timestamp end = ...;
46
+ #
47
+ # end.seconds = start.seconds + duration.seconds;
48
+ # end.nanos = start.nanos + duration.nanos;
49
+ #
50
+ # if (end.nanos < 0) {
51
+ # end.seconds -= 1;
52
+ # end.nanos += 1000000000;
53
+ # } else if (end.nanos >= 1000000000) {
54
+ # end.seconds += 1;
55
+ # end.nanos -= 1000000000;
56
+ # }
57
+ #
58
+ # Example 3: Compute Duration from datetime.timedelta in Python.
59
+ #
60
+ # td = datetime.timedelta(days=3, minutes=10)
61
+ # duration = Duration()
62
+ # duration.FromTimedelta(td)
63
+ # @!attribute [rw] seconds
64
+ # @return [Integer]
65
+ # Signed seconds of the span of time. Must be from -315,576,000,000
66
+ # to +315,576,000,000 inclusive.
67
+ # @!attribute [rw] nanos
68
+ # @return [Integer]
69
+ # Signed fractions of a second at nanosecond resolution of the span
70
+ # of time. Durations less than one second are represented with a 0
71
+ # +seconds+ field and a positive or negative +nanos+ field. For durations
72
+ # of one second or more, a non-zero value for the +nanos+ field must be
73
+ # of the same sign as the +seconds+ field. Must be from -999,999,999
74
+ # to +999,999,999 inclusive.
75
+ class Duration; end
76
+ end
77
+ end
@@ -0,0 +1,73 @@
1
+ # Copyright 2017, Google Inc. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ module Google
16
+ module Protobuf
17
+ # +Struct+ represents a structured data value, consisting of fields
18
+ # which map to dynamically typed values. In some languages, +Struct+
19
+ # might be supported by a native representation. For example, in
20
+ # scripting languages like JS a struct is represented as an
21
+ # object. The details of that representation are described together
22
+ # with the proto support for the language.
23
+ #
24
+ # The JSON representation for +Struct+ is JSON object.
25
+ # @!attribute [rw] fields
26
+ # @return [Hash{String => Google::Protobuf::Value}]
27
+ # Unordered map of dynamically typed values.
28
+ class Struct; end
29
+
30
+ # +Value+ represents a dynamically typed value which can be either
31
+ # null, a number, a string, a boolean, a recursive struct value, or a
32
+ # list of values. A producer of value is expected to set one of that
33
+ # variants, absence of any variant indicates an error.
34
+ #
35
+ # The JSON representation for +Value+ is JSON value.
36
+ # @!attribute [rw] null_value
37
+ # @return [Google::Protobuf::NullValue]
38
+ # Represents a null value.
39
+ # @!attribute [rw] number_value
40
+ # @return [Float]
41
+ # Represents a double value.
42
+ # @!attribute [rw] string_value
43
+ # @return [String]
44
+ # Represents a string value.
45
+ # @!attribute [rw] bool_value
46
+ # @return [true, false]
47
+ # Represents a boolean value.
48
+ # @!attribute [rw] struct_value
49
+ # @return [Google::Protobuf::Struct]
50
+ # Represents a structured value.
51
+ # @!attribute [rw] list_value
52
+ # @return [Google::Protobuf::ListValue]
53
+ # Represents a repeated +Value+.
54
+ class Value; end
55
+
56
+ # +ListValue+ is a wrapper around a repeated field of values.
57
+ #
58
+ # The JSON representation for +ListValue+ is JSON array.
59
+ # @!attribute [rw] values
60
+ # @return [Array<Google::Protobuf::Value>]
61
+ # Repeated field of dynamically typed values.
62
+ class ListValue; end
63
+
64
+ # +NullValue+ is a singleton enumeration to represent the null value for the
65
+ # +Value+ type union.
66
+ #
67
+ # The JSON representation for +NullValue+ is JSON +null+.
68
+ module NullValue
69
+ # Null value.
70
+ NULL_VALUE = 0
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,81 @@
1
+ # Copyright 2017, Google Inc. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ module Google
16
+ module Protobuf
17
+ # A Timestamp represents a point in time independent of any time zone
18
+ # or calendar, represented as seconds and fractions of seconds at
19
+ # nanosecond resolution in UTC Epoch time. It is encoded using the
20
+ # Proleptic Gregorian Calendar which extends the Gregorian calendar
21
+ # backwards to year one. It is encoded assuming all minutes are 60
22
+ # seconds long, i.e. leap seconds are "smeared" so that no leap second
23
+ # table is needed for interpretation. Range is from
24
+ # 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z.
25
+ # By restricting to that range, we ensure that we can convert to
26
+ # and from RFC 3339 date strings.
27
+ # See {https://www.ietf.org/rfc/rfc3339.txt}[https://www.ietf.org/rfc/rfc3339.txt].
28
+ #
29
+ # Example 1: Compute Timestamp from POSIX +time()+.
30
+ #
31
+ # Timestamp timestamp;
32
+ # timestamp.set_seconds(time(NULL));
33
+ # timestamp.set_nanos(0);
34
+ #
35
+ # Example 2: Compute Timestamp from POSIX +gettimeofday()+.
36
+ #
37
+ # struct timeval tv;
38
+ # gettimeofday(&tv, NULL);
39
+ #
40
+ # Timestamp timestamp;
41
+ # timestamp.set_seconds(tv.tv_sec);
42
+ # timestamp.set_nanos(tv.tv_usec * 1000);
43
+ #
44
+ # Example 3: Compute Timestamp from Win32 +GetSystemTimeAsFileTime()+.
45
+ #
46
+ # FILETIME ft;
47
+ # GetSystemTimeAsFileTime(&ft);
48
+ # UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
49
+ #
50
+ # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
51
+ # // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
52
+ # Timestamp timestamp;
53
+ # timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
54
+ # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
55
+ #
56
+ # Example 4: Compute Timestamp from Java +System.currentTimeMillis()+.
57
+ #
58
+ # long millis = System.currentTimeMillis();
59
+ #
60
+ # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
61
+ # .setNanos((int) ((millis % 1000) * 1000000)).build();
62
+ #
63
+ #
64
+ # Example 5: Compute Timestamp from current time in Python.
65
+ #
66
+ # timestamp = Timestamp()
67
+ # timestamp.GetCurrentTime()
68
+ # @!attribute [rw] seconds
69
+ # @return [Integer]
70
+ # Represents seconds of UTC time since Unix epoch
71
+ # 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
72
+ # 9999-12-31T23:59:59Z inclusive.
73
+ # @!attribute [rw] nanos
74
+ # @return [Integer]
75
+ # Non-negative fractions of a second at nanosecond resolution. Negative
76
+ # second values with fractions must still have non-negative nanos values
77
+ # that count forward in time. Must be from 0 to 999,999,999
78
+ # inclusive.
79
+ class Timestamp; end
80
+ end
81
+ end
@@ -0,0 +1,148 @@
1
+ # Copyright 2017, Google Inc. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ module Google
16
+ module Spanner
17
+ module V1
18
+ # KeyRange represents a range of rows in a table or index.
19
+ #
20
+ # A range has a start key and an end key. These keys can be open or
21
+ # closed, indicating if the range includes rows with that key.
22
+ #
23
+ # Keys are represented by lists, where the ith value in the list
24
+ # corresponds to the ith component of the table or index primary key.
25
+ # Individual values are encoded as described Here.
26
+ #
27
+ # For example, consider the following table definition:
28
+ #
29
+ # CREATE TABLE UserEvents (
30
+ # UserName STRING(MAX),
31
+ # EventDate STRING(10)
32
+ # ) PRIMARY KEY(UserName, EventDate);
33
+ #
34
+ # The following keys name rows in this table:
35
+ #
36
+ # ["Bob", "2014-09-23"]
37
+ # ["Alfred", "2015-06-12"]
38
+ #
39
+ # Since the +UserEvents+ table's +PRIMARY KEY+ clause names two
40
+ # columns, each +UserEvents+ key has two elements; the first is the
41
+ # +UserName+, and the second is the +EventDate+.
42
+ #
43
+ # Key ranges with multiple components are interpreted
44
+ # lexicographically by component using the table or index key's declared
45
+ # sort order. For example, the following range returns all events for
46
+ # user +"Bob"+ that occurred in the year 2015:
47
+ #
48
+ # "start_closed": ["Bob", "2015-01-01"]
49
+ # "end_closed": ["Bob", "2015-12-31"]
50
+ #
51
+ # Start and end keys can omit trailing key components. This affects the
52
+ # inclusion and exclusion of rows that exactly match the provided key
53
+ # components: if the key is closed, then rows that exactly match the
54
+ # provided components are included; if the key is open, then rows
55
+ # that exactly match are not included.
56
+ #
57
+ # For example, the following range includes all events for +"Bob"+ that
58
+ # occurred during and after the year 2000:
59
+ #
60
+ # "start_closed": ["Bob", "2000-01-01"]
61
+ # "end_closed": ["Bob"]
62
+ #
63
+ # The next example retrieves all events for +"Bob"+:
64
+ #
65
+ # "start_closed": ["Bob"]
66
+ # "end_closed": ["Bob"]
67
+ #
68
+ # To retrieve events before the year 2000:
69
+ #
70
+ # "start_closed": ["Bob"]
71
+ # "end_open": ["Bob", "2000-01-01"]
72
+ #
73
+ # The following range includes all rows in the table:
74
+ #
75
+ # "start_closed": []
76
+ # "end_closed": []
77
+ #
78
+ # This range returns all users whose +UserName+ begins with any
79
+ # character from A to C:
80
+ #
81
+ # "start_closed": ["A"]
82
+ # "end_open": ["D"]
83
+ #
84
+ # This range returns all users whose +UserName+ begins with B:
85
+ #
86
+ # "start_closed": ["B"]
87
+ # "end_open": ["C"]
88
+ #
89
+ # Key ranges honor column sort order. For example, suppose a table is
90
+ # defined as follows:
91
+ #
92
+ # CREATE TABLE DescendingSortedTable {
93
+ # Key INT64,
94
+ # ...
95
+ # ) PRIMARY KEY(Key DESC);
96
+ #
97
+ # The following range retrieves all rows with key values between 1
98
+ # and 100 inclusive:
99
+ #
100
+ # "start_closed": ["100"]
101
+ # "end_closed": ["1"]
102
+ #
103
+ # Note that 100 is passed as the start, and 1 is passed as the end,
104
+ # because +Key+ is a descending column in the schema.
105
+ # @!attribute [rw] start_closed
106
+ # @return [Google::Protobuf::ListValue]
107
+ # If the start is closed, then the range includes all rows whose
108
+ # first +len(start_closed)+ key columns exactly match +start_closed+.
109
+ # @!attribute [rw] start_open
110
+ # @return [Google::Protobuf::ListValue]
111
+ # If the start is open, then the range excludes rows whose first
112
+ # +len(start_open)+ key columns exactly match +start_open+.
113
+ # @!attribute [rw] end_closed
114
+ # @return [Google::Protobuf::ListValue]
115
+ # If the end is closed, then the range includes all rows whose
116
+ # first +len(end_closed)+ key columns exactly match +end_closed+.
117
+ # @!attribute [rw] end_open
118
+ # @return [Google::Protobuf::ListValue]
119
+ # If the end is open, then the range excludes rows whose first
120
+ # +len(end_open)+ key columns exactly match +end_open+.
121
+ class KeyRange; end
122
+
123
+ # +KeySet+ defines a collection of Cloud Spanner keys and/or key ranges. All
124
+ # the keys are expected to be in the same table or index. The keys need
125
+ # not be sorted in any particular way.
126
+ #
127
+ # If the same key is specified multiple times in the set (for example
128
+ # if two ranges, two keys, or a key and a range overlap), Cloud Spanner
129
+ # behaves as if the key were only specified once.
130
+ # @!attribute [rw] keys
131
+ # @return [Array<Google::Protobuf::ListValue>]
132
+ # A list of specific keys. Entries in +keys+ should have exactly as
133
+ # many elements as there are columns in the primary or index key
134
+ # with which this +KeySet+ is used. Individual key values are
135
+ # encoded as described Here.
136
+ # @!attribute [rw] ranges
137
+ # @return [Array<Google::Spanner::V1::KeyRange>]
138
+ # A list of key ranges. See KeyRange for more information about
139
+ # key range specifications.
140
+ # @!attribute [rw] all
141
+ # @return [true, false]
142
+ # For convenience +all+ can be set to +true+ to indicate that this
143
+ # +KeySet+ matches all keys in the table or index. Note that any keys
144
+ # specified in +keys+ or +ranges+ are only yielded once.
145
+ class KeySet; end
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,80 @@
1
+ # Copyright 2017, Google Inc. All rights reserved.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ module Google
16
+ module Spanner
17
+ module V1
18
+ # A modification to one or more Cloud Spanner rows. Mutations can be
19
+ # applied to a Cloud Spanner database by sending them in a
20
+ # Commit call.
21
+ # @!attribute [rw] insert
22
+ # @return [Google::Spanner::V1::Mutation::Write]
23
+ # Insert new rows in a table. If any of the rows already exist,
24
+ # the write or transaction fails with error +ALREADY_EXISTS+.
25
+ # @!attribute [rw] update
26
+ # @return [Google::Spanner::V1::Mutation::Write]
27
+ # Update existing rows in a table. If any of the rows does not
28
+ # already exist, the transaction fails with error +NOT_FOUND+.
29
+ # @!attribute [rw] insert_or_update
30
+ # @return [Google::Spanner::V1::Mutation::Write]
31
+ # Like Insert, except that if the row already exists, then
32
+ # its column values are overwritten with the ones provided. Any
33
+ # column values not explicitly written are preserved.
34
+ # @!attribute [rw] replace
35
+ # @return [Google::Spanner::V1::Mutation::Write]
36
+ # Like Insert, except that if the row already exists, it is
37
+ # deleted, and the column values provided are inserted
38
+ # instead. Unlike Insert_or_update, this means any values not
39
+ # explicitly written become +NULL+.
40
+ # @!attribute [rw] delete
41
+ # @return [Google::Spanner::V1::Mutation::Delete]
42
+ # Delete rows from a table. Succeeds whether or not the named
43
+ # rows were present.
44
+ class Mutation
45
+ # Arguments to Insert, Update, Insert_or_update, and
46
+ # Replace operations.
47
+ # @!attribute [rw] table
48
+ # @return [String]
49
+ # Required. The table whose rows will be written.
50
+ # @!attribute [rw] columns
51
+ # @return [Array<String>]
52
+ # The names of the columns in Table to be written.
53
+ #
54
+ # The list of columns must contain enough columns to allow
55
+ # Cloud Spanner to derive values for all primary key columns in the
56
+ # row(s) to be modified.
57
+ # @!attribute [rw] values
58
+ # @return [Array<Google::Protobuf::ListValue>]
59
+ # The values to be written. +values+ can contain more than one
60
+ # list of values. If it does, then multiple rows are written, one
61
+ # for each entry in +values+. Each list in +values+ must have
62
+ # exactly as many entries as there are entries in Columns
63
+ # above. Sending multiple lists is equivalent to sending multiple
64
+ # +Mutation+s, each containing one +values+ entry and repeating
65
+ # Table and Columns. Individual values in each list are
66
+ # encoded as described Here.
67
+ class Write; end
68
+
69
+ # Arguments to Delete operations.
70
+ # @!attribute [rw] table
71
+ # @return [String]
72
+ # Required. The table whose rows will be deleted.
73
+ # @!attribute [rw] key_set
74
+ # @return [Google::Spanner::V1::KeySet]
75
+ # Required. The primary keys of the rows within Table to delete.
76
+ class Delete; end
77
+ end
78
+ end
79
+ end
80
+ end