google-cloud-spanner 1.14.0 → 1.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/lib/google-cloud-spanner.rb +13 -0
  4. data/lib/google/cloud/spanner.rb +2 -1
  5. data/lib/google/cloud/spanner/admin/database.rb +3 -2
  6. data/lib/google/cloud/spanner/admin/database/v1.rb +3 -2
  7. data/lib/google/cloud/spanner/admin/database/v1/database_admin_client.rb +742 -20
  8. data/lib/google/cloud/spanner/admin/database/v1/database_admin_client_config.json +40 -0
  9. data/lib/google/cloud/spanner/admin/database/v1/doc/google/protobuf/field_mask.rb +222 -0
  10. data/lib/google/cloud/spanner/admin/database/v1/doc/google/protobuf/timestamp.rb +113 -0
  11. data/lib/google/cloud/spanner/admin/database/v1/doc/google/spanner/admin/database/v1/backup.rb +325 -0
  12. data/lib/google/cloud/spanner/admin/database/v1/doc/google/spanner/admin/database/v1/spanner_database_admin.rb +197 -30
  13. data/lib/google/cloud/spanner/admin/instance.rb +1 -1
  14. data/lib/google/cloud/spanner/admin/instance/v1.rb +1 -1
  15. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/spanner/admin/instance/v1/spanner_instance_admin.rb +6 -13
  16. data/lib/google/cloud/spanner/admin/instance/v1/instance_admin_client.rb +8 -5
  17. data/lib/google/cloud/spanner/batch_client.rb +5 -3
  18. data/lib/google/cloud/spanner/batch_snapshot.rb +43 -8
  19. data/lib/google/cloud/spanner/client.rb +57 -8
  20. data/lib/google/cloud/spanner/project.rb +31 -6
  21. data/lib/google/cloud/spanner/results.rb +4 -2
  22. data/lib/google/cloud/spanner/service.rb +3 -1
  23. data/lib/google/cloud/spanner/session.rb +37 -6
  24. data/lib/google/cloud/spanner/snapshot.rb +26 -3
  25. data/lib/google/cloud/spanner/transaction.rb +49 -5
  26. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/mutation.rb +8 -1
  27. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/spanner.rb +91 -102
  28. data/lib/google/cloud/spanner/v1/spanner_client.rb +112 -136
  29. data/lib/google/cloud/spanner/version.rb +1 -1
  30. data/lib/google/spanner/admin/database/v1/backup_pb.rb +98 -0
  31. data/lib/google/spanner/admin/database/v1/common_pb.rb +28 -0
  32. data/lib/google/spanner/admin/database/v1/spanner_database_admin_pb.rb +53 -0
  33. data/lib/google/spanner/admin/database/v1/spanner_database_admin_services_pb.rb +82 -12
  34. data/lib/google/spanner/admin/instance/v1/spanner_instance_admin_services_pb.rb +1 -2
  35. data/lib/google/spanner/v1/spanner_pb.rb +5 -0
  36. data/lib/google/spanner/v1/spanner_services_pb.rb +31 -40
  37. metadata +7 -2
@@ -118,6 +118,14 @@ module Google
118
118
  # specified using a {Fields} object.
119
119
  #
120
120
  # Types are optional.
121
+ # @param [Hash] query_options A hash of values to specify the custom
122
+ # query options for executing SQL query. Query options are optional.
123
+ # The following settings can be provided:
124
+ #
125
+ # * `:optimizer_version` (String) The version of optimizer to use.
126
+ # Empty to use database default. "latest" to use the latest
127
+ # available optimizer version.
128
+ #
121
129
  # @return [Google::Cloud::Spanner::Results] The results of the query
122
130
  # execution.
123
131
  #
@@ -220,13 +228,28 @@ module Google
220
228
  # end
221
229
  # end
222
230
  #
223
- def execute_query sql, params: nil, types: nil
231
+ # @example Query using query options:
232
+ # require "google/cloud/spanner"
233
+ #
234
+ # spanner = Google::Cloud::Spanner.new
235
+ # db = spanner.client "my-instance", "my-database"
236
+ #
237
+ # db.snapshot do |snp|
238
+ # results = snp.execute_query \
239
+ # "SELECT * FROM users", query_options: { optimizer_version: "1" }
240
+ #
241
+ # results.rows.each do |row|
242
+ # puts "User #{row[:id]} is #{row[:name]}"
243
+ # end
244
+ # end
245
+ #
246
+ def execute_query sql, params: nil, types: nil, query_options: nil
224
247
  ensure_session!
