google-cloud-spanner 2.21.0 → 2.23.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +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
@@ -18,6 +18,7 @@ require "google/cloud/spanner/results"
|
|
18
18
|
require "google/cloud/spanner/commit"
|
19
19
|
require "google/cloud/spanner/commit_response"
|
20
20
|
require "google/cloud/spanner/batch_update"
|
21
|
+
require "google/cloud/spanner/batch_write"
|
21
22
|
|
22
23
|
module Google
|
23
24
|
module Cloud
|
@@ -116,6 +117,7 @@ module Google
|
|
116
117
|
# | `BOOL` | `true`/`false` | |
|
117
118
|
# | `INT64` | `Integer` | |
|
118
119
|
# | `FLOAT64` | `Float` | |
|
120
|
+
# | `FLOAT32` | `Float` | |
|
119
121
|
# | `NUMERIC` | `BigDecimal` | |
|
120
122
|
# | `STRING` | `String` | |
|
121
123
|
# | `DATE` | `Date` | |
|
@@ -142,6 +144,7 @@ module Google
|
|
142
144
|
# * `:BYTES`
|
143
145
|
# * `:DATE`
|
144
146
|
# * `:FLOAT64`
|
147
|
+
# * `:FLOAT32`
|
145
148
|
# * `:NUMERIC`
|
146
149
|
# * `:INT64`
|
147
150
|
# * `:STRING`
|
@@ -562,6 +565,9 @@ module Google
|
|
562
565
|
# @param [String] transaction_id The identifier of previously-started
|
563
566
|
# transaction to be used instead of starting a new transaction.
|
564
567
|
# Optional.
|
568
|
+
# @param [Boolean] exclude_txn_from_change_streams If set to true,
|
569
|
+
# mutations will not be recorded in change streams with DDL option
|
570
|
+
# `allow_txn_exclusion=true`. Used if starting a new transaction.
|
565
571
|
# @param [Hash] commit_options A hash of commit options.
|
566
572
|
# e.g., return_commit_stats. Commit options are optional.
|
567
573
|
# The following options can be provided:
|
@@ -639,13 +645,14 @@ module Google
|
|
639
645
|
# puts commit_resp.timestamp
|
640
646
|
# puts commit_resp.stats.mutation_count
|
641
647
|
#
|
642
|
-
def commit transaction_id: nil,
|
643
|
-
request_options: nil, call_options: nil
|
648
|
+
def commit transaction_id: nil, exclude_txn_from_change_streams: false,
|
649
|
+
commit_options: nil, request_options: nil, call_options: nil
|
644
650
|
ensure_service!
|
645
651
|
commit = Commit.new
|
646
652
|
yield commit
|
647
653
|
commit_resp = service.commit path, commit.mutations,
|
648
654
|
transaction_id: transaction_id,
|
655
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams,
|
649
656
|
commit_options: commit_options,
|
650
657
|
request_options: request_options,
|
651
658
|
call_options: call_options
|
@@ -654,6 +661,103 @@ module Google
|
|
654
661
|
commit_options ? resp : resp.timestamp
|
655
662
|
end
|
656
663
|
|
664
|
+
##
|
665
|
+
# Batches the supplied mutation groups in a collection of efficient
|
666
|
+
# transactions.
|
667
|
+
#
|
668
|
+
# All mutations in a group are committed atomically. However, mutations
|
669
|
+
# across groups can be committed non-atomically in an unspecified order
|
670
|
+
# and thus they must be independent of each other. Partial failure is
|
671
|
+
# possible, i.e., some groups may have been committed successfully,
|
672
|
+
# while others may have failed. The results of individual batches are
|
673
|
+
# streamed into the response as the batches are applied.
|
674
|
+
#
|
675
|
+
# BatchWrite requests are not replay protected, meaning that each mutation
|
676
|
+
# group may be applied more than once. Replays of non-idempotent mutations
|
677
|
+
# may have undesirable effects. For example, replays of an insert mutation
|
678
|
+
# may produce an already exists error or if you use generated or commit
|
679
|
+
# timestamp-based keys, it may result in additional rows being added to the
|
680
|
+
# mutation's table. We recommend structuring your mutation groups to be
|
681
|
+
# idempotent to avoid this issue.
|
682
|
+
#
|
683
|
+
# @param [Boolean] exclude_txn_from_change_streams If set to true,
|
684
|
+
# mutations will not be recorded in change streams with DDL option
|
685
|
+
# `allow_txn_exclusion=true`.
|
686
|
+
# @param [Hash] request_options Common request options.
|
687
|
+
#
|
688
|
+
# * `:priority` (String) The relative priority for requests.
|
689
|
+
# The priority acts as a hint to the Cloud Spanner scheduler
|
690
|
+
# and does not guarantee priority or order of execution.
|
691
|
+
# Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
|
692
|
+
# `:PRIORITY_HIGH`. If priority not set then default is
|
693
|
+
# `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
|
694
|
+
# * `:tag` (String) A per-request tag which can be applied to
|
695
|
+
# queries or reads, used for statistics collection. Tag must be a
|
696
|
+
# valid identifier of the form: `[a-zA-Z][a-zA-Z0-9_\-]` between 2
|
697
|
+
# and 64 characters in length.
|
698
|
+
#
|
699
|
+
# @param [Hash] call_options A hash of values to specify the custom
|
700
|
+
# call options, e.g., timeout, retries, etc. Call options are
|
701
|
+
# optional. The following settings can be provided:
|
702
|
+
#
|
703
|
+
# * `:timeout` (Numeric) A numeric value of custom timeout in seconds
|
704
|
+
# that overrides the default setting.
|
705
|
+
# * `:retry_policy` (Hash) A hash of values that overrides the default
|
706
|
+
# setting of retry policy with the following keys:
|
707
|
+
# * `:initial_delay` (`Numeric`) - The initial delay in seconds.
|
708
|
+
# * `:max_delay` (`Numeric`) - The max delay in seconds.
|
709
|
+
# * `:multiplier` (`Numeric`) - The incremental backoff multiplier.
|
710
|
+
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
711
|
+
# trigger a retry.
|
712
|
+
#
|
713
|
+
# @yield [batch_write] a batch write object
|
714
|
+
# @yieldparam [Google::Cloud::Spanner::BatchWrite] batch_write a batch
|
715
|
+
# write object used to add mutaion groups through {MutationGroup}.
|
716
|
+
#
|
717
|
+
# @return [Google::Cloud::Spanner::BatchWriteResults] The results of
|
718
|
+
# the batch write operation. This is a stream of responses, each
|
719
|
+
# covering a set of the mutation groups that were either applied or
|
720
|
+
# failed together.
|
721
|
+
#
|
722
|
+
# @example
|
723
|
+
# require "google/cloud/spanner"
|
724
|
+
#
|
725
|
+
# spanner = Google::Cloud::Spanner.new
|
726
|
+
#
|
727
|
+
# db = spanner.client "my-instance", "my-database"
|
728
|
+
#
|
729
|
+
# results = db.batch_write do |b|
|
730
|
+
# # First mutation group
|
731
|
+
# b.mutation_group do |mg|
|
732
|
+
# mg.upsert "Singers", [{ SingerId: 16, FirstName: "Charlie", LastName: "Terry" }]
|
733
|
+
# end
|
734
|
+
#
|
735
|
+
# # Second mutation group
|
736
|
+
# b.mutation_group do |mg|
|
737
|
+
# mg.upsert "Singers", [{ SingerId: 17, FirstName: "Catalina", LastName: "Smith" }]
|
738
|
+
# mg.update "Albums", [{ SingerId: 17, AlbumId: 1, AlbumTitle: "Go Go Go" }]
|
739
|
+
# end
|
740
|
+
# end
|
741
|
+
#
|
742
|
+
# results.each do |response|
|
743
|
+
# puts "groups applied: #{response.indexes}" if response.ok?
|
744
|
+
# end
|
745
|
+
#
|
746
|
+
def batch_write exclude_txn_from_change_streams: false,
|
747
|
+
request_options: nil,
|
748
|
+
call_options: nil
|
749
|
+
ensure_service!
|
750
|
+
b = BatchWrite.new
|
751
|
+
yield b
|
752
|
+
response = service.batch_write path, b.mutation_groups_grpc,
|
753
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams,
|
754
|
+
request_options: request_options,
|
755
|
+
call_options: call_options
|
756
|
+
results = BatchWriteResults.new response
|
757
|
+
@last_updated_at = Time.now
|
758
|
+
results
|
759
|
+
end
|
760
|
+
|
657
761
|
##
|
658
762
|
# Inserts or updates rows in a table. If any of the rows already exist,
|
659
763
|
# then its column values are overwritten with the ones provided. Any
|
@@ -672,6 +776,7 @@ module Google
|
|
672
776
|
# | `BOOL` | `true`/`false` | |
|
673
777
|
# | `INT64` | `Integer` | |
|
674
778
|
# | `FLOAT64` | `Float` | |
|
779
|
+
# | `FLOAT32` | `Float` | |
|
675
780
|
# | `NUMERIC` | `BigDecimal` | |
|
676
781
|
# | `STRING` | `String` | |
|
677
782
|
# | `DATE` | `Date` | |
|
@@ -682,6 +787,12 @@ module Google
|
|
682
787
|
# See [Data
|
683
788
|
# types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
|
684
789
|
#
|
790
|
+
# @param [String] transaction_id The identifier of previously-started
|
791
|
+
# transaction to be used instead of starting a new transaction.
|
792
|
+
# Optional.
|
793
|
+
# @param [Boolean] exclude_txn_from_change_streams If set to true,
|
794
|
+
# mutations will not be recorded in change streams with DDL option
|
795
|
+
# `allow_txn_exclusion=true`. Used if starting a new transaction.
|
685
796
|
# @param [Hash] commit_options A hash of commit options.
|
686
797
|
# e.g., return_commit_stats. Commit options are optional.
|
687
798
|
# The following options can be provided:
|
@@ -752,10 +863,12 @@ module Google
|
|
752
863
|
# puts commit_resp.timestamp
|
753
864
|
# puts commit_resp.stats.mutation_count
|
754
865
|
#
|
755
|
-
def upsert table, *rows,
|
756
|
-
|
866
|
+
def upsert table, *rows,
|
867
|
+
transaction_id: nil, exclude_txn_from_change_streams: false,
|
868
|
+
commit_options: nil, request_options: nil, call_options: nil
|
757
869
|
opts = {
|
758
870
|
transaction_id: transaction_id,
|
871
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams,
|
759
872
|
commit_options: commit_options,
|
760
873
|
request_options: request_options,
|
761
874
|
call_options: call_options
|
@@ -783,6 +896,7 @@ module Google
|
|
783
896
|
# | `BOOL` | `true`/`false` | |
|
784
897
|
# | `INT64` | `Integer` | |
|
785
898
|
# | `FLOAT64` | `Float` | |
|
899
|
+
# | `FLOAT32` | `Float` | |
|
786
900
|
# | `NUMERIC` | `BigDecimal` | |
|
787
901
|
# | `STRING` | `String` | |
|
788
902
|
# | `DATE` | `Date` | |
|
@@ -793,6 +907,12 @@ module Google
|
|
793
907
|
# See [Data
|
794
908
|
# types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
|
795
909
|
#
|
910
|
+
# @param [String] transaction_id The identifier of previously-started
|
911
|
+
# transaction to be used instead of starting a new transaction.
|
912
|
+
# Optional.
|
913
|
+
# @param [Boolean] exclude_txn_from_change_streams If set to true,
|
914
|
+
# mutations will not be recorded in change streams with DDL option
|
915
|
+
# `allow_txn_exclusion=true`. Used if starting a new transaction.
|
796
916
|
# @param [Hash] commit_options A hash of commit options.
|
797
917
|
# e.g., return_commit_stats. Commit options are optional.
|
798
918
|
# The following options can be provided:
|
@@ -863,10 +983,12 @@ module Google
|
|
863
983
|
# puts commit_resp.timestamp
|
864
984
|
# puts commit_resp.stats.mutation_count
|
865
985
|
#
|
866
|
-
def insert table, *rows,
|
867
|
-
|
986
|
+
def insert table, *rows,
|
987
|
+
transaction_id: nil, exclude_txn_from_change_streams: false,
|
988
|
+
commit_options: nil, request_options: nil, call_options: nil
|
868
989
|
opts = {
|
869
990
|
transaction_id: transaction_id,
|
991
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams,
|
870
992
|
commit_options: commit_options,
|
871
993
|
request_options: request_options,
|
872
994
|
call_options: call_options
|
@@ -893,6 +1015,7 @@ module Google
|
|
893
1015
|
# | `BOOL` | `true`/`false` | |
|
894
1016
|
# | `INT64` | `Integer` | |
|
895
1017
|
# | `FLOAT64` | `Float` | |
|
1018
|
+
# | `FLOAT32` | `Float` | |
|
896
1019
|
# | `NUMERIC` | `BigDecimal` | |
|
897
1020
|
# | `STRING` | `String` | |
|
898
1021
|
# | `DATE` | `Date` | |
|
@@ -903,6 +1026,12 @@ module Google
|
|
903
1026
|
# See [Data
|
904
1027
|
# types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
|
905
1028
|
#
|
1029
|
+
# @param [String] transaction_id The identifier of previously-started
|
1030
|
+
# transaction to be used instead of starting a new transaction.
|
1031
|
+
# Optional.
|
1032
|
+
# @param [Boolean] exclude_txn_from_change_streams If set to true,
|
1033
|
+
# mutations will not be recorded in change streams with DDL option
|
1034
|
+
# `allow_txn_exclusion=true`. Used if starting a new transaction.
|
906
1035
|
# @param [Hash] commit_options A hash of commit options.
|
907
1036
|
# e.g., return_commit_stats. Commit options are optional.
|
908
1037
|
# The following options can be provided:
|
@@ -973,10 +1102,12 @@ module Google
|
|
973
1102
|
# puts commit_resp.timestamp
|
974
1103
|
# puts commit_resp.stats.mutation_count
|
975
1104
|
#
|
976
|
-
def update table, *rows,
|
977
|
-
|
1105
|
+
def update table, *rows,
|
1106
|
+
transaction_id: nil, exclude_txn_from_change_streams: false,
|
1107
|
+
commit_options: nil, request_options: nil, call_options: nil
|
978
1108
|
opts = {
|
979
1109
|
transaction_id: transaction_id,
|
1110
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams,
|
980
1111
|
commit_options: commit_options,
|
981
1112
|
request_options: request_options,
|
982
1113
|
call_options: call_options
|
@@ -1005,6 +1136,7 @@ module Google
|
|
1005
1136
|
# | `BOOL` | `true`/`false` | |
|
1006
1137
|
# | `INT64` | `Integer` | |
|
1007
1138
|
# | `FLOAT64` | `Float` | |
|
1139
|
+
# | `FLOAT32` | `Float` | |
|
1008
1140
|
# | `NUMERIC` | `BigDecimal` | |
|
1009
1141
|
# | `STRING` | `String` | |
|
1010
1142
|
# | `DATE` | `Date` | |
|
@@ -1015,6 +1147,12 @@ module Google
|
|
1015
1147
|
# See [Data
|
1016
1148
|
# types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
|
1017
1149
|
#
|
1150
|
+
# @param [String] transaction_id The identifier of previously-started
|
1151
|
+
# transaction to be used instead of starting a new transaction.
|
1152
|
+
# Optional.
|
1153
|
+
# @param [Boolean] exclude_txn_from_change_streams If set to true,
|
1154
|
+
# mutations will not be recorded in change streams with DDL option
|
1155
|
+
# `allow_txn_exclusion=true`. Used if starting a new transaction.
|
1018
1156
|
# @param [Hash] commit_options A hash of commit options.
|
1019
1157
|
# e.g., return_commit_stats. Commit options are optional.
|
1020
1158
|
# The following options can be provided:
|
@@ -1086,10 +1224,12 @@ module Google
|
|
1086
1224
|
# puts commit_resp.timestamp
|
1087
1225
|
# puts commit_resp.stats.mutation_count
|
1088
1226
|
#
|
1089
|
-
def replace table, *rows,
|
1090
|
-
|
1227
|
+
def replace table, *rows,
|
1228
|
+
transaction_id: nil, exclude_txn_from_change_streams: false,
|
1229
|
+
commit_options: nil, request_options: nil, call_options: nil
|
1091
1230
|
opts = {
|
1092
1231
|
transaction_id: transaction_id,
|
1232
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams,
|
1093
1233
|
commit_options: commit_options,
|
1094
1234
|
request_options: request_options,
|
1095
1235
|
call_options: call_options
|
@@ -1108,6 +1248,12 @@ module Google
|
|
1108
1248
|
# @param [Object, Array<Object>] keys A single, or list of keys or key
|
1109
1249
|
# ranges to match returned data to. Values should have exactly as many
|
1110
1250
|
# elements as there are columns in the primary key.
|
1251
|
+
# @param [String] transaction_id The identifier of previously-started
|
1252
|
+
# transaction to be used instead of starting a new transaction.
|
1253
|
+
# Optional.
|
1254
|
+
# @param [Boolean] exclude_txn_from_change_streams If set to true,
|
1255
|
+
# mutations will not be recorded in change streams with DDL option
|
1256
|
+
# `allow_txn_exclusion=true`. Used if starting a new transaction.
|
1111
1257
|
# @param [Hash] commit_options A hash of commit options.
|
1112
1258
|
# e.g., return_commit_stats. Commit options are optional.
|
1113
1259
|
# The following options can be provided:
|
@@ -1175,10 +1321,12 @@ module Google
|
|
1175
1321
|
# puts commit_resp.timestamp
|
1176
1322
|
# puts commit_resp.stats.mutation_count
|
1177
1323
|
#
|
1178
|
-
def delete table, keys = [],
|
1179
|
-
|
1324
|
+
def delete table, keys = [],
|
1325
|
+
transaction_id: nil, exclude_txn_from_change_streams: false,
|
1326
|
+
commit_options: nil, request_options: nil, call_options: nil
|
1180
1327
|
opts = {
|
1181
1328
|
transaction_id: transaction_id,
|
1329
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams,
|
1182
1330
|
commit_options: commit_options,
|
1183
1331
|
request_options: request_options,
|
1184
1332
|
call_options: call_options
|
@@ -1199,18 +1347,20 @@ module Google
|
|
1199
1347
|
##
|
1200
1348
|
# @private
|
1201
1349
|
# Creates a new transaction object every time.
|
1202
|
-
def create_transaction
|
1350
|
+
def create_transaction exclude_txn_from_change_streams: false
|
1203
1351
|
route_to_leader = LARHeaders.begin_transaction true
|
1204
|
-
tx_grpc = service.begin_transaction path,
|
1205
|
-
|
1352
|
+
tx_grpc = service.begin_transaction path,
|
1353
|
+
route_to_leader: route_to_leader,
|
1354
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams
|
1355
|
+
Transaction.from_grpc tx_grpc, self, exclude_txn_from_change_streams: exclude_txn_from_change_streams
|
1206
1356
|
end
|
1207
1357
|
|
1208
1358
|
##
|
1209
1359
|
# @private
|
1210
1360
|
# Creates a new transaction object without the grpc object
|
1211
1361
|
# within it. Use it for inline-begin of a transaction.
|
1212
|
-
def create_empty_transaction
|
1213
|
-
Transaction.from_grpc nil, self
|
1362
|
+
def create_empty_transaction exclude_txn_from_change_streams: false
|
1363
|
+
Transaction.from_grpc nil, self, exclude_txn_from_change_streams: exclude_txn_from_change_streams
|
1214
1364
|
end
|
1215
1365
|
|
1216
1366
|
##
|
@@ -83,6 +83,7 @@ module Google
|
|
83
83
|
# | `BOOL` | `true`/`false` | |
|
84
84
|
# | `INT64` | `Integer` | |
|
85
85
|
# | `FLOAT64` | `Float` | |
|
86
|
+
# | `FLOAT32` | `Float` | |
|
86
87
|
# | `NUMERIC` | `BigDecimal` | |
|
87
88
|
# | `STRING` | `String` | |
|
88
89
|
# | `DATE` | `Date` | |
|
@@ -109,6 +110,7 @@ module Google
|
|
109
110
|
# * `:BYTES`
|
110
111
|
# * `:DATE`
|
111
112
|
# * `:FLOAT64`
|
113
|
+
# * `:FLOAT32`
|
112
114
|
# * `:NUMERIC`
|
113
115
|
# * `:INT64`
|
114
116
|
# * `:STRING`
|
@@ -310,7 +312,7 @@ module Google
|
|
310
312
|
transaction: tx_selector,
|
311
313
|
query_options: query_options,
|
312
314
|
call_options: call_options,
|
313
|
-
directed_read_options:
|
315
|
+
directed_read_options: directed_read_options || @directed_read_options
|
314
316
|
end
|
315
317
|
alias execute execute_query
|
316
318
|
alias query execute_query
|
@@ -387,7 +389,7 @@ module Google
|
|
387
389
|
session.read table, columns, keys: keys, index: index, limit: limit,
|
388
390
|
transaction: tx_selector,
|
389
391
|
call_options: call_options,
|
390
|
-
directed_read_options:
|
392
|
+
directed_read_options: directed_read_options || @directed_read_options
|
391
393
|
end
|
392
394
|
|
393
395
|
##
|
@@ -416,6 +418,7 @@ module Google
|
|
416
418
|
# * `:BYTES`
|
417
419
|
# * `:DATE`
|
418
420
|
# * `:FLOAT64`
|
421
|
+
# * `:FLOAT32`
|
419
422
|
# * `:NUMERIC`
|
420
423
|
# * `:INT64`
|
421
424
|
# * `:STRING`
|
@@ -85,9 +85,13 @@ module Google
|
|
85
85
|
# @private Transaction tag for statistics collection.
|
86
86
|
attr_accessor :transaction_tag
|
87
87
|
|
88
|
+
# @private Whether to exclude from change streams.
|
89
|
+
attr_accessor :exclude_txn_from_change_streams
|
90
|
+
|
88
91
|
def initialize
|
89
92
|
@commit = Commit.new
|
90
93
|
@seqno = 0
|
94
|
+
@exclude_txn_from_change_streams = false
|
91
95
|
|
92
96
|
# Mutex to enfore thread safety for transaction creation and query executions.
|
93
97
|
#
|
@@ -139,6 +143,7 @@ module Google
|
|
139
143
|
# | `BOOL` | `true`/`false` | |
|
140
144
|
# | `INT64` | `Integer` | |
|
141
145
|
# | `FLOAT64` | `Float` | |
|
146
|
+
# | `FLOAT32` | `Float` | |
|
142
147
|
# | `NUMERIC` | `BigDecimal` | |
|
143
148
|
# | `STRING` | `String` | |
|
144
149
|
# | `DATE` | `Date` | |
|
@@ -165,6 +170,7 @@ module Google
|
|
165
170
|
# * `:BYTES`
|
166
171
|
# * `:DATE`
|
167
172
|
# * `:FLOAT64`
|
173
|
+
# * `:FLOAT32`
|
168
174
|
# * `:NUMERIC`
|
169
175
|
# * `:INT64`
|
170
176
|
# * `:STRING`
|
@@ -402,6 +408,7 @@ module Google
|
|
402
408
|
# | `BOOL` | `true`/`false` | |
|
403
409
|
# | `INT64` | `Integer` | |
|
404
410
|
# | `FLOAT64` | `Float` | |
|
411
|
+
# | `FLOAT32` | `Float` | |
|
405
412
|
# | `NUMERIC` | `BigDecimal` | |
|
406
413
|
# | `STRING` | `String` | |
|
407
414
|
# | `DATE` | `Date` | |
|
@@ -429,6 +436,7 @@ module Google
|
|
429
436
|
# * `:BYTES`
|
430
437
|
# * `:DATE`
|
431
438
|
# * `:FLOAT64`
|
439
|
+
# * `:FLOAT32`
|
432
440
|
# * `:NUMERIC`
|
433
441
|
# * `:INT64`
|
434
442
|
# * `:STRING`
|
@@ -752,6 +760,7 @@ module Google
|
|
752
760
|
# | `BOOL` | `true`/`false` | |
|
753
761
|
# | `INT64` | `Integer` | |
|
754
762
|
# | `FLOAT64` | `Float` | |
|
763
|
+
# | `FLOAT32` | `Float` | |
|
755
764
|
# | `NUMERIC` | `BigDecimal` | |
|
756
765
|
# | `STRING` | `String` | |
|
757
766
|
# | `DATE` | `Date` | |
|
@@ -799,6 +808,7 @@ module Google
|
|
799
808
|
# | `BOOL` | `true`/`false` | |
|
800
809
|
# | `INT64` | `Integer` | |
|
801
810
|
# | `FLOAT64` | `Float` | |
|
811
|
+
# | `FLOAT32` | `Float` | |
|
802
812
|
# | `NUMERIC` | `BigDecimal` | |
|
803
813
|
# | `STRING` | `String` | |
|
804
814
|
# | `DATE` | `Date` | |
|
@@ -845,6 +855,7 @@ module Google
|
|
845
855
|
# | `BOOL` | `true`/`false` | |
|
846
856
|
# | `INT64` | `Integer` | |
|
847
857
|
# | `FLOAT64` | `Float` | |
|
858
|
+
# | `FLOAT32` | `Float` | |
|
848
859
|
# | `NUMERIC` | `BigDecimal` | |
|
849
860
|
# | `STRING` | `String` | |
|
850
861
|
# | `DATE` | `Date` | |
|
@@ -893,6 +904,7 @@ module Google
|
|
893
904
|
# | `BOOL` | `true`/`false` | |
|
894
905
|
# | `INT64` | `Integer` | |
|
895
906
|
# | `FLOAT64` | `Float` | |
|
907
|
+
# | `FLOAT32` | `Float` | |
|
896
908
|
# | `NUMERIC` | `BigDecimal` | |
|
897
909
|
# | `STRING` | `String` | |
|
898
910
|
# | `DATE` | `Date` | |
|
@@ -995,6 +1007,7 @@ module Google
|
|
995
1007
|
# * `:BYTES`
|
996
1008
|
# * `:DATE`
|
997
1009
|
# * `:FLOAT64`
|
1010
|
+
# * `:FLOAT32`
|
998
1011
|
# * `:NUMERIC`
|
999
1012
|
# * `:INT64`
|
1000
1013
|
# * `:STRING`
|
@@ -1143,10 +1156,11 @@ module Google
|
|
1143
1156
|
##
|
1144
1157
|
# @private Creates a new Transaction instance from a
|
1145
1158
|
# `Google::Cloud::Spanner::V1::Transaction`.
|
1146
|
-
def self.from_grpc grpc, session
|
1159
|
+
def self.from_grpc grpc, session, exclude_txn_from_change_streams: false
|
1147
1160
|
new.tap do |s|
|
1148
1161
|
s.instance_variable_set :@grpc, grpc
|
1149
1162
|
s.instance_variable_set :@session, session
|
1163
|
+
s.exclude_txn_from_change_streams = exclude_txn_from_change_streams
|
1150
1164
|
end
|
1151
1165
|
end
|
1152
1166
|
|
@@ -1207,11 +1221,12 @@ module Google
|
|
1207
1221
|
#
|
1208
1222
|
# This method is expected to be called from within `safe_execute()` method's block,
|
1209
1223
|
# since it provides synchronization and gurantees thread safety.
|
1210
|
-
def tx_selector
|
1224
|
+
def tx_selector exclude_txn_from_change_streams: false
|
1211
1225
|
return V1::TransactionSelector.new id: transaction_id if existing_transaction?
|
1212
1226
|
V1::TransactionSelector.new(
|
1213
1227
|
begin: V1::TransactionOptions.new(
|
1214
|
-
read_write: V1::TransactionOptions::ReadWrite.new
|
1228
|
+
read_write: V1::TransactionOptions::ReadWrite.new,
|
1229
|
+
exclude_txn_from_change_streams: exclude_txn_from_change_streams
|
1215
1230
|
)
|
1216
1231
|
)
|
1217
1232
|
end
|
data/lib/google-cloud-spanner.rb
CHANGED
@@ -74,8 +74,9 @@ module Google
|
|
74
74
|
# spanner = gcloud.spanner scope: platform_scope
|
75
75
|
#
|
76
76
|
def spanner scope: nil, timeout: nil, lib_name: nil, lib_version: nil
|
77
|
+
timeout ||= @timeout
|
77
78
|
Google::Cloud.spanner @project, @keyfile, scope: scope,
|
78
|
-
timeout:
|
79
|
+
timeout: timeout,
|
79
80
|
lib_name: lib_name,
|
80
81
|
lib_version: lib_version
|
81
82
|
end
|
@@ -130,8 +131,10 @@ module Google
|
|
130
131
|
require "google/cloud/spanner"
|
131
132
|
Google::Cloud::Spanner.new project_id: project_id,
|
132
133
|
credentials: credentials,
|
133
|
-
scope: scope,
|
134
|
-
|
134
|
+
scope: scope,
|
135
|
+
timeout: timeout,
|
136
|
+
lib_name: lib_name,
|
137
|
+
lib_version: lib_version
|
135
138
|
end
|
136
139
|
end
|
137
140
|
end
|