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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/lib/google-cloud-spanner.rb +13 -0
- data/lib/google/cloud/spanner.rb +2 -1
- data/lib/google/cloud/spanner/admin/database.rb +3 -2
- data/lib/google/cloud/spanner/admin/database/v1.rb +3 -2
- data/lib/google/cloud/spanner/admin/database/v1/database_admin_client.rb +742 -20
- data/lib/google/cloud/spanner/admin/database/v1/database_admin_client_config.json +40 -0
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/protobuf/field_mask.rb +222 -0
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/protobuf/timestamp.rb +113 -0
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/spanner/admin/database/v1/backup.rb +325 -0
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/spanner/admin/database/v1/spanner_database_admin.rb +197 -30
- data/lib/google/cloud/spanner/admin/instance.rb +1 -1
- data/lib/google/cloud/spanner/admin/instance/v1.rb +1 -1
- data/lib/google/cloud/spanner/admin/instance/v1/doc/google/spanner/admin/instance/v1/spanner_instance_admin.rb +6 -13
- data/lib/google/cloud/spanner/admin/instance/v1/instance_admin_client.rb +8 -5
- data/lib/google/cloud/spanner/batch_client.rb +5 -3
- data/lib/google/cloud/spanner/batch_snapshot.rb +43 -8
- data/lib/google/cloud/spanner/client.rb +57 -8
- data/lib/google/cloud/spanner/project.rb +31 -6
- data/lib/google/cloud/spanner/results.rb +4 -2
- data/lib/google/cloud/spanner/service.rb +3 -1
- data/lib/google/cloud/spanner/session.rb +37 -6
- data/lib/google/cloud/spanner/snapshot.rb +26 -3
- data/lib/google/cloud/spanner/transaction.rb +49 -5
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/mutation.rb +8 -1
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/spanner.rb +91 -102
- data/lib/google/cloud/spanner/v1/spanner_client.rb +112 -136
- data/lib/google/cloud/spanner/version.rb +1 -1
- data/lib/google/spanner/admin/database/v1/backup_pb.rb +98 -0
- data/lib/google/spanner/admin/database/v1/common_pb.rb +28 -0
- data/lib/google/spanner/admin/database/v1/spanner_database_admin_pb.rb +53 -0
- data/lib/google/spanner/admin/database/v1/spanner_database_admin_services_pb.rb +82 -12
- data/lib/google/spanner/admin/instance/v1/spanner_instance_admin_services_pb.rb +1 -2
- data/lib/google/spanner/v1/spanner_pb.rb +5 -0
- data/lib/google/spanner/v1/spanner_services_pb.rb +31 -40
- metadata +7 -2
@@ -166,6 +166,13 @@ module Google
|
|
166
166
|
# partitions to return. For example, this may be set to the number of
|
167
167
|
# workers available. This is only a hint and may provide different
|
168
168
|
# results based on the request.
|
169
|
+
# @param [Hash] query_options A hash of values to specify the custom
|
170
|
+
# query options for executing SQL query. Query options are optional.
|
171
|
+
# The following settings can be provided:
|
172
|
+
#
|
173
|
+
# * `:optimizer_version` (String) The version of optimizer to use.
|
174
|
+
# Empty to use database default. "latest" to use the latest
|
175
|
+
# available optimizer version.
|
169
176
|
#
|
170
177
|
# @return [Array<Google::Cloud::Spanner::Partition>] The partitions
|
171
178
|
# created by the query partition.
|
@@ -188,7 +195,8 @@ module Google
|
|
188
195
|
# batch_snapshot.close
|
189
196
|
#
|
190
197
|
def partition_query sql, params: nil, types: nil,
|
191
|
-
partition_size_bytes: nil, max_partitions: nil
|
198
|
+
partition_size_bytes: nil, max_partitions: nil,
|
199
|
+
query_options: nil
|
192
200
|
ensure_session!
|
193
201
|
|
194
202
|
params, types = Convert.to_input_params_and_types params, types
|
@@ -197,7 +205,6 @@ module Google
|
|
197
205
|
sql, tx_selector, params: params, types: types,
|
198
206
|
partition_size_bytes: partition_size_bytes,
|
199
207
|
max_partitions: max_partitions
|
200
|
-
|
201
208
|
results.partitions.map do |grpc|
|
202
209
|
# Convert partition protos to execute sql request protos
|
203
210
|
execute_sql_grpc = Google::Spanner::V1::ExecuteSqlRequest.new(
|
@@ -207,7 +214,8 @@ module Google
|
|
207
214
|
params: params,
|
208
215
|
param_types: types,
|
209
216
|
transaction: tx_selector,
|
210
|
-
partition_token: grpc.partition_token
|
217
|
+
partition_token: grpc.partition_token,
|
218
|
+
query_options: query_options
|
211
219
|
}.delete_if { |_, v| v.nil? }
|
212
220
|
)
|
213
221
|
Partition.from_execute_sql_grpc execute_sql_grpc
|
@@ -415,6 +423,14 @@ module Google
|
|
415
423
|
# specified using a {Fields} object.
|
416
424
|
#
|
417
425
|
# Types are optional.
|
426
|
+
# @param [Hash] query_options A hash of values to specify the custom
|
427
|
+
# query options for executing SQL query. Query options are optional.
|
428
|
+
# The following settings can be provided:
|
429
|
+
#
|
430
|
+
# * `:optimizer_version` (String) The version of optimizer to use.
|
431
|
+
# Empty to use database default. "latest" to use the latest
|
432
|
+
# available optimizer version.
|
433
|
+
#
|
418
434
|
# @return [Google::Cloud::Spanner::Results] The results of the query
|
419
435
|
# execution.
|
420
436
|
#
|
@@ -518,13 +534,29 @@ module Google
|
|
518
534
|
# puts "User #{row[:id]} is #{row[:name]}"
|
519
535
|
# end
|
520
536
|
#
|
521
|
-
|
537
|
+
# @example Query using query options:
|
538
|
+
# require "google/cloud/spanner"
|
539
|
+
#
|
540
|
+
# spanner = Google::Cloud::Spanner.new
|
541
|
+
# batch_client = spanner.batch_client "my-instance", "my-database"
|
542
|
+
# batch_snapshot = batch_client.batch_snapshot
|
543
|
+
#
|
544
|
+
# results = batch_snapshot.execute_query \
|
545
|
+
# "SELECT * FROM users",
|
546
|
+
# query_options: { optimizer_version: "1" }
|
547
|
+
#
|
548
|
+
# results.rows.each do |row|
|
549
|
+
# puts "User #{row[:id]} is #{row[:name]}"
|
550
|
+
# end
|
551
|
+
#
|
552
|
+
def execute_query sql, params: nil, types: nil, query_options: nil
|
522
553
|
ensure_session!
|
523
554
|
|
524
555
|
params, types = Convert.to_input_params_and_types params, types
|
525
556
|
|
526
557
|
session.execute_query sql, params: params, types: types,
|
527
|
-
|
558
|
+
transaction: tx_selector,
|
559
|
+
query_options: query_options
|
528
560
|
end
|
529
561
|
alias execute execute_query
|
530
562
|
alias query execute_query
|
@@ -628,7 +660,7 @@ module Google
|
|
628
660
|
##
|
629
661
|
# @private Loads the serialized batch snapshot. See
|
630
662
|
# {BatchClient#load_batch_snapshot}.
|
631
|
-
def self.load data, service: nil
|
663
|
+
def self.load data, service: nil, query_options: nil
|
632
664
|
data = JSON.parse data, symbolize_names: true unless data.is_a? Hash
|
633
665
|
|
634
666
|
session_grpc = Google::Spanner::V1::Session.decode \
|
@@ -636,7 +668,7 @@ module Google
|
|
636
668
|
transaction_grpc = Google::Spanner::V1::Transaction.decode \
|
637
669
|
Base64.decode64(data[:transaction])
|
638
670
|
|
639
|
-
from_grpc transaction_grpc, Session.from_grpc(session_grpc, service)
|
671
|
+
from_grpc transaction_grpc, Session.from_grpc(session_grpc, service, query_options: query_options)
|
640
672
|
end
|
641
673
|
|
642
674
|
##
|
@@ -661,12 +693,15 @@ module Google
|
|
661
693
|
end
|
662
694
|
|
663
695
|
def execute_partition_query partition
|
696
|
+
query_options = partition.execute.query_options
|
697
|
+
query_options = query_options.to_h unless query_options.nil?
|
664
698
|
session.execute_query \
|
665
699
|
partition.execute.sql,
|
666
700
|
params: partition.execute.params,
|
667
701
|
types: partition.execute.param_types.to_h,
|
668
702
|
transaction: partition.execute.transaction,
|
669
|
-
partition_token: partition.execute.partition_token
|
703
|
+
partition_token: partition.execute.partition_token,
|
704
|
+
query_options: query_options
|
670
705
|
end
|
671
706
|
|
672
707
|
def execute_partition_read partition
|
@@ -53,12 +53,13 @@ module Google
|
|
53
53
|
##
|
54
54
|
# @private Creates a new Spanner Client instance.
|
55
55
|
def initialize project, instance_id, database_id, session_labels: nil,
|
56
|
-
pool_opts: {}
|
56
|
+
pool_opts: {}, query_options: nil
|
57
57
|
@project = project
|
58
58
|
@instance_id = instance_id
|
59
59
|
@database_id = database_id
|
60
60
|
@session_labels = session_labels
|
61
61
|
@pool = Pool.new self, pool_opts
|
62
|
+
@query_options = query_options
|
62
63
|
end
|
63
64
|
|
64
65
|
# The unique identifier for the project.
|
@@ -97,6 +98,13 @@ module Google
|
|
97
98
|
@project.database instance_id, database_id
|
98
99
|
end
|
99
100
|
|
101
|
+
# A hash of values to specify the custom query options for executing
|
102
|
+
# SQL query.
|
103
|
+
# @return [Hash]
|
104
|
+
def query_options
|
105
|
+
@query_options
|
106
|
+
end
|
107
|
+
|
100
108
|
##
|
101
109
|
# Executes a SQL query.
|
102
110
|
#
|
@@ -207,6 +215,13 @@ module Google
|
|
207
215
|
# Useful for reading the freshest data available at a nearby
|
208
216
|
# replica, while bounding the possible staleness if the local
|
209
217
|
# replica has fallen behind.
|
218
|
+
# @param [Hash] query_options A hash of values to specify the custom
|
219
|
+
# query options for executing SQL query. Query options are optional.
|
220
|
+
# The following settings can be provided:
|
221
|
+
#
|
222
|
+
# * `:optimizer_version` (String) The version of optimizer to use.
|
223
|
+
# Empty to use database default. "latest" to use the latest
|
224
|
+
# available optimizer version.
|
210
225
|
#
|
211
226
|
# @return [Google::Cloud::Spanner::Results] The results of the query
|
212
227
|
# execution.
|
@@ -306,7 +321,22 @@ module Google
|
|
306
321
|
# puts "User #{row[:id]} is #{row[:name]}"
|
307
322
|
# end
|
308
323
|
#
|
309
|
-
|
324
|
+
# @example Query using query options:
|
325
|
+
# require "google/cloud/spanner"
|
326
|
+
#
|
327
|
+
# spanner = Google::Cloud::Spanner.new
|
328
|
+
#
|
329
|
+
# db = spanner.client "my-instance", "my-database"
|
330
|
+
#
|
331
|
+
# results = db.execute_query \
|
332
|
+
# "SELECT * FROM users", query_options: { optimizer_version: "1" }
|
333
|
+
#
|
334
|
+
# results.rows.each do |row|
|
335
|
+
# puts "User #{row[:id]} is #{row[:name]}"
|
336
|
+
# end
|
337
|
+
#
|
338
|
+
def execute_query sql, params: nil, types: nil, single_use: nil,
|
339
|
+
query_options: nil
|
310
340
|
validate_single_use_args! single_use
|
311
341
|
ensure_service!
|
312
342
|
|
@@ -316,7 +346,8 @@ module Google
|
|
316
346
|
results = nil
|
317
347
|
@pool.with_session do |session|
|
318
348
|
results = session.execute_query \
|
319
|
-
sql, params: params, types: types, transaction: single_use_tx
|
349
|
+
sql, params: params, types: types, transaction: single_use_tx,
|
350
|
+
query_options: query_options
|
320
351
|
end
|
321
352
|
results
|
322
353
|
end
|
@@ -443,6 +474,14 @@ module Google
|
|
443
474
|
# value in `params`. In these cases, the `types` hash can be used to
|
444
475
|
# specify the exact SQL type for some or all of the SQL query
|
445
476
|
# parameters.
|
477
|
+
# @param [Hash] query_options A hash of values to specify the custom
|
478
|
+
# query options for executing SQL query. Query options are optional.
|
479
|
+
# The following settings can be provided:
|
480
|
+
#
|
481
|
+
# * `:optimizer_version` (String) The version of optimizer to use.
|
482
|
+
# Empty to use database default. "latest" to use the latest
|
483
|
+
# available optimizer version.
|
484
|
+
#
|
446
485
|
#
|
447
486
|
# The keys of the hash should be query string parameter placeholders,
|
448
487
|
# minus the "@". The values of the hash should be Cloud Spanner type
|
@@ -481,16 +520,26 @@ module Google
|
|
481
520
|
# "UPDATE users SET friends = NULL WHERE active = @active",
|
482
521
|
# params: { active: false }
|
483
522
|
#
|
484
|
-
|
523
|
+
# @example Query using query options:
|
524
|
+
# require "google/cloud/spanner"
|
525
|
+
#
|
526
|
+
# spanner = Google::Cloud::Spanner.new
|
527
|
+
# db = spanner.client "my-instance", "my-database"
|
528
|
+
#
|
529
|
+
# row_count = db.execute_partition_update \
|
530
|
+
# "UPDATE users SET friends = NULL WHERE active = false",
|
531
|
+
# query_options: { optimizer_version: "1" }
|
532
|
+
def execute_partition_update sql, params: nil, types: nil,
|
533
|
+
query_options: nil
|
485
534
|
ensure_service!
|
486
535
|
|
487
536
|
params, types = Convert.to_input_params_and_types params, types
|
488
|
-
|
489
537
|
results = nil
|
490
538
|
@pool.with_session do |session|
|
491
539
|
results = session.execute_query \
|
492
540
|
sql, params: params, types: types,
|
493
|
-
|
541
|
+
transaction: pdml_transaction(session),
|
542
|
+
query_options: query_options
|
494
543
|
end
|
495
544
|
# Stream all PartialResultSet to get ResultSetStats
|
496
545
|
results.rows.to_a
|
@@ -1291,7 +1340,7 @@ module Google
|
|
1291
1340
|
project_id, instance_id, database_id
|
1292
1341
|
),
|
1293
1342
|
labels: @session_labels
|
1294
|
-
Session.from_grpc grpc, @project.service
|
1343
|
+
Session.from_grpc grpc, @project.service, query_options: @query_options
|
1295
1344
|
end
|
1296
1345
|
|
1297
1346
|
##
|
@@ -1320,7 +1369,7 @@ module Google
|
|
1320
1369
|
),
|
1321
1370
|
session_count,
|
1322
1371
|
labels: @session_labels
|
1323
|
-
resp.session.map { |grpc| Session.from_grpc grpc, @project.service }
|
1372
|
+
resp.session.map { |grpc| Session.from_grpc grpc, @project.service, query_options: @query_options }
|
1324
1373
|
end
|
1325
1374
|
|
1326
1375
|
# @private
|
@@ -68,12 +68,13 @@ module Google
|
|
68
68
|
class Project
|
69
69
|
##
|
70
70
|
# @private The Service object.
|
71
|
-
attr_accessor :service
|
71
|
+
attr_accessor :service, :query_options
|
72
72
|
|
73
73
|
##
|
74
74
|
# @private Creates a new Spanner Project instance.
|
75
|
-
def initialize service
|
75
|
+
def initialize service, query_options: nil
|
76
76
|
@service = service
|
77
|
+
@query_options = query_options
|
77
78
|
end
|
78
79
|
|
79
80
|
##
|
@@ -452,6 +453,13 @@ module Google
|
|
452
453
|
# * Label values must be between 0 and 63 characters long and must
|
453
454
|
# conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
|
454
455
|
# * No more than 64 labels can be associated with a given resource.
|
456
|
+
# @param [Hash] query_options A hash of values to specify the custom
|
457
|
+
# query options for executing SQL query. Query options are optional.
|
458
|
+
# The following settings can be provided:
|
459
|
+
#
|
460
|
+
# * `:optimizer_version` (String) The version of optimizer to use.
|
461
|
+
# Empty to use database default. "latest" to use the latest
|
462
|
+
# available optimizer version.
|
455
463
|
#
|
456
464
|
# @return [Client] The newly created client.
|
457
465
|
#
|
@@ -470,12 +478,20 @@ module Google
|
|
470
478
|
# end
|
471
479
|
# end
|
472
480
|
#
|
473
|
-
def client instance_id, database_id, pool: {}, labels: nil
|
481
|
+
def client instance_id, database_id, pool: {}, labels: nil,
|
482
|
+
query_options: nil
|
474
483
|
# Convert from possible Google::Protobuf::Map
|
475
484
|
labels = Hash[labels.map { |k, v| [String(k), String(v)] }] if labels
|
485
|
+
# Configs set by environment variables take over client-level configs.
|
486
|
+
if query_options.nil?
|
487
|
+
query_options = @query_options
|
488
|
+
else
|
489
|
+
query_options = query_options.merge @query_options unless @query_options.nil?
|
490
|
+
end
|
476
491
|
Client.new self, instance_id, database_id,
|
477
492
|
session_labels: labels,
|
478
|
-
pool_opts: valid_session_pool_options(pool)
|
493
|
+
pool_opts: valid_session_pool_options(pool),
|
494
|
+
query_options: query_options
|
479
495
|
end
|
480
496
|
|
481
497
|
##
|
@@ -501,6 +517,13 @@ module Google
|
|
501
517
|
# * Label values must be between 0 and 63 characters long and must
|
502
518
|
# conform to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
|
503
519
|
# * No more than 64 labels can be associated with a given resource.
|
520
|
+
# @param [Hash] query_options A hash of values to specify the custom
|
521
|
+
# query options for executing SQL query. Query options are optional.
|
522
|
+
# The following settings can be provided:
|
523
|
+
#
|
524
|
+
# * `:optimizer_version` (String) The version of optimizer to use.
|
525
|
+
# Empty to use database default. "latest" to use the latest
|
526
|
+
# available optimizer version.
|
504
527
|
#
|
505
528
|
# @return [Client] The newly created client.
|
506
529
|
#
|
@@ -529,10 +552,12 @@ module Google
|
|
529
552
|
# results = new_batch_snapshot.execute_partition \
|
530
553
|
# new_partition
|
531
554
|
#
|
532
|
-
def batch_client instance_id, database_id, labels: nil
|
555
|
+
def batch_client instance_id, database_id, labels: nil,
|
556
|
+
query_options: nil
|
533
557
|
# Convert from possible Google::Protobuf::Map
|
534
558
|
labels = Hash[labels.map { |k, v| [String(k), String(v)] }] if labels
|
535
|
-
BatchClient.new self, instance_id, database_id, session_labels: labels
|
559
|
+
BatchClient.new self, instance_id, database_id, session_labels: labels,
|
560
|
+
query_options: query_options
|
536
561
|
end
|
537
562
|
|
538
563
|
protected
|
@@ -242,10 +242,12 @@ module Google
|
|
242
242
|
|
243
243
|
def self.execute_query service, session_path, sql, params: nil,
|
244
244
|
types: nil, transaction: nil,
|
245
|
-
partition_token: nil, seqno: nil
|
245
|
+
partition_token: nil, seqno: nil,
|
246
|
+
query_options: nil
|
246
247
|
execute_query_options = {
|
247
248
|
transaction: transaction, params: params, types: types,
|
248
|
-
partition_token: partition_token, seqno: seqno
|
249
|
+
partition_token: partition_token, seqno: seqno,
|
250
|
+
query_options: query_options
|
249
251
|
}
|
250
252
|
enum = service.execute_streaming_sql session_path, sql,
|
251
253
|
execute_query_options
|
@@ -303,7 +303,8 @@ module Google
|
|
303
303
|
|
304
304
|
def execute_streaming_sql session_name, sql, transaction: nil,
|
305
305
|
params: nil, types: nil, resume_token: nil,
|
306
|
-
partition_token: nil, seqno: nil
|
306
|
+
partition_token: nil, seqno: nil,
|
307
|
+
query_options: nil
|
307
308
|
opts = default_options_from_session session_name
|
308
309
|
execute do
|
309
310
|
service.execute_streaming_sql \
|
@@ -313,6 +314,7 @@ module Google
|
|
313
314
|
resume_token: resume_token,
|
314
315
|
partition_token: partition_token,
|
315
316
|
seqno: seqno,
|
317
|
+
query_options: query_options,
|
316
318
|
options: opts
|
317
319
|
end
|
318
320
|
end
|
@@ -49,10 +49,15 @@ module Google
|
|
49
49
|
# @private The gRPC Service object.
|
50
50
|
attr_accessor :service
|
51
51
|
|
52
|
+
##
|
53
|
+
# @private The hash of query options.
|
54
|
+
attr_accessor :query_options
|
55
|
+
|
52
56
|
# @private Creates a new Session instance.
|
53
|
-
def initialize grpc, service
|
57
|
+
def initialize grpc, service, query_options: nil
|
54
58
|
@grpc = grpc
|
55
59
|
@service = service
|
60
|
+
@query_options = query_options
|
56
61
|
end
|
57
62
|
|
58
63
|
# The unique identifier for the project.
|
@@ -150,6 +155,13 @@ module Google
|
|
150
155
|
# transactions.
|
151
156
|
# @param [Integer] seqno A per-transaction sequence number used to
|
152
157
|
# identify this request.
|
158
|
+
# @param [Hash] query_options A hash of values to specify the custom
|
159
|
+
# query options for executing SQL query. Query options are optional.
|
160
|
+
# The following settings can be provided:
|
161
|
+
#
|
162
|
+
# * `:optimizer_version` (String) The version of optimizer to use.
|
163
|
+
# Empty to use database default. "latest" to use the latest
|
164
|
+
# available optimizer version.
|
153
165
|
#
|
154
166
|
# @return [Google::Cloud::Spanner::Results] The results of the query
|
155
167
|
# execution.
|
@@ -249,16 +261,35 @@ module Google
|
|
249
261
|
# puts "User #{row[:id]} is #{row[:name]}"
|
250
262
|
# end
|
251
263
|
#
|
264
|
+
# @example Query using query options:
|
265
|
+
# require "google/cloud/spanner"
|
266
|
+
#
|
267
|
+
# spanner = Google::Cloud::Spanner.new
|
268
|
+
#
|
269
|
+
# db = spanner.client "my-instance", "my-database"
|
270
|
+
#
|
271
|
+
# results = db.execute_query \
|
272
|
+
# "SELECT * FROM users", query_options: { optimizer_version: "1" }
|
273
|
+
#
|
274
|
+
# results.rows.each do |row|
|
275
|
+
# puts "User #{row[:id]} is #{row[:name]}"
|
276
|
+
# end
|
277
|
+
#
|
252
278
|
def execute_query sql, params: nil, types: nil, transaction: nil,
|
253
|
-
partition_token: nil, seqno: nil
|
279
|
+
partition_token: nil, seqno: nil, query_options: nil
|
254
280
|
ensure_service!
|
255
|
-
|
281
|
+
if query_options.nil?
|
282
|
+
query_options = @query_options
|
283
|
+
else
|
284
|
+
query_options = @query_options.merge query_options unless @query_options.nil?
|
285
|
+
end
|
256
286
|
results = Results.execute_query service, path, sql,
|
257
287
|
params: params,
|
258
288
|
types: types,
|
259
289
|
transaction: transaction,
|
260
290
|
partition_token: partition_token,
|
261
|
-
seqno: seqno
|
291
|
+
seqno: seqno,
|
292
|
+
query_options: query_options
|
262
293
|
@last_updated_at = Time.now
|
263
294
|
results
|
264
295
|
end
|
@@ -688,8 +719,8 @@ module Google
|
|
688
719
|
##
|
689
720
|
# @private Creates a new Session instance from a
|
690
721
|
# Google::Spanner::V1::Session.
|
691
|
-
def self.from_grpc grpc, service
|
692
|
-
new grpc, service
|
722
|
+
def self.from_grpc grpc, service, query_options: nil
|
723
|
+
new grpc, service, query_options: query_options
|
693
724
|
end
|
694
725
|
|
695
726
|
##
|