225
248
 
226
249
  params, types = Convert.to_input_params_and_types params, types
227
-
228
250
  session.execute_query sql, params: params, types: types,
229
- transaction: tx_selector
251
+ transaction: tx_selector,
252
+ query_options: query_options
230
253
  end
231
254
  alias execute execute_query
232
255
  alias query execute_query
@@ -148,6 +148,14 @@ module Google
148
148
  # specified using a {Fields} object.
149
149
  #
150
150
  # Types are optional.
151
+ # @param [Hash] query_options A hash of values to specify the custom
152
+ # query options for executing SQL query. Query options are optional.
153
+ # The following settings can be provided:
154
+ #
155
+ # * `:optimizer_version` (String) The version of optimizer to use.
156
+ # Empty to use database default. "latest" to use the latest
157
+ # available optimizer version.
158
+ #
151
159
  # @return [Google::Cloud::Spanner::Results] The results of the query
152
160
  # execution.
153
161
  #
@@ -251,15 +259,30 @@ module Google
251
259
  # end
252
260
  # end
253
261
  #
254
- def execute_query sql, params: nil, types: nil
262
+ # @example Query using query options:
263
+ # require "google/cloud/spanner"
264
+ #
265
+ # spanner = Google::Cloud::Spanner.new
266
+ # db = spanner.client "my-instance", "my-database"
267
+ #
268
+ # db.transaction do |tx|
269
+ # results = tx.execute_query \
270
+ # "SELECT * FROM users", query_options: { optimizer_version: "1" }
271
+ #
272
+ # results.rows.each do |row|
273
+ # puts "User #{row[:id]} is #{row[:name]}"
274
+ # end
275
+ # end
276
+ #
277
+ def execute_query sql, params: nil, types: nil, query_options: nil
255
278
  ensure_session!
256
279
 
257
280
  @seqno += 1
258
281
 
259
282
  params, types = Convert.to_input_params_and_types params, types
260
-
261
283
  session.execute_query sql, params: params, types: types,
262
- transaction: tx_selector, seqno: @seqno
284
+ transaction: tx_selector, seqno: @seqno,
285
+ query_options: query_options
263
286
  end
264
287
  alias execute execute_query
265
288
  alias query execute_query
@@ -322,6 +345,13 @@ module Google
322
345
  # `[:INT64]`.
323
346
  # * {Fields} - Nested Structs are specified by providing a Fields
324
347
  # object.
348
+ # @param [Hash] query_options A hash of values to specify the custom
349
+ # query options for executing SQL query. Query options are optional.
350
+ # The following settings can be provided:
351
+ #
352
+ # * `:optimizer_version` (String) The version of optimizer to use.
353
+ # Empty to use database default. "latest" to use the latest
354
+ # available optimizer version.
325
355
  #
326
356
  # @return [Integer] The exact number of rows that were modified.
327
357
  #
@@ -350,8 +380,22 @@ module Google
350
380
  # )
351
381
  # end
352
382
  #
353
- def execute_update sql, params: nil, types: nil
354
- results = execute_query sql, params: params, types: types
383
+ # @example Update using query options
384
+ # require "google/cloud/spanner"
385
+ #
386
+ # spanner = Google::Cloud::Spanner.new
387
+ # db = spanner.client "my-instance", "my-database"
388
+ #
389
+ # db.transaction do |tx|
390
+ # row_count = tx.execute_update(
391
+ # "UPDATE users SET name = 'Charlie' WHERE id = 1",
392
+ # query_options: { optimizer_version: "1" }
393
+ # )
394
+ # end
395
+ #
396
+ def execute_update sql, params: nil, types: nil, query_options: nil
397
+ results = execute_query sql, params: params, types: types,
398
+ query_options: query_options
355
399
  # Stream all PartialResultSet to get ResultSetStats
356
400
  results.rows.to_a
357
401
  # Raise an error if there is not a row count returned
@@ -32,6 +32,10 @@ module Google
32
32
  # Like {Google::Spanner::V1::Mutation#insert insert}, except that if the row already exists, then
33
33
  # its column values are overwritten with the ones provided. Any
34
34
  # column values not explicitly written are preserved.
