google-cloud-spanner 1.16.2 → 2.4.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 (107) hide show
  1. checksums.yaml +4 -4
  2. data/AUTHENTICATION.md +1 -1
  3. data/CHANGELOG.md +66 -0
  4. data/CONTRIBUTING.md +1 -1
  5. data/lib/google-cloud-spanner.rb +11 -13
  6. data/lib/google/cloud/spanner.rb +13 -13
  7. data/lib/google/cloud/spanner/admin/database/credentials.rb +2 -2
  8. data/lib/google/cloud/spanner/admin/instance/credentials.rb +2 -2
  9. data/lib/google/cloud/spanner/backup.rb +9 -1
  10. data/lib/google/cloud/spanner/backup/job.rb +2 -2
  11. data/lib/google/cloud/spanner/backup/job/list.rb +2 -2
  12. data/lib/google/cloud/spanner/backup/list.rb +1 -2
  13. data/lib/google/cloud/spanner/backup/restore/job.rb +2 -2
  14. data/lib/google/cloud/spanner/batch_client.rb +2 -2
  15. data/lib/google/cloud/spanner/batch_snapshot.rb +120 -23
  16. data/lib/google/cloud/spanner/batch_update.rb +1 -1
  17. data/lib/google/cloud/spanner/client.rb +388 -47
  18. data/lib/google/cloud/spanner/commit.rb +14 -14
  19. data/lib/google/cloud/spanner/commit_response.rb +87 -0
  20. data/lib/google/cloud/spanner/commit_response/commit_stats.rb +51 -0
  21. data/lib/google/cloud/spanner/convert.rb +16 -7
  22. data/lib/google/cloud/spanner/credentials.rb +2 -2
  23. data/lib/google/cloud/spanner/data.rb +2 -2
  24. data/lib/google/cloud/spanner/database.rb +47 -25
  25. data/lib/google/cloud/spanner/database/backup_info.rb +13 -4
  26. data/lib/google/cloud/spanner/database/job.rb +3 -3
  27. data/lib/google/cloud/spanner/database/job/list.rb +2 -2
  28. data/lib/google/cloud/spanner/database/list.rb +1 -1
  29. data/lib/google/cloud/spanner/database/restore_info.rb +1 -1
  30. data/lib/google/cloud/spanner/fields.rb +8 -8
  31. data/lib/google/cloud/spanner/instance.rb +5 -12
  32. data/lib/google/cloud/spanner/instance/config.rb +1 -1
  33. data/lib/google/cloud/spanner/instance/config/list.rb +1 -1
  34. data/lib/google/cloud/spanner/instance/job.rb +2 -2
  35. data/lib/google/cloud/spanner/instance/list.rb +1 -1
  36. data/lib/google/cloud/spanner/partition.rb +4 -4
  37. data/lib/google/cloud/spanner/policy.rb +2 -2
  38. data/lib/google/cloud/spanner/results.rb +103 -24
  39. data/lib/google/cloud/spanner/service.rb +369 -350
  40. data/lib/google/cloud/spanner/session.rb +370 -39
  41. data/lib/google/cloud/spanner/snapshot.rb +60 -6
  42. data/lib/google/cloud/spanner/transaction.rb +116 -10
  43. data/lib/google/cloud/spanner/version.rb +1 -1
  44. metadata +20 -107
  45. data/lib/google/cloud/spanner/admin/database.rb +0 -149
  46. data/lib/google/cloud/spanner/admin/database/v1.rb +0 -147
  47. data/lib/google/cloud/spanner/admin/database/v1/credentials.rb +0 -46
  48. data/lib/google/cloud/spanner/admin/database/v1/database_admin_client.rb +0 -1513
  49. data/lib/google/cloud/spanner/admin/database/v1/database_admin_client_config.json +0 -111
  50. data/lib/google/cloud/spanner/admin/database/v1/doc/google/iam/v1/iam_policy.rb +0 -64
  51. data/lib/google/cloud/spanner/admin/database/v1/doc/google/iam/v1/options.rb +0 -33
  52. data/lib/google/cloud/spanner/admin/database/v1/doc/google/iam/v1/policy.rb +0 -151
  53. data/lib/google/cloud/spanner/admin/database/v1/doc/google/longrunning/operations.rb +0 -51
  54. data/lib/google/cloud/spanner/admin/database/v1/doc/google/protobuf/any.rb +0 -131
  55. data/lib/google/cloud/spanner/admin/database/v1/doc/google/protobuf/empty.rb +0 -29
  56. data/lib/google/cloud/spanner/admin/database/v1/doc/google/protobuf/field_mask.rb +0 -222
  57. data/lib/google/cloud/spanner/admin/database/v1/doc/google/protobuf/timestamp.rb +0 -113
  58. data/lib/google/cloud/spanner/admin/database/v1/doc/google/rpc/status.rb +0 -39
  59. data/lib/google/cloud/spanner/admin/database/v1/doc/google/spanner/admin/database/v1/backup.rb +0 -325
  60. data/lib/google/cloud/spanner/admin/database/v1/doc/google/spanner/admin/database/v1/spanner_database_admin.rb +0 -368
  61. data/lib/google/cloud/spanner/admin/database/v1/doc/google/type/expr.rb +0 -45
  62. data/lib/google/cloud/spanner/admin/instance.rb +0 -164
  63. data/lib/google/cloud/spanner/admin/instance/v1.rb +0 -162
  64. data/lib/google/cloud/spanner/admin/instance/v1/credentials.rb +0 -46
  65. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/iam/v1/iam_policy.rb +0 -64
  66. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/iam/v1/options.rb +0 -33
  67. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/iam/v1/policy.rb +0 -151
  68. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/longrunning/operations.rb +0 -51
  69. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/protobuf/any.rb +0 -131
  70. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/protobuf/empty.rb +0 -29
  71. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/protobuf/field_mask.rb +0 -222
  72. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/rpc/status.rb +0 -39
  73. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/spanner/admin/instance/v1/spanner_instance_admin.rb +0 -334
  74. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/type/expr.rb +0 -45
  75. data/lib/google/cloud/spanner/admin/instance/v1/instance_admin_client.rb +0 -975
  76. data/lib/google/cloud/spanner/admin/instance/v1/instance_admin_client_config.json +0 -76
  77. data/lib/google/cloud/spanner/v1.rb +0 -16
  78. data/lib/google/cloud/spanner/v1/credentials.rb +0 -42
  79. data/lib/google/cloud/spanner/v1/doc/google/protobuf/any.rb +0 -131
  80. data/lib/google/cloud/spanner/v1/doc/google/protobuf/duration.rb +0 -91
  81. data/lib/google/cloud/spanner/v1/doc/google/protobuf/empty.rb +0 -29
  82. data/lib/google/cloud/spanner/v1/doc/google/protobuf/struct.rb +0 -74
  83. data/lib/google/cloud/spanner/v1/doc/google/protobuf/timestamp.rb +0 -113
  84. data/lib/google/cloud/spanner/v1/doc/google/rpc/status.rb +0 -39
  85. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/keys.rb +0 -150
  86. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/mutation.rb +0 -95
  87. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/query_plan.rb +0 -121
  88. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/result_set.rb +0 -190
  89. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/spanner.rb +0 -570
  90. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/transaction.rb +0 -432
  91. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/type.rb +0 -112
  92. data/lib/google/cloud/spanner/v1/spanner_client.rb +0 -1485
  93. data/lib/google/cloud/spanner/v1/spanner_client_config.json +0 -121
  94. data/lib/google/spanner/admin/database/v1/backup_pb.rb +0 -98
  95. data/lib/google/spanner/admin/database/v1/common_pb.rb +0 -28
  96. data/lib/google/spanner/admin/database/v1/spanner_database_admin_pb.rb +0 -141
  97. data/lib/google/spanner/admin/database/v1/spanner_database_admin_services_pb.rb +0 -169
  98. data/lib/google/spanner/admin/instance/v1/spanner_instance_admin_pb.rb +0 -125
  99. data/lib/google/spanner/admin/instance/v1/spanner_instance_admin_services_pb.rb +0 -181
  100. data/lib/google/spanner/v1/keys_pb.rb +0 -34
  101. data/lib/google/spanner/v1/mutation_pb.rb +0 -39
  102. data/lib/google/spanner/v1/query_plan_pb.rb +0 -48
  103. data/lib/google/spanner/v1/result_set_pb.rb +0 -48
  104. data/lib/google/spanner/v1/spanner_pb.rb +0 -179
  105. data/lib/google/spanner/v1/spanner_services_pb.rb +0 -179
  106. data/lib/google/spanner/v1/transaction_pb.rb +0 -56
  107. data/lib/google/spanner/v1/type_pb.rb +0 -44
