google-cloud-spanner 1.2.0 → 1.3.1
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.
- checksums.yaml +4 -4
- data/lib/google-cloud-spanner.rb +25 -0
- data/lib/google/cloud/spanner.rb +71 -11
- data/lib/google/cloud/spanner/batch_client.rb +355 -0
- data/lib/google/cloud/spanner/batch_snapshot.rb +588 -0
- data/lib/google/cloud/spanner/client.rb +27 -20
- data/lib/google/cloud/spanner/commit.rb +6 -5
- data/lib/google/cloud/spanner/convert.rb +39 -0
- data/lib/google/cloud/spanner/credentials.rb +7 -7
- data/lib/google/cloud/spanner/data.rb +5 -5
- data/lib/google/cloud/spanner/database.rb +13 -7
- data/lib/google/cloud/spanner/database/job.rb +7 -2
- data/lib/google/cloud/spanner/database/list.rb +1 -1
- data/lib/google/cloud/spanner/fields.rb +16 -12
- data/lib/google/cloud/spanner/instance.rb +25 -13
- data/lib/google/cloud/spanner/instance/config.rb +2 -2
- data/lib/google/cloud/spanner/instance/config/list.rb +1 -1
- data/lib/google/cloud/spanner/instance/job.rb +7 -2
- data/lib/google/cloud/spanner/instance/list.rb +1 -1
- data/lib/google/cloud/spanner/partition.rb +208 -0
- data/lib/google/cloud/spanner/pool.rb +6 -6
- data/lib/google/cloud/spanner/project.rb +59 -16
- data/lib/google/cloud/spanner/results.rb +12 -5
- data/lib/google/cloud/spanner/service.rb +85 -61
- data/lib/google/cloud/spanner/session.rb +45 -9
- data/lib/google/cloud/spanner/snapshot.rb +10 -2
- data/lib/google/cloud/spanner/status.rb +6 -5
- data/lib/google/cloud/spanner/transaction.rb +11 -3
- data/lib/google/cloud/spanner/v1/doc/google/protobuf/duration.rb +1 -1
- data/lib/google/cloud/spanner/v1/doc/google/protobuf/struct.rb +1 -1
- data/lib/google/cloud/spanner/v1/doc/google/protobuf/timestamp.rb +1 -1
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/keys.rb +1 -1
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/mutation.rb +1 -1
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/query_plan.rb +1 -1
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/result_set.rb +1 -1
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/spanner.rb +138 -6
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/transaction.rb +1 -1
- data/lib/google/cloud/spanner/v1/doc/overview.rb +6 -5
- data/lib/google/cloud/spanner/v1/spanner_client.rb +257 -33
- data/lib/google/cloud/spanner/v1/spanner_client_config.json +10 -0
- data/lib/google/cloud/spanner/version.rb +1 -1
- data/lib/google/spanner/v1/spanner_pb.rb +35 -0
- data/lib/google/spanner/v1/spanner_services_pb.rb +20 -2
- metadata +12 -9
@@ -14,6 +14,7 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
require "google/cloud/spanner/errors"
|
17
|
+
require "google/cloud/spanner/convert"
|
17
18
|
require "google/cloud/spanner/results"
|
18
19
|
require "google/cloud/spanner/commit"
|
19
20
|
|
@@ -178,10 +179,13 @@ module Google
|
|
178
179
|
#
|
179
180
|
def execute sql, params: nil, types: nil
|
180
181
|
ensure_session!
|
182
|
+
|
183
|
+
params, types = Convert.to_input_params_and_types params, types
|
184
|
+
|
181
185
|
session.execute sql, params: params, types: types,
|
182
186
|
transaction: tx_selector
|
183
187
|
end
|
184
|
-
|
188
|
+
alias query execute
|
185
189
|
|
186
190
|
##
|
187
191
|
# Read rows from a database table, as a simple alternative to
|
@@ -219,6 +223,10 @@ module Google
|
|
219
223
|
#
|
220
224
|
def read table, columns, keys: nil, index: nil, limit: nil
|
221
225
|
ensure_session!
|
226
|
+
|
227
|
+
columns = Array(columns).map(&:to_s)
|
228
|
+
keys = Convert.to_key_set keys
|
229
|
+
|
222
230
|
session.read table, columns, keys: keys, index: index, limit: limit,
|
223
231
|
transaction: tx_selector
|
224
232
|
end
|
@@ -268,7 +276,7 @@ module Google
|
|
268
276
|
ensure_session!
|
269
277
|
@commit.upsert table, rows
|
270
278
|
end
|
271
|
-
|
279
|
+
alias save upsert
|
272
280
|
|
273
281
|
##
|
274
282
|
# Inserts new rows in a table. If any of the rows already exist, the
|
@@ -548,7 +556,7 @@ module Google
|
|
548
556
|
# @private Raise an error unless an active connection to the service is
|
549
557
|
# available.
|
550
558
|
def ensure_session!
|
551
|
-
|
559
|
+
raise "Must have active connection to service" unless session
|
552
560
|
end
|
553
561
|
|
554
562
|
def service
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2018 Google LLC
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -19,7 +19,7 @@ module Google
|
|
19
19
|
#
|
20
20
|
# | Class | Description |
|
21
21
|
# | ----- | ----------- |
|
22
|
-
# | [SpannerClient][] | Cloud Spanner
|
22
|
+
# | [SpannerClient][] | Cloud Spanner API |
|
23
23
|
# | [Data Types][] | Data types for Google::Cloud::Spanner::V1 |
|
24
24
|
#
|
25
25
|
# [SpannerClient]: https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud-spanner/latest/google/spanner/v1/spannerclient
|
@@ -159,7 +159,14 @@ module Google
|
|
159
159
|
# @!attribute [rw] query_mode
|
160
160
|
# @return [Google::Spanner::V1::ExecuteSqlRequest::QueryMode]
|
161
161
|
# Used to control the amount of debugging information returned in
|
162
|
-
# {Google::Spanner::V1::ResultSetStats ResultSetStats}.
|
162
|
+
# {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
|
163
|
+
# be set to {Google::Spanner::V1::ExecuteSqlRequest::QueryMode::NORMAL QueryMode::NORMAL}.
|
164
|
+
# @!attribute [rw] partition_token
|
165
|
+
# @return [String]
|
166
|
+
# If present, results will be restricted to the specified partition
|
167
|
+
# previously created using PartitionQuery(). There must be an exact
|
168
|
+
# match for the values of fields common to this message and the
|
169
|
+
# PartitionQueryRequest message used to create this partition_token.
|
163
170
|
class ExecuteSqlRequest
|
164
171
|
# Mode in which the query must be processed.
|
165
172
|
module QueryMode
|
@@ -177,6 +184,122 @@ module Google
|
|
177
184
|
end
|
178
185
|
end
|
179
186
|
|
187
|
+
# Options for a PartitionQueryRequest and
|
188
|
+
# PartitionReadRequest.
|
189
|
+
# @!attribute [rw] partition_size_bytes
|
190
|
+
# @return [Integer]
|
191
|
+
# The desired data size for each partition generated. The default for this
|
192
|
+
# option is currently 1 GiB. This is only a hint. The actual size of each
|
193
|
+
# partition may be smaller or larger than this size request.
|
194
|
+
# @!attribute [rw] max_partitions
|
195
|
+
# @return [Integer]
|
196
|
+
# The desired maximum number of partitions to return. For example, this may
|
197
|
+
# be set to the number of workers available. The default for this option
|
198
|
+
# is currently 10,000. The maximum value is currently 200,000. This is only
|
199
|
+
# a hint. The actual number of partitions returned may be smaller or larger
|
200
|
+
# than this maximum count request.
|
201
|
+
class PartitionOptions; end
|
202
|
+
|
203
|
+
# The request for {Google::Spanner::V1::Spanner::PartitionQuery PartitionQuery}
|
204
|
+
# @!attribute [rw] session
|
205
|
+
# @return [String]
|
206
|
+
# Required. The session used to create the partitions.
|
207
|
+
# @!attribute [rw] transaction
|
208
|
+
# @return [Google::Spanner::V1::TransactionSelector]
|
209
|
+
# Read only snapshot transactions are supported, read/write and single use
|
210
|
+
# transactions are not.
|
211
|
+
# @!attribute [rw] sql
|
212
|
+
# @return [String]
|
213
|
+
# The query request to generate partitions for. The request will fail if
|
214
|
+
# the query is not root partitionable. The query plan of a root
|
215
|
+
# partitionable query has a single distributed union operator. A distributed
|
216
|
+
# union operator conceptually divides one or more tables into multiple
|
217
|
+
# splits, remotely evaluates a subquery independently on each split, and
|
218
|
+
# then unions all results.
|
219
|
+
# @!attribute [rw] params
|
220
|
+
# @return [Google::Protobuf::Struct]
|
221
|
+
# The SQL query string can contain parameter placeholders. A parameter
|
222
|
+
# placeholder consists of +'@'+ followed by the parameter
|
223
|
+
# name. Parameter names consist of any combination of letters,
|
224
|
+
# numbers, and underscores.
|
225
|
+
#
|
226
|
+
# Parameters can appear anywhere that a literal value is expected. The same
|
227
|
+
# parameter name can be used more than once, for example:
|
228
|
+
# +"WHERE id > @msg_id AND id < @msg_id + 100"+
|
229
|
+
#
|
230
|
+
# It is an error to execute an SQL query with unbound parameters.
|
231
|
+
#
|
232
|
+
# Parameter values are specified using +params+, which is a JSON
|
233
|
+
# object whose keys are parameter names, and whose values are the
|
234
|
+
# corresponding parameter values.
|
235
|
+
# @!attribute [rw] param_types
|
236
|
+
# @return [Hash{String => Google::Spanner::V1::Type}]
|
237
|
+
# It is not always possible for Cloud Spanner to infer the right SQL type
|
238
|
+
# from a JSON value. For example, values of type +BYTES+ and values
|
239
|
+
# of type +STRING+ both appear in {Google::Spanner::V1::PartitionQueryRequest#params params} as JSON strings.
|
240
|
+
#
|
241
|
+
# In these cases, +param_types+ can be used to specify the exact
|
242
|
+
# SQL type for some or all of the SQL query parameters. See the
|
243
|
+
# definition of {Google::Spanner::V1::Type Type} for more information
|
244
|
+
# about SQL types.
|
245
|
+
# @!attribute [rw] partition_options
|
246
|
+
# @return [Google::Spanner::V1::PartitionOptions]
|
247
|
+
# Additional options that affect how many partitions are created.
|
248
|
+
class PartitionQueryRequest; end
|
249
|
+
|
250
|
+
# The request for {Google::Spanner::V1::Spanner::PartitionRead PartitionRead}
|
251
|
+
# @!attribute [rw] session
|
252
|
+
# @return [String]
|
253
|
+
# Required. The session used to create the partitions.
|
254
|
+
# @!attribute [rw] transaction
|
255
|
+
# @return [Google::Spanner::V1::TransactionSelector]
|
256
|
+
# Read only snapshot transactions are supported, read/write and single use
|
257
|
+
# transactions are not.
|
258
|
+
# @!attribute [rw] table
|
259
|
+
# @return [String]
|
260
|
+
# Required. The name of the table in the database to be read.
|
261
|
+
# @!attribute [rw] index
|
262
|
+
# @return [String]
|
263
|
+
# If non-empty, the name of an index on {Google::Spanner::V1::PartitionReadRequest#table table}. This index is
|
264
|
+
# used instead of the table primary key when interpreting {Google::Spanner::V1::PartitionReadRequest#key_set key_set}
|
265
|
+
# and sorting result rows. See {Google::Spanner::V1::PartitionReadRequest#key_set key_set} for further information.
|
266
|
+
# @!attribute [rw] columns
|
267
|
+
# @return [Array<String>]
|
268
|
+
# The columns of {Google::Spanner::V1::PartitionReadRequest#table table} to be returned for each row matching
|
269
|
+
# this request.
|
270
|
+
# @!attribute [rw] key_set
|
271
|
+
# @return [Google::Spanner::V1::KeySet]
|
272
|
+
# Required. +key_set+ identifies the rows to be yielded. +key_set+ names the
|
273
|
+
# primary keys of the rows in {Google::Spanner::V1::PartitionReadRequest#table table} to be yielded, unless {Google::Spanner::V1::PartitionReadRequest#index index}
|
274
|
+
# is present. If {Google::Spanner::V1::PartitionReadRequest#index index} is present, then {Google::Spanner::V1::PartitionReadRequest#key_set key_set} instead names
|
275
|
+
# index keys in {Google::Spanner::V1::PartitionReadRequest#index index}.
|
276
|
+
#
|
277
|
+
# It is not an error for the +key_set+ to name rows that do not
|
278
|
+
# exist in the database. Read yields nothing for nonexistent rows.
|
279
|
+
# @!attribute [rw] partition_options
|
280
|
+
# @return [Google::Spanner::V1::PartitionOptions]
|
281
|
+
# Additional options that affect how many partitions are created.
|
282
|
+
class PartitionReadRequest; end
|
283
|
+
|
284
|
+
# Information returned for each partition returned in a
|
285
|
+
# PartitionResponse.
|
286
|
+
# @!attribute [rw] partition_token
|
287
|
+
# @return [String]
|
288
|
+
# This token can be passed to Read, StreamingRead, ExecuteSql, or
|
289
|
+
# ExecuteStreamingSql requests to restrict the results to those identified by
|
290
|
+
# this partition token.
|
291
|
+
class Partition; end
|
292
|
+
|
293
|
+
# The response for {Google::Spanner::V1::Spanner::PartitionQuery PartitionQuery}
|
294
|
+
# or {Google::Spanner::V1::Spanner::PartitionRead PartitionRead}
|
295
|
+
# @!attribute [rw] partitions
|
296
|
+
# @return [Array<Google::Spanner::V1::Partition>]
|
297
|
+
# Partitions created by this request.
|
298
|
+
# @!attribute [rw] transaction
|
299
|
+
# @return [Google::Spanner::V1::Transaction]
|
300
|
+
# Transaction created by this request.
|
301
|
+
class PartitionResponse; end
|
302
|
+
|
180
303
|
# The request for {Google::Spanner::V1::Spanner::Read Read} and
|
181
304
|
# {Google::Spanner::V1::Spanner::StreamingRead StreamingRead}.
|
182
305
|
# @!attribute [rw] session
|
@@ -205,15 +328,18 @@ module Google
|
|
205
328
|
# is present. If {Google::Spanner::V1::ReadRequest#index index} is present, then {Google::Spanner::V1::ReadRequest#key_set key_set} instead names
|
206
329
|
# index keys in {Google::Spanner::V1::ReadRequest#index index}.
|
207
330
|
#
|
208
|
-
#
|
209
|
-
#
|
331
|
+
# If the {Google::Spanner::V1::ReadRequest#partition_token partition_token} field is empty, rows are yielded
|
332
|
+
# in table primary key order (if {Google::Spanner::V1::ReadRequest#index index} is empty) or index key order
|
333
|
+
# (if {Google::Spanner::V1::ReadRequest#index index} is non-empty). If the {Google::Spanner::V1::ReadRequest#partition_token partition_token} field is not
|
334
|
+
# empty, rows will be yielded in an unspecified order.
|
210
335
|
#
|
211
336
|
# It is not an error for the +key_set+ to name rows that do not
|
212
337
|
# exist in the database. Read yields nothing for nonexistent rows.
|
213
338
|
# @!attribute [rw] limit
|
214
339
|
# @return [Integer]
|
215
340
|
# If greater than zero, only the first +limit+ rows are yielded. If +limit+
|
216
|
-
# is zero, the default is no limit.
|
341
|
+
# is zero, the default is no limit. A limit cannot be specified if
|
342
|
+
# +partition_token+ is set.
|
217
343
|
# @!attribute [rw] resume_token
|
218
344
|
# @return [String]
|
219
345
|
# If this request is resuming a previously interrupted read,
|
@@ -222,6 +348,12 @@ module Google
|
|
222
348
|
# enables the new read to resume where the last read left off. The
|
223
349
|
# rest of the request parameters must exactly match the request
|
224
350
|
# that yielded this token.
|
351
|
+
# @!attribute [rw] partition_token
|
352
|
+
# @return [String]
|
353
|
+
# If present, results will be restricted to the specified partition
|
354
|
+
# previously created using PartitionRead(). There must be an exact
|
355
|
+
# match for the values of fields common to this message and the
|
356
|
+
# PartitionReadRequest message used to create this partition_token.
|
225
357
|
class ReadRequest; end
|
226
358
|
|
227
359
|
# The request for {Google::Spanner::V1::Spanner::BeginTransaction BeginTransaction}.
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2018 Google LLC
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -20,8 +20,8 @@ module Google
|
|
20
20
|
# # Ruby Client for Cloud Spanner API ([Alpha](https://github.com/GoogleCloudPlatform/google-cloud-ruby#versioning))
|
21
21
|
#
|
22
22
|
# [Cloud Spanner API][Product Documentation]:
|
23
|
-
# Cloud Spanner is a managed, mission-critical, globally consistent and
|
24
|
-
# relational database service.
|
23
|
+
# Cloud Spanner is a managed, mission-critical, globally consistent and
|
24
|
+
# scalable relational database service.
|
25
25
|
# - [Product Documentation][]
|
26
26
|
#
|
27
27
|
# ## Quick Start
|
@@ -29,8 +29,9 @@ module Google
|
|
29
29
|
# steps:
|
30
30
|
#
|
31
31
|
# 1. [Select or create a Cloud Platform project.](https://console.cloud.google.com/project)
|
32
|
-
# 2. [Enable
|
33
|
-
# 3. [
|
32
|
+
# 2. [Enable billing for your project.](https://cloud.google.com/billing/docs/how-to/modify-project#enable_billing_for_a_project)
|
33
|
+
# 3. [Enable the Cloud Spanner API.](https://console.cloud.google.com/apis/api/spanner)
|
34
|
+
# 4. [Setup Authentication.](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud/master/guides/authentication)
|
34
35
|
#
|
35
36
|
# ### Installation
|
36
37
|
# ```
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2018 Google LLC
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -18,9 +18,6 @@
|
|
18
18
|
# and updates to that file get reflected here through a refresh process.
|
19
19
|
# For the short term, the refresh process will only be runnable by Google
|
20
20
|
# engineers.
|
21
|
-
#
|
22
|
-
# The only allowed edits are to method and file documentation. A 3-way
|
23
|
-
# merge preserves those additions if the generated source changes.
|
24
21
|
|
25
22
|
require "json"
|
26
23
|
require "pathname"
|
@@ -65,9 +62,11 @@ module Google
|
|
65
62
|
# this service.
|
66
63
|
ALL_SCOPES = [
|
67
64
|
"https://www.googleapis.com/auth/cloud-platform",
|
65
|
+
"https://www.googleapis.com/auth/spanner.admin",
|
68
66
|
"https://www.googleapis.com/auth/spanner.data"
|
69
67
|
].freeze
|
70
68
|
|
69
|
+
|
71
70
|
DATABASE_PATH_TEMPLATE = Google::Gax::PathTemplate.new(
|
72
71
|
"projects/{project}/instances/{instance}/databases/{database}"
|
73
72
|
)
|
@@ -133,11 +132,6 @@ module Google
|
|
133
132
|
# @param timeout [Numeric]
|
134
133
|
# The default timeout, in seconds, for calls made through this client.
|
135
134
|
def initialize \
|
136
|
-
service_path: SERVICE_ADDRESS,
|
137
|
-
port: DEFAULT_SERVICE_PORT,
|
138
|
-
channel: nil,
|
139
|
-
chan_creds: nil,
|
140
|
-
updater_proc: nil,
|
141
135
|
credentials: nil,
|
142
136
|
scopes: ALL_SCOPES,
|
143
137
|
client_config: {},
|
@@ -150,17 +144,6 @@ module Google
|
|
150
144
|
require "google/gax/grpc"
|
151
145
|
require "google/spanner/v1/spanner_services_pb"
|
152
146
|
|
153
|
-
if channel || chan_creds || updater_proc
|
154
|
-
warn "The `channel`, `chan_creds`, and `updater_proc` parameters will be removed " \
|
155
|
-
"on 2017/09/08"
|
156
|
-
credentials ||= channel
|
157
|
-
credentials ||= chan_creds
|
158
|
-
credentials ||= updater_proc
|
159
|
-
end
|
160
|
-
if service_path != SERVICE_ADDRESS || port != DEFAULT_SERVICE_PORT
|
161
|
-
warn "`service_path` and `port` parameters are deprecated and will be removed"
|
162
|
-
end
|
163
|
-
|
164
147
|
credentials ||= Google::Cloud::Spanner::Credentials.default
|
165
148
|
|
166
149
|
if credentials.is_a?(String) || credentials.is_a?(Hash)
|
@@ -179,9 +162,11 @@ module Google
|
|
179
162
|
updater_proc = credentials.updater_proc
|
180
163
|
end
|
181
164
|
|
165
|
+
package_version = Gem.loaded_specs['google-cloud-spanner'].version.version
|
166
|
+
|
182
167
|
google_api_client = "gl-ruby/#{RUBY_VERSION}"
|
183
168
|
google_api_client << " #{lib_name}/#{lib_version}" if lib_name
|
184
|
-
google_api_client << " gapic
|
169
|
+
google_api_client << " gapic/#{package_version} gax/#{Google::Gax::VERSION}"
|
185
170
|
google_api_client << " grpc/#{GRPC::VERSION}"
|
186
171
|
google_api_client.freeze
|
187
172
|
|
@@ -201,6 +186,10 @@ module Google
|
|
201
186
|
kwargs: headers
|
202
187
|
)
|
203
188
|
end
|
189
|
+
|
190
|
+
# Allow overriding the service path/port in subclasses.
|
191
|
+
service_path = self.class::SERVICE_ADDRESS
|
192
|
+
port = self.class::DEFAULT_SERVICE_PORT
|
204
193
|
@spanner_stub = Google::Gax::Grpc.create_stub(
|
205
194
|
service_path,
|
206
195
|
port,
|
@@ -255,6 +244,14 @@ module Google
|
|
255
244
|
@spanner_stub.method(:rollback),
|
256
245
|
defaults["rollback"]
|
257
246
|
)
|
247
|
+
@partition_query = Google::Gax.create_api_call(
|
248
|
+
@spanner_stub.method(:partition_query),
|
249
|
+
defaults["partition_query"]
|
250
|
+
)
|
251
|
+
@partition_read = Google::Gax.create_api_call(
|
252
|
+
@spanner_stub.method(:partition_read),
|
253
|
+
defaults["partition_read"]
|
254
|
+
)
|
258
255
|
end
|
259
256
|
|
260
257
|
# Service calls
|
@@ -484,7 +481,13 @@ module Google
|
|
484
481
|
# request that yielded this token.
|
485
482
|
# @param query_mode [Google::Spanner::V1::ExecuteSqlRequest::QueryMode]
|
486
483
|
# Used to control the amount of debugging information returned in
|
487
|
-
# {Google::Spanner::V1::ResultSetStats ResultSetStats}.
|
484
|
+
# {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
|
485
|
+
# be set to {Google::Spanner::V1::ExecuteSqlRequest::QueryMode::NORMAL QueryMode::NORMAL}.
|
486
|
+
# @param partition_token [String]
|
487
|
+
# If present, results will be restricted to the specified partition
|
488
|
+
# previously created using PartitionQuery(). There must be an exact
|
489
|
+
# match for the values of fields common to this message and the
|
490
|
+
# PartitionQueryRequest message used to create this partition_token.
|
488
491
|
# @param options [Google::Gax::CallOptions]
|
489
492
|
# Overrides the default settings for this call, e.g, timeout,
|
490
493
|
# retries, etc.
|
@@ -495,6 +498,8 @@ module Google
|
|
495
498
|
#
|
496
499
|
# spanner_client = Google::Cloud::Spanner::V1.new
|
497
500
|
# formatted_session = Google::Cloud::Spanner::V1::SpannerClient.session_path("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]")
|
501
|
+
#
|
502
|
+
# # TODO: Initialize +sql+:
|
498
503
|
# sql = ''
|
499
504
|
# response = spanner_client.execute_sql(formatted_session, sql)
|
500
505
|
|
@@ -506,6 +511,7 @@ module Google
|
|
506
511
|
param_types: nil,
|
507
512
|
resume_token: nil,
|
508
513
|
query_mode: nil,
|
514
|
+
partition_token: nil,
|
509
515
|
options: nil
|
510
516
|
req = {
|
511
517
|
session: session,
|
@@ -514,7 +520,8 @@ module Google
|
|
514
520
|
params: params,
|
515
521
|
param_types: param_types,
|
516
522
|
resume_token: resume_token,
|
517
|
-
query_mode: query_mode
|
523
|
+
query_mode: query_mode,
|
524
|
+
partition_token: partition_token
|
518
525
|
}.delete_if { |_, v| v.nil? }
|
519
526
|
req = Google::Gax::to_proto(req, Google::Spanner::V1::ExecuteSqlRequest)
|
520
527
|
@execute_sql.call(req, options)
|
@@ -572,7 +579,13 @@ module Google
|
|
572
579
|
# request that yielded this token.
|
573
580
|
# @param query_mode [Google::Spanner::V1::ExecuteSqlRequest::QueryMode]
|
574
581
|
# Used to control the amount of debugging information returned in
|
575
|
-
# {Google::Spanner::V1::ResultSetStats ResultSetStats}.
|
582
|
+
# {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
|
583
|
+
# be set to {Google::Spanner::V1::ExecuteSqlRequest::QueryMode::NORMAL QueryMode::NORMAL}.
|
584
|
+
# @param partition_token [String]
|
585
|
+
# If present, results will be restricted to the specified partition
|
586
|
+
# previously created using PartitionQuery(). There must be an exact
|
587
|
+
# match for the values of fields common to this message and the
|
588
|
+
# PartitionQueryRequest message used to create this partition_token.
|
576
589
|
# @param options [Google::Gax::CallOptions]
|
577
590
|
# Overrides the default settings for this call, e.g, timeout,
|
578
591
|
# retries, etc.
|
@@ -585,6 +598,8 @@ module Google
|
|
585
598
|
#
|
586
599
|
# spanner_client = Google::Cloud::Spanner::V1.new
|
587
600
|
# formatted_session = Google::Cloud::Spanner::V1::SpannerClient.session_path("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]")
|
601
|
+
#
|
602
|
+
# # TODO: Initialize +sql+:
|
588
603
|
# sql = ''
|
589
604
|
# spanner_client.execute_streaming_sql(formatted_session, sql).each do |element|
|
590
605
|
# # Process element.
|
@@ -598,6 +613,7 @@ module Google
|
|
598
613
|
param_types: nil,
|
599
614
|
resume_token: nil,
|
600
615
|
query_mode: nil,
|
616
|
+
partition_token: nil,
|
601
617
|
options: nil
|
602
618
|
req = {
|
603
619
|
session: session,
|
@@ -606,7 +622,8 @@ module Google
|
|
606
622
|
params: params,
|
607
623
|
param_types: param_types,
|
608
624
|
resume_token: resume_token,
|
609
|
-
query_mode: query_mode
|
625
|
+
query_mode: query_mode,
|
626
|
+
partition_token: partition_token
|
610
627
|
}.delete_if { |_, v| v.nil? }
|
611
628
|
req = Google::Gax::to_proto(req, Google::Spanner::V1::ExecuteSqlRequest)
|
612
629
|
@execute_streaming_sql.call(req, options)
|
@@ -639,8 +656,10 @@ module Google
|
|
639
656
|
# is present. If {Google::Spanner::V1::ReadRequest#index index} is present, then {Google::Spanner::V1::ReadRequest#key_set key_set} instead names
|
640
657
|
# index keys in {Google::Spanner::V1::ReadRequest#index index}.
|
641
658
|
#
|
642
|
-
#
|
643
|
-
#
|
659
|
+
# If the {Google::Spanner::V1::ReadRequest#partition_token partition_token} field is empty, rows are yielded
|
660
|
+
# in table primary key order (if {Google::Spanner::V1::ReadRequest#index index} is empty) or index key order
|
661
|
+
# (if {Google::Spanner::V1::ReadRequest#index index} is non-empty). If the {Google::Spanner::V1::ReadRequest#partition_token partition_token} field is not
|
662
|
+
# empty, rows will be yielded in an unspecified order.
|
644
663
|
#
|
645
664
|
# It is not an error for the +key_set+ to name rows that do not
|
646
665
|
# exist in the database. Read yields nothing for nonexistent rows.
|
@@ -657,7 +676,8 @@ module Google
|
|
657
676
|
# and sorting result rows. See {Google::Spanner::V1::ReadRequest#key_set key_set} for further information.
|
658
677
|
# @param limit [Integer]
|
659
678
|
# If greater than zero, only the first +limit+ rows are yielded. If +limit+
|
660
|
-
# is zero, the default is no limit.
|
679
|
+
# is zero, the default is no limit. A limit cannot be specified if
|
680
|
+
# +partition_token+ is set.
|
661
681
|
# @param resume_token [String]
|
662
682
|
# If this request is resuming a previously interrupted read,
|
663
683
|
# +resume_token+ should be copied from the last
|
@@ -665,6 +685,11 @@ module Google
|
|
665
685
|
# enables the new read to resume where the last read left off. The
|
666
686
|
# rest of the request parameters must exactly match the request
|
667
687
|
# that yielded this token.
|
688
|
+
# @param partition_token [String]
|
689
|
+
# If present, results will be restricted to the specified partition
|
690
|
+
# previously created using PartitionRead(). There must be an exact
|
691
|
+
# match for the values of fields common to this message and the
|
692
|
+
# PartitionReadRequest message used to create this partition_token.
|
668
693
|
# @param options [Google::Gax::CallOptions]
|
669
694
|
# Overrides the default settings for this call, e.g, timeout,
|
670
695
|
# retries, etc.
|
@@ -675,8 +700,14 @@ module Google
|
|
675
700
|
#
|
676
701
|
# spanner_client = Google::Cloud::Spanner::V1.new
|
677
702
|
# formatted_session = Google::Cloud::Spanner::V1::SpannerClient.session_path("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]")
|
703
|
+
#
|
704
|
+
# # TODO: Initialize +table+:
|
678
705
|
# table = ''
|
706
|
+
#
|
707
|
+
# # TODO: Initialize +columns+:
|
679
708
|
# columns = []
|
709
|
+
#
|
710
|
+
# # TODO: Initialize +key_set+:
|
680
711
|
# key_set = {}
|
681
712
|
# response = spanner_client.read(formatted_session, table, columns, key_set)
|
682
713
|
|
@@ -689,6 +720,7 @@ module Google
|
|
689
720
|
index: nil,
|
690
721
|
limit: nil,
|
691
722
|
resume_token: nil,
|
723
|
+
partition_token: nil,
|
692
724
|
options: nil
|
693
725
|
req = {
|
694
726
|
session: session,
|
@@ -698,7 +730,8 @@ module Google
|
|
698
730
|
transaction: transaction,
|
699
731
|
index: index,
|
700
732
|
limit: limit,
|
701
|
-
resume_token: resume_token
|
733
|
+
resume_token: resume_token,
|
734
|
+
partition_token: partition_token
|
702
735
|
}.delete_if { |_, v| v.nil? }
|
703
736
|
req = Google::Gax::to_proto(req, Google::Spanner::V1::ReadRequest)
|
704
737
|
@read.call(req, options)
|
@@ -723,8 +756,10 @@ module Google
|
|
723
756
|
# is present. If {Google::Spanner::V1::ReadRequest#index index} is present, then {Google::Spanner::V1::ReadRequest#key_set key_set} instead names
|
724
757
|
# index keys in {Google::Spanner::V1::ReadRequest#index index}.
|
725
758
|
#
|
726
|
-
#
|
727
|
-
#
|
759
|
+
# If the {Google::Spanner::V1::ReadRequest#partition_token partition_token} field is empty, rows are yielded
|
760
|
+
# in table primary key order (if {Google::Spanner::V1::ReadRequest#index index} is empty) or index key order
|
761
|
+
# (if {Google::Spanner::V1::ReadRequest#index index} is non-empty). If the {Google::Spanner::V1::ReadRequest#partition_token partition_token} field is not
|
762
|
+
# empty, rows will be yielded in an unspecified order.
|
728
763
|
#
|
729
764
|
# It is not an error for the +key_set+ to name rows that do not
|
730
765
|
# exist in the database. Read yields nothing for nonexistent rows.
|
@@ -741,7 +776,8 @@ module Google
|
|
741
776
|
# and sorting result rows. See {Google::Spanner::V1::ReadRequest#key_set key_set} for further information.
|
742
777
|
# @param limit [Integer]
|
743
778
|
# If greater than zero, only the first +limit+ rows are yielded. If +limit+
|
744
|
-
# is zero, the default is no limit.
|
779
|
+
# is zero, the default is no limit. A limit cannot be specified if
|
780
|
+
# +partition_token+ is set.
|
745
781
|
# @param resume_token [String]
|
746
782
|
# If this request is resuming a previously interrupted read,
|
747
783
|
# +resume_token+ should be copied from the last
|
@@ -749,6 +785,11 @@ module Google
|
|
749
785
|
# enables the new read to resume where the last read left off. The
|
750
786
|
# rest of the request parameters must exactly match the request
|
751
787
|
# that yielded this token.
|
788
|
+
# @param partition_token [String]
|
789
|
+
# If present, results will be restricted to the specified partition
|
790
|
+
# previously created using PartitionRead(). There must be an exact
|
791
|
+
# match for the values of fields common to this message and the
|
792
|
+
# PartitionReadRequest message used to create this partition_token.
|
752
793
|
# @param options [Google::Gax::CallOptions]
|
753
794
|
# Overrides the default settings for this call, e.g, timeout,
|
754
795
|
# retries, etc.
|
@@ -761,8 +802,14 @@ module Google
|
|
761
802
|
#
|
762
803
|
# spanner_client = Google::Cloud::Spanner::V1.new
|
763
804
|
# formatted_session = Google::Cloud::Spanner::V1::SpannerClient.session_path("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]")
|
805
|
+
#
|
806
|
+
# # TODO: Initialize +table+:
|
764
807
|
# table = ''
|
808
|
+
#
|
809
|
+
# # TODO: Initialize +columns+:
|
765
810
|
# columns = []
|
811
|
+
#
|
812
|
+
# # TODO: Initialize +key_set+:
|
766
813
|
# key_set = {}
|
767
814
|
# spanner_client.streaming_read(formatted_session, table, columns, key_set).each do |element|
|
768
815
|
# # Process element.
|
@@ -777,6 +824,7 @@ module Google
|
|
777
824
|
index: nil,
|
778
825
|
limit: nil,
|
779
826
|
resume_token: nil,
|
827
|
+
partition_token: nil,
|
780
828
|
options: nil
|
781
829
|
req = {
|
782
830
|
session: session,
|
@@ -786,7 +834,8 @@ module Google
|
|
786
834
|
transaction: transaction,
|
787
835
|
index: index,
|
788
836
|
limit: limit,
|
789
|
-
resume_token: resume_token
|
837
|
+
resume_token: resume_token,
|
838
|
+
partition_token: partition_token
|
790
839
|
}.delete_if { |_, v| v.nil? }
|
791
840
|
req = Google::Gax::to_proto(req, Google::Spanner::V1::ReadRequest)
|
792
841
|
@streaming_read.call(req, options)
|
@@ -813,6 +862,8 @@ module Google
|
|
813
862
|
#
|
814
863
|
# spanner_client = Google::Cloud::Spanner::V1.new
|
815
864
|
# formatted_session = Google::Cloud::Spanner::V1::SpannerClient.session_path("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]")
|
865
|
+
#
|
866
|
+
# # TODO: Initialize +options_+:
|
816
867
|
# options_ = {}
|
817
868
|
# response = spanner_client.begin_transaction(formatted_session, options_)
|
818
869
|
|
@@ -869,6 +920,8 @@ module Google
|
|
869
920
|
#
|
870
921
|
# spanner_client = Google::Cloud::Spanner::V1.new
|
871
922
|
# formatted_session = Google::Cloud::Spanner::V1::SpannerClient.session_path("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]")
|
923
|
+
#
|
924
|
+
# # TODO: Initialize +mutations+:
|
872
925
|
# mutations = []
|
873
926
|
# response = spanner_client.commit(formatted_session, mutations)
|
874
927
|
|
@@ -910,6 +963,8 @@ module Google
|
|
910
963
|
#
|
911
964
|
# spanner_client = Google::Cloud::Spanner::V1.new
|
912
965
|
# formatted_session = Google::Cloud::Spanner::V1::SpannerClient.session_path("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]")
|
966
|
+
#
|
967
|
+
# # TODO: Initialize +transaction_id+:
|
913
968
|
# transaction_id = ''
|
914
969
|
# spanner_client.rollback(formatted_session, transaction_id)
|
915
970
|
|
@@ -925,6 +980,175 @@ module Google
|
|
925
980
|
@rollback.call(req, options)
|
926
981
|
nil
|
927
982
|
end
|
983
|
+
|
984
|
+
# Creates a set of partition tokens that can be used to execute a query
|
985
|
+
# operation in parallel. Each of the returned partition tokens can be used
|
986
|
+
# by {Google::Spanner::V1::Spanner::ExecuteStreamingSql ExecuteStreamingSql} to specify a subset
|
987
|
+
# of the query result to read. The same session and read-only transaction
|
988
|
+
# must be used by the PartitionQueryRequest used to create the
|
989
|
+
# partition tokens and the ExecuteSqlRequests that use the partition tokens.
|
990
|
+
# Partition tokens become invalid when the session used to create them
|
991
|
+
# is deleted or begins a new transaction.
|
992
|
+
#
|
993
|
+
# @param session [String]
|
994
|
+
# Required. The session used to create the partitions.
|
995
|
+
# @param sql [String]
|
996
|
+
# The query request to generate partitions for. The request will fail if
|
997
|
+
# the query is not root partitionable. The query plan of a root
|
998
|
+
# partitionable query has a single distributed union operator. A distributed
|
999
|
+
# union operator conceptually divides one or more tables into multiple
|
1000
|
+
# splits, remotely evaluates a subquery independently on each split, and
|
1001
|
+
# then unions all results.
|
1002
|
+
# @param transaction [Google::Spanner::V1::TransactionSelector | Hash]
|
1003
|
+
# Read only snapshot transactions are supported, read/write and single use
|
1004
|
+
# transactions are not.
|
1005
|
+
# A hash of the same form as `Google::Spanner::V1::TransactionSelector`
|
1006
|
+
# can also be provided.
|
1007
|
+
# @param params [Google::Protobuf::Struct | Hash]
|
1008
|
+
# The SQL query string can contain parameter placeholders. A parameter
|
1009
|
+
# placeholder consists of +'@'+ followed by the parameter
|
1010
|
+
# name. Parameter names consist of any combination of letters,
|
1011
|
+
# numbers, and underscores.
|
1012
|
+
#
|
1013
|
+
# Parameters can appear anywhere that a literal value is expected. The same
|
1014
|
+
# parameter name can be used more than once, for example:
|
1015
|
+
# +"WHERE id > @msg_id AND id < @msg_id + 100"+
|
1016
|
+
#
|
1017
|
+
# It is an error to execute an SQL query with unbound parameters.
|
1018
|
+
#
|
1019
|
+
# Parameter values are specified using +params+, which is a JSON
|
1020
|
+
# object whose keys are parameter names, and whose values are the
|
1021
|
+
# corresponding parameter values.
|
1022
|
+
# A hash of the same form as `Google::Protobuf::Struct`
|
1023
|
+
# can also be provided.
|
1024
|
+
# @param param_types [Hash{String => Google::Spanner::V1::Type | Hash}]
|
1025
|
+
# It is not always possible for Cloud Spanner to infer the right SQL type
|
1026
|
+
# from a JSON value. For example, values of type +BYTES+ and values
|
1027
|
+
# of type +STRING+ both appear in {Google::Spanner::V1::PartitionQueryRequest#params params} as JSON strings.
|
1028
|
+
#
|
1029
|
+
# In these cases, +param_types+ can be used to specify the exact
|
1030
|
+
# SQL type for some or all of the SQL query parameters. See the
|
1031
|
+
# definition of {Google::Spanner::V1::Type Type} for more information
|
1032
|
+
# about SQL types.
|
1033
|
+
# A hash of the same form as `Google::Spanner::V1::Type`
|
1034
|
+
# can also be provided.
|
1035
|
+
# @param partition_options [Google::Spanner::V1::PartitionOptions | Hash]
|
1036
|
+
# Additional options that affect how many partitions are created.
|
1037
|
+
# A hash of the same form as `Google::Spanner::V1::PartitionOptions`
|
1038
|
+
# can also be provided.
|
1039
|
+
# @param options [Google::Gax::CallOptions]
|
1040
|
+
# Overrides the default settings for this call, e.g, timeout,
|
1041
|
+
# retries, etc.
|
1042
|
+
# @return [Google::Spanner::V1::PartitionResponse]
|
1043
|
+
# @raise [Google::Gax::GaxError] if the RPC is aborted.
|
1044
|
+
# @example
|
1045
|
+
# require "google/cloud/spanner/v1"
|
1046
|
+
#
|
1047
|
+
# spanner_client = Google::Cloud::Spanner::V1.new
|
1048
|
+
# formatted_session = Google::Cloud::Spanner::V1::SpannerClient.session_path("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]")
|
1049
|
+
#
|
1050
|
+
# # TODO: Initialize +sql+:
|
1051
|
+
# sql = ''
|
1052
|
+
# response = spanner_client.partition_query(formatted_session, sql)
|
1053
|
+
|
1054
|
+
def partition_query \
|
1055
|
+
session,
|
1056
|
+
sql,
|
1057
|
+
transaction: nil,
|
1058
|
+
params: nil,
|
1059
|
+
param_types: nil,
|
1060
|
+
partition_options: nil,
|
1061
|
+
options: nil
|
1062
|
+
req = {
|
1063
|
+
session: session,
|
1064
|
+
sql: sql,
|
1065
|
+
transaction: transaction,
|
1066
|
+
params: params,
|
1067
|
+
param_types: param_types,
|
1068
|
+
partition_options: partition_options
|
1069
|
+
}.delete_if { |_, v| v.nil? }
|
1070
|
+
req = Google::Gax::to_proto(req, Google::Spanner::V1::PartitionQueryRequest)
|
1071
|
+
@partition_query.call(req, options)
|
1072
|
+
end
|
1073
|
+
|
1074
|
+
# Creates a set of partition tokens that can be used to execute a read
|
1075
|
+
# operation in parallel. Each of the returned partition tokens can be used
|
1076
|
+
# by {Google::Spanner::V1::Spanner::StreamingRead StreamingRead} to specify a subset of the read
|
1077
|
+
# result to read. The same session and read-only transaction must be used by
|
1078
|
+
# the PartitionReadRequest used to create the partition tokens and the
|
1079
|
+
# ReadRequests that use the partition tokens.
|
1080
|
+
# Partition tokens become invalid when the session used to create them
|
1081
|
+
# is deleted or begins a new transaction.
|
1082
|
+
#
|
1083
|
+
# @param session [String]
|
1084
|
+
# Required. The session used to create the partitions.
|
1085
|
+
# @param table [String]
|
1086
|
+
# Required. The name of the table in the database to be read.
|
1087
|
+
# @param key_set [Google::Spanner::V1::KeySet | Hash]
|
1088
|
+
# Required. +key_set+ identifies the rows to be yielded. +key_set+ names the
|
1089
|
+
# primary keys of the rows in {Google::Spanner::V1::PartitionReadRequest#table table} to be yielded, unless {Google::Spanner::V1::PartitionReadRequest#index index}
|
1090
|
+
# is present. If {Google::Spanner::V1::PartitionReadRequest#index index} is present, then {Google::Spanner::V1::PartitionReadRequest#key_set key_set} instead names
|
1091
|
+
# index keys in {Google::Spanner::V1::PartitionReadRequest#index index}.
|
1092
|
+
#
|
1093
|
+
# It is not an error for the +key_set+ to name rows that do not
|
1094
|
+
# exist in the database. Read yields nothing for nonexistent rows.
|
1095
|
+
# A hash of the same form as `Google::Spanner::V1::KeySet`
|
1096
|
+
# can also be provided.
|
1097
|
+
# @param transaction [Google::Spanner::V1::TransactionSelector | Hash]
|
1098
|
+
# Read only snapshot transactions are supported, read/write and single use
|
1099
|
+
# transactions are not.
|
1100
|
+
# A hash of the same form as `Google::Spanner::V1::TransactionSelector`
|
1101
|
+
# can also be provided.
|
1102
|
+
# @param index [String]
|
1103
|
+
# If non-empty, the name of an index on {Google::Spanner::V1::PartitionReadRequest#table table}. This index is
|
1104
|
+
# used instead of the table primary key when interpreting {Google::Spanner::V1::PartitionReadRequest#key_set key_set}
|
1105
|
+
# and sorting result rows. See {Google::Spanner::V1::PartitionReadRequest#key_set key_set} for further information.
|
1106
|
+
# @param columns [Array<String>]
|
1107
|
+
# The columns of {Google::Spanner::V1::PartitionReadRequest#table table} to be returned for each row matching
|
1108
|
+
# this request.
|
1109
|
+
# @param partition_options [Google::Spanner::V1::PartitionOptions | Hash]
|
1110
|
+
# Additional options that affect how many partitions are created.
|
1111
|
+
# A hash of the same form as `Google::Spanner::V1::PartitionOptions`
|
1112
|
+
# can also be provided.
|
1113
|
+
# @param options [Google::Gax::CallOptions]
|
1114
|
+
# Overrides the default settings for this call, e.g, timeout,
|
1115
|
+
# retries, etc.
|
1116
|
+
# @return [Google::Spanner::V1::PartitionResponse]
|
1117
|
+
# @raise [Google::Gax::GaxError] if the RPC is aborted.
|
1118
|
+
# @example
|
1119
|
+
# require "google/cloud/spanner/v1"
|
1120
|
+
#
|
1121
|
+
# spanner_client = Google::Cloud::Spanner::V1.new
|
1122
|
+
# formatted_session = Google::Cloud::Spanner::V1::SpannerClient.session_path("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]")
|
1123
|
+
#
|
1124
|
+
# # TODO: Initialize +table+:
|
1125
|
+
# table = ''
|
1126
|
+
#
|
1127
|
+
# # TODO: Initialize +key_set+:
|
1128
|
+
# key_set = {}
|
1129
|
+
# response = spanner_client.partition_read(formatted_session, table, key_set)
|
1130
|
+
|
1131
|
+
def partition_read \
|
1132
|
+
session,
|
1133
|
+
table,
|
1134
|
+
key_set,
|
1135
|
+
transaction: nil,
|
1136
|
+
index: nil,
|
1137
|
+
columns: nil,
|
1138
|
+
partition_options: nil,
|
1139
|
+
options: nil
|
1140
|
+
req = {
|
1141
|
+
session: session,
|
1142
|
+
table: table,
|
1143
|
+
key_set: key_set,
|
1144
|
+
transaction: transaction,
|
1145
|
+
index: index,
|
1146
|
+
columns: columns,
|
1147
|
+
partition_options: partition_options
|
1148
|
+
}.delete_if { |_, v| v.nil? }
|
1149
|
+
req = Google::Gax::to_proto(req, Google::Spanner::V1::PartitionReadRequest)
|
1150
|
+
@partition_read.call(req, options)
|
1151
|
+
end
|
928
1152
|
end
|
929
1153
|
end
|
930
1154
|
end
|