35
+ #
36
+ # When using {Google::Spanner::V1::Mutation#insert_or_update insert_or_update}, just as when using {Google::Spanner::V1::Mutation#insert insert}, all `NOT
37
+ # NULL` columns in the table must be given a value. This holds true
38
+ # even when the row already exists and will therefore actually be updated.
35
39
  # @!attribute [rw] replace
36
40
  # @return [Google::Spanner::V1::Mutation::Write]
37
41
  # Like {Google::Spanner::V1::Mutation#insert insert}, except that if the row already exists, it is
@@ -78,7 +82,10 @@ module Google
78
82
  # Required. The table whose rows will be deleted.
79
83
  # @!attribute [rw] key_set
80
84
  # @return [Google::Spanner::V1::KeySet]
81
- # Required. The primary keys of the rows within {Google::Spanner::V1::Mutation::Delete#table table} to delete.
85
+ # Required. The primary keys of the rows within {Google::Spanner::V1::Mutation::Delete#table table} to delete. The
86
+ # primary keys must be specified in the order in which they appear in the
87
+ # `PRIMARY KEY()` clause of the table's equivalent DDL statement (the DDL
88
+ # statement used to create the table).
82
89
  # Delete is idempotent. The transaction will succeed even if some or all
83
90
  # rows do not exist.
84
91
  class Delete; end
@@ -25,8 +25,7 @@ module Google
25
25
  # The session to create.
26
26
  class CreateSessionRequest; end
27
27
 
28
- # The request for
29
- # {Google::Spanner::V1::Spanner::BatchCreateSessions BatchCreateSessions}.
28
+ # The request for {Google::Spanner::V1::Spanner::BatchCreateSessions BatchCreateSessions}.
30
29
  # @!attribute [rw] database
31
30
  # @return [String]
32
31
  # Required. The database in which the new sessions are created.
@@ -39,12 +38,10 @@ module Google
39
38
  # The API may return fewer than the requested number of sessions. If a
40
39
  # specific number of sessions are desired, the client can make additional
41
40
  # calls to BatchCreateSessions (adjusting
42
- # {Google::Spanner::V1::BatchCreateSessionsRequest#session_count session_count}
43
- # as necessary).
41
+ # {Google::Spanner::V1::BatchCreateSessionsRequest#session_count session_count} as necessary).
44
42
  class BatchCreateSessionsRequest; end
45
43
 
46
- # The response for
47
- # {Google::Spanner::V1::Spanner::BatchCreateSessions BatchCreateSessions}.
44
+ # The response for {Google::Spanner::V1::Spanner::BatchCreateSessions BatchCreateSessions}.
48
45
  # @!attribute [rw] session
49
46
  # @return [Array<Google::Spanner::V1::Session>]
50
47
  # The freshly created sessions.
@@ -92,8 +89,7 @@ module Google
92
89
  # @!attribute [rw] page_token
93
90
  # @return [String]
94
91
  # If non-empty, `page_token` should contain a
95
- # {Google::Spanner::V1::ListSessionsResponse#next_page_token next_page_token}
96
- # from a previous
92
+ # {Google::Spanner::V1::ListSessionsResponse#next_page_token next_page_token} from a previous
97
93
  # {Google::Spanner::V1::ListSessionsResponse ListSessionsResponse}.
98
94
  # @!attribute [rw] filter
99
95
  # @return [String]
@@ -116,8 +112,8 @@ module Google
116
112
  # @!attribute [rw] next_page_token
117
113
  # @return [String]
118
114
  # `next_page_token` can be sent in a subsequent
119
- # {Google::Spanner::V1::Spanner::ListSessions ListSessions} call to fetch more
120
- # of the matching sessions.
115
+ # {Google::Spanner::V1::Spanner::ListSessions ListSessions} call to fetch more of the matching
116
+ # sessions.
121
117
  class ListSessionsResponse; end
122
118
 
123
119
  # The request for {Google::Spanner::V1::Spanner::DeleteSession DeleteSession}.
@@ -164,8 +160,7 @@ module Google
164
160
  # @return [Hash{String => Google::Spanner::V1::Type}]
165
161
  # It is not always possible for Cloud Spanner to infer the right SQL type
166
162
  # from a JSON value. For example, values of type `BYTES` and values
167
- # of type `STRING` both appear in
168
- # {Google::Spanner::V1::ExecuteSqlRequest#params params} as JSON strings.
163
+ # of type `STRING` both appear in {Google::Spanner::V1::ExecuteSqlRequest#params params} as JSON strings.
169
164
  #
