google-cloud-spanner 2.21.0 → 2.23.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/CHANGELOG.md +23 -0
- data/lib/google/cloud/spanner/admin/database.rb +9 -11
- data/lib/google/cloud/spanner/admin/instance.rb +9 -11
- data/lib/google/cloud/spanner/backup/job/list.rb +1 -2
- data/lib/google/cloud/spanner/backup/job.rb +1 -2
- data/lib/google/cloud/spanner/backup/list.rb +1 -3
- data/lib/google/cloud/spanner/backup/restore/job.rb +1 -2
- data/lib/google/cloud/spanner/batch_client.rb +3 -2
- data/lib/google/cloud/spanner/batch_snapshot.rb +14 -9
- data/lib/google/cloud/spanner/batch_update.rb +3 -2
- data/lib/google/cloud/spanner/batch_write.rb +72 -0
- data/lib/google/cloud/spanner/batch_write_results.rb +142 -0
- data/lib/google/cloud/spanner/client.rb +245 -28
- data/lib/google/cloud/spanner/commit.rb +4 -0
- data/lib/google/cloud/spanner/convert.rb +2 -2
- data/lib/google/cloud/spanner/database/job/list.rb +1 -2
- data/lib/google/cloud/spanner/database/job.rb +2 -4
- data/lib/google/cloud/spanner/database/list.rb +2 -3
- data/lib/google/cloud/spanner/fields.rb +2 -1
- data/lib/google/cloud/spanner/instance/config/list.rb +2 -3
- data/lib/google/cloud/spanner/instance/job.rb +2 -3
- data/lib/google/cloud/spanner/instance/list.rb +2 -3
- data/lib/google/cloud/spanner/lar_headers.rb +4 -0
- data/lib/google/cloud/spanner/mutation_group.rb +288 -0
- data/lib/google/cloud/spanner/project.rb +9 -27
- data/lib/google/cloud/spanner/results.rb +2 -2
- data/lib/google/cloud/spanner/service.rb +32 -6
- data/lib/google/cloud/spanner/session.rb +167 -17
- data/lib/google/cloud/spanner/snapshot.rb +5 -2
- data/lib/google/cloud/spanner/transaction.rb +18 -3
- data/lib/google/cloud/spanner/version.rb +1 -1
- data/lib/google-cloud-spanner.rb +6 -3
- metadata +26 -191
|
@@ -25,6 +25,7 @@ require "google/cloud/spanner/column_value"
|
|
|
25
25
|
require "google/cloud/spanner/convert"
|
|
26
26
|
require "google/cloud/spanner/commit_response"
|
|
27
27
|
require "google/cloud/spanner/lar_headers"
|
|
28
|
+
require "google/cloud/spanner/batch_write_results"
|
|
28
29
|
|
|
29
30
|
module Google
|
|
30
31
|
module Cloud
|
|
@@ -148,6 +149,7 @@ module Google
|
|
|
148
149
|
# | `BOOL` | `true`/`false` | |
|
|
149
150
|
# | `INT64` | `Integer` | |
|
|
150
151
|
# | `FLOAT64` | `Float` | |
|
|
152
|
+
# | `FLOAT32` | `Float` | |
|
|
151
153
|
# | `NUMERIC` | `BigDecimal` | |
|
|
152
154
|
# | `STRING` | `String` | |
|
|
153
155
|
# | `DATE` | `Date` | |
|
|
@@ -174,6 +176,7 @@ module Google
|
|
|
174
176
|
# * `:BYTES`
|
|
175
177
|
# * `:DATE`
|
|
176
178
|
# * `:FLOAT64`
|
|
179
|
+
# * `:FLOAT32`
|
|
177
180
|
# * `:NUMERIC`
|
|
178
181
|
# * `:INT64`
|
|
179
182
|
# * `:STRING`
|
|
@@ -473,7 +476,7 @@ module Google
|
|
|
473
476
|
results = session.execute_query \
|
|
474
477
|
sql, params: params, types: types, transaction: single_use_tx,
|
|
475
478
|
query_options: query_options, request_options: request_options,
|
|
476
|
-
call_options: call_options, directed_read_options:
|
|
479
|
+
call_options: call_options, directed_read_options: directed_read_options || @directed_read_options,
|
|
477
480
|
route_to_leader: route_to_leader
|
|
478
481
|
end
|
|
479
482
|
results
|
|
@@ -584,6 +587,7 @@ module Google
|
|
|
584
587
|
# | `BOOL` | `true`/`false` | |
|
|
585
588
|
# | `INT64` | `Integer` | |
|
|
586
589
|
# | `FLOAT64` | `Float` | |
|
|
590
|
+
# | `FLOAT32` | `Float` | |
|
|
587
591
|
# | `NUMERIC` | `BigDecimal` | |
|
|
588
592
|
# | `STRING` | `String` | |
|
|
589
593
|
# | `DATE` | `Date` | |
|
|
@@ -611,6 +615,7 @@ module Google
|
|
|
611
615
|
# * `:BYTES`
|
|
612
616
|
# * `:DATE`
|
|
613
617
|
# * `:FLOAT64`
|
|
618
|
+
# * `:FLOAT32`
|
|
614
619
|
# * `:NUMERIC`
|
|
615
620
|
# * `:INT64`
|
|
616
621
|
# * `:STRING`
|
|
@@ -620,6 +625,9 @@ module Google
|
|
|
620
625
|
# `[:INT64]`.
|
|
621
626
|
# * {Fields} - Nested Structs are specified by providing a Fields
|
|
622
627
|
# object.
|
|
628
|
+
# @param [Boolean] exclude_txn_from_change_streams If set to true,
|
|
629
|
+
# mutations will not be recorded in change streams with DDL option
|
|
630
|
+
# `allow_txn_exclusion=true`.
|
|
623
631
|
# @param [Hash] query_options A hash of values to specify the custom
|
|
624
632
|
# query options for executing SQL query. Query options are optional.
|
|
625
633
|
# The following settings can be provided:
|
|
@@ -731,6 +739,7 @@ module Google
|
|
|
731
739
|
# request_options: request_options
|
|
732
740
|
#
|
|
733
741
|
def execute_partition_update sql, params: nil, types: nil,
|
|
742
|
+
exclude_txn_from_change_streams: false,
|
|
734
743
|
query_options: nil, request_options: nil,
|
|
735
744
|
call_options: nil
|
|
736
745
|
ensure_service!
|
|
@@ -741,9 +750,10 @@ module Google
|
|
|
741
750
|
route_to_leader = LARHeaders.partition_query
|
|
742
751
|
results = nil
|
|
743
752
|
@pool.with_session do |session|
|
|
753
|
+
transaction = pdml_transaction session, exclude_txn_from_change_streams: exclude_txn_from_change_streams
|
|
744
754
|
results = session.execute_query \
|
|
745
755
|
sql, params: params, types: types,
|
|
746
|
-
transaction:
|
|
756
|
+
transaction: transaction,
|
|
747
757
|
query_options: query_options, request_options: request_options,
|
|
748
758
|
call_options: call_options, route_to_leader: route_to_leader
|
|
749
759
|
end
|
|
@@ -970,7 +980,7 @@ module Google
|
|
|
970
980
|
transaction: single_use_tx,
|
|
971
981
|
request_options: request_options,
|
|
972
982
|
call_options: call_options,
|
|
973
|
-
directed_read_options:
|
|
983
|
+
directed_read_options: directed_read_options || @directed_read_options,
|
|
974
984
|
route_to_leader: route_to_leader
|
|
975
985
|
end
|
|
976
986
|
results
|
|
@@ -1005,6 +1015,7 @@ module Google
|
|
|
1005
1015
|
# | `BOOL` | `true`/`false` | |
|
|
1006
1016
|
# | `INT64` | `Integer` | |
|
|
1007
1017
|
# | `FLOAT64` | `Float` | |
|
|
1018
|
+
# | `FLOAT32` | `Float` | |
|
|
1008
1019
|
# | `NUMERIC` | `BigDecimal` | |
|
|
1009
1020
|
# | `STRING` | `String` | |
|
|
1010
1021
|
# | `DATE` | `Date` | |
|
|
@@ -1015,6 +1026,9 @@ module Google
|
|
|
1015
1026
|
# See [Data
|
|
1016
1027
|
# types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
|
|
1017
1028
|
#
|
|
1029
|
+
# @param [Boolean] exclude_txn_from_change_streams If set to true,
|
|
1030
|
+
# mutations will not be recorded in change streams with DDL option
|
|
1031
|
+
# `allow_txn_exclusion=true`.
|
|
1018
1032
|
# @param [Hash] commit_options A hash of commit options.
|
|
1019
1033
|
# e.g., return_commit_stats. Commit options are optional.
|
|
1020
1034
|
# The following options can be provided:
|
|
@@ -1037,6 +1051,20 @@ module Google
|
|
|
1037
1051
|
# * `:tag` (String) A tag used for statistics collection
|
|
1038
1052
|
# about transaction. A tag must be a valid identifier of the format:
|
|
1039
1053
|
# `[a-zA-Z][a-zA-Z0-9_\-]{0,49}`.
|
|
1054
|
+
# @param [Hash] call_options A hash of values to specify the custom
|
|
1055
|
+
# call options, e.g., timeout, retries, etc. Call options are
|
|
1056
|
+
# optional. The following settings can be provided:
|
|
1057
|
+
#
|
|
1058
|
+
# * `:timeout` (Numeric) A numeric value of custom timeout in seconds
|
|
1059
|
+
# that overrides the default setting.
|
|
1060
|
+
# * `:retry_policy` (Hash) A hash of values that overrides the default
|
|
1061
|
+
# setting of retry policy with the following keys:
|
|
1062
|
+
# * `:initial_delay` (`Numeric`) - The initial delay in seconds.
|
|
1063
|
+
# * `:max_delay` (`Numeric`) - The max delay in seconds.
|
|
1064
|
+
# * `:multiplier` (`Numeric`) - The incremental backoff multiplier.
|
|
1065
|
+
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
|
1066
|
+
# trigger a retry.
|
|
1067
|
+
#
|
|
1040
1068
|
#
|
|
1041
1069
|
# @return [Time, CommitResponse] The timestamp at which the operation
|
|
1042
1070
|
# committed. If commit options are set it returns {CommitResponse}.
|
|
@@ -1090,13 +1118,18 @@ module Google
|
|
|
1090
1118
|
# { id: 2, name: "Harvey", active: true }],
|
|
1091
1119
|
# request_options: request_options
|
|
1092
1120
|
#
|
|
1093
|
-
def upsert table, rows,
|
|
1121
|
+
def upsert table, rows,
|
|
1122
|
+
exclude_txn_from_change_streams: false,
|
|
1123
|
+
commit_options: nil, request_options: nil, call_options: nil
|
|
1094
1124
|
request_options = Convert.to_request_options \
|
|
1095
1125
|
request_options, tag_type: :transaction_tag
|
|
1096
1126
|
|
|
1097
1127
|
@pool.with_session do |session|
|
|
1098
|
-
session.upsert table, rows,
|
|
1099
|
-
|
|
1128
|
+
session.upsert table, rows,
|
|
1129
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams,
|
|
1130
|
+
commit_options: commit_options,
|
|
1131
|
+
request_options: request_options,
|
|
1132
|
+
call_options: call_options
|
|
1100
1133
|
end
|
|
1101
1134
|
end
|
|
1102
1135
|
alias save upsert
|
|
@@ -1129,6 +1162,7 @@ module Google
|
|
|
1129
1162
|
# | `BOOL` | `true`/`false` | |
|
|
1130
1163
|
# | `INT64` | `Integer` | |
|
|
1131
1164
|
# | `FLOAT64` | `Float` | |
|
|
1165
|
+
# | `FLOAT32` | `Float` | |
|
|
1132
1166
|
# | `NUMERIC` | `BigDecimal` | |
|
|
1133
1167
|
# | `STRING` | `String` | |
|
|
1134
1168
|
# | `DATE` | `Date` | |
|
|
@@ -1138,6 +1172,9 @@ module Google
|
|
|
1138
1172
|
#
|
|
1139
1173
|
# See [Data
|
|
1140
1174
|
# types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
|
|
1175
|
+
# @param [Boolean] exclude_txn_from_change_streams If set to true,
|
|
1176
|
+
# mutations will not be recorded in change streams with DDL option
|
|
1177
|
+
# `allow_txn_exclusion=true`.
|
|
1141
1178
|
# @param [Hash] commit_options A hash of commit options.
|
|
1142
1179
|
# e.g., return_commit_stats. Commit options are optional.
|
|
1143
1180
|
# The following options can be provided:
|
|
@@ -1160,6 +1197,20 @@ module Google
|
|
|
1160
1197
|
# * `:tag` (String) A tag used for statistics collection
|
|
1161
1198
|
# about transaction. A tag must be a valid identifier of the
|
|
1162
1199
|
# format: `[a-zA-Z][a-zA-Z0-9_\-]{0,49}`.
|
|
1200
|
+
# @param [Hash] call_options A hash of values to specify the custom
|
|
1201
|
+
# call options, e.g., timeout, retries, etc. Call options are
|
|
1202
|
+
# optional. The following settings can be provided:
|
|
1203
|
+
#
|
|
1204
|
+
# * `:timeout` (Numeric) A numeric value of custom timeout in seconds
|
|
1205
|
+
# that overrides the default setting.
|
|
1206
|
+
# * `:retry_policy` (Hash) A hash of values that overrides the default
|
|
1207
|
+
# setting of retry policy with the following keys:
|
|
1208
|
+
# * `:initial_delay` (`Numeric`) - The initial delay in seconds.
|
|
1209
|
+
# * `:max_delay` (`Numeric`) - The max delay in seconds.
|
|
1210
|
+
# * `:multiplier` (`Numeric`) - The incremental backoff multiplier.
|
|
1211
|
+
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
|
1212
|
+
# trigger a retry.
|
|
1213
|
+
#
|
|
1163
1214
|
#
|
|
1164
1215
|
# @return [Time, CommitResponse] The timestamp at which the operation
|
|
1165
1216
|
# committed. If commit options are set it returns {CommitResponse}.
|
|
@@ -1213,13 +1264,18 @@ module Google
|
|
|
1213
1264
|
# { id: 2, name: "Harvey", active: true }],
|
|
1214
1265
|
# request_options: request_options
|
|
1215
1266
|
#
|
|
1216
|
-
def insert table, rows,
|
|
1267
|
+
def insert table, rows,
|
|
1268
|
+
exclude_txn_from_change_streams: false,
|
|
1269
|
+
commit_options: nil, request_options: nil, call_options: nil
|
|
1217
1270
|
request_options = Convert.to_request_options \
|
|
1218
1271
|
request_options, tag_type: :transaction_tag
|
|
1219
1272
|
|
|
1220
1273
|
@pool.with_session do |session|
|
|
1221
|
-
session.insert table, rows,
|
|
1222
|
-
|
|
1274
|
+
session.insert table, rows,
|
|
1275
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams,
|
|
1276
|
+
commit_options: commit_options,
|
|
1277
|
+
request_options: request_options,
|
|
1278
|
+
call_options: call_options
|
|
1223
1279
|
end
|
|
1224
1280
|
end
|
|
1225
1281
|
|
|
@@ -1251,6 +1307,7 @@ module Google
|
|
|
1251
1307
|
# | `BOOL` | `true`/`false` | |
|
|
1252
1308
|
# | `INT64` | `Integer` | |
|
|
1253
1309
|
# | `FLOAT64` | `Float` | |
|
|
1310
|
+
# | `FLOAT32` | `Float` | |
|
|
1254
1311
|
# | `NUMERIC` | `BigDecimal` | |
|
|
1255
1312
|
# | `STRING` | `String` | |
|
|
1256
1313
|
# | `DATE` | `Date` | |
|
|
@@ -1260,6 +1317,9 @@ module Google
|
|
|
1260
1317
|
#
|
|
1261
1318
|
# See [Data
|
|
1262
1319
|
# types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
|
|
1320
|
+
# @param [Boolean] exclude_txn_from_change_streams If set to true,
|
|
1321
|
+
# mutations will not be recorded in change streams with DDL option
|
|
1322
|
+
# `allow_txn_exclusion=true`.
|
|
1263
1323
|
# @param [Hash] commit_options A hash of commit options.
|
|
1264
1324
|
# e.g., return_commit_stats. Commit options are optional.
|
|
1265
1325
|
# The following options can be provided:
|
|
@@ -1282,6 +1342,20 @@ module Google
|
|
|
1282
1342
|
# * `:tag` (String) A tag used for statistics collection
|
|
1283
1343
|
# about transaction. A tag must be a valid identifier of the
|
|
1284
1344
|
# format: `[a-zA-Z][a-zA-Z0-9_\-]{0,49}`.
|
|
1345
|
+
# @param [Hash] call_options A hash of values to specify the custom
|
|
1346
|
+
# call options, e.g., timeout, retries, etc. Call options are
|
|
1347
|
+
# optional. The following settings can be provided:
|
|
1348
|
+
#
|
|
1349
|
+
# * `:timeout` (Numeric) A numeric value of custom timeout in seconds
|
|
1350
|
+
# that overrides the default setting.
|
|
1351
|
+
# * `:retry_policy` (Hash) A hash of values that overrides the default
|
|
1352
|
+
# setting of retry policy with the following keys:
|
|
1353
|
+
# * `:initial_delay` (`Numeric`) - The initial delay in seconds.
|
|
1354
|
+
# * `:max_delay` (`Numeric`) - The max delay in seconds.
|
|
1355
|
+
# * `:multiplier` (`Numeric`) - The incremental backoff multiplier.
|
|
1356
|
+
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
|
1357
|
+
# trigger a retry.
|
|
1358
|
+
#
|
|
1285
1359
|
#
|
|
1286
1360
|
# @return [Time, CommitResponse] The timestamp at which the operation
|
|
1287
1361
|
# committed. If commit options are set it returns {CommitResponse}.
|
|
@@ -1334,13 +1408,18 @@ module Google
|
|
|
1334
1408
|
# { id: 2, name: "Harvey", active: true }],
|
|
1335
1409
|
# request_options: request_options
|
|
1336
1410
|
#
|
|
1337
|
-
def update table, rows,
|
|
1411
|
+
def update table, rows,
|
|
1412
|
+
exclude_txn_from_change_streams: false,
|
|
1413
|
+
commit_options: nil, request_options: nil, call_options: nil
|
|
1338
1414
|
request_options = Convert.to_request_options \
|
|
1339
1415
|
request_options, tag_type: :transaction_tag
|
|
1340
1416
|
|
|
1341
1417
|
@pool.with_session do |session|
|
|
1342
|
-
session.update table, rows,
|
|
1343
|
-
|
|
1418
|
+
session.update table, rows,
|
|
1419
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams,
|
|
1420
|
+
commit_options: commit_options,
|
|
1421
|
+
request_options: request_options,
|
|
1422
|
+
call_options: call_options
|
|
1344
1423
|
end
|
|
1345
1424
|
end
|
|
1346
1425
|
|
|
@@ -1374,6 +1453,7 @@ module Google
|
|
|
1374
1453
|
# | `BOOL` | `true`/`false` | |
|
|
1375
1454
|
# | `INT64` | `Integer` | |
|
|
1376
1455
|
# | `FLOAT64` | `Float` | |
|
|
1456
|
+
# | `FLOAT32` | `Float` | |
|
|
1377
1457
|
# | `NUMERIC` | `BigDecimal` | |
|
|
1378
1458
|
# | `STRING` | `String` | |
|
|
1379
1459
|
# | `DATE` | `Date` | |
|
|
@@ -1383,6 +1463,9 @@ module Google
|
|
|
1383
1463
|
#
|
|
1384
1464
|
# See [Data
|
|
1385
1465
|
# types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
|
|
1466
|
+
# @param [Boolean] exclude_txn_from_change_streams If set to true,
|
|
1467
|
+
# mutations will not be recorded in change streams with DDL option
|
|
1468
|
+
# `allow_txn_exclusion=true`.
|
|
1386
1469
|
# @param [Hash] commit_options A hash of commit options.
|
|
1387
1470
|
# e.g., return_commit_stats. Commit options are optional.
|
|
1388
1471
|
# The following options can be provided:
|
|
@@ -1405,6 +1488,20 @@ module Google
|
|
|
1405
1488
|
# * `:tag` (String) A tag used for statistics collection
|
|
1406
1489
|
# about transaction. A tag must be a valid identifier of the
|
|
1407
1490
|
# format: `[a-zA-Z][a-zA-Z0-9_\-]{0,49}`.
|
|
1491
|
+
# @param [Hash] call_options A hash of values to specify the custom
|
|
1492
|
+
# call options, e.g., timeout, retries, etc. Call options are
|
|
1493
|
+
# optional. The following settings can be provided:
|
|
1494
|
+
#
|
|
1495
|
+
# * `:timeout` (Numeric) A numeric value of custom timeout in seconds
|
|
1496
|
+
# that overrides the default setting.
|
|
1497
|
+
# * `:retry_policy` (Hash) A hash of values that overrides the default
|
|
1498
|
+
# setting of retry policy with the following keys:
|
|
1499
|
+
# * `:initial_delay` (`Numeric`) - The initial delay in seconds.
|
|
1500
|
+
# * `:max_delay` (`Numeric`) - The max delay in seconds.
|
|
1501
|
+
# * `:multiplier` (`Numeric`) - The incremental backoff multiplier.
|
|
1502
|
+
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
|
1503
|
+
# trigger a retry.
|
|
1504
|
+
#
|
|
1408
1505
|
#
|
|
1409
1506
|
# @return [Time, CommitResponse] The timestamp at which the operation
|
|
1410
1507
|
# committed. If commit options are set it returns {CommitResponse}.
|
|
@@ -1457,10 +1554,15 @@ module Google
|
|
|
1457
1554
|
# { id: 2, name: "Harvey", active: true }],
|
|
1458
1555
|
# request_options: request_options
|
|
1459
1556
|
#
|
|
1460
|
-
def replace table, rows,
|
|
1557
|
+
def replace table, rows,
|
|
1558
|
+
exclude_txn_from_change_streams: false,
|
|
1559
|
+
commit_options: nil, request_options: nil, call_options: nil
|
|
1461
1560
|
@pool.with_session do |session|
|
|
1462
|
-
session.replace table, rows,
|
|
1463
|
-
|
|
1561
|
+
session.replace table, rows,
|
|
1562
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams,
|
|
1563
|
+
commit_options: commit_options,
|
|
1564
|
+
request_options: request_options,
|
|
1565
|
+
call_options: call_options
|
|
1464
1566
|
end
|
|
1465
1567
|
end
|
|
1466
1568
|
|
|
@@ -1484,6 +1586,9 @@ module Google
|
|
|
1484
1586
|
# @param [Object, Array<Object>] keys A single, or list of keys or key
|
|
1485
1587
|
# ranges to match returned data to. Values should have exactly as many
|
|
1486
1588
|
# elements as there are columns in the primary key.
|
|
1589
|
+
# @param [Boolean] exclude_txn_from_change_streams If set to true,
|
|
1590
|
+
# mutations will not be recorded in change streams with DDL option
|
|
1591
|
+
# `allow_txn_exclusion=true`.
|
|
1487
1592
|
# @param [Hash] commit_options A hash of commit options.
|
|
1488
1593
|
# e.g., return_commit_stats. Commit options are optional.
|
|
1489
1594
|
# The following options can be provided:
|
|
@@ -1565,13 +1670,16 @@ module Google
|
|
|
1565
1670
|
# request_options = { tag: "BulkDelete-Users" }
|
|
1566
1671
|
# db.delete "users", [1, 2, 3], request_options: request_options
|
|
1567
1672
|
#
|
|
1568
|
-
def delete table, keys = [],
|
|
1569
|
-
|
|
1673
|
+
def delete table, keys = [],
|
|
1674
|
+
exclude_txn_from_change_streams: false,
|
|
1675
|
+
commit_options: nil, request_options: nil, call_options: nil
|
|
1570
1676
|
request_options = Convert.to_request_options \
|
|
1571
1677
|
request_options, tag_type: :transaction_tag
|
|
1572
1678
|
|
|
1573
1679
|
@pool.with_session do |session|
|
|
1574
|
-
session.delete table, keys,
|
|
1680
|
+
session.delete table, keys,
|
|
1681
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams,
|
|
1682
|
+
commit_options: commit_options,
|
|
1575
1683
|
request_options: request_options,
|
|
1576
1684
|
call_options: call_options
|
|
1577
1685
|
end
|
|
@@ -1592,6 +1700,9 @@ module Google
|
|
|
1592
1700
|
# this method may be appropriate for latency sensitive and/or high
|
|
1593
1701
|
# throughput blind changes.
|
|
1594
1702
|
#
|
|
1703
|
+
# @param [Boolean] exclude_txn_from_change_streams If set to true,
|
|
1704
|
+
# mutations will not be recorded in change streams with DDL option
|
|
1705
|
+
# `allow_txn_exclusion=true`.
|
|
1595
1706
|
# @param [Hash] commit_options A hash of commit options.
|
|
1596
1707
|
# e.g., return_commit_stats. Commit options are optional.
|
|
1597
1708
|
# The following options can be provided:
|
|
@@ -1687,8 +1798,9 @@ module Google
|
|
|
1687
1798
|
# c.insert "users", [{ id: 2, name: "Harvey", active: true }]
|
|
1688
1799
|
# end
|
|
1689
1800
|
#
|
|
1690
|
-
def commit
|
|
1691
|
-
call_options: nil,
|
|
1801
|
+
def commit exclude_txn_from_change_streams: false,
|
|
1802
|
+
commit_options: nil, request_options: nil, call_options: nil,
|
|
1803
|
+
&block
|
|
1692
1804
|
raise ArgumentError, "Must provide a block" unless block_given?
|
|
1693
1805
|
|
|
1694
1806
|
request_options = Convert.to_request_options \
|
|
@@ -1696,12 +1808,111 @@ module Google
|
|
|
1696
1808
|
|
|
1697
1809
|
@pool.with_session do |session|
|
|
1698
1810
|
session.commit(
|
|
1811
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams,
|
|
1699
1812
|
commit_options: commit_options, request_options: request_options,
|
|
1700
1813
|
call_options: call_options, &block
|
|
1701
1814
|
)
|
|
1702
1815
|
end
|
|
1703
1816
|
end
|
|
1704
1817
|
|
|
1818
|
+
##
|
|
1819
|
+
# Batches the supplied mutation groups in a collection of efficient
|
|
1820
|
+
# transactions.
|
|
1821
|
+
#
|
|
1822
|
+
# All mutations in a group are committed atomically. However, mutations
|
|
1823
|
+
# across groups can be committed non-atomically in an unspecified order
|
|
1824
|
+
# and thus they must be independent of each other. Partial failure is
|
|
1825
|
+
# possible, i.e., some groups may have been committed successfully,
|
|
1826
|
+
# while others may have failed. The results of individual batches are
|
|
1827
|
+
# streamed into the response as the batches are applied.
|
|
1828
|
+
#
|
|
1829
|
+
# BatchWrite requests are not replay protected, meaning that each mutation
|
|
1830
|
+
# group may be applied more than once. Replays of non-idempotent mutations
|
|
1831
|
+
# may have undesirable effects. For example, replays of an insert mutation
|
|
1832
|
+
# may produce an already exists error or if you use generated or commit
|
|
1833
|
+
# timestamp-based keys, it may result in additional rows being added to the
|
|
1834
|
+
# mutation's table. We recommend structuring your mutation groups to be
|
|
1835
|
+
# idempotent to avoid this issue.
|
|
1836
|
+
#
|
|
1837
|
+
# @param [Boolean] exclude_txn_from_change_streams If set to true,
|
|
1838
|
+
# mutations will not be recorded in change streams with DDL option
|
|
1839
|
+
# `allow_txn_exclusion=true`.
|
|
1840
|
+
# @param [Hash] request_options Common request options.
|
|
1841
|
+
#
|
|
1842
|
+
# * `:priority` (String) The relative priority for requests.
|
|
1843
|
+
# The priority acts as a hint to the Cloud Spanner scheduler
|
|
1844
|
+
# and does not guarantee priority or order of execution.
|
|
1845
|
+
# Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
|
|
1846
|
+
# `:PRIORITY_HIGH`. If priority not set then default is
|
|
1847
|
+
# `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
|
|
1848
|
+
# * `:tag` (String) A per-request tag which can be applied to
|
|
1849
|
+
# queries or reads, used for statistics collection. Tag must be a
|
|
1850
|
+
# valid identifier of the form: `[a-zA-Z][a-zA-Z0-9_\-]` between 2
|
|
1851
|
+
# and 64 characters in length.
|
|
1852
|
+
#
|
|
1853
|
+
# @param [Hash] call_options A hash of values to specify the custom
|
|
1854
|
+
# call options, e.g., timeout, retries, etc. Call options are
|
|
1855
|
+
# optional. The following settings can be provided:
|
|
1856
|
+
#
|
|
1857
|
+
# * `:timeout` (Numeric) A numeric value of custom timeout in seconds
|
|
1858
|
+
# that overrides the default setting.
|
|
1859
|
+
# * `:retry_policy` (Hash) A hash of values that overrides the default
|
|
1860
|
+
# setting of retry policy with the following keys:
|
|
1861
|
+
# * `:initial_delay` (`Numeric`) - The initial delay in seconds.
|
|
1862
|
+
# * `:max_delay` (`Numeric`) - The max delay in seconds.
|
|
1863
|
+
# * `:multiplier` (`Numeric`) - The incremental backoff multiplier.
|
|
1864
|
+
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
|
1865
|
+
# trigger a retry.
|
|
1866
|
+
#
|
|
1867
|
+
# @yield [batch_write] a batch write object
|
|
1868
|
+
# @yieldparam [Google::Cloud::Spanner::BatchWrite] batch_write a batch
|
|
1869
|
+
# write object used to add mutaion groups through {MutationGroup}.
|
|
1870
|
+
#
|
|
1871
|
+
# @return [Google::Cloud::Spanner::BatchWriteResults] The results of
|
|
1872
|
+
# the batch write operation. This is a stream of responses, each
|
|
1873
|
+
# covering a set of the mutation groups that were either applied or
|
|
1874
|
+
# failed together.
|
|
1875
|
+
#
|
|
1876
|
+
# @example
|
|
1877
|
+
# require "google/cloud/spanner"
|
|
1878
|
+
#
|
|
1879
|
+
# spanner = Google::Cloud::Spanner.new
|
|
1880
|
+
#
|
|
1881
|
+
# db = spanner.client "my-instance", "my-database"
|
|
1882
|
+
#
|
|
1883
|
+
# results = db.batch_write do |b|
|
|
1884
|
+
# # First mutation group
|
|
1885
|
+
# b.mutation_group do |mg|
|
|
1886
|
+
# mg.upsert "Singers", [{ SingerId: 16, FirstName: "Charlie", LastName: "Terry" }]
|
|
1887
|
+
# end
|
|
1888
|
+
#
|
|
1889
|
+
# # Second mutation group
|
|
1890
|
+
# b.mutation_group do |mg|
|
|
1891
|
+
# mg.upsert "Singers", [{ SingerId: 17, FirstName: "Catalina", LastName: "Smith" }]
|
|
1892
|
+
# mg.update "Albums", [{ SingerId: 17, AlbumId: 1, AlbumTitle: "Go Go Go" }]
|
|
1893
|
+
# end
|
|
1894
|
+
# end
|
|
1895
|
+
#
|
|
1896
|
+
# results.each do |response|
|
|
1897
|
+
# puts "groups applied: #{response.indexes}" if response.ok?
|
|
1898
|
+
# end
|
|
1899
|
+
#
|
|
1900
|
+
def batch_write exclude_txn_from_change_streams: false,
|
|
1901
|
+
request_options: nil,
|
|
1902
|
+
call_options: nil,
|
|
1903
|
+
&block
|
|
1904
|
+
raise ArgumentError, "Must provide a block" unless block_given?
|
|
1905
|
+
|
|
1906
|
+
@pool.with_session do |session|
|
|
1907
|
+
session.batch_write(
|
|
1908
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams,
|
|
1909
|
+
request_options: request_options,
|
|
1910
|
+
call_options: call_options,
|
|
1911
|
+
&block
|
|
1912
|
+
)
|
|
1913
|
+
end
|
|
1914
|
+
end
|
|
1915
|
+
|
|
1705
1916
|
# rubocop:disable Metrics/AbcSize
|
|
1706
1917
|
# rubocop:disable Metrics/MethodLength
|
|
1707
1918
|
# rubocop:disable Metrics/BlockLength
|
|
@@ -1723,6 +1934,9 @@ module Google
|
|
|
1723
1934
|
#
|
|
1724
1935
|
# @param [Numeric] deadline The total amount of time in seconds the
|
|
1725
1936
|
# transaction has to succeed. The default is `120`.
|
|
1937
|
+
# @param [Boolean] exclude_txn_from_change_streams If set to true,
|
|
1938
|
+
# mutations will not be recorded in change streams with DDL option
|
|
1939
|
+
# `allow_txn_exclusion=true`.
|
|
1726
1940
|
# @param [Hash] commit_options A hash of commit options.
|
|
1727
1941
|
# e.g., return_commit_stats. Commit options are optional.
|
|
1728
1942
|
# The following options can be provided:
|
|
@@ -1862,8 +2076,8 @@ module Google
|
|
|
1862
2076
|
# tx.insert "users", [{ id: 2, name: "Harvey", active: true }]
|
|
1863
2077
|
# end
|
|
1864
2078
|
#
|
|
1865
|
-
def transaction deadline: 120,
|
|
1866
|
-
request_options: nil, call_options: nil
|
|
2079
|
+
def transaction deadline: 120, exclude_txn_from_change_streams: false,
|
|
2080
|
+
commit_options: nil, request_options: nil, call_options: nil
|
|
1867
2081
|
ensure_service!
|
|
1868
2082
|
unless Thread.current[IS_TRANSACTION_RUNNING_KEY].nil?
|
|
1869
2083
|
raise "Nested transactions are not allowed"
|
|
@@ -1877,7 +2091,7 @@ module Google
|
|
|
1877
2091
|
request_options, tag_type: :transaction_tag
|
|
1878
2092
|
|
|
1879
2093
|
@pool.with_session do |session|
|
|
1880
|
-
tx = session.create_empty_transaction
|
|
2094
|
+
tx = session.create_empty_transaction exclude_txn_from_change_streams: exclude_txn_from_change_streams
|
|
1881
2095
|
if request_options
|
|
1882
2096
|
tx.transaction_tag = request_options[:transaction_tag]
|
|
1883
2097
|
end
|
|
@@ -1890,6 +2104,7 @@ module Google
|
|
|
1890
2104
|
commit_resp = @project.service.commit \
|
|
1891
2105
|
tx.session.path, tx.mutations,
|
|
1892
2106
|
transaction_id: transaction_id,
|
|
2107
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams,
|
|
1893
2108
|
commit_options: commit_options,
|
|
1894
2109
|
request_options: request_options,
|
|
1895
2110
|
call_options: call_options
|
|
@@ -1903,7 +2118,7 @@ module Google
|
|
|
1903
2118
|
# Sleep the amount from RetryDelay, or incremental backoff
|
|
1904
2119
|
sleep(delay_from_aborted(e) || backoff *= 1.3)
|
|
1905
2120
|
# Create new transaction on the session and retry the block
|
|
1906
|
-
tx = session.create_transaction
|
|
2121
|
+
tx = session.create_transaction exclude_txn_from_change_streams: exclude_txn_from_change_streams
|
|
1907
2122
|
retry
|
|
1908
2123
|
rescue StandardError => e
|
|
1909
2124
|
# Rollback transaction when handling unexpected error
|
|
@@ -2003,8 +2218,8 @@ module Google
|
|
|
2003
2218
|
@pool.with_session do |session|
|
|
2004
2219
|
snp_grpc = @project.service.create_snapshot \
|
|
2005
2220
|
session.path, strong: strong,
|
|
2006
|
-
timestamp:
|
|
2007
|
-
staleness:
|
|
2221
|
+
timestamp: timestamp || read_timestamp,
|
|
2222
|
+
staleness: staleness || exact_staleness,
|
|
2008
2223
|
call_options: call_options
|
|
2009
2224
|
Thread.current[IS_TRANSACTION_RUNNING_KEY] = true
|
|
2010
2225
|
snp = Snapshot.from_grpc snp_grpc, session, @directed_read_options
|
|
@@ -2038,6 +2253,7 @@ module Google
|
|
|
2038
2253
|
# * `:BYTES`
|
|
2039
2254
|
# * `:DATE`
|
|
2040
2255
|
# * `:FLOAT64`
|
|
2256
|
+
# * `:FLOAT32`
|
|
2041
2257
|
# * `:NUMERIC`
|
|
2042
2258
|
# * `:INT64`
|
|
2043
2259
|
# * `:STRING`
|
|
@@ -2297,8 +2513,9 @@ module Google
|
|
|
2297
2513
|
}.compact)))
|
|
2298
2514
|
end
|
|
2299
2515
|
|
|
2300
|
-
def pdml_transaction session
|
|
2301
|
-
pdml_tx_grpc = @project.service.create_pdml session.path
|
|
2516
|
+
def pdml_transaction session, exclude_txn_from_change_streams: false
|
|
2517
|
+
pdml_tx_grpc = @project.service.create_pdml session.path,
|
|
2518
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams
|
|
2302
2519
|
V1::TransactionSelector.new id: pdml_tx_grpc.id
|
|
2303
2520
|
end
|
|
2304
2521
|
|
|
@@ -69,6 +69,7 @@ module Google
|
|
|
69
69
|
# | `BOOL` | `true`/`false` | |
|
|
70
70
|
# | `INT64` | `Integer` | |
|
|
71
71
|
# | `FLOAT64` | `Float` | |
|
|
72
|
+
# | `FLOAT32` | `Float` | |
|
|
72
73
|
# | `NUMERIC` | `BigDecimal` | |
|
|
73
74
|
# | `STRING` | `String` | |
|
|
74
75
|
# | `DATE` | `Date` | |
|
|
@@ -128,6 +129,7 @@ module Google
|
|
|
128
129
|
# | `BOOL` | `true`/`false` | |
|
|
129
130
|
# | `INT64` | `Integer` | |
|
|
130
131
|
# | `FLOAT64` | `Float` | |
|
|
132
|
+
# | `FLOAT32` | `Float` | |
|
|
131
133
|
# | `NUMERIC` | `BigDecimal` | |
|
|
132
134
|
# | `STRING` | `String` | |
|
|
133
135
|
# | `DATE` | `Date` | |
|
|
@@ -186,6 +188,7 @@ module Google
|
|
|
186
188
|
# | `BOOL` | `true`/`false` | |
|
|
187
189
|
# | `INT64` | `Integer` | |
|
|
188
190
|
# | `FLOAT64` | `Float` | |
|
|
191
|
+
# | `FLOAT32` | `Float` | |
|
|
189
192
|
# | `NUMERIC` | `BigDecimal` | |
|
|
190
193
|
# | `STRING` | `String` | |
|
|
191
194
|
# | `DATE` | `Date` | |
|
|
@@ -246,6 +249,7 @@ module Google
|
|
|
246
249
|
# | `BOOL` | `true`/`false` | |
|
|
247
250
|
# | `INT64` | `Integer` | |
|
|
248
251
|
# | `FLOAT64` | `Float` | |
|
|
252
|
+
# | `FLOAT32` | `Float` | |
|
|
249
253
|
# | `NUMERIC` | `BigDecimal` | |
|
|
250
254
|
# | `STRING` | `String` | |
|
|
251
255
|
# | `DATE` | `Date` | |
|
|
@@ -183,7 +183,7 @@ module Google
|
|
|
183
183
|
when :PG_NUMERIC
|
|
184
184
|
V1::Type.new(code: :NUMERIC, type_annotation: :PG_NUMERIC)
|
|
185
185
|
when :PG_JSONB
|
|
186
|
-
V1::Type.new(code: :JSON, type_annotation: :PG_JSONB)
|
|
186
|
+
V1::Type.new(code: :JSON, type_annotation: :PG_JSONB)
|
|
187
187
|
else
|
|
188
188
|
V1::Type.new(code: field)
|
|
189
189
|
end
|
|
@@ -197,7 +197,7 @@ module Google
|
|
|
197
197
|
value.bool_value
|
|
198
198
|
when :INT64
|
|
199
199
|
Integer value.string_value
|
|
200
|
-
when :FLOAT64
|
|
200
|
+
when :FLOAT32, :FLOAT64
|
|
201
201
|
if value.kind == :string_value
|
|
202
202
|
if value.string_value == "Infinity"
|
|
203
203
|
Float::INFINITY
|
|
@@ -30,8 +30,7 @@ module Google
|
|
|
30
30
|
# operations.
|
|
31
31
|
#
|
|
32
32
|
# @deprecated Use the result of
|
|
33
|
-
#
|
|
34
|
-
# instead.
|
|
33
|
+
# {Google::Cloud::Spanner::Admin::Database.database_admin}.list_database_operations instead.
|
|
35
34
|
#
|
|
36
35
|
class List < DelegateClass(::Array)
|
|
37
36
|
# @private
|
|
@@ -36,8 +36,7 @@ module Google
|
|
|
36
36
|
# Long-running Operation
|
|
37
37
|
#
|
|
38
38
|
# @deprecated Use the long-running operation returned by
|
|
39
|
-
#
|
|
40
|
-
# instead.
|
|
39
|
+
# {Google::Cloud::Spanner::Admin::Database.database_admin}.create_database instead.
|
|
41
40
|
#
|
|
42
41
|
# @example
|
|
43
42
|
# require "google/cloud/spanner"
|
|
@@ -95,8 +94,7 @@ module Google
|
|
|
95
94
|
def database
|
|
96
95
|
return nil unless done?
|
|
97
96
|
return nil unless @grpc.grpc_op.result == :response
|
|
98
|
-
return nil unless @grpc.results.instance_of?
|
|
99
|
-
Admin::Database::V1::Database
|
|
97
|
+
return nil unless @grpc.results.instance_of? Admin::Database::V1::Database
|
|
100
98
|
Database.from_grpc @grpc.results, service
|
|
101
99
|
end
|
|
102
100
|
|
|
@@ -26,9 +26,8 @@ module Google
|
|
|
26
26
|
# Database::List is a special case Array with additional
|
|
27
27
|
# values.
|
|
28
28
|
#
|
|
29
|
-
# @deprecated Use the result of
|
|
30
|
-
#
|
|
31
|
-
# instead.
|
|
29
|
+
# @deprecated Use the result of {Google::Cloud::Spanner::Admin::Database.database_admin}.list_databases
|
|
30
|
+
# instead.
|
|
32
31
|
class List < DelegateClass(::Array)
|
|
33
32
|
##
|
|
34
33
|
# If not empty, indicates that there are more records that match
|
|
@@ -63,6 +63,7 @@ module Google
|
|
|
63
63
|
# * `:BYTES`
|
|
64
64
|
# * `:DATE`
|
|
65
65
|
# * `:FLOAT64`
|
|
66
|
+
# * `:FLOAT32`
|
|
66
67
|
# * `:NUMERIC`
|
|
67
68
|
# * `:INT64`
|
|
68
69
|
# * `:STRING`
|
|
@@ -173,7 +174,7 @@ module Google
|
|
|
173
174
|
# @return [Boolean] Returns `true` if there are duplicate names.
|
|
174
175
|
#
|
|
175
176
|
def duplicate_names?
|
|
176
|
-
keys.group_by { |e| e }.
|
|
177
|
+
keys.group_by { |e| e }.any? { |_k, v| v.size > 1 }
|
|
177
178
|
end
|
|
178
179
|
|
|
179
180
|
##
|