google-cloud-spanner 2.6.0 → 2.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/AUTHENTICATION.md +2 -1
- data/CHANGELOG.md +43 -0
- data/OVERVIEW.md +1 -1
- data/lib/google-cloud-spanner.rb +2 -0
- data/lib/google/cloud/spanner/batch_snapshot.rb +9 -2
- data/lib/google/cloud/spanner/client.rb +506 -66
- data/lib/google/cloud/spanner/commit.rb +4 -0
- data/lib/google/cloud/spanner/convert.rb +19 -0
- data/lib/google/cloud/spanner/database.rb +7 -0
- data/lib/google/cloud/spanner/fields.rb +2 -1
- data/lib/google/cloud/spanner/instance.rb +61 -1
- data/lib/google/cloud/spanner/project.rb +33 -3
- data/lib/google/cloud/spanner/results.rb +7 -3
- data/lib/google/cloud/spanner/service.rb +33 -17
- data/lib/google/cloud/spanner/session.rb +186 -10
- data/lib/google/cloud/spanner/snapshot.rb +10 -2
- data/lib/google/cloud/spanner/transaction.rb +98 -7
- data/lib/google/cloud/spanner/version.rb +1 -1
- metadata +3 -3
@@ -83,6 +83,7 @@ module Google
|
|
83
83
|
# | `BOOL` | `true`/`false` | |
|
84
84
|
# | `INT64` | `Integer` | |
|
85
85
|
# | `FLOAT64` | `Float` | |
|
86
|
+
# | `NUMERIC` | `BigDecimal` | |
|
86
87
|
# | `STRING` | `String` | |
|
87
88
|
# | `DATE` | `Date` | |
|
88
89
|
# | `TIMESTAMP` | `Time`, `DateTime` | |
|
@@ -108,6 +109,7 @@ module Google
|
|
108
109
|
# * `:BYTES`
|
109
110
|
# * `:DATE`
|
110
111
|
# * `:FLOAT64`
|
112
|
+
# * `:NUMERIC`
|
111
113
|
# * `:INT64`
|
112
114
|
# * `:STRING`
|
113
115
|
# * `:TIMESTAMP`
|
@@ -125,6 +127,8 @@ module Google
|
|
125
127
|
# * `:optimizer_version` (String) The version of optimizer to use.
|
126
128
|
# Empty to use database default. "latest" to use the latest
|
127
129
|
# available optimizer version.
|
130
|
+
# * `:optimizer_statistics_package` (String) Statistics package to
|
131
|
+
# use. Empty to use the database default.
|
128
132
|
# @param [Hash] call_options A hash of values to specify the custom
|
129
133
|
# call options, e.g., timeout, retries, etc. Call options are
|
130
134
|
# optional. The following settings can be provided:
|
@@ -249,7 +253,10 @@ module Google
|
|
249
253
|
#
|
250
254
|
# db.snapshot do |snp|
|
251
255
|
# results = snp.execute_query \
|
252
|
-
# "SELECT * FROM users", query_options: {
|
256
|
+
# "SELECT * FROM users", query_options: {
|
257
|
+
# optimizer_version: "1",
|
258
|
+
# optimizer_statistics_package: "auto_20191128_14_47_22UTC"
|
259
|
+
# }
|
253
260
|
#
|
254
261
|
# results.rows.each do |row|
|
255
262
|
# puts "User #{row[:id]} is #{row[:name]}"
|
@@ -373,12 +380,13 @@ module Google
|
|
373
380
|
# Hash values must contain the type value. If a Hash is used the
|
374
381
|
# fields will be created using the same order as the Hash keys.
|
375
382
|
#
|
376
|
-
# Supported type values
|
383
|
+
# Supported type values include:
|
377
384
|
#
|
378
385
|
# * `:BOOL`
|
379
386
|
# * `:BYTES`
|
380
387
|
# * `:DATE`
|
381
388
|
# * `:FLOAT64`
|
389
|
+
# * `:NUMERIC`
|
382
390
|
# * `:INT64`
|
383
391
|
# * `:STRING`
|
384
392
|
# * `:TIMESTAMP`
|
@@ -77,6 +77,9 @@ module Google
|
|
77
77
|
# @private The Session object.
|
78
78
|
attr_accessor :session
|
79
79
|
|
80
|
+
# @private Transaction tag for statistics collection.
|
81
|
+
attr_accessor :transaction_tag
|
82
|
+
|
80
83
|
def initialize
|
81
84
|
@commit = Commit.new
|
82
85
|
@seqno = 0
|
@@ -113,6 +116,7 @@ module Google
|
|
113
116
|
# | `BOOL` | `true`/`false` | |
|
114
117
|
# | `INT64` | `Integer` | |
|
115
118
|
# | `FLOAT64` | `Float` | |
|
119
|
+
# | `NUMERIC` | `BigDecimal` | |
|
116
120
|
# | `STRING` | `String` | |
|
117
121
|
# | `DATE` | `Date` | |
|
118
122
|
# | `TIMESTAMP` | `Time`, `DateTime` | |
|
@@ -138,6 +142,7 @@ module Google
|
|
138
142
|
# * `:BYTES`
|
139
143
|
# * `:DATE`
|
140
144
|
# * `:FLOAT64`
|
145
|
+
# * `:NUMERIC`
|
141
146
|
# * `:INT64`
|
142
147
|
# * `:STRING`
|
143
148
|
# * `:TIMESTAMP`
|
@@ -155,6 +160,20 @@ module Google
|
|
155
160
|
# * `:optimizer_version` (String) The version of optimizer to use.
|
156
161
|
# Empty to use database default. "latest" to use the latest
|
157
162
|
# available optimizer version.
|
163
|
+
# * `:optimizer_statistics_package` (String) Statistics package to
|
164
|
+
# use. Empty to use the database default.
|
165
|
+
# @param [Hash] request_options Common request options.
|
166
|
+
#
|
167
|
+
# * `:priority` (String) The relative priority for requests.
|
168
|
+
# The priority acts as a hint to the Cloud Spanner scheduler
|
169
|
+
# and does not guarantee priority or order of execution.
|
170
|
+
# Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
|
171
|
+
# `:PRIORITY_HIGH`. If priority not set then default is
|
172
|
+
# `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
|
173
|
+
# * `:tag` (String) A per-request tag which can be applied to
|
174
|
+
# queries or reads, used for statistics collection. Tag must be a
|
175
|
+
# valid identifier of the form: `[a-zA-Z][a-zA-Z0-9_\-]` between 2
|
176
|
+
# and 64 characters in length.
|
158
177
|
# @param [Hash] call_options A hash of values to specify the custom
|
159
178
|
# call options, e.g., timeout, retries, etc. Call options are
|
160
179
|
# optional. The following settings can be provided:
|
@@ -280,7 +299,10 @@ module Google
|
|
280
299
|
#
|
281
300
|
# db.transaction do |tx|
|
282
301
|
# results = tx.execute_query \
|
283
|
-
# "SELECT * FROM users", query_options: {
|
302
|
+
# "SELECT * FROM users", query_options: {
|
303
|
+
# optimizer_version: "1",
|
304
|
+
# optimizer_statistics_package: "auto_20191128_14_47_22UTC"
|
305
|
+
# }
|
284
306
|
#
|
285
307
|
# results.rows.each do |row|
|
286
308
|
# puts "User #{row[:id]} is #{row[:name]}"
|
@@ -312,15 +334,17 @@ module Google
|
|
312
334
|
# end
|
313
335
|
#
|
314
336
|
def execute_query sql, params: nil, types: nil, query_options: nil,
|
315
|
-
call_options: nil
|
337
|
+
request_options: nil, call_options: nil
|
316
338
|
ensure_session!
|
317
339
|
|
318
340
|
@seqno += 1
|
319
341
|
|
320
342
|
params, types = Convert.to_input_params_and_types params, types
|
343
|
+
request_options = build_request_options request_options
|
321
344
|
session.execute_query sql, params: params, types: types,
|
322
345
|
transaction: tx_selector, seqno: @seqno,
|
323
346
|
query_options: query_options,
|
347
|
+
request_options: request_options,
|
324
348
|
call_options: call_options
|
325
349
|
end
|
326
350
|
alias execute execute_query
|
@@ -350,6 +374,7 @@ module Google
|
|
350
374
|
# | `BOOL` | `true`/`false` | |
|
351
375
|
# | `INT64` | `Integer` | |
|
352
376
|
# | `FLOAT64` | `Float` | |
|
377
|
+
# | `NUMERIC` | `BigDecimal` | |
|
353
378
|
# | `STRING` | `String` | |
|
354
379
|
# | `DATE` | `Date` | |
|
355
380
|
# | `TIMESTAMP` | `Time`, `DateTime` | |
|
@@ -376,6 +401,7 @@ module Google
|
|
376
401
|
# * `:BYTES`
|
377
402
|
# * `:DATE`
|
378
403
|
# * `:FLOAT64`
|
404
|
+
# * `:NUMERIC`
|
379
405
|
# * `:INT64`
|
380
406
|
# * `:STRING`
|
381
407
|
# * `:TIMESTAMP`
|
@@ -391,6 +417,20 @@ module Google
|
|
391
417
|
# * `:optimizer_version` (String) The version of optimizer to use.
|
392
418
|
# Empty to use database default. "latest" to use the latest
|
393
419
|
# available optimizer version.
|
420
|
+
# * `:optimizer_statistics_package` (String) Statistics package to
|
421
|
+
# use. Empty to use the database default.
|
422
|
+
# @param [Hash] request_options Common request options.
|
423
|
+
#
|
424
|
+
# * `:priority` (String) The relative priority for requests.
|
425
|
+
# The priority acts as a hint to the Cloud Spanner scheduler
|
426
|
+
# and does not guarantee priority or order of execution.
|
427
|
+
# Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
|
428
|
+
# `:PRIORITY_HIGH`. If priority not set then default is
|
429
|
+
# `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
|
430
|
+
# * `:tag` (String) A per-request tag which can be applied to
|
431
|
+
# queries or reads, used for statistics collection. Tag must be a
|
432
|
+
# valid identifier of the form: `[a-zA-Z][a-zA-Z0-9_\-]` between 2
|
433
|
+
# and 64 characters in length.
|
394
434
|
# @param [Hash] call_options A hash of values to specify the custom
|
395
435
|
# call options, e.g., timeout, retries, etc. Call options are
|
396
436
|
# optional. The following settings can be provided:
|
@@ -441,7 +481,10 @@ module Google
|
|
441
481
|
# db.transaction do |tx|
|
442
482
|
# row_count = tx.execute_update(
|
443
483
|
# "UPDATE users SET name = 'Charlie' WHERE id = 1",
|
444
|
-
# query_options: {
|
484
|
+
# query_options: {
|
485
|
+
# optimizer_version: "1",
|
486
|
+
# optimizer_statistics_package: "auto_20191128_14_47_22UTC"
|
487
|
+
# }
|
445
488
|
# )
|
446
489
|
# end
|
447
490
|
#
|
@@ -468,9 +511,10 @@ module Google
|
|
468
511
|
# end
|
469
512
|
#
|
470
513
|
def execute_update sql, params: nil, types: nil, query_options: nil,
|
471
|
-
call_options: nil
|
514
|
+
request_options: nil, call_options: nil
|
472
515
|
results = execute_query sql, params: params, types: types,
|
473
516
|
query_options: query_options,
|
517
|
+
request_options: request_options,
|
474
518
|
call_options: call_options
|
475
519
|
# Stream all PartialResultSet to get ResultSetStats
|
476
520
|
results.rows.to_a
|
@@ -485,6 +529,18 @@ module Google
|
|
485
529
|
##
|
486
530
|
# Executes DML statements in a batch.
|
487
531
|
#
|
532
|
+
# @param [Hash] request_options Common request options.
|
533
|
+
#
|
534
|
+
# * `:priority` (String) The relative priority for requests.
|
535
|
+
# The priority acts as a hint to the Cloud Spanner scheduler
|
536
|
+
# and does not guarantee priority or order of execution.
|
537
|
+
# Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
|
538
|
+
# `:PRIORITY_HIGH`. If priority not set then default is
|
539
|
+
# `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
|
540
|
+
# * `:tag` (String) A per-request tag which can be applied to
|
541
|
+
# queries or reads, used for statistics collection. Tag must be a
|
542
|
+
# valid identifier of the form: `[a-zA-Z][a-zA-Z0-9_\-]` between 2
|
543
|
+
# and 64 characters in length.
|
488
544
|
# @param [Hash] call_options A hash of values to specify the custom
|
489
545
|
# call options, e.g., timeout, retries, etc. Call options are
|
490
546
|
# optional. The following settings can be provided:
|
@@ -554,10 +610,13 @@ module Google
|
|
554
610
|
# end
|
555
611
|
# end
|
556
612
|
#
|
557
|
-
def batch_update call_options: nil, &block
|
613
|
+
def batch_update request_options: nil, call_options: nil, &block
|
558
614
|
ensure_session!
|
559
615
|
@seqno += 1
|
616
|
+
|
617
|
+
request_options = build_request_options request_options
|
560
618
|
session.batch_update tx_selector, @seqno,
|
619
|
+
request_options: request_options,
|
561
620
|
call_options: call_options, &block
|
562
621
|
end
|
563
622
|
|
@@ -577,6 +636,18 @@ module Google
|
|
577
636
|
# Optional.
|
578
637
|
# @param [Integer] limit If greater than zero, no more than this number
|
579
638
|
# of rows will be returned. The default is no limit.
|
639
|
+
# @param [Hash] request_options Common request options.
|
640
|
+
#
|
641
|
+
# * `:priority` (String) The relative priority for requests.
|
642
|
+
# The priority acts as a hint to the Cloud Spanner scheduler
|
643
|
+
# and does not guarantee priority or order of execution.
|
644
|
+
# Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
|
645
|
+
# `:PRIORITY_HIGH`. If priority not set then default is
|
646
|
+
# `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
|
647
|
+
# * `:tag` (String) A per-request tag which can be applied to
|
648
|
+
# queries or reads, used for statistics collection. Tag must be a
|
649
|
+
# valid identifier of the form: `[a-zA-Z][a-zA-Z0-9_\-]` between 2
|
650
|
+
# and 64 characters in length.
|
580
651
|
# @param [Hash] call_options A hash of values to specify the custom
|
581
652
|
# call options, e.g., timeout, retries, etc. Call options are
|
582
653
|
# optional. The following settings can be provided:
|
@@ -609,14 +680,15 @@ module Google
|
|
609
680
|
# end
|
610
681
|
#
|
611
682
|
def read table, columns, keys: nil, index: nil, limit: nil,
|
612
|
-
call_options: nil
|
683
|
+
request_options: nil, call_options: nil
|
613
684
|
ensure_session!
|
614
685
|
|
615
686
|
columns = Array(columns).map(&:to_s)
|
616
687
|
keys = Convert.to_key_set keys
|
617
|
-
|
688
|
+
request_options = build_request_options request_options
|
618
689
|
session.read table, columns, keys: keys, index: index, limit: limit,
|
619
690
|
transaction: tx_selector,
|
691
|
+
request_options: request_options,
|
620
692
|
call_options: call_options
|
621
693
|
end
|
622
694
|
|
@@ -641,6 +713,7 @@ module Google
|
|
641
713
|
# | `BOOL` | `true`/`false` | |
|
642
714
|
# | `INT64` | `Integer` | |
|
643
715
|
# | `FLOAT64` | `Float` | |
|
716
|
+
# | `NUMERIC` | `BigDecimal` | |
|
644
717
|
# | `STRING` | `String` | |
|
645
718
|
# | `DATE` | `Date` | |
|
646
719
|
# | `TIMESTAMP` | `Time`, `DateTime` | |
|
@@ -687,6 +760,7 @@ module Google
|
|
687
760
|
# | `BOOL` | `true`/`false` | |
|
688
761
|
# | `INT64` | `Integer` | |
|
689
762
|
# | `FLOAT64` | `Float` | |
|
763
|
+
# | `NUMERIC` | `BigDecimal` | |
|
690
764
|
# | `STRING` | `String` | |
|
691
765
|
# | `DATE` | `Date` | |
|
692
766
|
# | `TIMESTAMP` | `Time`, `DateTime` | |
|
@@ -732,6 +806,7 @@ module Google
|
|
732
806
|
# | `BOOL` | `true`/`false` | |
|
733
807
|
# | `INT64` | `Integer` | |
|
734
808
|
# | `FLOAT64` | `Float` | |
|
809
|
+
# | `NUMERIC` | `BigDecimal` | |
|
735
810
|
# | `STRING` | `String` | |
|
736
811
|
# | `DATE` | `Date` | |
|
737
812
|
# | `TIMESTAMP` | `Time`, `DateTime` | |
|
@@ -779,6 +854,7 @@ module Google
|
|
779
854
|
# | `BOOL` | `true`/`false` | |
|
780
855
|
# | `INT64` | `Integer` | |
|
781
856
|
# | `FLOAT64` | `Float` | |
|
857
|
+
# | `NUMERIC` | `BigDecimal` | |
|
782
858
|
# | `STRING` | `String` | |
|
783
859
|
# | `DATE` | `Date` | |
|
784
860
|
# | `TIMESTAMP` | `Time`, `DateTime` | |
|
@@ -880,6 +956,7 @@ module Google
|
|
880
956
|
# * `:BYTES`
|
881
957
|
# * `:DATE`
|
882
958
|
# * `:FLOAT64`
|
959
|
+
# * `:NUMERIC`
|
883
960
|
# * `:INT64`
|
884
961
|
# * `:STRING`
|
885
962
|
# * `:TIMESTAMP`
|
@@ -1042,6 +1119,20 @@ module Google
|
|
1042
1119
|
V1::TransactionSelector.new id: transaction_id
|
1043
1120
|
end
|
1044
1121
|
|
1122
|
+
##
|
1123
|
+
# @private Build request options. If transaction tag is set
|
1124
|
+
# then add into request options.
|
1125
|
+
def build_request_options options
|
1126
|
+
options = Convert.to_request_options options, tag_type: :request_tag
|
1127
|
+
|
1128
|
+
if transaction_tag
|
1129
|
+
options ||= {}
|
1130
|
+
options[:transaction_tag] = transaction_tag
|
1131
|
+
end
|
1132
|
+
|
1133
|
+
options
|
1134
|
+
end
|
1135
|
+
|
1045
1136
|
##
|
1046
1137
|
# @private Raise an error unless an active connection to the service is
|
1047
1138
|
# available.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-cloud-spanner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Moore
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-
|
12
|
+
date: 2021-07-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: google-cloud-core
|
@@ -331,7 +331,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
331
331
|
- !ruby/object:Gem::Version
|
332
332
|
version: '0'
|
333
333
|
requirements: []
|
334
|
-
rubygems_version: 3.2.
|
334
|
+
rubygems_version: 3.2.17
|
335
335
|
signing_key:
|
336
336
|
specification_version: 4
|
337
337
|
summary: API Client library for Google Cloud Spanner API
|