170
165
  # In these cases, `param_types` can be used to specify the exact
171
166
  # SQL type for some or all of the SQL statement parameters. See the
@@ -175,18 +170,15 @@ module Google
175
170
  # @return [String]
176
171
  # If this request is resuming a previously interrupted SQL statement
177
172
  # execution, `resume_token` should be copied from the last
178
- # {Google::Spanner::V1::PartialResultSet PartialResultSet} yielded before the
179
- # interruption. Doing this enables the new SQL statement execution to resume
180
- # where the last one left off. The rest of the request parameters must
181
- # exactly match the request that yielded this token.
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.
182
177
  # @!attribute [rw] query_mode
183
178
  # @return [Google::Spanner::V1::ExecuteSqlRequest::QueryMode]
184
179
  # Used to control the amount of debugging information returned in
185
- # {Google::Spanner::V1::ResultSetStats ResultSetStats}. If
186
- # {Google::Spanner::V1::ExecuteSqlRequest#partition_token partition_token} is
187
- # set, {Google::Spanner::V1::ExecuteSqlRequest#query_mode query_mode} can only
188
- # be set to
189
- # {Google::Spanner::V1::ExecuteSqlRequest::QueryMode::NORMAL QueryMode::NORMAL}.
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}.
190
182
  # @!attribute [rw] partition_token
191
183
  # @return [String]
192
184
  # If present, results will be restricted to the specified partition
@@ -205,7 +197,31 @@ module Google
205
197
  # handled requests will yield the same response as the first execution.
206
198
  #
207
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.
208
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
+
209
225
  # Mode in which the statement must be processed.
210
226
  module QueryMode
211
227
  # The default mode. Only the statement results are returned.
@@ -234,17 +250,17 @@ module Google
234
250
  # transaction.
235
251
  # @!attribute [rw] statements
236
252
  # @return [Array<Google::Spanner::V1::ExecuteBatchDmlRequest::Statement>]
237
- # Required. The list of statements to execute in this batch. Statements are
238
- # executed serially, such that the effects of statement `i` are visible to
239
- # statement `i+1`. Each statement must be a DML statement. Execution stops at
240
- # the first failed statement; the remaining statements are not executed.
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.
241
257
  #
242
258
  # Callers must provide at least one statement.
243
259
  # @!attribute [rw] seqno
244
260
  # @return [Integer]
245
- # Required. A per-transaction sequence number used to identify this request.
246
- # This field makes each request idempotent such that if the request is
247
- # received multiple times, at most one will succeed.
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.
248
264
  #
249
265
  # The sequence number must be monotonically increasing within the
250
266
  # transaction. If a request arrives for the first time with an out-of-order
@@ -273,9 +289,7 @@ module Google
273
289
  # @return [Hash{String => Google::Spanner::V1::Type}]
274
290
  # It is not always possible for Cloud Spanner to infer the right SQL type
275
291
  # from a JSON value. For example, values of type `BYTES` and values
276
- # of type `STRING` both appear in
277
- # {Google::Spanner::V1::ExecuteBatchDmlRequest::Statement#params params} as
278
- # JSON strings.
292
+ # of type `STRING` both appear in {Google::Spanner::V1::ExecuteBatchDmlRequest::Statement#params params} as JSON strings.
279
293
  #
280
294
  # In these cases, `param_types` can be used to specify the exact
281
295
  # SQL type for some or all of the SQL statement parameters. See the
@@ -284,48 +298,39 @@ module Google
284
298
  class Statement; end
285
299
  end
286
300
 
287
- # The response for
288
- # {Google::Spanner::V1::Spanner::ExecuteBatchDml ExecuteBatchDml}. Contains a list
289
- # of {Google::Spanner::V1::ResultSet ResultSet} messages, one for each DML
290
- # statement that has successfully executed, in the same order as the statements
291
- # in the request. If a statement fails, the status in the response body
292
- # identifies the cause of the failure.
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.
293
305
  #
294
306
  # To check for DML statements that failed, use the following approach:
295
307
  #
296
- # 1. Check the status in the response message. The
297
- # {Google::Rpc::Code} enum
308
+ # 1. Check the status in the response message. The {Google::Rpc::Code} enum
298
309
  # value `OK` indicates that all statements were executed successfully.
299
310
  # 2. If the status was not `OK`, check the number of result sets in the
