google-cloud-spanner 2.2.0 → 2.3.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 +12 -0
- data/CONTRIBUTING.md +1 -1
- data/lib/google/cloud/spanner.rb +7 -5
- data/lib/google/cloud/spanner/client.rb +204 -22
- data/lib/google/cloud/spanner/commit_response.rb +87 -0
- data/lib/google/cloud/spanner/commit_response/commit_stats.rb +51 -0
- data/lib/google/cloud/spanner/service.rb +6 -1
- data/lib/google/cloud/spanner/session.rb +194 -18
- data/lib/google/cloud/spanner/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 62f5ce383d6aefe48214924e77b5a794bd0a0c03bb6acaedd383be12d47da9b9
|
4
|
+
data.tar.gz: ed1e49a6ef47946d557f8cb768d6da33923179fa05551ea7fadd55f3f5cfe341
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4b22e83c54208f8961e267a81ef681f98ef7e2ffe9a48274e566899adfed7c514c3a124b9f747667908db89067cbe0715f8c1363635d75cd4461f9072f703819
|
7
|
+
data.tar.gz: '085550ca4945d0436fd92f94adb16464d30224f5f466ca1f3becb24bdcf0b8bc4fa0416d2f26ecc375ca71eadface1856702dac02a7093bda001ce4e37be359d'
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
+
### 2.3.0 / 2021-02-09
|
4
|
+
|
5
|
+
#### Features
|
6
|
+
|
7
|
+
* CommitStats in CommitResponse ([#8058](https://www.github.com/googleapis/google-cloud-ruby/issues/8058))
|
8
|
+
* optionalize `credentials` when using cloud spanner emulator host ([#8416](https://www.github.com/googleapis/google-cloud-ruby/issues/8416))
|
9
|
+
* Optionalize `credentials` when using Cloud Spanner Emulator
|
10
|
+
* Remove unnecessary credentials stub for emulator_host in Google::Cloud::Spanner.new
|
11
|
+
* Add test of explicit project_id in Google::Cloud::Spanner.new
|
12
|
+
* Update document for `emulator_host` without credentials
|
13
|
+
* Tidy code according to rubocop settings
|
14
|
+
|
3
15
|
### 2.2.0 / 2020-09-15
|
4
16
|
|
5
17
|
#### Features
|
data/CONTRIBUTING.md
CHANGED
data/lib/google/cloud/spanner.rb
CHANGED
@@ -49,6 +49,8 @@ module Google
|
|
49
49
|
# @param [String, Hash, Google::Auth::Credentials] credentials The path to
|
50
50
|
# the keyfile as a String, the contents of the keyfile as a Hash, or a
|
51
51
|
# Google::Auth::Credentials object. (See {Spanner::Credentials})
|
52
|
+
# If `emulator_host` is present, this becomes optional and the value is
|
53
|
+
# internally overriden with `:this_channel_is_insecure`.
|
52
54
|
# @param [String, Array<String>] scope The OAuth 2.0 scopes controlling
|
53
55
|
# the set of resources and operations that the connection can access.
|
54
56
|
# See [Using OAuth 2.0 to Access Google
|
@@ -60,7 +62,7 @@ module Google
|
|
60
62
|
# * `https://www.googleapis.com/auth/spanner.data`
|
61
63
|
# @param [Integer] timeout Default timeout to use in requests. Optional.
|
62
64
|
# @param [String] endpoint Override of the endpoint host name. Optional.
|
63
|
-
# If the param is nil, uses the default endpoint.
|
65
|
+
# If the param is nil, uses `emulator_host` or the default endpoint.
|
64
66
|
# @param [String] project Alias for the `project_id` argument. Deprecated.
|
65
67
|
# @param [String] keyfile Alias for the `credentials` argument.
|
66
68
|
# Deprecated.
|
@@ -91,19 +93,19 @@ module Google
|
|
91
93
|
def self.new project_id: nil, credentials: nil, scope: nil, timeout: nil,
|
92
94
|
endpoint: nil, project: nil, keyfile: nil,
|
93
95
|
emulator_host: nil, lib_name: nil, lib_version: nil
|
94
|
-
project_id ||=
|
96
|
+
project_id ||= project || default_project_id
|
95
97
|
scope ||= configure.scope
|
96
98
|
timeout ||= configure.timeout
|
97
|
-
endpoint ||= configure.endpoint
|
98
|
-
credentials ||= (keyfile || default_credentials(scope: scope))
|
99
99
|
emulator_host ||= configure.emulator_host
|
100
|
+
endpoint ||= emulator_host || configure.endpoint
|
101
|
+
credentials ||= keyfile
|
100
102
|
lib_name ||= configure.lib_name
|
101
103
|
lib_version ||= configure.lib_version
|
102
104
|
|
103
105
|
if emulator_host
|
104
106
|
credentials = :this_channel_is_insecure
|
105
|
-
endpoint = emulator_host
|
106
107
|
else
|
108
|
+
credentials ||= default_credentials scope: scope
|
107
109
|
unless credentials.is_a? Google::Auth::Credentials
|
108
110
|
credentials = Spanner::Credentials.new credentials, scope: scope
|
109
111
|
end
|
@@ -23,6 +23,7 @@ require "google/cloud/spanner/snapshot"
|
|
23
23
|
require "google/cloud/spanner/range"
|
24
24
|
require "google/cloud/spanner/column_value"
|
25
25
|
require "google/cloud/spanner/convert"
|
26
|
+
require "google/cloud/spanner/commit_response"
|
26
27
|
|
27
28
|
module Google
|
28
29
|
module Cloud
|
@@ -809,7 +810,16 @@ module Google
|
|
809
810
|
# See [Data
|
810
811
|
# types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
|
811
812
|
#
|
812
|
-
# @
|
813
|
+
# @param [Hash] commit_options A hash of commit options.
|
814
|
+
# e.g., return_commit_stats. Commit options are optional.
|
815
|
+
# The following options can be provided:
|
816
|
+
#
|
817
|
+
# * `:return_commit_stats` (Boolean) A boolean value. If `true`,
|
818
|
+
# then statistics related to the transaction will be included in
|
819
|
+
# {CommitResponse}. Default value is `false`
|
820
|
+
#
|
821
|
+
# @return [Time, CommitResponse] The timestamp at which the operation
|
822
|
+
# committed. If commit options are set it returns {CommitResponse}.
|
813
823
|
#
|
814
824
|
# @example
|
815
825
|
# require "google/cloud/spanner"
|
@@ -821,9 +831,24 @@ module Google
|
|
821
831
|
# db.upsert "users", [{ id: 1, name: "Charlie", active: false },
|
822
832
|
# { id: 2, name: "Harvey", active: true }]
|
823
833
|
#
|
824
|
-
|
834
|
+
# @example Get commit stats
|
835
|
+
# require "google/cloud/spanner"
|
836
|
+
#
|
837
|
+
# spanner = Google::Cloud::Spanner.new
|
838
|
+
#
|
839
|
+
# db = spanner.client "my-instance", "my-database"
|
840
|
+
#
|
841
|
+
# records = [{ id: 1, name: "Charlie", active: false },
|
842
|
+
# { id: 2, name: "Harvey", active: true }]
|
843
|
+
# commit_options = { return_commit_stats: true }
|
844
|
+
# commit_resp = db.upsert "users", records, commit_options: commit_options
|
845
|
+
#
|
846
|
+
# puts commit_resp.timestamp
|
847
|
+
# puts commit_resp.stats.mutation_count
|
848
|
+
#
|
849
|
+
def upsert table, rows, commit_options: nil
|
825
850
|
@pool.with_session do |session|
|
826
|
-
session.upsert table, rows
|
851
|
+
session.upsert table, rows, commit_options: commit_options
|
827
852
|
end
|
828
853
|
end
|
829
854
|
alias save upsert
|
@@ -865,7 +890,16 @@ module Google
|
|
865
890
|
# See [Data
|
866
891
|
# types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
|
867
892
|
#
|
868
|
-
# @
|
893
|
+
# @param [Hash] commit_options A hash of commit options.
|
894
|
+
# e.g., return_commit_stats. Commit options are optional.
|
895
|
+
# The following options can be provided:
|
896
|
+
#
|
897
|
+
# * `:return_commit_stats` (Boolean) A boolean value. If `true`,
|
898
|
+
# then statistics related to the transaction will be included in
|
899
|
+
# {CommitResponse}. Default value is `false`
|
900
|
+
#
|
901
|
+
# @return [Time, CommitResponse] The timestamp at which the operation
|
902
|
+
# committed. If commit options are set it returns {CommitResponse}.
|
869
903
|
#
|
870
904
|
# @example
|
871
905
|
# require "google/cloud/spanner"
|
@@ -877,9 +911,24 @@ module Google
|
|
877
911
|
# db.insert "users", [{ id: 1, name: "Charlie", active: false },
|
878
912
|
# { id: 2, name: "Harvey", active: true }]
|
879
913
|
#
|
880
|
-
|
914
|
+
# @example Get commit stats
|
915
|
+
# require "google/cloud/spanner"
|
916
|
+
#
|
917
|
+
# spanner = Google::Cloud::Spanner.new
|
918
|
+
#
|
919
|
+
# db = spanner.client "my-instance", "my-database"
|
920
|
+
#
|
921
|
+
# records = [{ id: 1, name: "Charlie", active: false },
|
922
|
+
# { id: 2, name: "Harvey", active: true }]
|
923
|
+
# commit_options = { return_commit_stats: true }
|
924
|
+
# commit_resp = db.insert "users", records, commit_options: commit_options
|
925
|
+
#
|
926
|
+
# puts commit_resp.timestamp
|
927
|
+
# puts commit_resp.stats.mutation_count
|
928
|
+
#
|
929
|
+
def insert table, rows, commit_options: nil
|
881
930
|
@pool.with_session do |session|
|
882
|
-
session.insert table, rows
|
931
|
+
session.insert table, rows, commit_options: commit_options
|
883
932
|
end
|
884
933
|
end
|
885
934
|
|
@@ -920,7 +969,16 @@ module Google
|
|
920
969
|
# See [Data
|
921
970
|
# types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
|
922
971
|
#
|
923
|
-
# @
|
972
|
+
# @param [Hash] commit_options A hash of commit options.
|
973
|
+
# e.g., return_commit_stats. Commit options are optional.
|
974
|
+
# The following options can be provided:
|
975
|
+
#
|
976
|
+
# * `:return_commit_stats` (Boolean) A boolean value. If `true`,
|
977
|
+
# then statistics related to the transaction will be included in
|
978
|
+
# {CommitResponse}. Default value is `false`
|
979
|
+
#
|
980
|
+
# @return [Time, CommitResponse] The timestamp at which the operation
|
981
|
+
# committed. If commit options are set it returns {CommitResponse}.
|
924
982
|
#
|
925
983
|
# @example
|
926
984
|
# require "google/cloud/spanner"
|
@@ -932,9 +990,24 @@ module Google
|
|
932
990
|
# db.update "users", [{ id: 1, name: "Charlie", active: false },
|
933
991
|
# { id: 2, name: "Harvey", active: true }]
|
934
992
|
#
|
935
|
-
|
993
|
+
# @example Get commit stats
|
994
|
+
# require "google/cloud/spanner"
|
995
|
+
#
|
996
|
+
# spanner = Google::Cloud::Spanner.new
|
997
|
+
#
|
998
|
+
# db = spanner.client "my-instance", "my-database"
|
999
|
+
#
|
1000
|
+
# records = [{ id: 1, name: "Charlie", active: false },
|
1001
|
+
# { id: 2, name: "Harvey", active: true }]
|
1002
|
+
# commit_options = { return_commit_stats: true }
|
1003
|
+
# commit_resp = db.update "users", records, commit_options: commit_options
|
1004
|
+
#
|
1005
|
+
# puts commit_resp.timestamp
|
1006
|
+
# puts commit_resp.stats.mutation_count
|
1007
|
+
#
|
1008
|
+
def update table, rows, commit_options: nil
|
936
1009
|
@pool.with_session do |session|
|
937
|
-
session.update table, rows
|
1010
|
+
session.update table, rows, commit_options: commit_options
|
938
1011
|
end
|
939
1012
|
end
|
940
1013
|
|
@@ -977,7 +1050,16 @@ module Google
|
|
977
1050
|
# See [Data
|
978
1051
|
# types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
|
979
1052
|
#
|
980
|
-
# @
|
1053
|
+
# @param [Hash] commit_options A hash of commit options.
|
1054
|
+
# e.g., return_commit_stats. Commit options are optional.
|
1055
|
+
# The following options can be provided:
|
1056
|
+
#
|
1057
|
+
# * `:return_commit_stats` (Boolean) A boolean value. If `true`,
|
1058
|
+
# then statistics related to the transaction will be included in
|
1059
|
+
# {CommitResponse}. Default value is `false`
|
1060
|
+
#
|
1061
|
+
# @return [Time, CommitResponse] The timestamp at which the operation
|
1062
|
+
# committed. If commit options are set it returns {CommitResponse}.
|
981
1063
|
#
|
982
1064
|
# @example
|
983
1065
|
# require "google/cloud/spanner"
|
@@ -989,9 +1071,24 @@ module Google
|
|
989
1071
|
# db.replace "users", [{ id: 1, name: "Charlie", active: false },
|
990
1072
|
# { id: 2, name: "Harvey", active: true }]
|
991
1073
|
#
|
992
|
-
|
1074
|
+
# @example Get commit stats
|
1075
|
+
# require "google/cloud/spanner"
|
1076
|
+
#
|
1077
|
+
# spanner = Google::Cloud::Spanner.new
|
1078
|
+
#
|
1079
|
+
# db = spanner.client "my-instance", "my-database"
|
1080
|
+
#
|
1081
|
+
# records = [{ id: 1, name: "Charlie", active: false },
|
1082
|
+
# { id: 2, name: "Harvey", active: true }]
|
1083
|
+
# commit_options = { return_commit_stats: true }
|
1084
|
+
# commit_resp = db.replace "users", records, commit_options: commit_options
|
1085
|
+
#
|
1086
|
+
# puts commit_resp.timestamp
|
1087
|
+
# puts commit_resp.stats.mutation_count
|
1088
|
+
#
|
1089
|
+
def replace table, rows, commit_options: nil
|
993
1090
|
@pool.with_session do |session|
|
994
|
-
session.replace table, rows
|
1091
|
+
session.replace table, rows, commit_options: commit_options
|
995
1092
|
end
|
996
1093
|
end
|
997
1094
|
|
@@ -1015,6 +1112,14 @@ module Google
|
|
1015
1112
|
# @param [Object, Array<Object>] keys A single, or list of keys or key
|
1016
1113
|
# ranges to match returned data to. Values should have exactly as many
|
1017
1114
|
# elements as there are columns in the primary key.
|
1115
|
+
# @param [Hash] commit_options A hash of commit options.
|
1116
|
+
# e.g., return_commit_stats. Commit options are optional.
|
1117
|
+
# The following options can be provided:
|
1118
|
+
#
|
1119
|
+
# * `:return_commit_stats` (Boolean) A boolean value. If `true`,
|
1120
|
+
# then statistics related to the transaction will be included in
|
1121
|
+
# {CommitResponse}. Default value is `false`
|
1122
|
+
#
|
1018
1123
|
# @param [Hash] call_options A hash of values to specify the custom
|
1019
1124
|
# call options, e.g., timeout, retries, etc. Call options are
|
1020
1125
|
# optional. The following settings can be provided:
|
@@ -1029,7 +1134,8 @@ module Google
|
|
1029
1134
|
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
1030
1135
|
# trigger a retry.
|
1031
1136
|
#
|
1032
|
-
# @return [Time] The timestamp at which the operation
|
1137
|
+
# @return [Time, CommitResponse] The timestamp at which the operation
|
1138
|
+
# committed. If commit options are set it returns {CommitResponse}.
|
1033
1139
|
#
|
1034
1140
|
# @example
|
1035
1141
|
# require "google/cloud/spanner"
|
@@ -1040,9 +1146,23 @@ module Google
|
|
1040
1146
|
#
|
1041
1147
|
# db.delete "users", [1, 2, 3]
|
1042
1148
|
#
|
1043
|
-
|
1149
|
+
# @example Get commit stats
|
1150
|
+
# require "google/cloud/spanner"
|
1151
|
+
#
|
1152
|
+
# spanner = Google::Cloud::Spanner.new
|
1153
|
+
#
|
1154
|
+
# db = spanner.client "my-instance", "my-database"
|
1155
|
+
#
|
1156
|
+
# commit_options = { return_commit_stats: true }
|
1157
|
+
# commit_resp = db.delete "users", [1, 2, 3], commit_options: commit_options
|
1158
|
+
#
|
1159
|
+
# puts commit_resp.timestamp
|
1160
|
+
# puts commit_resp.stats.mutation_count
|
1161
|
+
#
|
1162
|
+
def delete table, keys = [], commit_options: nil, call_options: nil
|
1044
1163
|
@pool.with_session do |session|
|
1045
|
-
session.delete table, keys,
|
1164
|
+
session.delete table, keys, commit_options: commit_options,
|
1165
|
+
call_options: call_options
|
1046
1166
|
end
|
1047
1167
|
end
|
1048
1168
|
|
@@ -1061,6 +1181,14 @@ module Google
|
|
1061
1181
|
# this method may be appropriate for latency sensitive and/or high
|
1062
1182
|
# throughput blind changes.
|
1063
1183
|
#
|
1184
|
+
# @param [Hash] commit_options A hash of commit options.
|
1185
|
+
# e.g., return_commit_stats. Commit options are optional.
|
1186
|
+
# The following options can be provided:
|
1187
|
+
#
|
1188
|
+
# * `:return_commit_stats` (Boolean) A boolean value. If `true`,
|
1189
|
+
# then statistics related to the transaction will be included in
|
1190
|
+
# {CommitResponse}. Default value is `false`
|
1191
|
+
#
|
1064
1192
|
# @param [Hash] call_options A hash of values to specify the custom
|
1065
1193
|
# call options, e.g., timeout, retries, etc. Call options are
|
1066
1194
|
# optional. The following settings can be provided:
|
@@ -1078,7 +1206,8 @@ module Google
|
|
1078
1206
|
# @yield [commit] The block for mutating the data.
|
1079
1207
|
# @yieldparam [Google::Cloud::Spanner::Commit] commit The Commit object.
|
1080
1208
|
#
|
1081
|
-
# @return [Time] The timestamp at which the operation
|
1209
|
+
# @return [Time, CommitResponse] The timestamp at which the operation
|
1210
|
+
# committed. If commit options are set it returns {CommitResponse}.
|
1082
1211
|
#
|
1083
1212
|
# @example
|
1084
1213
|
# require "google/cloud/spanner"
|
@@ -1092,15 +1221,34 @@ module Google
|
|
1092
1221
|
# c.insert "users", [{ id: 2, name: "Harvey", active: true }]
|
1093
1222
|
# end
|
1094
1223
|
#
|
1095
|
-
|
1224
|
+
# @example Get commit stats
|
1225
|
+
# require "google/cloud/spanner"
|
1226
|
+
#
|
1227
|
+
# spanner = Google::Cloud::Spanner.new
|
1228
|
+
#
|
1229
|
+
# db = spanner.client "my-instance", "my-database"
|
1230
|
+
#
|
1231
|
+
# commit_options = { return_commit_stats: true }
|
1232
|
+
# commit_resp = db.commit commit_options: commit_options do |c|
|
1233
|
+
# c.update "users", [{ id: 1, name: "Charlie", active: false }]
|
1234
|
+
# c.insert "users", [{ id: 2, name: "Harvey", active: true }]
|
1235
|
+
# end
|
1236
|
+
#
|
1237
|
+
# puts commit_resp.timestamp
|
1238
|
+
# puts commit_resp.stats.mutation_count
|
1239
|
+
#
|
1240
|
+
def commit commit_options: nil, call_options: nil, &block
|
1096
1241
|
raise ArgumentError, "Must provide a block" unless block_given?
|
1097
1242
|
|
1098
1243
|
@pool.with_session do |session|
|
1099
|
-
session.commit(
|
1244
|
+
session.commit(
|
1245
|
+
commit_options: commit_options, call_options: call_options, &block
|
1246
|
+
)
|
1100
1247
|
end
|
1101
1248
|
end
|
1102
1249
|
|
1103
1250
|
# rubocop:disable Metrics/AbcSize
|
1251
|
+
# rubocop:disable Metrics/BlockLength
|
1104
1252
|
# rubocop:disable Metrics/MethodLength
|
1105
1253
|
|
1106
1254
|
##
|
@@ -1119,6 +1267,14 @@ module Google
|
|
1119
1267
|
#
|
1120
1268
|
# @param [Numeric] deadline The total amount of time in seconds the
|
1121
1269
|
# transaction has to succeed. The default is `120`.
|
1270
|
+
# @param [Hash] commit_options A hash of commit options.
|
1271
|
+
# e.g., return_commit_stats. Commit options are optional.
|
1272
|
+
# The following options can be provided:
|
1273
|
+
#
|
1274
|
+
# * `:return_commit_stats` (Boolean) A boolean value. If `true`,
|
1275
|
+
# then statistics related to the transaction will be included in
|
1276
|
+
# {CommitResponse}. Default value is `false`
|
1277
|
+
#
|
1122
1278
|
# @param [Hash] call_options A hash of values to specify the custom
|
1123
1279
|
# call options, e.g., timeout, retries, etc. Call options are
|
1124
1280
|
# optional. The following settings can be provided:
|
@@ -1137,7 +1293,8 @@ module Google
|
|
1137
1293
|
# @yieldparam [Google::Cloud::Spanner::Transaction] transaction The
|
1138
1294
|
# Transaction object.
|
1139
1295
|
#
|
1140
|
-
# @return [Time] The timestamp at which the
|
1296
|
+
# @return [Time, CommitResponse] The timestamp at which the operation
|
1297
|
+
# committed. If commit options are set it returns {CommitResponse}.
|
1141
1298
|
#
|
1142
1299
|
# @example
|
1143
1300
|
# require "google/cloud/spanner"
|
@@ -1173,7 +1330,28 @@ module Google
|
|
1173
1330
|
# end
|
1174
1331
|
# end
|
1175
1332
|
#
|
1176
|
-
|
1333
|
+
# @example Get commit stats
|
1334
|
+
# require "google/cloud/spanner"
|
1335
|
+
#
|
1336
|
+
# spanner = Google::Cloud::Spanner.new
|
1337
|
+
# db = spanner.client "my-instance", "my-database"
|
1338
|
+
#
|
1339
|
+
# commit_options = { return_commit_stats: true }
|
1340
|
+
# commit_resp = db.transaction commit_options: commit_options do |tx|
|
1341
|
+
# results = tx.execute_query "SELECT * FROM users"
|
1342
|
+
#
|
1343
|
+
# results.rows.each do |row|
|
1344
|
+
# puts "User #{row[:id]} is #{row[:name]}"
|
1345
|
+
# end
|
1346
|
+
#
|
1347
|
+
# tx.update "users", [{ id: 1, name: "Charlie", active: false }]
|
1348
|
+
# tx.insert "users", [{ id: 2, name: "Harvey", active: true }]
|
1349
|
+
# end
|
1350
|
+
#
|
1351
|
+
# puts commit_resp.timestamp
|
1352
|
+
# puts commit_resp.stats.mutation_count
|
1353
|
+
#
|
1354
|
+
def transaction deadline: 120, commit_options: nil, call_options: nil
|
1177
1355
|
ensure_service!
|
1178
1356
|
unless Thread.current[:transaction_id].nil?
|
1179
1357
|
raise "Nested transactions are not allowed"
|
@@ -1189,8 +1367,11 @@ module Google
|
|
1189
1367
|
yield tx
|
1190
1368
|
commit_resp = @project.service.commit \
|
1191
1369
|
tx.session.path, tx.mutations,
|
1192
|
-
transaction_id: tx.transaction_id,
|
1193
|
-
|
1370
|
+
transaction_id: tx.transaction_id,
|
1371
|
+
commit_options: commit_options,
|
1372
|
+
call_options: call_options
|
1373
|
+
resp = CommitResponse.from_grpc commit_resp
|
1374
|
+
commit_options ? resp : resp.timestamp
|
1194
1375
|
rescue GRPC::Aborted, Google::Cloud::AbortedError => err
|
1195
1376
|
# Re-raise if deadline has passed
|
1196
1377
|
if current_time - start_time > deadline
|
@@ -1218,6 +1399,7 @@ module Google
|
|
1218
1399
|
end
|
1219
1400
|
|
1220
1401
|
# rubocop:enable Metrics/AbcSize
|
1402
|
+
# rubocop:enable Metrics/BlockLength
|
1221
1403
|
# rubocop:enable Metrics/MethodLength
|
1222
1404
|
|
1223
1405
|
##
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# Copyright 2020 Google LLC
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
|
16
|
+
require "google/cloud/spanner/commit_response/commit_stats"
|
17
|
+
|
18
|
+
module Google
|
19
|
+
module Cloud
|
20
|
+
module Spanner
|
21
|
+
##
|
22
|
+
# CommitResponse is a timestamp at which the transaction committed
|
23
|
+
# with additional attributes of commit stats.
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
# require "google/cloud/spanner"
|
27
|
+
#
|
28
|
+
# spanner = Google::Cloud::Spanner.new
|
29
|
+
#
|
30
|
+
# db = spanner.client "my-instance", "my-database"
|
31
|
+
#
|
32
|
+
# timestamp = db.commit do |c|
|
33
|
+
# c.update "users", [{ id: 1, name: "Charlie", active: false }]
|
34
|
+
# c.insert "users", [{ id: 2, name: "Harvey", active: true }]
|
35
|
+
# end
|
36
|
+
#
|
37
|
+
# puts timestamp
|
38
|
+
#
|
39
|
+
# @example With commit stats.
|
40
|
+
# require "google/cloud/spanner"
|
41
|
+
#
|
42
|
+
# spanner = Google::Cloud::Spanner.new
|
43
|
+
#
|
44
|
+
# db = spanner.client "my-instance", "my-database"
|
45
|
+
#
|
46
|
+
# commit_options = { return_commit_stats: true }
|
47
|
+
# commit_resp = db.commit commit_options: commit_options do |c|
|
48
|
+
# c.update "users", [{ id: 1, name: "Charlie", active: false }]
|
49
|
+
# c.insert "users", [{ id: 2, name: "Harvey", active: true }]
|
50
|
+
# end
|
51
|
+
#
|
52
|
+
# puts commit_resp.timestamp
|
53
|
+
# puts commit_resp.stats.mutation_count
|
54
|
+
#
|
55
|
+
class CommitResponse
|
56
|
+
##
|
57
|
+
# @private Creates a new CommitResponse instance.
|
58
|
+
def initialize grpc
|
59
|
+
@grpc = grpc
|
60
|
+
end
|
61
|
+
|
62
|
+
##
|
63
|
+
# The timestamp at which the transaction committed.
|
64
|
+
# @return [Time]
|
65
|
+
def timestamp
|
66
|
+
Convert.timestamp_to_time @grpc.commit_timestamp
|
67
|
+
end
|
68
|
+
|
69
|
+
##
|
70
|
+
# Additional statistics about a commit.
|
71
|
+
# @return [CommitStats, nil] Commit stats or nil if not stats not
|
72
|
+
# present.
|
73
|
+
def stats
|
74
|
+
CommitStats.from_grpc @grpc.commit_stats if @grpc.commit_stats
|
75
|
+
end
|
76
|
+
|
77
|
+
##
|
78
|
+
# @private
|
79
|
+
# Creates a new Commit responsee instance from a
|
80
|
+
# `Google::Cloud::Spanner::V1::CommitResponse`.
|
81
|
+
def self.from_grpc grpc
|
82
|
+
new grpc
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# Copyright 2020 Google LLC
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
|
16
|
+
require "google/cloud/spanner/convert"
|
17
|
+
|
18
|
+
module Google
|
19
|
+
module Cloud
|
20
|
+
module Spanner
|
21
|
+
class CommitResponse
|
22
|
+
##
|
23
|
+
# # CommitStats
|
24
|
+
#
|
25
|
+
# Statistical information of a transaction commit.
|
26
|
+
#
|
27
|
+
class CommitStats
|
28
|
+
##
|
29
|
+
# @private Creates a new CommitStats instance.
|
30
|
+
def initialize grpc
|
31
|
+
@grpc = grpc
|
32
|
+
end
|
33
|
+
|
34
|
+
# The total number of the mutations for the transaction.
|
35
|
+
# @return [Integer]
|
36
|
+
def mutation_count
|
37
|
+
@grpc.mutation_count
|
38
|
+
end
|
39
|
+
|
40
|
+
##
|
41
|
+
# @private
|
42
|
+
# Creates a new CommitStats instance from a
|
43
|
+
# `Google::Cloud::Spanner::V1::CommitResponse::CommitStats`.
|
44
|
+
def self.from_grpc grpc
|
45
|
+
new grpc
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -397,7 +397,7 @@ module Google
|
|
397
397
|
end
|
398
398
|
|
399
399
|
def commit session_name, mutations = [], transaction_id: nil,
|
400
|
-
call_options: nil
|
400
|
+
commit_options: nil, call_options: nil
|
401
401
|
tx_opts = nil
|
402
402
|
if transaction_id.nil?
|
403
403
|
tx_opts = V1::TransactionOptions.new(
|
@@ -410,6 +410,11 @@ module Google
|
|
410
410
|
session: session_name, transaction_id: transaction_id,
|
411
411
|
single_use_transaction: tx_opts, mutations: mutations
|
412
412
|
}
|
413
|
+
|
414
|
+
if commit_options
|
415
|
+
request[:return_commit_stats] = commit_options[:return_commit_stats]
|
416
|
+
end
|
417
|
+
|
413
418
|
service.commit request, opts
|
414
419
|
end
|
415
420
|
|
@@ -16,6 +16,7 @@
|
|
16
16
|
require "google/cloud/spanner/data"
|
17
17
|
require "google/cloud/spanner/results"
|
18
18
|
require "google/cloud/spanner/commit"
|
19
|
+
require "google/cloud/spanner/commit_response"
|
19
20
|
require "google/cloud/spanner/batch_update"
|
20
21
|
|
21
22
|
module Google
|
@@ -484,6 +485,15 @@ module Google
|
|
484
485
|
# @param [String] transaction_id The identifier of previously-started
|
485
486
|
# transaction to be used instead of starting a new transaction.
|
486
487
|
# Optional.
|
488
|
+
# @param [Hash] commit_options A hash of commit options.
|
489
|
+
# e.g., return_commit_stats. Commit options are optional.
|
490
|
+
# The following options can be provided:
|
491
|
+
#
|
492
|
+
# * `:return_commit_stats` (Boolean) A boolean value. If `true`,
|
493
|
+
# then statistics related to the transaction will be included in
|
494
|
+
# {CommitResponse}. Default value is `false`
|
495
|
+
#
|
496
|
+
# transaction. Default it is `false`.
|
487
497
|
# @param [Hash] call_options A hash of values to specify the custom
|
488
498
|
# call options, e.g., timeout, retries, etc. Call options are
|
489
499
|
# optional. The following settings can be provided:
|
@@ -501,7 +511,8 @@ module Google
|
|
501
511
|
# @yield [commit] The block for mutating the data.
|
502
512
|
# @yieldparam [Google::Cloud::Spanner::Commit] commit The Commit object.
|
503
513
|
#
|
504
|
-
# @return [Time] The timestamp at which the operation
|
514
|
+
# @return [Time, CommitResponse] The timestamp at which the operation
|
515
|
+
# committed. If commit options are set it returns {CommitResponse}.
|
505
516
|
#
|
506
517
|
# @example
|
507
518
|
# require "google/cloud/spanner"
|
@@ -515,15 +526,33 @@ module Google
|
|
515
526
|
# c.insert "users", [{ id: 2, name: "Harvey", active: true }]
|
516
527
|
# end
|
517
528
|
#
|
518
|
-
|
529
|
+
# @example Get commit stats
|
530
|
+
# require "google/cloud/spanner"
|
531
|
+
#
|
532
|
+
# spanner = Google::Cloud::Spanner.new
|
533
|
+
#
|
534
|
+
# db = spanner.client "my-instance", "my-database"
|
535
|
+
#
|
536
|
+
# commit_options = { return_commit_stats: true }
|
537
|
+
# commit_resp = db.commit commit_options: commit_options do |c|
|
538
|
+
# c.update "users", [{ id: 1, name: "Charlie", active: false }]
|
539
|
+
# c.insert "users", [{ id: 2, name: "Harvey", active: true }]
|
540
|
+
# end
|
541
|
+
#
|
542
|
+
# puts commit_resp.timestamp
|
543
|
+
# puts commit_resp.stats.mutation_count
|
544
|
+
#
|
545
|
+
def commit transaction_id: nil, commit_options: nil, call_options: nil
|
519
546
|
ensure_service!
|
520
547
|
commit = Commit.new
|
521
548
|
yield commit
|
522
549
|
commit_resp = service.commit path, commit.mutations,
|
523
550
|
transaction_id: transaction_id,
|
551
|
+
commit_options: commit_options,
|
524
552
|
call_options: call_options
|
525
553
|
@last_updated_at = Time.now
|
526
|
-
|
554
|
+
resp = CommitResponse.from_grpc commit_resp
|
555
|
+
commit_options ? resp : resp.timestamp
|
527
556
|
end
|
528
557
|
|
529
558
|
##
|
@@ -552,6 +581,15 @@ module Google
|
|
552
581
|
#
|
553
582
|
# See [Data
|
554
583
|
# types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
|
584
|
+
#
|
585
|
+
# @param [Hash] commit_options A hash of commit options.
|
586
|
+
# e.g., return_commit_stats. Commit options are optional.
|
587
|
+
# The following options can be provided:
|
588
|
+
#
|
589
|
+
# * `:return_commit_stats` (Boolean) A boolean value. If `true`,
|
590
|
+
# then statistics related to the transaction will be included in
|
591
|
+
# {CommitResponse}. Default value is `false`
|
592
|
+
#
|
555
593
|
# @param [Hash] call_options A hash of values to specify the custom
|
556
594
|
# call options, e.g., timeout, retries, etc. Call options are
|
557
595
|
# optional. The following settings can be provided:
|
@@ -566,7 +604,8 @@ module Google
|
|
566
604
|
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
567
605
|
# trigger a retry.
|
568
606
|
#
|
569
|
-
# @return [Time] The timestamp at which the operation
|
607
|
+
# @return [Time, CommitResponse] The timestamp at which the operation
|
608
|
+
# committed. If commit options are set it returns {CommitResponse}.
|
570
609
|
#
|
571
610
|
# @example
|
572
611
|
# require "google/cloud/spanner"
|
@@ -578,8 +617,28 @@ module Google
|
|
578
617
|
# db.upsert "users", [{ id: 1, name: "Charlie", active: false },
|
579
618
|
# { id: 2, name: "Harvey", active: true }]
|
580
619
|
#
|
581
|
-
|
582
|
-
|
620
|
+
# @example Get commit stats
|
621
|
+
# require "google/cloud/spanner"
|
622
|
+
#
|
623
|
+
# spanner = Google::Cloud::Spanner.new
|
624
|
+
#
|
625
|
+
# db = spanner.client "my-instance", "my-database"
|
626
|
+
#
|
627
|
+
# records = [{ id: 1, name: "Charlie", active: false },
|
628
|
+
# { id: 2, name: "Harvey", active: true }]
|
629
|
+
# commit_options = { return_commit_stats: true }
|
630
|
+
# commit_resp = db.upsert "users", records, commit_options: commit_options
|
631
|
+
#
|
632
|
+
# puts commit_resp.timestamp
|
633
|
+
# puts commit_resp.stats.mutation_count
|
634
|
+
#
|
635
|
+
def upsert table, *rows, transaction_id: nil, commit_options: nil,
|
636
|
+
call_options: nil
|
637
|
+
opts = {
|
638
|
+
transaction_id: transaction_id,
|
639
|
+
commit_options: commit_options,
|
640
|
+
call_options: call_options
|
641
|
+
}
|
583
642
|
commit opts do |c|
|
584
643
|
c.upsert table, rows
|
585
644
|
end
|
@@ -611,6 +670,15 @@ module Google
|
|
611
670
|
#
|
612
671
|
# See [Data
|
613
672
|
# types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
|
673
|
+
#
|
674
|
+
# @param [Hash] commit_options A hash of commit options.
|
675
|
+
# e.g., return_commit_stats. Commit options are optional.
|
676
|
+
# The following options can be provided:
|
677
|
+
#
|
678
|
+
# * `:return_commit_stats` (Boolean) A boolean value. If `true`,
|
679
|
+
# then statistics related to the transaction will be included in
|
680
|
+
# {CommitResponse}. Default value is `false`
|
681
|
+
#
|
614
682
|
# @param [Hash] call_options A hash of values to specify the custom
|
615
683
|
# call options, e.g., timeout, retries, etc. Call options are
|
616
684
|
# optional. The following settings can be provided:
|
@@ -625,7 +693,8 @@ module Google
|
|
625
693
|
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
626
694
|
# trigger a retry.
|
627
695
|
#
|
628
|
-
# @return [Time] The timestamp at which the operation
|
696
|
+
# @return [Time, CommitResponse] The timestamp at which the operation
|
697
|
+
# committed. If commit options are set it returns {CommitResponse}.
|
629
698
|
#
|
630
699
|
# @example
|
631
700
|
# require "google/cloud/spanner"
|
@@ -637,8 +706,28 @@ module Google
|
|
637
706
|
# db.insert "users", [{ id: 1, name: "Charlie", active: false },
|
638
707
|
# { id: 2, name: "Harvey", active: true }]
|
639
708
|
#
|
640
|
-
|
641
|
-
|
709
|
+
# @example Get commit stats
|
710
|
+
# require "google/cloud/spanner"
|
711
|
+
#
|
712
|
+
# spanner = Google::Cloud::Spanner.new
|
713
|
+
#
|
714
|
+
# db = spanner.client "my-instance", "my-database"
|
715
|
+
#
|
716
|
+
# records = [{ id: 1, name: "Charlie", active: false },
|
717
|
+
# { id: 2, name: "Harvey", active: true }]
|
718
|
+
# commit_options = { return_commit_stats: true }
|
719
|
+
# commit_resp = db.insert "users", records, commit_options: commit_options
|
720
|
+
#
|
721
|
+
# puts commit_resp.timestamp
|
722
|
+
# puts commit_resp.stats.mutation_count
|
723
|
+
#
|
724
|
+
def insert table, *rows, transaction_id: nil, commit_options: nil,
|
725
|
+
call_options: nil
|
726
|
+
opts = {
|
727
|
+
transaction_id: transaction_id,
|
728
|
+
commit_options: commit_options,
|
729
|
+
call_options: call_options
|
730
|
+
}
|
642
731
|
commit opts do |c|
|
643
732
|
c.insert table, rows
|
644
733
|
end
|
@@ -669,6 +758,15 @@ module Google
|
|
669
758
|
#
|
670
759
|
# See [Data
|
671
760
|
# types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
|
761
|
+
#
|
762
|
+
# @param [Hash] commit_options A hash of commit options.
|
763
|
+
# e.g., return_commit_stats. Commit options are optional.
|
764
|
+
# The following options can be provided:
|
765
|
+
#
|
766
|
+
# * `:return_commit_stats` (Boolean) A boolean value. If `true`,
|
767
|
+
# then statistics related to the transaction will be included in
|
768
|
+
# {CommitResponse}. Default value is `false`
|
769
|
+
#
|
672
770
|
# @param [Hash] call_options A hash of values to specify the custom
|
673
771
|
# call options, e.g., timeout, retries, etc. Call options are
|
674
772
|
# optional. The following settings can be provided:
|
@@ -683,7 +781,8 @@ module Google
|
|
683
781
|
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
684
782
|
# trigger a retry.
|
685
783
|
#
|
686
|
-
# @return [Time] The timestamp at which the operation
|
784
|
+
# @return [Time, CommitResponse] The timestamp at which the operation
|
785
|
+
# committed. If commit options are set it returns {CommitResponse}.
|
687
786
|
#
|
688
787
|
# @example
|
689
788
|
# require "google/cloud/spanner"
|
@@ -695,8 +794,28 @@ module Google
|
|
695
794
|
# db.update "users", [{ id: 1, name: "Charlie", active: false },
|
696
795
|
# { id: 2, name: "Harvey", active: true }]
|
697
796
|
#
|
698
|
-
|
699
|
-
|
797
|
+
# @example Get commit stats
|
798
|
+
# require "google/cloud/spanner"
|
799
|
+
#
|
800
|
+
# spanner = Google::Cloud::Spanner.new
|
801
|
+
#
|
802
|
+
# db = spanner.client "my-instance", "my-database"
|
803
|
+
#
|
804
|
+
# records = [{ id: 1, name: "Charlie", active: false },
|
805
|
+
# { id: 2, name: "Harvey", active: true }]
|
806
|
+
# commit_options = { return_commit_stats: true }
|
807
|
+
# commit_resp = db.update "users", records, commit_options: commit_options
|
808
|
+
#
|
809
|
+
# puts commit_resp.timestamp
|
810
|
+
# puts commit_resp.stats.mutation_count
|
811
|
+
#
|
812
|
+
def update table, *rows, transaction_id: nil, commit_options: nil,
|
813
|
+
call_options: nil
|
814
|
+
opts = {
|
815
|
+
transaction_id: transaction_id,
|
816
|
+
commit_options: commit_options,
|
817
|
+
call_options: call_options
|
818
|
+
}
|
700
819
|
commit opts do |c|
|
701
820
|
c.update table, rows
|
702
821
|
end
|
@@ -729,6 +848,15 @@ module Google
|
|
729
848
|
#
|
730
849
|
# See [Data
|
731
850
|
# types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
|
851
|
+
#
|
852
|
+
# @param [Hash] commit_options A hash of commit options.
|
853
|
+
# e.g., return_commit_stats. Commit options are optional.
|
854
|
+
# The following options can be provided:
|
855
|
+
#
|
856
|
+
# * `:return_commit_stats` (Boolean) A boolean value. If `true`,
|
857
|
+
# then statistics related to the transaction will be included in
|
858
|
+
# {CommitResponse}. Default value is `false`.
|
859
|
+
#
|
732
860
|
# @param [Hash] call_options A hash of values to specify the custom
|
733
861
|
# call options, e.g., timeout, retries, etc. Call options are
|
734
862
|
# optional. The following settings can be provided:
|
@@ -743,7 +871,8 @@ module Google
|
|
743
871
|
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
744
872
|
# trigger a retry.
|
745
873
|
#
|
746
|
-
# @return [Time] The timestamp at which the operation
|
874
|
+
# @return [Time, CommitResponse] The timestamp at which the operation
|
875
|
+
# committed. If commit options are set it returns {CommitResponse}.
|
747
876
|
#
|
748
877
|
# @example
|
749
878
|
# require "google/cloud/spanner"
|
@@ -755,8 +884,28 @@ module Google
|
|
755
884
|
# db.replace "users", [{ id: 1, name: "Charlie", active: false },
|
756
885
|
# { id: 2, name: "Harvey", active: true }]
|
757
886
|
#
|
758
|
-
|
759
|
-
|
887
|
+
# @example Get commit stats
|
888
|
+
# require "google/cloud/spanner"
|
889
|
+
#
|
890
|
+
# spanner = Google::Cloud::Spanner.new
|
891
|
+
#
|
892
|
+
# db = spanner.client "my-instance", "my-database"
|
893
|
+
#
|
894
|
+
# records = [{ id: 1, name: "Charlie", active: false },
|
895
|
+
# { id: 2, name: "Harvey", active: true }]
|
896
|
+
# commit_options = { return_commit_stats: true }
|
897
|
+
# commit_resp = db.replace "users", records, commit_options: commit_options
|
898
|
+
#
|
899
|
+
# puts commit_resp.timestamp
|
900
|
+
# puts commit_resp.stats.mutation_count
|
901
|
+
#
|
902
|
+
def replace table, *rows, transaction_id: nil, commit_options: nil,
|
903
|
+
call_options: nil
|
904
|
+
opts = {
|
905
|
+
transaction_id: transaction_id,
|
906
|
+
commit_options: commit_options,
|
907
|
+
call_options: call_options
|
908
|
+
}
|
760
909
|
commit opts do |c|
|
761
910
|
c.replace table, rows
|
762
911
|
end
|
@@ -771,6 +920,14 @@ module Google
|
|
771
920
|
# @param [Object, Array<Object>] keys A single, or list of keys or key
|
772
921
|
# ranges to match returned data to. Values should have exactly as many
|
773
922
|
# elements as there are columns in the primary key.
|
923
|
+
# @param [Hash] commit_options A hash of commit options.
|
924
|
+
# e.g., return_commit_stats. Commit options are optional.
|
925
|
+
# The following options can be provided:
|
926
|
+
#
|
927
|
+
# * `:return_commit_stats` (Boolean) A boolean value. If `true`,
|
928
|
+
# then statistics related to the transaction will be included in
|
929
|
+
# {CommitResponse}. Default value is `false`
|
930
|
+
#
|
774
931
|
# @param [Hash] call_options A hash of values to specify the custom
|
775
932
|
# call options, e.g., timeout, retries, etc. Call options are
|
776
933
|
# optional. The following settings can be provided:
|
@@ -785,7 +942,8 @@ module Google
|
|
785
942
|
# * `:retry_codes` (`Array<String>`) - The error codes that should
|
786
943
|
# trigger a retry.
|
787
944
|
#
|
788
|
-
# @return [Time] The timestamp at which the operation
|
945
|
+
# @return [Time, CommitResponse] The timestamp at which the operation
|
946
|
+
# committed. If commit options are set it returns {CommitResponse}.
|
789
947
|
#
|
790
948
|
# @example
|
791
949
|
# require "google/cloud/spanner"
|
@@ -796,8 +954,26 @@ module Google
|
|
796
954
|
#
|
797
955
|
# db.delete "users", [1, 2, 3]
|
798
956
|
#
|
799
|
-
|
800
|
-
|
957
|
+
# @example Get commit stats
|
958
|
+
# require "google/cloud/spanner"
|
959
|
+
#
|
960
|
+
# spanner = Google::Cloud::Spanner.new
|
961
|
+
#
|
962
|
+
# db = spanner.client "my-instance", "my-database"
|
963
|
+
#
|
964
|
+
# commit_options = { return_commit_stats: true }
|
965
|
+
# commit_resp = db.delete "users", [1,2,3], commit_options: commit_options
|
966
|
+
#
|
967
|
+
# puts commit_resp.timestamp
|
968
|
+
# puts commit_resp.stats.mutation_count
|
969
|
+
#
|
970
|
+
def delete table, keys = [], transaction_id: nil, commit_options: nil,
|
971
|
+
call_options: nil
|
972
|
+
opts = {
|
973
|
+
transaction_id: transaction_id,
|
974
|
+
commit_options: commit_options,
|
975
|
+
call_options: call_options
|
976
|
+
}
|
801
977
|
commit opts do |c|
|
802
978
|
c.delete table, keys
|
803
979
|
end
|
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.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Moore
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-02-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: google-cloud-core
|
@@ -282,6 +282,8 @@ files:
|
|
282
282
|
- lib/google/cloud/spanner/client.rb
|
283
283
|
- lib/google/cloud/spanner/column_value.rb
|
284
284
|
- lib/google/cloud/spanner/commit.rb
|
285
|
+
- lib/google/cloud/spanner/commit_response.rb
|
286
|
+
- lib/google/cloud/spanner/commit_response/commit_stats.rb
|
285
287
|
- lib/google/cloud/spanner/convert.rb
|
286
288
|
- lib/google/cloud/spanner/credentials.rb
|
287
289
|
- lib/google/cloud/spanner/data.rb
|
@@ -329,7 +331,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
329
331
|
- !ruby/object:Gem::Version
|
330
332
|
version: '0'
|
331
333
|
requirements: []
|
332
|
-
rubygems_version: 3.
|
334
|
+
rubygems_version: 3.2.6
|
333
335
|
signing_key:
|
334
336
|
specification_version: 4
|
335
337
|
summary: API Client library for Google Cloud Spanner API
|