google-cloud-spanner 2.6.0 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|