300
- # response. If the response contains `N`
301
- # {Google::Spanner::V1::ResultSet ResultSet} messages, then statement `N+1` in
302
- # the request failed.
311
+ # response. If the response contains `N` {Google::Spanner::V1::ResultSet ResultSet} messages, then
312
+ # statement `N+1` in the request failed.
303
313
  #
304
314
  # Example 1:
305
315
  #
306
316
  # * Request: 5 DML statements, all executed successfully.
307
- # * Response: 5 {Google::Spanner::V1::ResultSet ResultSet} messages, with the
308
- # status `OK`.
317
+ # * Response: 5 {Google::Spanner::V1::ResultSet ResultSet} messages, with the status `OK`.
309
318
  #
310
319
  # Example 2:
311
320
  #
312
321
  # * Request: 5 DML statements. The third statement has a syntax error.
313
- # * Response: 2 {Google::Spanner::V1::ResultSet ResultSet} messages, and a syntax
314
- # error (`INVALID_ARGUMENT`)
315
- # status. The number of {Google::Spanner::V1::ResultSet ResultSet} messages
316
- # indicates that the third statement failed, and the fourth and fifth
317
- # statements were not executed.
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.
318
325
  # @!attribute [rw] result_sets
319
326
  # @return [Array<Google::Spanner::V1::ResultSet>]
320
- # One {Google::Spanner::V1::ResultSet ResultSet} for each statement in the
321
- # request that ran successfully, in the same order as the statements in the
322
- # request. Each {Google::Spanner::V1::ResultSet ResultSet} does not contain any
323
- # rows. The {Google::Spanner::V1::ResultSetStats ResultSetStats} in each
324
- # {Google::Spanner::V1::ResultSet ResultSet} contain the number of rows
325
- # modified by the statement.
326
- #
327
- # Only the first {Google::Spanner::V1::ResultSet ResultSet} in the response
328
- # contains valid {Google::Spanner::V1::ResultSetMetadata ResultSetMetadata}.
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}.
329
334
  # @!attribute [rw] status
330
335
  # @return [Google::Rpc::Status]
331
336
  # If all DML statements are executed successfully, the status is `OK`.
@@ -364,16 +369,15 @@ module Google
364
369
  # transactions are not.
365
370
  # @!attribute [rw] sql
366
371
  # @return [String]
367
- # Required. The query request to generate partitions for. The request will
368
- # fail if the query is not root partitionable. The query plan of a root
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
369
374
  # partitionable query has a single distributed union operator. A distributed
370
375
  # union operator conceptually divides one or more tables into multiple
371
376
  # splits, remotely evaluates a subquery independently on each split, and
372
377
  # then unions all results.
373
378
  #
374
379
  # This must not contain DML commands, such as INSERT, UPDATE, or
375
- # DELETE. Use
376
- # {Google::Spanner::V1::Spanner::ExecuteStreamingSql ExecuteStreamingSql} with a
380
+ # DELETE. Use {Google::Spanner::V1::Spanner::ExecuteStreamingSql ExecuteStreamingSql} with a
377
381
  # PartitionedDml transaction for large, partition-friendly DML operations.
378
382
  # @!attribute [rw] params
379
383
  # @return [Google::Protobuf::Struct]
@@ -393,8 +397,7 @@ module Google
393
397
  # @return [Hash{String => Google::Spanner::V1::Type}]
394
398
  # It is not always possible for Cloud Spanner to infer the right SQL type
395
399
  # from a JSON value. For example, values of type `BYTES` and values
396
- # of type `STRING` both appear in
397
- # {Google::Spanner::V1::PartitionQueryRequest#params params} as JSON strings.
400
+ # of type `STRING` both appear in {Google::Spanner::V1::PartitionQueryRequest#params params} as JSON strings.
398
401
  #
399
402
  # In these cases, `param_types` can be used to specify the exact
400
403
  # SQL type for some or all of the SQL query parameters. See the
@@ -418,24 +421,18 @@ module Google
418
421
  # Required. The name of the table in the database to be read.
419
422
  # @!attribute [rw] index
420
423
  # @return [String]
421
- # If non-empty, the name of an index on
422
- # {Google::Spanner::V1::PartitionReadRequest#table table}. This index is used
423
- # instead of the table primary key when interpreting
424
- # {Google::Spanner::V1::PartitionReadRequest#key_set key_set} and sorting
425
- # result rows. See {Google::Spanner::V1::PartitionReadRequest#key_set key_set}
426
- # for further information.
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
427
  # @!attribute [rw] columns
