google-cloud-spanner 2.18.1 → 2.19.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/CHANGELOG.md +15 -0
- data/lib/google/cloud/spanner/batch_client.rb +10 -2
- data/lib/google/cloud/spanner/batch_snapshot.rb +81 -13
- data/lib/google/cloud/spanner/client.rb +48 -7
- data/lib/google/cloud/spanner/project.rb +33 -4
- data/lib/google/cloud/spanner/service.rb +6 -3
- data/lib/google/cloud/spanner/session.rb +15 -9
- data/lib/google/cloud/spanner/snapshot.rb +36 -5
- data/lib/google/cloud/spanner/version.rb +1 -1
- data/lib/google/cloud/spanner.rb +8 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1cf89ec86ecf1bed2fcbec728dca49cb5b7b18c6b27b187289b80bc70cceab87
|
4
|
+
data.tar.gz: 862f6429db6150c4254005fca8e0697fcda4139a1ce837c0ed88eee82e3c24f2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d6a031a4a1af4aa914725f26fd3ff7921ab718f73df8774fd9aef5d7c419cd0d2733f5987e8d3afe54a3cb25e7bf31bf98579239fcdda4aa582ae872acea441
|
7
|
+
data.tar.gz: 247ad7856b80831eb5039b8eec87a409a8c88f825dd0c65eebae40ebf9c17814870a14bcbf6316211d53cc6d1b4232b8834629c74960d4ac21b6568cd00240a5
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
+
### 2.19.1 (2024-01-24)
|
4
|
+
|
5
|
+
#### Bug Fixes
|
6
|
+
|
7
|
+
* Bump up minimum version of google-cloud-spanner-v1 to 0.19.0 ([#79](https://github.com/googleapis/ruby-spanner/issues/79))
|
8
|
+
|
9
|
+
### 2.19.0 (2024-01-08)
|
10
|
+
|
11
|
+
#### Features
|
12
|
+
|
13
|
+
* Support directed read options ([#75](https://github.com/googleapis/ruby-spanner/issues/75))
|
14
|
+
#### Bug Fixes
|
15
|
+
|
16
|
+
* add empty string validation for emulator host ([#73](https://github.com/googleapis/ruby-spanner/issues/73))
|
17
|
+
|
3
18
|
### 2.18.1 (2023-09-19)
|
4
19
|
|
5
20
|
#### Bug Fixes
|
@@ -66,12 +66,13 @@ module Google
|
|
66
66
|
##
|
67
67
|
# @private Creates a new Spanner BatchClient instance.
|
68
68
|
def initialize project, instance_id, database_id, session_labels: nil,
|
69
|
-
query_options: nil
|
69
|
+
query_options: nil, directed_read_options: nil
|
70
70
|
@project = project
|
71
71
|
@instance_id = instance_id
|
72
72
|
@database_id = database_id
|
73
73
|
@session_labels = session_labels
|
74
74
|
@query_options = query_options
|
75
|
+
@directed_read_options = directed_read_options
|
75
76
|
end
|
76
77
|
|
77
78
|
# The unique identifier for the project.
|
@@ -110,6 +111,13 @@ module Google
|
|
110
111
|
@project.database instance_id, database_id
|
111
112
|
end
|
112
113
|
|
114
|
+
# A hash of values to specify the custom directed read options for executing
|
115
|
+
# SQL query.
|
116
|
+
# @return [Hash]
|
117
|
+
def directed_read_options
|
118
|
+
@directed_read_options
|
119
|
+
end
|
120
|
+
|
113
121
|
##
|
114
122
|
# Returns a {BatchSnapshot} context in which multiple reads and/or
|
115
123
|
# queries can be performed. All reads/queries will use the same
|
@@ -190,7 +198,7 @@ module Google
|
|
190
198
|
snp_session.path, strong: strong,
|
191
199
|
timestamp: (timestamp || read_timestamp),
|
192
200
|
staleness: (staleness || exact_staleness)
|
193
|
-
BatchSnapshot.from_grpc snp_grpc, snp_session
|
201
|
+
BatchSnapshot.from_grpc snp_grpc, snp_session, directed_read_options: @directed_read_options
|
194
202
|
end
|
195
203
|
|
196
204
|
##
|
@@ -65,11 +65,15 @@ module Google
|
|
65
65
|
# @private The Session object.
|
66
66
|
attr_reader :session
|
67
67
|
|
68
|
+
# @private Directed Read Options
|
69
|
+
attr_reader :directed_read_options
|
70
|
+
|
68
71
|
##
|
69
72
|
# @private Creates a BatchSnapshot object.
|
70
|
-
def initialize grpc, session
|
73
|
+
def initialize grpc, session, directed_read_options: nil
|
71
74
|
@grpc = grpc
|
72
75
|
@session = session
|
76
|
+
@directed_read_options = directed_read_options
|
73
77
|
end
|
74
78
|
|
75
79
|
##
|
@@ -191,6 +195,20 @@ module Google
|
|
191
195
|
# @param [Boolean] data_boost_enabled If this field is
|
192
196
|
# set `true`, the request will be executed via offline access.
|
193
197
|
# Defaults to `false`.
|
198
|
+
# @param [Hash] directed_read_options Client options used to set the directed_read_options
|
199
|
+
# for all ReadRequests and ExecuteSqlRequests that indicates which replicas
|
200
|
+
# or regions should be used for non-transactional reads or queries.
|
201
|
+
# Will represent [`Google::Cloud::Spanner::V1::DirectedReadOptions`](https://cloud.google.com/ruby/docs/reference/google-cloud-spanner-v1/latest/Google-Cloud-Spanner-V1-DirectedReadOptions)
|
202
|
+
# The following settings can be provided:
|
203
|
+
#
|
204
|
+
# * `:exclude_replicas` (Hash)
|
205
|
+
# Exclude_replicas indicates what replicas should be excluded from serving requests.
|
206
|
+
# Spanner will not route requests to the replicas in this list.
|
207
|
+
# * `:include_replicas` (Hash) Include_replicas indicates the order of replicas to process the request.
|
208
|
+
# If auto_failover_disabled is set to true and
|
209
|
+
# all replicas are exhausted without finding a healthy replica,
|
210
|
+
# Spanner will wait for a replica in the list to become available,
|
211
|
+
# requests may fail due to DEADLINE_EXCEEDED errors.
|
194
212
|
#
|
195
213
|
# @return [Array<Google::Cloud::Spanner::Partition>] The partitions
|
196
214
|
# created by the query partition.
|
@@ -214,7 +232,8 @@ module Google
|
|
214
232
|
#
|
215
233
|
def partition_query sql, params: nil, types: nil,
|
216
234
|
partition_size_bytes: nil, max_partitions: nil,
|
217
|
-
query_options: nil, call_options: nil, data_boost_enabled: false
|
235
|
+
query_options: nil, call_options: nil, data_boost_enabled: false,
|
236
|
+
directed_read_options: nil
|
218
237
|
ensure_session!
|
219
238
|
|
220
239
|
params, types = Convert.to_input_params_and_types params, types
|
@@ -235,7 +254,8 @@ module Google
|
|
235
254
|
transaction: tx_selector,
|
236
255
|
partition_token: grpc.partition_token,
|
237
256
|
query_options: query_options,
|
238
|
-
data_boost_enabled: data_boost_enabled
|
257
|
+
data_boost_enabled: data_boost_enabled,
|
258
|
+
directed_read_options: (directed_read_options || @directed_read_options)
|
239
259
|
}.compact
|
240
260
|
)
|
241
261
|
Partition.from_execute_sql_grpc execute_sql_grpc
|
@@ -284,6 +304,20 @@ module Google
|
|
284
304
|
# @param [Boolean] data_boost_enabled If this field is
|
285
305
|
# set `true`, the request will be executed via offline access.
|
286
306
|
# Defaults to `false`.
|
307
|
+
# @param [Hash] directed_read_options Client options used to set the directed_read_options
|
308
|
+
# for all ReadRequests and ExecuteSqlRequests that indicates which replicas
|
309
|
+
# or regions should be used for non-transactional reads or queries.
|
310
|
+
# Will represent [`Google::Cloud::Spanner::V1::DirectedReadOptions`](https://cloud.google.com/ruby/docs/reference/google-cloud-spanner-v1/latest/Google-Cloud-Spanner-V1-DirectedReadOptions)
|
311
|
+
# The following settings can be provided:
|
312
|
+
#
|
313
|
+
# * `:exclude_replicas` (Hash)
|
314
|
+
# Exclude_replicas indicates what replicas should be excluded from serving requests.
|
315
|
+
# Spanner will not route requests to the replicas in this list.
|
316
|
+
# * `:include_replicas` (Hash) Include_replicas indicates the order of replicas to process the request.
|
317
|
+
# If auto_failover_disabled is set to true and
|
318
|
+
# all replicas are exhausted without finding a healthy replica,
|
319
|
+
# Spanner will wait for a replica in the list to become available,
|
320
|
+
# requests may fail due to DEADLINE_EXCEEDED errors.
|
287
321
|
#
|
288
322
|
# @return [Array<Google::Cloud::Spanner::Partition>] The partitions
|
289
323
|
# created by the read partition.
|
@@ -305,7 +339,8 @@ module Google
|
|
305
339
|
#
|
306
340
|
def partition_read table, columns, keys: nil, index: nil,
|
307
341
|
partition_size_bytes: nil, max_partitions: nil,
|
308
|
-
call_options: nil, data_boost_enabled: false
|
342
|
+
call_options: nil, data_boost_enabled: false,
|
343
|
+
directed_read_options: nil
|
309
344
|
ensure_session!
|
310
345
|
|
311
346
|
columns = Array(columns).map(&:to_s)
|
@@ -329,7 +364,8 @@ module Google
|
|
329
364
|
index: index,
|
330
365
|
transaction: tx_selector,
|
331
366
|
partition_token: grpc.partition_token,
|
332
|
-
data_boost_enabled: data_boost_enabled
|
367
|
+
data_boost_enabled: data_boost_enabled,
|
368
|
+
directed_read_options: (directed_read_options || @directed_read_options)
|
333
369
|
}.compact
|
334
370
|
)
|
335
371
|
Partition.from_read_grpc read_grpc
|
@@ -498,6 +534,20 @@ module Google
|
|
498
534
|
# * `:multiplier` (`Numeric`) - The incremental backoff multiplier.
|
499
535
|
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
500
536
|
# trigger a retry.
|
537
|
+
# @param [Hash] directed_read_options Client options used to set the directed_read_options
|
538
|
+
# for all ReadRequests and ExecuteSqlRequests that indicates which replicas
|
539
|
+
# or regions should be used for non-transactional reads or queries.
|
540
|
+
# Will represent [`Google::Cloud::Spanner::V1::DirectedReadOptions`](https://cloud.google.com/ruby/docs/reference/google-cloud-spanner-v1/latest/Google-Cloud-Spanner-V1-DirectedReadOptions)
|
541
|
+
# The following settings can be provided:
|
542
|
+
#
|
543
|
+
# * `:exclude_replicas` (Hash)
|
544
|
+
# Exclude_replicas indicates what replicas should be excluded from serving requests.
|
545
|
+
# Spanner will not route requests to the replicas in this list.
|
546
|
+
# * `:include_replicas` (Hash) Include_replicas indicates the order of replicas to process the request.
|
547
|
+
# If auto_failover_disabled is set to true and
|
548
|
+
# all replicas are exhausted without finding a healthy replica,
|
549
|
+
# Spanner will wait for a replica in the list to become available,
|
550
|
+
# requests may fail due to DEADLINE_EXCEEDED errors.
|
501
551
|
#
|
502
552
|
# @return [Google::Cloud::Spanner::Results] The results of the query
|
503
553
|
# execution.
|
@@ -645,7 +695,7 @@ module Google
|
|
645
695
|
# end
|
646
696
|
#
|
647
697
|
def execute_query sql, params: nil, types: nil, query_options: nil,
|
648
|
-
call_options: nil
|
698
|
+
call_options: nil, directed_read_options: nil
|
649
699
|
ensure_session!
|
650
700
|
|
651
701
|
params, types = Convert.to_input_params_and_types params, types
|
@@ -653,7 +703,8 @@ module Google
|
|
653
703
|
session.execute_query sql, params: params, types: types,
|
654
704
|
transaction: tx_selector,
|
655
705
|
query_options: query_options,
|
656
|
-
call_options: call_options
|
706
|
+
call_options: call_options,
|
707
|
+
directed_read_options: (directed_read_options || @directed_read_options)
|
657
708
|
end
|
658
709
|
alias execute execute_query
|
659
710
|
alias query execute_query
|
@@ -688,6 +739,20 @@ module Google
|
|
688
739
|
# * `:multiplier` (`Numeric`) - The incremental backoff multiplier.
|
689
740
|
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
690
741
|
# trigger a retry.
|
742
|
+
# @param [Hash] directed_read_options Client options used to set the directed_read_options
|
743
|
+
# for all ReadRequests and ExecuteSqlRequests that indicates which replicas
|
744
|
+
# or regions should be used for non-transactional reads or queries.
|
745
|
+
# Will represent [`Google::Cloud::Spanner::V1::DirectedReadOptions`](https://cloud.google.com/ruby/docs/reference/google-cloud-spanner-v1/latest/Google-Cloud-Spanner-V1-DirectedReadOptions)
|
746
|
+
# The following settings can be provided:
|
747
|
+
#
|
748
|
+
# * `:exclude_replicas` (Hash)
|
749
|
+
# Exclude_replicas indicates what replicas should be excluded from serving requests.
|
750
|
+
# Spanner will not route requests to the replicas in this list.
|
751
|
+
# * `:include_replicas` (Hash) Include_replicas indicates the order of replicas to process the request.
|
752
|
+
# If auto_failover_disabled is set to true and
|
753
|
+
# all replicas are exhausted without finding a healthy replica,
|
754
|
+
# Spanner will wait for a replica in the list to become available,
|
755
|
+
# requests may fail due to DEADLINE_EXCEEDED errors.
|
691
756
|
#
|
692
757
|
# @return [Google::Cloud::Spanner::Results] The results of the read
|
693
758
|
# operation.
|
@@ -706,7 +771,7 @@ module Google
|
|
706
771
|
# end
|
707
772
|
#
|
708
773
|
def read table, columns, keys: nil, index: nil, limit: nil,
|
709
|
-
call_options: nil
|
774
|
+
call_options: nil, directed_read_options: nil
|
710
775
|
ensure_session!
|
711
776
|
|
712
777
|
columns = Array(columns).map(&:to_s)
|
@@ -714,7 +779,8 @@ module Google
|
|
714
779
|
|
715
780
|
session.read table, columns, keys: keys, index: index, limit: limit,
|
716
781
|
transaction: tx_selector,
|
717
|
-
call_options: call_options
|
782
|
+
call_options: call_options,
|
783
|
+
directed_read_options: (directed_read_options || @directed_read_options)
|
718
784
|
end
|
719
785
|
|
720
786
|
##
|
@@ -784,8 +850,8 @@ module Google
|
|
784
850
|
##
|
785
851
|
# @private Creates a new BatchSnapshot instance from a
|
786
852
|
# `Google::Cloud::Spanner::V1::Transaction`.
|
787
|
-
def self.from_grpc grpc, session
|
788
|
-
new grpc, session
|
853
|
+
def self.from_grpc grpc, session, directed_read_options: nil
|
854
|
+
new grpc, session, directed_read_options: directed_read_options
|
789
855
|
end
|
790
856
|
|
791
857
|
protected
|
@@ -813,7 +879,8 @@ module Google
|
|
813
879
|
partition_token: partition.execute.partition_token,
|
814
880
|
query_options: query_options,
|
815
881
|
call_options: call_options,
|
816
|
-
data_boost_enabled: partition.execute.data_boost_enabled
|
882
|
+
data_boost_enabled: partition.execute.data_boost_enabled,
|
883
|
+
directed_read_options: partition.execute.directed_read_options
|
817
884
|
end
|
818
885
|
|
819
886
|
def execute_partition_read partition, call_options: nil
|
@@ -824,7 +891,8 @@ module Google
|
|
824
891
|
transaction: partition.read.transaction,
|
825
892
|
partition_token: partition.read.partition_token,
|
826
893
|
call_options: call_options,
|
827
|
-
data_boost_enabled: partition.read.data_boost_enabled
|
894
|
+
data_boost_enabled: partition.read.data_boost_enabled,
|
895
|
+
directed_read_options: partition.read.directed_read_options
|
828
896
|
end
|
829
897
|
end
|
830
898
|
end
|
@@ -56,12 +56,14 @@ module Google
|
|
56
56
|
##
|
57
57
|
# @private Creates a new Spanner Client instance.
|
58
58
|
def initialize project, instance_id, database_id, session_labels: nil,
|
59
|
-
pool_opts: {}, query_options: nil, database_role: nil
|
59
|
+
pool_opts: {}, query_options: nil, database_role: nil,
|
60
|
+
directed_read_options: nil
|
60
61
|
@project = project
|
61
62
|
@instance_id = instance_id
|
62
63
|
@database_id = database_id
|
63
64
|
@database_role = database_role
|
64
65
|
@session_labels = session_labels
|
66
|
+
@directed_read_options = directed_read_options
|
65
67
|
@pool = Pool.new self, **pool_opts
|
66
68
|
@query_options = query_options
|
67
69
|
end
|
@@ -115,6 +117,13 @@ module Google
|
|
115
117
|
@query_options
|
116
118
|
end
|
117
119
|
|
120
|
+
# A hash of values to specify the custom directed read options for executing
|
121
|
+
# SQL query.
|
122
|
+
# @return [Hash]
|
123
|
+
def directed_read_options
|
124
|
+
@directed_read_options
|
125
|
+
end
|
126
|
+
|
118
127
|
##
|
119
128
|
# Executes a SQL query.
|
120
129
|
#
|
@@ -264,6 +273,20 @@ module Google
|
|
264
273
|
# * `:multiplier` (`Numeric`) - The incremental backoff multiplier.
|
265
274
|
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
266
275
|
# trigger a retry.
|
276
|
+
# @param [Hash] directed_read_options Client options used to set the directed_read_options
|
277
|
+
# for all ReadRequests and ExecuteSqlRequests that indicates which replicas
|
278
|
+
# or regions should be used for non-transactional reads or queries.
|
279
|
+
# Will represent [`Google::Cloud::Spanner::V1::DirectedReadOptions`](https://cloud.google.com/ruby/docs/reference/google-cloud-spanner-v1/latest/Google-Cloud-Spanner-V1-DirectedReadOptions)
|
280
|
+
# The following settings can be provided:
|
281
|
+
#
|
282
|
+
# * `:exclude_replicas` (Hash)
|
283
|
+
# Exclude_replicas indicates what replicas should be excluded from serving requests.
|
284
|
+
# Spanner will not route requests to the replicas in this list.
|
285
|
+
# * `:include_replicas` (Hash) Include_replicas indicates the order of replicas to process the request.
|
286
|
+
# If auto_failover_disabled is set to true and
|
287
|
+
# all replicas are exhausted without finding a healthy replica,
|
288
|
+
# Spanner will wait for a replica in the list to become available,
|
289
|
+
# requests may fail due to DEADLINE_EXCEEDED errors.
|
267
290
|
#
|
268
291
|
# @return [Google::Cloud::Spanner::Results] The results of the query
|
269
292
|
# execution.
|
@@ -435,7 +458,7 @@ module Google
|
|
435
458
|
#
|
436
459
|
def execute_query sql, params: nil, types: nil, single_use: nil,
|
437
460
|
query_options: nil, request_options: nil,
|
438
|
-
call_options: nil
|
461
|
+
call_options: nil, directed_read_options: nil
|
439
462
|
validate_single_use_args! single_use
|
440
463
|
ensure_service!
|
441
464
|
|
@@ -448,7 +471,7 @@ module Google
|
|
448
471
|
results = session.execute_query \
|
449
472
|
sql, params: params, types: types, transaction: single_use_tx,
|
450
473
|
query_options: query_options, request_options: request_options,
|
451
|
-
call_options: call_options
|
474
|
+
call_options: call_options, directed_read_options: (directed_read_options || @directed_read_options)
|
452
475
|
end
|
453
476
|
results
|
454
477
|
end
|
@@ -828,6 +851,20 @@ module Google
|
|
828
851
|
# * `:multiplier` (`Numeric`) - The incremental backoff multiplier.
|
829
852
|
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
830
853
|
# trigger a retry.
|
854
|
+
# @param [Hash] directed_read_options Client options used to set the directed_read_options
|
855
|
+
# for all ReadRequests and ExecuteSqlRequests that indicates which replicas
|
856
|
+
# or regions should be used for non-transactional reads or queries.
|
857
|
+
# Will represent [`Google::Cloud::Spanner::V1::DirectedReadOptions`](https://cloud.google.com/ruby/docs/reference/google-cloud-spanner-v1/latest/Google-Cloud-Spanner-V1-DirectedReadOptions)
|
858
|
+
# The following settings can be provided:
|
859
|
+
#
|
860
|
+
# * `:exclude_replicas` (Hash)
|
861
|
+
# Exclude_replicas indicates what replicas should be excluded from serving requests.
|
862
|
+
# Spanner will not route requests to the replicas in this list.
|
863
|
+
# * `:include_replicas` (Hash) Include_replicas indicates the order of replicas to process the request.
|
864
|
+
# If auto_failover_disabled is set to true
|
865
|
+
# and all replicas are exhausted without finding a healthy replica,
|
866
|
+
# Spanner will wait for a replica in the list to become available,
|
867
|
+
# requests may fail due to DEADLINE_EXCEEDED errors.
|
831
868
|
#
|
832
869
|
# @return [Google::Cloud::Spanner::Results] The results of the read.
|
833
870
|
#
|
@@ -911,7 +948,8 @@ module Google
|
|
911
948
|
# end
|
912
949
|
#
|
913
950
|
def read table, columns, keys: nil, index: nil, limit: nil,
|
914
|
-
single_use: nil, request_options: nil, call_options: nil
|
951
|
+
single_use: nil, request_options: nil, call_options: nil,
|
952
|
+
directed_read_options: nil
|
915
953
|
validate_single_use_args! single_use
|
916
954
|
ensure_service!
|
917
955
|
|
@@ -927,7 +965,8 @@ module Google
|
|
927
965
|
table, columns, keys: keys, index: index, limit: limit,
|
928
966
|
transaction: single_use_tx,
|
929
967
|
request_options: request_options,
|
930
|
-
call_options: call_options
|
968
|
+
call_options: call_options,
|
969
|
+
directed_read_options: (directed_read_options || @directed_read_options)
|
931
970
|
end
|
932
971
|
results
|
933
972
|
end
|
@@ -1935,7 +1974,7 @@ module Google
|
|
1935
1974
|
staleness: (staleness || exact_staleness),
|
1936
1975
|
call_options: call_options
|
1937
1976
|
Thread.current[IS_TRANSACTION_RUNNING_KEY] = true
|
1938
|
-
snp = Snapshot.from_grpc snp_grpc, session
|
1977
|
+
snp = Snapshot.from_grpc snp_grpc, session, @directed_read_options
|
1939
1978
|
yield snp if block_given?
|
1940
1979
|
ensure
|
1941
1980
|
Thread.current[IS_TRANSACTION_RUNNING_KEY] = nil
|
@@ -2159,7 +2198,9 @@ module Google
|
|
2159
2198
|
session_count,
|
2160
2199
|
labels: @session_labels,
|
2161
2200
|
database_role: @database_role
|
2162
|
-
resp.session.map
|
2201
|
+
resp.session.map do |grpc|
|
2202
|
+
Session.from_grpc grpc, @project.service, query_options: @query_options
|
2203
|
+
end
|
2163
2204
|
end
|
2164
2205
|
|
2165
2206
|
# @private
|
@@ -547,6 +547,20 @@ module Google
|
|
547
547
|
# available optimizer version.
|
548
548
|
# * `:optimizer_statistics_package` (String) Statistics package to
|
549
549
|
# use. Empty to use the database default.
|
550
|
+
# @param [Hash] directed_read_options Client options used to set the directed_read_options
|
551
|
+
# for all ReadRequests and ExecuteSqlRequests that indicates which replicas
|
552
|
+
# or regions should be used for non-transactional reads or queries.
|
553
|
+
# Will represent [`Google::Cloud::Spanner::V1::DirectedReadOptions`](https://cloud.google.com/ruby/docs/reference/google-cloud-spanner-v1/latest/Google-Cloud-Spanner-V1-DirectedReadOptions)
|
554
|
+
# The following settings can be provided:
|
555
|
+
#
|
556
|
+
# * `:exclude_replicas` (Hash)
|
557
|
+
# Exclude_replicas indicates what replicas should be excluded from serving requests.
|
558
|
+
# Spanner will not route requests to the replicas in this list.
|
559
|
+
# * `:include_replicas` (Hash) Include_replicas indicates the order of replicas to process the request.
|
560
|
+
# If auto_failover_disabled is set to true
|
561
|
+
# and all replicas are exhausted without finding a healthy replica,
|
562
|
+
# Spanner will wait for a replica in the list to become available,
|
563
|
+
# requests may fail due to DEADLINE_EXCEEDED errors.
|
550
564
|
#
|
551
565
|
# @return [Client] The newly created client.
|
552
566
|
#
|
@@ -566,7 +580,7 @@ module Google
|
|
566
580
|
# end
|
567
581
|
#
|
568
582
|
def client instance_id, database_id, pool: {}, labels: nil,
|
569
|
-
query_options: nil, database_role: nil
|
583
|
+
query_options: nil, database_role: nil, directed_read_options: nil
|
570
584
|
# Convert from possible Google::Protobuf::Map
|
571
585
|
labels = labels.to_h { |k, v| [String(k), String(v)] } if labels
|
572
586
|
# Configs set by environment variables take over client-level configs.
|
@@ -579,7 +593,8 @@ module Google
|
|
579
593
|
session_labels: labels,
|
580
594
|
pool_opts: valid_session_pool_options(pool),
|
581
595
|
query_options: query_options,
|
582
|
-
database_role: database_role
|
596
|
+
database_role: database_role,
|
597
|
+
directed_read_options: directed_read_options
|
583
598
|
end
|
584
599
|
|
585
600
|
##
|
@@ -614,6 +629,20 @@ module Google
|
|
614
629
|
# available optimizer version.
|
615
630
|
# * `:optimizer_statistics_package` (String) Statistics package to
|
616
631
|
# use. Empty to use the database default.
|
632
|
+
# @param [Hash] directed_read_options Client options used to set the directed_read_options
|
633
|
+
# for all ReadRequests and ExecuteSqlRequests that indicates which replicas
|
634
|
+
# or regions should be used for non-transactional reads or queries.
|
635
|
+
# Will represent [`Google::Cloud::Spanner::V1::DirectedReadOptions`](https://cloud.google.com/ruby/docs/reference/google-cloud-spanner-v1/latest/Google-Cloud-Spanner-V1-DirectedReadOptions)
|
636
|
+
# The following settings can be provided:
|
637
|
+
#
|
638
|
+
# * `:exclude_replicas` (Hash)
|
639
|
+
# Exclude_replicas indicates what replicas should be excluded from serving requests.
|
640
|
+
# Spanner will not route requests to the replicas in this list.
|
641
|
+
# * `:include_replicas` (Hash) Include_replicas indicates the order of replicas to process the request.
|
642
|
+
# If auto_failover_disabled is set to true
|
643
|
+
# and all replicas are exhausted without finding a healthy replica,
|
644
|
+
# Spanner will wait for a replica in the list to become available,
|
645
|
+
# requests may fail due to DEADLINE_EXCEEDED errors.
|
617
646
|
#
|
618
647
|
# @return [Client] The newly created client.
|
619
648
|
#
|
@@ -643,11 +672,11 @@ module Google
|
|
643
672
|
# new_partition
|
644
673
|
#
|
645
674
|
def batch_client instance_id, database_id, labels: nil,
|
646
|
-
query_options: nil
|
675
|
+
query_options: nil, directed_read_options: nil
|
647
676
|
# Convert from possible Google::Protobuf::Map
|
648
677
|
labels = labels.to_h { |k, v| [String(k), String(v)] } if labels
|
649
678
|
BatchClient.new self, instance_id, database_id, session_labels: labels,
|
650
|
-
query_options: query_options
|
679
|
+
query_options: query_options, directed_read_options: directed_read_options
|
651
680
|
end
|
652
681
|
|
653
682
|
protected
|
@@ -329,7 +329,8 @@ module Google
|
|
329
329
|
params: nil, types: nil, resume_token: nil,
|
330
330
|
partition_token: nil, seqno: nil,
|
331
331
|
query_options: nil, request_options: nil,
|
332
|
-
call_options: nil, data_boost_enabled: nil
|
332
|
+
call_options: nil, data_boost_enabled: nil,
|
333
|
+
directed_read_options: nil
|
333
334
|
opts = default_options session_name: session_name,
|
334
335
|
call_options: call_options
|
335
336
|
request = {
|
@@ -342,7 +343,8 @@ module Google
|
|
342
343
|
partition_token: partition_token,
|
343
344
|
seqno: seqno,
|
344
345
|
query_options: query_options,
|
345
|
-
request_options: request_options
|
346
|
+
request_options: request_options,
|
347
|
+
directed_read_options: directed_read_options
|
346
348
|
}
|
347
349
|
request[:data_boost_enabled] = data_boost_enabled unless data_boost_enabled.nil?
|
348
350
|
service.execute_streaming_sql request, opts
|
@@ -367,7 +369,7 @@ module Google
|
|
367
369
|
index: nil, transaction: nil, limit: nil,
|
368
370
|
resume_token: nil, partition_token: nil,
|
369
371
|
request_options: nil, call_options: nil,
|
370
|
-
data_boost_enabled: nil
|
372
|
+
data_boost_enabled: nil, directed_read_options: nil
|
371
373
|
opts = default_options session_name: session_name,
|
372
374
|
call_options: call_options
|
373
375
|
request = {
|
@@ -377,6 +379,7 @@ module Google
|
|
377
379
|
partition_token: partition_token, request_options: request_options
|
378
380
|
}
|
379
381
|
request[:data_boost_enabled] = data_boost_enabled unless data_boost_enabled.nil?
|
382
|
+
request[:directed_read_options] = directed_read_options unless directed_read_options.nil?
|
380
383
|
service.streaming_read request, opts
|
381
384
|
end
|
382
385
|
|
@@ -338,13 +338,10 @@ module Google
|
|
338
338
|
#
|
339
339
|
def execute_query sql, params: nil, types: nil, transaction: nil,
|
340
340
|
partition_token: nil, seqno: nil, query_options: nil,
|
341
|
-
request_options: nil, call_options: nil, data_boost_enabled: nil
|
341
|
+
request_options: nil, call_options: nil, data_boost_enabled: nil,
|
342
|
+
directed_read_options: nil
|
342
343
|
ensure_service!
|
343
|
-
|
344
|
-
query_options = @query_options
|
345
|
-
else
|
346
|
-
query_options = @query_options.merge query_options unless @query_options.nil?
|
347
|
-
end
|
344
|
+
query_options = merge_if_present query_options, @query_options
|
348
345
|
|
349
346
|
execute_query_options = {
|
350
347
|
transaction: transaction, params: params, types: types,
|
@@ -353,6 +350,7 @@ module Google
|
|
353
350
|
call_options: call_options
|
354
351
|
}
|
355
352
|
execute_query_options[:data_boost_enabled] = data_boost_enabled unless data_boost_enabled.nil?
|
353
|
+
execute_query_options[:directed_read_options] = directed_read_options unless directed_read_options.nil?
|
356
354
|
|
357
355
|
response = service.execute_streaming_sql path, sql, **execute_query_options
|
358
356
|
|
@@ -499,7 +497,7 @@ module Google
|
|
499
497
|
#
|
500
498
|
def read table, columns, keys: nil, index: nil, limit: nil,
|
501
499
|
transaction: nil, partition_token: nil, request_options: nil,
|
502
|
-
call_options: nil, data_boost_enabled: nil
|
500
|
+
call_options: nil, data_boost_enabled: nil, directed_read_options: nil
|
503
501
|
ensure_service!
|
504
502
|
|
505
503
|
read_options = {
|
@@ -507,10 +505,10 @@ module Google
|
|
507
505
|
transaction: transaction,
|
508
506
|
partition_token: partition_token,
|
509
507
|
request_options: request_options,
|
510
|
-
call_options: call_options
|
511
|
-
data_boost_enabled: data_boost_enabled
|
508
|
+
call_options: call_options
|
512
509
|
}
|
513
510
|
read_options[:data_boost_enabled] = data_boost_enabled unless data_boost_enabled.nil?
|
511
|
+
read_options[:directed_read_options] = directed_read_options unless directed_read_options.nil?
|
514
512
|
|
515
513
|
response = service.streaming_read_table \
|
516
514
|
path, table, columns, **read_options
|
@@ -1265,6 +1263,14 @@ module Google
|
|
1265
1263
|
def ensure_service!
|
1266
1264
|
raise "Must have active connection to service" unless service
|
1267
1265
|
end
|
1266
|
+
|
1267
|
+
def merge_if_present hash, hash_to_merge
|
1268
|
+
if hash.nil?
|
1269
|
+
hash_to_merge
|
1270
|
+
else
|
1271
|
+
hash_to_merge.nil? ? hash : hash_to_merge.merge(hash)
|
1272
|
+
end
|
1273
|
+
end
|
1268
1274
|
end
|
1269
1275
|
end
|
1270
1276
|
end
|
@@ -142,6 +142,20 @@ module Google
|
|
142
142
|
# * `:multiplier` (`Numeric`) - The incremental backoff multiplier.
|
143
143
|
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
144
144
|
# trigger a retry.
|
145
|
+
# @param [Hash] directed_read_options Client options used to set the directed_read_options
|
146
|
+
# for all ReadRequests and ExecuteSqlRequests that indicates which replicas
|
147
|
+
# or regions should be used for non-transactional reads or queries.
|
148
|
+
# Will represent [`Google::Cloud::Spanner::V1::DirectedReadOptions`](https://cloud.google.com/ruby/docs/reference/google-cloud-spanner-v1/latest/Google-Cloud-Spanner-V1-DirectedReadOptions)
|
149
|
+
# The following settings can be provided:
|
150
|
+
#
|
151
|
+
# * `:exclude_replicas` (Hash)
|
152
|
+
# Exclude_replicas indicates what replicas should be excluded from serving requests.
|
153
|
+
# Spanner will not route requests to the replicas in this list.
|
154
|
+
# * `:include_replicas` (Hash) Include_replicas indicates the order of replicas to process the request.
|
155
|
+
# If auto_failover_disabled is set to true
|
156
|
+
# and all replicas are exhausted without finding a healthy replica,
|
157
|
+
# Spanner will wait for a replica in the list to become available,
|
158
|
+
# requests may fail due to DEADLINE_EXCEEDED errors.
|
145
159
|
#
|
146
160
|
# @return [Google::Cloud::Spanner::Results] The results of the query
|
147
161
|
# execution.
|
@@ -288,14 +302,15 @@ module Google
|
|
288
302
|
# end
|
289
303
|
#
|
290
304
|
def execute_query sql, params: nil, types: nil, query_options: nil,
|
291
|
-
call_options: nil
|
305
|
+
call_options: nil, directed_read_options: nil
|
292
306
|
ensure_session!
|
293
307
|
|
294
308
|
params, types = Convert.to_input_params_and_types params, types
|
295
309
|
session.execute_query sql, params: params, types: types,
|
296
310
|
transaction: tx_selector,
|
297
311
|
query_options: query_options,
|
298
|
-
call_options: call_options
|
312
|
+
call_options: call_options,
|
313
|
+
directed_read_options: (directed_read_options || @directed_read_options)
|
299
314
|
end
|
300
315
|
alias execute execute_query
|
301
316
|
alias query execute_query
|
@@ -330,6 +345,20 @@ module Google
|
|
330
345
|
# * `:multiplier` (`Numeric`) - The incremental backoff multiplier.
|
331
346
|
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
332
347
|
# trigger a retry.
|
348
|
+
# @param [Hash] directed_read_options Client options used to set the directed_read_options
|
349
|
+
# for all ReadRequests and ExecuteSqlRequests that indicates which replicas
|
350
|
+
# or regions should be used for non-transactional reads or queries.
|
351
|
+
# Will represent [`Google::Cloud::Spanner::V1::DirectedReadOptions`](https://cloud.google.com/ruby/docs/reference/google-cloud-spanner-v1/latest/Google-Cloud-Spanner-V1-DirectedReadOptions)
|
352
|
+
# The following settings can be provided:
|
353
|
+
#
|
354
|
+
# * `:exclude_replicas` (Hash)
|
355
|
+
# Exclude_replicas indicates what replicas should be excluded from serving requests.
|
356
|
+
# Spanner will not route requests to the replicas in this list.
|
357
|
+
# * `:include_replicas` (Hash) Include_replicas indicates the order of replicas to process the request.
|
358
|
+
# If auto_failover_disabled is set to true
|
359
|
+
# and all replicas are exhausted without finding a healthy replica,
|
360
|
+
# Spanner will wait for a replica in the list to become available,
|
361
|
+
# requests may fail due to DEADLINE_EXCEEDED errors.
|
333
362
|
#
|
334
363
|
# @return [Google::Cloud::Spanner::Results] The results of the read
|
335
364
|
# operation.
|
@@ -349,7 +378,7 @@ module Google
|
|
349
378
|
# end
|
350
379
|
#
|
351
380
|
def read table, columns, keys: nil, index: nil, limit: nil,
|
352
|
-
call_options: nil
|
381
|
+
call_options: nil, directed_read_options: nil
|
353
382
|
ensure_session!
|
354
383
|
|
355
384
|
columns = Array(columns).map(&:to_s)
|
@@ -357,7 +386,8 @@ module Google
|
|
357
386
|
|
358
387
|
session.read table, columns, keys: keys, index: index, limit: limit,
|
359
388
|
transaction: tx_selector,
|
360
|
-
call_options: call_options
|
389
|
+
call_options: call_options,
|
390
|
+
directed_read_options: (directed_read_options || @directed_read_options)
|
361
391
|
end
|
362
392
|
|
363
393
|
##
|
@@ -477,10 +507,11 @@ module Google
|
|
477
507
|
##
|
478
508
|
# @private Creates a new Snapshot instance from a
|
479
509
|
# `Google::Cloud::Spanner::V1::Transaction`.
|
480
|
-
def self.from_grpc grpc, session
|
510
|
+
def self.from_grpc grpc, session, directed_read_options
|
481
511
|
new.tap do |s|
|
482
512
|
s.instance_variable_set :@grpc, grpc
|
483
513
|
s.instance_variable_set :@session, session
|
514
|
+
s.instance_variable_set :@directed_read_options, directed_read_options
|
484
515
|
end
|
485
516
|
end
|
486
517
|
|
data/lib/google/cloud/spanner.rb
CHANGED
@@ -96,7 +96,7 @@ module Google
|
|
96
96
|
project_id ||= project || default_project_id
|
97
97
|
scope ||= configure.scope
|
98
98
|
timeout ||= configure.timeout
|
99
|
-
emulator_host
|
99
|
+
emulator_host = present_or_nil(emulator_host) || present_or_nil(configure.emulator_host)
|
100
100
|
endpoint ||= emulator_host || configure.endpoint
|
101
101
|
credentials ||= keyfile
|
102
102
|
lib_name ||= configure.lib_name
|
@@ -181,6 +181,13 @@ module Google
|
|
181
181
|
Google::Cloud.configure.credentials ||
|
182
182
|
Spanner::Credentials.default(scope: scope)
|
183
183
|
end
|
184
|
+
|
185
|
+
##
|
186
|
+
# @private checks if string is not nil or empty string
|
187
|
+
# returns the string if present else nil
|
188
|
+
def self.present_or_nil str
|
189
|
+
str.to_s.strip.empty? ? nil : str
|
190
|
+
end
|
184
191
|
end
|
185
192
|
end
|
186
193
|
|
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.19.1
|
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:
|
12
|
+
date: 2024-01-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: google-cloud-core
|
@@ -348,7 +348,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
348
348
|
- !ruby/object:Gem::Version
|
349
349
|
version: '0'
|
350
350
|
requirements: []
|
351
|
-
rubygems_version: 3.
|
351
|
+
rubygems_version: 3.5.3
|
352
352
|
signing_key:
|
353
353
|
specification_version: 4
|
354
354
|
summary: API Client library for Google Cloud Spanner API
|