@@ -1,190 +0,0 @@
1
- # Copyright 2020 Google LLC
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # https://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
-
16
- module Google
17
- module Spanner
18
- module V1
19
- # Results from {Google::Spanner::V1::Spanner::Read Read} or
20
- # {Google::Spanner::V1::Spanner::ExecuteSql ExecuteSql}.
21
- # @!attribute [rw] metadata
22
- # @return [Google::Spanner::V1::ResultSetMetadata]
23
- # Metadata about the result set, such as row type information.
24
- # @!attribute [rw] rows
25
- # @return [Array<Google::Protobuf::ListValue>]
26
- # Each element in `rows` is a row whose format is defined by
27
- # {Google::Spanner::V1::ResultSetMetadata#row_type metadata::row_type}. The ith element
28
- # in each row matches the ith field in
29
- # {Google::Spanner::V1::ResultSetMetadata#row_type metadata::row_type}. Elements are
30
- # encoded based on type as described
31
- # {Google::Spanner::V1::TypeCode here}.
32
- # @!attribute [rw] stats
33
- # @return [Google::Spanner::V1::ResultSetStats]
34
- # Query plan and execution statistics for the SQL statement that
35
- # produced this result set. These can be requested by setting
36
- # {Google::Spanner::V1::ExecuteSqlRequest#query_mode ExecuteSqlRequest#query_mode}.
37
- # DML statements always produce stats containing the number of rows
38
- # modified, unless executed using the
39
- # {Google::Spanner::V1::ExecuteSqlRequest::QueryMode::PLAN ExecuteSqlRequest::QueryMode::PLAN} {Google::Spanner::V1::ExecuteSqlRequest#query_mode ExecuteSqlRequest#query_mode}.
40
- # Other fields may or may not be populated, based on the
41
- # {Google::Spanner::V1::ExecuteSqlRequest#query_mode ExecuteSqlRequest#query_mode}.
42
- class ResultSet; end
43
-
44
- # Partial results from a streaming read or SQL query. Streaming reads and
45
- # SQL queries better tolerate large result sets, large rows, and large
46
- # values, but are a little trickier to consume.
47
- # @!attribute [rw] metadata
48
- # @return [Google::Spanner::V1::ResultSetMetadata]
49
- # Metadata about the result set, such as row type information.
50
- # Only present in the first response.
51
- # @!attribute [rw] values
52
- # @return [Array<Google::Protobuf::Value>]
53
- # A streamed result set consists of a stream of values, which might
54
- # be split into many `PartialResultSet` messages to accommodate
55
- # large rows and/or large values. Every N complete values defines a
56
- # row, where N is equal to the number of entries in
57
- # {Google::Spanner::V1::StructType#fields metadata::row_type::fields}.
58
- #
59
- # Most values are encoded based on type as described
60
- # {Google::Spanner::V1::TypeCode here}.
61
- #
62
- # It is possible that the last value in values is "chunked",
63
- # meaning that the rest of the value is sent in subsequent
64
- # `PartialResultSet`(s). This is denoted by the {Google::Spanner::V1::PartialResultSet#chunked_value chunked_value}
65
- # field. Two or more chunked values can be merged to form a
66
- # complete value as follows:
67
- #
68
- # * `bool/number/null`: cannot be chunked
69
- # * `string`: concatenate the strings
70
- # * `list`: concatenate the lists. If the last element in a list is a
71
- # `string`, `list`, or `object`, merge it with the first element in
72
- # the next list by applying these rules recursively.
73
- # * `object`: concatenate the (field name, field value) pairs. If a
74
- # field name is duplicated, then apply these rules recursively
75
- # to merge the field values.
76
- #
77
- # Some examples of merging:
78
- #
79
- # = Strings are concatenated.
80
- # "foo", "bar" => "foobar"
81
- #
82
- # = Lists of non-strings are concatenated.
83
- # [2, 3], [4] => [2, 3, 4]
84
- #
85
- # = Lists are concatenated, but the last and first elements are merged
86
- # = because they are strings.
87
- # ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
88
- #
89
- # = Lists are concatenated, but the last and first elements are merged
90
- # = because they are lists. Recursively, the last and first elements
91
- # = of the inner lists are merged because they are strings.
92
- # ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
93
- #
94
- # = Non-overlapping object fields are combined.
95
- # {"a": "1"}, {"b": "2"} => {"a": "1", "b": 2"}
96
- #
97
- # = Overlapping object fields are merged.
98
- # {"a": "1"}, {"a": "2"} => {"a": "12"}
99
- #
100
- # = Examples of merging objects containing lists of strings.
101
- # {"a": ["1"]}, {"a": ["2"]} => {"a": ["12"]}
102
- #
103
- # For a more complete example, suppose a streaming SQL query is
104
- # yielding a result set whose rows contain a single string
105
- # field. The following `PartialResultSet`s might be yielded:
106
- #
107
- # {
108
- # "metadata": { ... }
109
- # "values": ["Hello", "W"]
110
- # "chunked_value": true
111
- # "resume_token": "Af65..."
112
- # }
113
- # {
114
- # "values": ["orl"]
115
- # "chunked_value": true
116
- # "resume_token": "Bqp2..."
117
- # }
118
- # {
119
- # "values": ["d"]
120
- # "resume_token": "Zx1B..."
121
- # }
122
- #
123
- # This sequence of `PartialResultSet`s encodes two rows, one
124
- # containing the field value `"Hello"`, and a second containing the
125
- # field value `"World" = "W" + "orl" + "d"`.
126
- # @!attribute [rw] chunked_value
127
- # @return [true, false]
128
- # If true, then the final value in {Google::Spanner::V1::PartialResultSet#values values} is chunked, and must
129
- # be combined with more values from subsequent `PartialResultSet`s
130
- # to obtain a complete field value.
131
- # @!attribute [rw] resume_token
132
- # @return [String]
133
- # Streaming calls might be interrupted for a variety of reasons, such
134
- # as TCP connection loss. If this occurs, the stream of results can
135
- # be resumed by re-sending the original request and including
136
- # `resume_token`. Note that executing any other transaction in the
137
- # same session invalidates the token.
138
- # @!attribute [rw] stats
139
- # @return [Google::Spanner::V1::ResultSetStats]
140
- # Query plan and execution statistics for the statement that produced this
141
- # streaming result set. These can be requested by setting
142
- # {Google::Spanner::V1::ExecuteSqlRequest#query_mode ExecuteSqlRequest#query_mode} and are sent
143
- # only once with the last response in the stream.
144
- # This field will also be present in the last response for DML
145
- # statements.
146
- class PartialResultSet; end
147
-
148
- # Metadata about a {Google::Spanner::V1::ResultSet ResultSet} or {Google::Spanner::V1::PartialResultSet PartialResultSet}.
149
- # @!attribute [rw] row_type
150
- # @return [Google::Spanner::V1::StructType]
151
- # Indicates the field names and types for the rows in the result
152
- # set. For example, a SQL query like `"SELECT UserId, UserName FROM
153
- # Users"` could return a `row_type` value like:
154
- #
155
- # "fields": [
156
- # { "name": "UserId", "type": { "code": "INT64" } },
157
- # { "name": "UserName", "type": { "code": "STRING" } },
158
- # ]
159
- # @!attribute [rw] transaction
160
- # @return [Google::Spanner::V1::Transaction]
161
- # If the read or SQL query began a transaction as a side-effect, the
162
- # information about the new transaction is yielded here.
163
- class ResultSetMetadata; end
164
-
165
- # Additional statistics about a {Google::Spanner::V1::ResultSet ResultSet} or {Google::Spanner::V1::PartialResultSet PartialResultSet}.
166
- # @!attribute [rw] query_plan
167
- # @return [Google::Spanner::V1::QueryPlan]
168
- # {Google::Spanner::V1::QueryPlan QueryPlan} for the query associated with this result.
169
- # @!attribute [rw] query_stats
170
- # @return [Google::Protobuf::Struct]
171
- # Aggregated statistics from the execution of the query. Only present when
172
- # the query is profiled. For example, a query could return the statistics as
173
- # follows:
174
- #
175
- # {
176
- # "rows_returned": "3",
177
- # "elapsed_time": "1.22 secs",
178
- # "cpu_time": "1.19 secs"
179
- # }
180
- # @!attribute [rw] row_count_exact
181
- # @return [Integer]
182
- # Standard DML returns an exact count of rows that were modified.
183
- # @!attribute [rw] row_count_lower_bound
184
- # @return [Integer]
185
- # Partitioned DML does not offer exactly-once semantics, so it
186
- # returns a lower bound of the rows modified.
187
- class ResultSetStats; end
188
- end
189
- end
190
- end
@@ -1,570 +0,0 @@
1
- # Copyright 2020 Google LLC
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # https://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
-
16
- module Google
17
- module Spanner
18
- module V1
19
- # The request for {Google::Spanner::V1::Spanner::CreateSession CreateSession}.
20
- # @!attribute [rw] database
21
- # @return [String]
22
- # Required. The database in which the new session is created.
23
- # @!attribute [rw] session
24
- # @return [Google::Spanner::V1::Session]
25
- # The session to create.
26
- class CreateSessionRequest; end
27
-
28
- # The request for {Google::Spanner::V1::Spanner::BatchCreateSessions BatchCreateSessions}.
29
- # @!attribute [rw] database
30
- # @return [String]
31
- # Required. The database in which the new sessions are created.
32
- # @!attribute [rw] session_template
33
- # @return [Google::Spanner::V1::Session]
34
- # Parameters to be applied to each created session.
35
- # @!attribute [rw] session_count
36
- # @return [Integer]
37
- # Required. The number of sessions to be created in this batch call.
38
- # The API may return fewer than the requested number of sessions. If a
39
- # specific number of sessions are desired, the client can make additional
40
- # calls to BatchCreateSessions (adjusting
41
- # {Google::Spanner::V1::BatchCreateSessionsRequest#session_count session_count} as necessary).
42
- class BatchCreateSessionsRequest; end
43
-
44
- # The response for {Google::Spanner::V1::Spanner::BatchCreateSessions BatchCreateSessions}.
45
- # @!attribute [rw] session
46
- # @return [Array<Google::Spanner::V1::Session>]
47
- # The freshly created sessions.
48
- class BatchCreateSessionsResponse; end
49
-
50
- # A session in the Cloud Spanner API.
51
- # @!attribute [rw] name
52
- # @return [String]
53
- # The name of the session. This is always system-assigned; values provided
54
- # when creating a session are ignored.
55
- # @!attribute [rw] labels
56
- # @return [Hash{String => String}]
57
- # The labels for the session.
58
- #
59
- # * Label keys must be between 1 and 63 characters long and must conform to
60
- # the following regular expression: `[a-z](https://cloud.google.com[-a-z0-9]*[a-z0-9])?`.
61
- # * Label values must be between 0 and 63 characters long and must conform
62
- # to the regular expression `([a-z](https://cloud.google.com[-a-z0-9]*[a-z0-9])?)?`.
63
- # * No more than 64 labels can be associated with a given session.
64
- #
65
- # See https://goo.gl/xmQnxf for more information on and examples of labels.
66
- # @!attribute [rw] create_time
67
- # @return [Google::Protobuf::Timestamp]
68
- # Output only. The timestamp when the session is created.
69
- # @!attribute [rw] approximate_last_use_time
70
- # @return [Google::Protobuf::Timestamp]
71
- # Output only. The approximate timestamp when the session is last used. It is
72
- # typically earlier than the actual last use time.
73
- class Session; end
74
-
75
- # The request for {Google::Spanner::V1::Spanner::GetSession GetSession}.
76
- # @!attribute [rw] name
77
- # @return [String]
78
- # Required. The name of the session to retrieve.
79
- class GetSessionRequest; end
80
-
81
- # The request for {Google::Spanner::V1::Spanner::ListSessions ListSessions}.
82
- # @!attribute [rw] database
83
- # @return [String]
84
- # Required. The database in which to list sessions.
85
- # @!attribute [rw] page_size
86
- # @return [Integer]
87
- # Number of sessions to be returned in the response. If 0 or less, defaults
88
- # to the server's maximum allowed page size.
89
- # @!attribute [rw] page_token
90
- # @return [String]
91
- # If non-empty, `page_token` should contain a
92
- # {Google::Spanner::V1::ListSessionsResponse#next_page_token next_page_token} from a previous
93
- # {Google::Spanner::V1::ListSessionsResponse ListSessionsResponse}.
94
- # @!attribute [rw] filter
95
- # @return [String]
96
- # An expression for filtering the results of the request. Filter rules are
97
- # case insensitive. The fields eligible for filtering are:
98
- #
99
- # * `labels.key` where key is the name of a label
100
- #
101
- # Some examples of using filters are:
102
- #
103
- # * `labels.env:*` --> The session has the label "env".
104
- # * `labels.env:dev` --> The session has the label "env" and the value of
105
- # the label contains the string "dev".
106
- class ListSessionsRequest; end
107
-
108
- # The response for {Google::Spanner::V1::Spanner::ListSessions ListSessions}.
109
- # @!attribute [rw] sessions
110
- # @return [Array<Google::Spanner::V1::Session>]
111
- # The list of requested sessions.
112
- # @!attribute [rw] next_page_token
113
- # @return [String]
114
- # `next_page_token` can be sent in a subsequent
115
- # {Google::Spanner::V1::Spanner::ListSessions ListSessions} call to fetch more of the matching
116
- # sessions.
117
- class ListSessionsResponse; end
118
-
119
- # The request for {Google::Spanner::V1::Spanner::DeleteSession DeleteSession}.
120
- # @!attribute [rw] name
121
- # @return [String]
122
- # Required. The name of the session to delete.
123
- class DeleteSessionRequest; end
124
-
125
- # The request for {Google::Spanner::V1::Spanner::ExecuteSql ExecuteSql} and
126
- # {Google::Spanner::V1::Spanner::ExecuteStreamingSql ExecuteStreamingSql}.
127
- # @!attribute [rw] session
128
- # @return [String]
129
- # Required. The session in which the SQL query should be performed.
130
- # @!attribute [rw] transaction
131
- # @return [Google::Spanner::V1::TransactionSelector]
132
- # The transaction to use.
133
- #
134
- # For queries, if none is provided, the default is a temporary read-only
135
- # transaction with strong concurrency.
136
- #
137
- # Standard DML statements require a read-write transaction. To protect
138
- # against replays, single-use transactions are not supported. The caller
139
- # must either supply an existing transaction ID or begin a new transaction.
140
- #
141
- # Partitioned DML requires an existing Partitioned DML transaction ID.
142
- # @!attribute [rw] sql
143
- # @return [String]
144
- # Required. The SQL string.
145
- # @!attribute [rw] params
146
- # @return [Google::Protobuf::Struct]
147
- # Parameter names and values that bind to placeholders in the SQL string.
148
- #
149
- # A parameter placeholder consists of the `@` character followed by the
150
- # parameter name (for example, `@firstName`). Parameter names can contain
151
- # letters, numbers, and underscores.
152
- #
153
- # Parameters can appear anywhere that a literal value is expected. The same
154
- # parameter name can be used more than once, for example:
155
- #
156
- # `"WHERE id > @msg_id AND id < @msg_id + 100"`
157
- #
158
- # It is an error to execute a SQL statement with unbound parameters.
159
- # @!attribute [rw] param_types
160
- # @return [Hash{String => Google::Spanner::V1::Type}]
161
- # It is not always possible for Cloud Spanner to infer the right SQL type
162
- # from a JSON value. For example, values of type `BYTES` and values
163
- # of type `STRING` both appear in {Google::Spanner::V1::ExecuteSqlRequest#params params} as JSON strings.
164
- #
165
- # In these cases, `param_types` can be used to specify the exact
166
- # SQL type for some or all of the SQL statement parameters. See the
167
- # definition of {Google::Spanner::V1::Type Type} for more information
168
- # about SQL types.
169
- # @!attribute [rw] resume_token
170
- # @return [String]
171
- # If this request is resuming a previously interrupted SQL statement
172
- # execution, `resume_token` should be copied from the last
173
- # {Google::Spanner::V1::PartialResultSet PartialResultSet} yielded before the interruption. Doing this
174
- # enables the new SQL statement execution to resume where the last one left
175
- # off. The rest of the request parameters must exactly match the
176
- # request that yielded this token.
177
- # @!attribute [rw] query_mode
178
- # @return [Google::Spanner::V1::ExecuteSqlRequest::QueryMode]
179
- # Used to control the amount of debugging information returned in
180
- # {Google::Spanner::V1::ResultSetStats ResultSetStats}. If {Google::Spanner::V1::ExecuteSqlRequest#partition_token partition_token} is set, {Google::Spanner::V1::ExecuteSqlRequest#query_mode query_mode} can only
181
- # be set to {Google::Spanner::V1::ExecuteSqlRequest::QueryMode::NORMAL QueryMode::NORMAL}.
182
- # @!attribute [rw] partition_token
183
- # @return [String]
184
- # If present, results will be restricted to the specified partition
185
- # previously created using PartitionQuery(). There must be an exact
186
- # match for the values of fields common to this message and the
187
- # PartitionQueryRequest message used to create this partition_token.
188
- # @!attribute [rw] seqno
189
- # @return [Integer]
190
- # A per-transaction sequence number used to identify this request. This field
191
- # makes each request idempotent such that if the request is received multiple
192
- # times, at most one will succeed.
193
- #
194
- # The sequence number must be monotonically increasing within the
195
- # transaction. If a request arrives for the first time with an out-of-order
196
- # sequence number, the transaction may be aborted. Replays of previously
197
- # handled requests will yield the same response as the first execution.
198
- #
199
- # Required for DML statements. Ignored for queries.
200
- # @!attribute [rw] query_options
201
- # @return [Google::Spanner::V1::ExecuteSqlRequest::QueryOptions]
202
- # Query optimizer configuration to use for the given query.
203
- class ExecuteSqlRequest
204
- # Query optimizer configuration.
205
- # @!attribute [rw] optimizer_version
206
- # @return [String]
207
- # An option to control the selection of optimizer version.
208
- #
209
- # This parameter allows individual queries to pick different query
210
- # optimizer versions.
211
- #
212
- # Specifying "latest" as a value instructs Cloud Spanner to use the
213
- # latest supported query optimizer version. If not specified, Cloud Spanner
214
- # uses optimizer version set at the database level options. Any other
215
- # positive integer (from the list of supported optimizer versions)
216
- # overrides the default optimizer version for query execution.
217
- # The list of supported optimizer versions can be queried from
218
- # SPANNER_SYS.SUPPORTED_OPTIMIZER_VERSIONS. Executing a SQL statement
219
- # with an invalid optimizer version will fail with a syntax error
220
- # (`INVALID_ARGUMENT`) status.
221
- #
222
- # The `optimizer_version` statement hint has precedence over this setting.
223
- class QueryOptions; end
224
-
225
- # Mode in which the statement must be processed.
226
- module QueryMode
227
- # The default mode. Only the statement results are returned.
228
- NORMAL = 0
229
-
230
- # This mode returns only the query plan, without any results or
231
- # execution statistics information.
232
- PLAN = 1
233
-
234
- # This mode returns both the query plan and the execution statistics along
235
- # with the results.
236
- PROFILE = 2
237
- end
238
- end
239
-
240
- # The request for {Google::Spanner::V1::Spanner::ExecuteBatchDml ExecuteBatchDml}.
241
- # @!attribute [rw] session
242
- # @return [String]
243
- # Required. The session in which the DML statements should be performed.
244
- # @!attribute [rw] transaction
245
- # @return [Google::Spanner::V1::TransactionSelector]
246
- # Required. The transaction to use. Must be a read-write transaction.
247
- #
248
- # To protect against replays, single-use transactions are not supported. The
249
- # caller must either supply an existing transaction ID or begin a new
250
- # transaction.
251
- # @!attribute [rw] statements
252
- # @return [Array<Google::Spanner::V1::ExecuteBatchDmlRequest::Statement>]
253
- # Required. The list of statements to execute in this batch. Statements are executed
254
- # serially, such that the effects of statement `i` are visible to statement
255
- # `i+1`. Each statement must be a DML statement. Execution stops at the
256
- # first failed statement; the remaining statements are not executed.
257
- #
258
- # Callers must provide at least one statement.
259
- # @!attribute [rw] seqno
260
- # @return [Integer]
261
- # Required. A per-transaction sequence number used to identify this request. This field
262
- # makes each request idempotent such that if the request is received multiple
263
- # times, at most one will succeed.
264
- #
265
- # The sequence number must be monotonically increasing within the
266
- # transaction. If a request arrives for the first time with an out-of-order
267
- # sequence number, the transaction may be aborted. Replays of previously
268
- # handled requests will yield the same response as the first execution.
269
- class ExecuteBatchDmlRequest
270
- # A single DML statement.
271
- # @!attribute [rw] sql
272
- # @return [String]
273
- # Required. The DML string.
274
- # @!attribute [rw] params
275
- # @return [Google::Protobuf::Struct]
276
- # Parameter names and values that bind to placeholders in the DML string.
277
- #
278
- # A parameter placeholder consists of the `@` character followed by the
279
- # parameter name (for example, `@firstName`). Parameter names can contain
280
- # letters, numbers, and underscores.
281
- #
282
- # Parameters can appear anywhere that a literal value is expected. The
283
- # same parameter name can be used more than once, for example:
284
- #
285
- # `"WHERE id > @msg_id AND id < @msg_id + 100"`
286
- #
287
- # It is an error to execute a SQL statement with unbound parameters.
288
- # @!attribute [rw] param_types
289
- # @return [Hash{String => Google::Spanner::V1::Type}]
290
- # It is not always possible for Cloud Spanner to infer the right SQL type
291
- # from a JSON value. For example, values of type `BYTES` and values
292
- # of type `STRING` both appear in {Google::Spanner::V1::ExecuteBatchDmlRequest::Statement#params params} as JSON strings.
293
- #
294
- # In these cases, `param_types` can be used to specify the exact
295
- # SQL type for some or all of the SQL statement parameters. See the
296
- # definition of {Google::Spanner::V1::Type Type} for more information
297
- # about SQL types.
298
- class Statement; end
299
- end
300
-
301
- # The response for {Google::Spanner::V1::Spanner::ExecuteBatchDml ExecuteBatchDml}. Contains a list
302
- # of {Google::Spanner::V1::ResultSet ResultSet} messages, one for each DML statement that has successfully
303
- # executed, in the same order as the statements in the request. If a statement
304
- # fails, the status in the response body identifies the cause of the failure.
305
- #
306
- # To check for DML statements that failed, use the following approach:
307
- #
308
- # 1. Check the status in the response message. The {Google::Rpc::Code} enum
309
- # value `OK` indicates that all statements were executed successfully.
310
- # 2. If the status was not `OK`, check the number of result sets in the
311
- # response. If the response contains `N` {Google::Spanner::V1::ResultSet ResultSet} messages, then
312
- # statement `N+1` in the request failed.
313
- #
314
- # Example 1:
315
- #
316
- # * Request: 5 DML statements, all executed successfully.
317
- # * Response: 5 {Google::Spanner::V1::ResultSet ResultSet} messages, with the status `OK`.
318
- #
319
- # Example 2:
320
- #
321
- # * Request: 5 DML statements. The third statement has a syntax error.
322
- # * Response: 2 {Google::Spanner::V1::ResultSet ResultSet} messages, and a syntax error (`INVALID_ARGUMENT`)
323
- # status. The number of {Google::Spanner::V1::ResultSet ResultSet} messages indicates that the third
324
- # statement failed, and the fourth and fifth statements were not executed.
325
- # @!attribute [rw] result_sets
326
- # @return [Array<Google::Spanner::V1::ResultSet>]
327
- # One {Google::Spanner::V1::ResultSet ResultSet} for each statement in the request that ran successfully,
328
- # in the same order as the statements in the request. Each {Google::Spanner::V1::ResultSet ResultSet} does
329
- # not contain any rows. The {Google::Spanner::V1::ResultSetStats ResultSetStats} in each {Google::Spanner::V1::ResultSet ResultSet} contain
330
- # the number of rows modified by the statement.
331
- #
332
- # Only the first {Google::Spanner::V1::ResultSet ResultSet} in the response contains valid
333
- # {Google::Spanner::V1::ResultSetMetadata ResultSetMetadata}.
334
- # @!attribute [rw] status
335
- # @return [Google::Rpc::Status]
336
- # If all DML statements are executed successfully, the status is `OK`.
337
- # Otherwise, the error status of the first failed statement.
338
- class ExecuteBatchDmlResponse; end
339
-
340
- # Options for a PartitionQueryRequest and
341
- # PartitionReadRequest.
342
- # @!attribute [rw] partition_size_bytes
343
- # @return [Integer]
344
- # **Note:** This hint is currently ignored by PartitionQuery and
345
- # PartitionRead requests.
346
- #
347
- # The desired data size for each partition generated. The default for this
348
- # option is currently 1 GiB. This is only a hint. The actual size of each
349
- # partition may be smaller or larger than this size request.
350
- # @!attribute [rw] max_partitions
351
- # @return [Integer]
352
- # **Note:** This hint is currently ignored by PartitionQuery and
353
- # PartitionRead requests.
354
- #
355
- # The desired maximum number of partitions to return. For example, this may
356
- # be set to the number of workers available. The default for this option
357
- # is currently 10,000. The maximum value is currently 200,000. This is only
358
- # a hint. The actual number of partitions returned may be smaller or larger
359
- # than this maximum count request.
360
- class PartitionOptions; end
361
-
362
- # The request for {Google::Spanner::V1::Spanner::PartitionQuery PartitionQuery}
363
- # @!attribute [rw] session
364
- # @return [String]
365
- # Required. The session used to create the partitions.
366
- # @!attribute [rw] transaction
367
- # @return [Google::Spanner::V1::TransactionSelector]
368
- # Read only snapshot transactions are supported, read/write and single use
369
- # transactions are not.
370
- # @!attribute [rw] sql
371
- # @return [String]
372
- # Required. The query request to generate partitions for. The request will fail if
373
- # the query is not root partitionable. The query plan of a root
374
- # partitionable query has a single distributed union operator. A distributed
375
- # union operator conceptually divides one or more tables into multiple
376
- # splits, remotely evaluates a subquery independently on each split, and
377
- # then unions all results.
378
- #
379
- # This must not contain DML commands, such as INSERT, UPDATE, or
380
- # DELETE. Use {Google::Spanner::V1::Spanner::ExecuteStreamingSql ExecuteStreamingSql} with a
381
- # PartitionedDml transaction for large, partition-friendly DML operations.
382
- # @!attribute [rw] params
383
- # @return [Google::Protobuf::Struct]
384
- # Parameter names and values that bind to placeholders in the SQL string.
385
- #
386
- # A parameter placeholder consists of the `@` character followed by the
387
- # parameter name (for example, `@firstName`). Parameter names can contain
388
- # letters, numbers, and underscores.
389
- #
390
- # Parameters can appear anywhere that a literal value is expected. The same
391
- # parameter name can be used more than once, for example:
392
- #
393
- # `"WHERE id > @msg_id AND id < @msg_id + 100"`
394
- #
395
- # It is an error to execute a SQL statement with unbound parameters.
396
- # @!attribute [rw] param_types
397
- # @return [Hash{String => Google::Spanner::V1::Type}]
398
- # It is not always possible for Cloud Spanner to infer the right SQL type
399
- # from a JSON value. For example, values of type `BYTES` and values
400
- # of type `STRING` both appear in {Google::Spanner::V1::PartitionQueryRequest#params params} as JSON strings.
401
- #
402
- # In these cases, `param_types` can be used to specify the exact
403
- # SQL type for some or all of the SQL query parameters. See the
404
- # definition of {Google::Spanner::V1::Type Type} for more information
405
- # about SQL types.
406
- # @!attribute [rw] partition_options
407
- # @return [Google::Spanner::V1::PartitionOptions]
408
- # Additional options that affect how many partitions are created.
409
- class PartitionQueryRequest; end
410
-
411
- # The request for {Google::Spanner::V1::Spanner::PartitionRead PartitionRead}
412
- # @!attribute [rw] session
413
- # @return [String]
414
- # Required. The session used to create the partitions.
415
- # @!attribute [rw] transaction
416
- # @return [Google::Spanner::V1::TransactionSelector]
417
- # Read only snapshot transactions are supported, read/write and single use
418
- # transactions are not.
419
- # @!attribute [rw] table
420
- # @return [String]
421
- # Required. The name of the table in the database to be read.
422
- # @!attribute [rw] index
423
- # @return [String]
424
- # If non-empty, the name of an index on {Google::Spanner::V1::PartitionReadRequest#table table}. This index is
425
- # used instead of the table primary key when interpreting {Google::Spanner::V1::PartitionReadRequest#key_set key_set}
426
- # and sorting result rows. See {Google::Spanner::V1::PartitionReadRequest#key_set key_set} for further information.
427
- # @!attribute [rw] columns
428
- # @return [Array<String>]
429
- # The columns of {Google::Spanner::V1::PartitionReadRequest#table table} to be returned for each row matching
430
- # this request.
431
- # @!attribute [rw] key_set
432
- # @return [Google::Spanner::V1::KeySet]
433
- # Required. `key_set` identifies the rows to be yielded. `key_set` names the
434
- # primary keys of the rows in {Google::Spanner::V1::PartitionReadRequest#table table} to be yielded, unless {Google::Spanner::V1::PartitionReadRequest#index index}
435
- # is present. If {Google::Spanner::V1::PartitionReadRequest#index index} is present, then {Google::Spanner::V1::PartitionReadRequest#key_set key_set} instead names
436
- # index keys in {Google::Spanner::V1::PartitionReadRequest#index index}.
437
- #
438
- # It is not an error for the `key_set` to name rows that do not
439
- # exist in the database. Read yields nothing for nonexistent rows.
440
- # @!attribute [rw] partition_options
441
- # @return [Google::Spanner::V1::PartitionOptions]
442
- # Additional options that affect how many partitions are created.
443
- class PartitionReadRequest; end
444
-
445
- # Information returned for each partition returned in a
446
- # PartitionResponse.
447
- # @!attribute [rw] partition_token
448
- # @return [String]
449
- # This token can be passed to Read, StreamingRead, ExecuteSql, or
450
- # ExecuteStreamingSql requests to restrict the results to those identified by
451
- # this partition token.
452
- class Partition; end
453
-
454
- # The response for {Google::Spanner::V1::Spanner::PartitionQuery PartitionQuery}
455
- # or {Google::Spanner::V1::Spanner::PartitionRead PartitionRead}
456
- # @!attribute [rw] partitions
457
- # @return [Array<Google::Spanner::V1::Partition>]
458
- # Partitions created by this request.
459
- # @!attribute [rw] transaction
460
- # @return [Google::Spanner::V1::Transaction]
461
- # Transaction created by this request.
462
- class PartitionResponse; end
463
-
464
- # The request for {Google::Spanner::V1::Spanner::Read Read} and
465
- # {Google::Spanner::V1::Spanner::StreamingRead StreamingRead}.
466
- # @!attribute [rw] session
467
- # @return [String]
468
- # Required. The session in which the read should be performed.
469
- # @!attribute [rw] transaction
470
- # @return [Google::Spanner::V1::TransactionSelector]
471
- # The transaction to use. If none is provided, the default is a
472
- # temporary read-only transaction with strong concurrency.
473
- # @!attribute [rw] table
474
- # @return [String]
475
- # Required. The name of the table in the database to be read.
476
- # @!attribute [rw] index
477
- # @return [String]
478
- # If non-empty, the name of an index on {Google::Spanner::V1::ReadRequest#table table}. This index is
479
- # used instead of the table primary key when interpreting {Google::Spanner::V1::ReadRequest#key_set key_set}
480
- # and sorting result rows. See {Google::Spanner::V1::ReadRequest#key_set key_set} for further information.
481
- # @!attribute [rw] columns
482
- # @return [Array<String>]
483
- # Required. The columns of {Google::Spanner::V1::ReadRequest#table table} to be returned for each row matching
484
- # this request.
485
- # @!attribute [rw] key_set
486
- # @return [Google::Spanner::V1::KeySet]
487
- # Required. `key_set` identifies the rows to be yielded. `key_set` names the
488
- # primary keys of the rows in {Google::Spanner::V1::ReadRequest#table table} to be yielded, unless {Google::Spanner::V1::ReadRequest#index index}
489
- # is present. If {Google::Spanner::V1::ReadRequest#index index} is present, then {Google::Spanner::V1::ReadRequest#key_set key_set} instead names
490
- # index keys in {Google::Spanner::V1::ReadRequest#index index}.
491
- #
492
- # If the {Google::Spanner::V1::ReadRequest#partition_token partition_token} field is empty, rows are yielded
493
- # in table primary key order (if {Google::Spanner::V1::ReadRequest#index index} is empty) or index key order
494
- # (if {Google::Spanner::V1::ReadRequest#index index} is non-empty). If the {Google::Spanner::V1::ReadRequest#partition_token partition_token} field is not
495
- # empty, rows will be yielded in an unspecified order.
496
- #
497
- # It is not an error for the `key_set` to name rows that do not
498
- # exist in the database. Read yields nothing for nonexistent rows.
499
- # @!attribute [rw] limit
500
- # @return [Integer]
501
- # If greater than zero, only the first `limit` rows are yielded. If `limit`
502
- # is zero, the default is no limit. A limit cannot be specified if
503
- # `partition_token` is set.
504
- # @!attribute [rw] resume_token
505
- # @return [String]
506
- # If this request is resuming a previously interrupted read,
507
- # `resume_token` should be copied from the last
508
- # {Google::Spanner::V1::PartialResultSet PartialResultSet} yielded before the interruption. Doing this
509
- # enables the new read to resume where the last read left off. The
510
- # rest of the request parameters must exactly match the request
511
- # that yielded this token.
512
- # @!attribute [rw] partition_token
513
- # @return [String]
514
- # If present, results will be restricted to the specified partition
515
- # previously created using PartitionRead(). There must be an exact
516
- # match for the values of fields common to this message and the
517
- # PartitionReadRequest message used to create this partition_token.
518
- class ReadRequest; end
519
-
520
- # The request for {Google::Spanner::V1::Spanner::BeginTransaction BeginTransaction}.
521
- # @!attribute [rw] session
522
- # @return [String]
523
- # Required. The session in which the transaction runs.
524
- # @!attribute [rw] options
525
- # @return [Google::Spanner::V1::TransactionOptions]
526
- # Required. Options for the new transaction.
527
- class BeginTransactionRequest; end
528
-
529
- # The request for {Google::Spanner::V1::Spanner::Commit Commit}.
530
- # @!attribute [rw] session
531
- # @return [String]
532
- # Required. The session in which the transaction to be committed is running.
533
- # @!attribute [rw] transaction_id
534
- # @return [String]
535
- # Commit a previously-started transaction.
536
- # @!attribute [rw] single_use_transaction
537
- # @return [Google::Spanner::V1::TransactionOptions]
538
- # Execute mutations in a temporary transaction. Note that unlike
539
- # commit of a previously-started transaction, commit with a
540
- # temporary transaction is non-idempotent. That is, if the
541
- # `CommitRequest` is sent to Cloud Spanner more than once (for
542
- # instance, due to retries in the application, or in the
543
- # transport library), it is possible that the mutations are
544
- # executed more than once. If this is undesirable, use
545
- # {Google::Spanner::V1::Spanner::BeginTransaction BeginTransaction} and
546
- # {Google::Spanner::V1::Spanner::Commit Commit} instead.
547
- # @!attribute [rw] mutations
548
- # @return [Array<Google::Spanner::V1::Mutation>]
549
- # The mutations to be executed when this transaction commits. All
550
- # mutations are applied atomically, in the order they appear in
551
- # this list.
552
- class CommitRequest; end
553
-
554
- # The response for {Google::Spanner::V1::Spanner::Commit Commit}.
555
- # @!attribute [rw] commit_timestamp
556
- # @return [Google::Protobuf::Timestamp]
557
- # The Cloud Spanner timestamp at which the transaction committed.
558
- class CommitResponse; end
559
-
560
- # The request for {Google::Spanner::V1::Spanner::Rollback Rollback}.
561
- # @!attribute [rw] session
562
- # @return [String]
563
- # Required. The session in which the transaction to roll back is running.
564
- # @!attribute [rw] transaction_id
565
- # @return [String]
566
- # Required. The transaction to roll back.
567
- class RollbackRequest; end
568
- end
569
- end
570
- end