428
428
  # @return [Array<String>]
429
- # The columns of {Google::Spanner::V1::PartitionReadRequest#table table} to be
430
- # returned for each row matching this request.
429
+ # The columns of {Google::Spanner::V1::PartitionReadRequest#table table} to be returned for each row matching
430
+ # this request.
431
431
  # @!attribute [rw] key_set
432
432
  # @return [Google::Spanner::V1::KeySet]
433
433
  # Required. `key_set` identifies the rows to be yielded. `key_set` names the
434
- # primary keys of the rows in
435
- # {Google::Spanner::V1::PartitionReadRequest#table table} to be yielded, unless
436
- # {Google::Spanner::V1::PartitionReadRequest#index index} is present. If
437
- # {Google::Spanner::V1::PartitionReadRequest#index index} is present, then
438
- # {Google::Spanner::V1::PartitionReadRequest#key_set key_set} instead names
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
439
436
  # index keys in {Google::Spanner::V1::PartitionReadRequest#index index}.
440
437
  #
441
438
  # It is not an error for the `key_set` to name rows that do not
@@ -478,31 +475,24 @@ module Google
478
475
  # Required. The name of the table in the database to be read.
479
476
  # @!attribute [rw] index
480
477
  # @return [String]
481
- # If non-empty, the name of an index on
482
- # {Google::Spanner::V1::ReadRequest#table table}. This index is used instead of
483
- # the table primary key when interpreting
484
- # {Google::Spanner::V1::ReadRequest#key_set key_set} and sorting result rows.
485
- # See {Google::Spanner::V1::ReadRequest#key_set key_set} for further
486
- # information.
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.
487
481
  # @!attribute [rw] columns
488
482
  # @return [Array<String>]
489
- # Required. The columns of {Google::Spanner::V1::ReadRequest#table table} to be
490
- # returned for each row matching this request.
483
+ # Required. The columns of {Google::Spanner::V1::ReadRequest#table table} to be returned for each row matching
484
+ # this request.
491
485
  # @!attribute [rw] key_set
492
486
  # @return [Google::Spanner::V1::KeySet]
493
487
  # Required. `key_set` identifies the rows to be yielded. `key_set` names the
494
- # primary keys of the rows in {Google::Spanner::V1::ReadRequest#table table} to
495
- # be yielded, unless {Google::Spanner::V1::ReadRequest#index index} is present.
496
- # If {Google::Spanner::V1::ReadRequest#index index} is present, then
497
- # {Google::Spanner::V1::ReadRequest#key_set key_set} instead names index keys
498
- # in {Google::Spanner::V1::ReadRequest#index index}.
499
- #
500
- # If the {Google::Spanner::V1::ReadRequest#partition_token partition_token}
501
- # field is empty, rows are yielded in table primary key order (if
502
- # {Google::Spanner::V1::ReadRequest#index index} is empty) or index key order
503
- # (if {Google::Spanner::V1::ReadRequest#index index} is non-empty). If the
504
- # {Google::Spanner::V1::ReadRequest#partition_token partition_token} field is
505
- # not empty, rows will be yielded in an unspecified order.
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.
506
496
  #
507
497
  # It is not an error for the `key_set` to name rows that do not
508
498
  # exist in the database. Read yields nothing for nonexistent rows.
@@ -515,9 +505,9 @@ module Google
515
505
  # @return [String]
516
506
  # If this request is resuming a previously interrupted read,
517
507
  # `resume_token` should be copied from the last
518
- # {Google::Spanner::V1::PartialResultSet PartialResultSet} yielded before the
519
- # interruption. Doing this enables the new read to resume where the last read
520
- # left off. The rest of the request parameters must exactly match the request
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
521
511
  # that yielded this token.
522
512
  # @!attribute [rw] partition_token
523
513
  # @return [String]
@@ -527,8 +517,7 @@ module Google
527
517
  # PartitionReadRequest message used to create this partition_token.
528
518
  class ReadRequest; end
529
519
 
530
- # The request for
531
- # {Google::Spanner::V1::Spanner::BeginTransaction BeginTransaction}.
520
+ # The request for {Google::Spanner::V1::Spanner::BeginTransaction BeginTransaction}.
532
521
  # @!attribute [rw] session
533
522
  # @return [String]
534
523
  # Required. The session in which the transaction runs.