google-cloud-spanner 2.8.1 → 2.11.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.
@@ -236,6 +236,10 @@ module Google
236
236
  # Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
237
237
  # `:PRIORITY_HIGH`. If priority not set then default is
238
238
  # `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
239
+ # * `:tag` (String) A per-request tag which can be applied to
240
+ # queries or reads, used for statistics collection. Tag must be a
241
+ # valid identifier of the form: `[a-zA-Z][a-zA-Z0-9_\-]` between 2
242
+ # and 64 characters in length.
239
243
  # @param [Hash] call_options A hash of values to specify the custom
240
244
  # call options, e.g., timeout, retries, etc. Call options are
241
245
  # optional. The following settings can be provided:
@@ -403,6 +407,21 @@ module Google
403
407
  # puts "User #{row[:id]} is #{row[:name]}"
404
408
  # end
405
409
  #
410
+ # @example Query using tag for request query statistics collection.
411
+ # require "google/cloud/spanner"
412
+ #
413
+ # spanner = Google::Cloud::Spanner.new
414
+ #
415
+ # db = spanner.client "my-instance", "my-database"
416
+ #
417
+ # request_options = { tag: "Read-Users" }
418
+ # results = db.execute_query "SELECT * FROM users",
419
+ # request_options: request_options
420
+ #
421
+ # results.rows.each do |row|
422
+ # puts "User #{row[:id]} is #{row[:name]}"
423
+ # end
424
+ #
406
425
  def execute_query sql, params: nil, types: nil, single_use: nil,
407
426
  query_options: nil, request_options: nil,
408
427
  call_options: nil
@@ -410,7 +429,8 @@ module Google
410
429
  ensure_service!
411
430
 
412
431
  params, types = Convert.to_input_params_and_types params, types
413
-
432
+ request_options = Convert.to_request_options request_options,
433
+ tag_type: :request_tag
414
434
  single_use_tx = single_use_transaction single_use
415
435
  results = nil
416
436
  @pool.with_session do |session|
@@ -580,6 +600,10 @@ module Google
580
600
  # Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
581
601
  # `:PRIORITY_HIGH`. If priority not set then default is
582
602
  # `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
603
+ # * `:tag` (String) A per-request tag which can be applied to
604
+ # queries or reads, used for statistics collection. Tag must be a
605
+ # valid identifier of the form: `[a-zA-Z][a-zA-Z0-9_\-]` between 2
606
+ # and 64 characters in length.
583
607
  # @param [Hash] call_options A hash of values to specify the custom
584
608
  # call options, e.g., timeout, retries, etc. Call options are
585
609
  # optional. The following settings can be provided:
@@ -657,12 +681,27 @@ module Google
657
681
  # "UPDATE users SET friends = NULL WHERE active = @active",
658
682
  # params: { active: false }, request_options: request_options
659
683
  #
684
+ # @example Query using tag for request query statistics collection.
685
+ #
686
+ # require "google/cloud/spanner"
687
+ #
688
+ # spanner = Google::Cloud::Spanner.new
689
+ # db = spanner.client "my-instance", "my-database"
690
+ #
691
+ # request_options = { tag: "Update-Users" }
692
+ # row_count = db.execute_partition_update \
693
+ # "UPDATE users SET friends = NULL WHERE active = false",
694
+ # request_options: request_options
695
+ #
660
696
  def execute_partition_update sql, params: nil, types: nil,
661
697
  query_options: nil, request_options: nil,
662
698
  call_options: nil
663
699
  ensure_service!
664
700
 
665
701
  params, types = Convert.to_input_params_and_types params, types
702
+ request_options = Convert.to_request_options request_options,
703
+ tag_type: :request_tag
704
+
666
705
  results = nil
667
706
  @pool.with_session do |session|
668
707
  results = session.execute_query \
@@ -761,6 +800,10 @@ module Google
761
800
  # Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
762
801
  # `:PRIORITY_HIGH`. If priority not set then default is
763
802
  # `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
803
+ # * `:tag` (String) A per-request tag which can be applied to
804
+ # queries or reads, used for statistics collection. Tag must be a
805
+ # valid identifier of the form: `[a-zA-Z][a-zA-Z0-9_\-]` between 2
806
+ # and 64 characters in length.
764
807
  # @param [Hash] call_options A hash of values to specify the custom
765
808
  # call options, e.g., timeout, retries, etc. Call options are
766
809
  # optional. The following settings can be provided:
@@ -840,6 +883,22 @@ module Google
840
883
  # puts "User #{row[:id]} is #{row[:name]}"
841
884
  # end
842
885
  #
886
+ # @example Read using tag for read statistics collection.
887
+ #
888
+ # require "google/cloud/spanner"
889
+ #
890
+ # spanner = Google::Cloud::Spanner.new
891
+ #
892
+ # db = spanner.client "my-instance", "my-database"
893
+ #
894
+ # request_options = { tag: "Read-Users-All" }
895
+ # results = db.read "users", [:id, :name],
896
+ # request_options: request_options
897
+ #
898
+ # results.rows.each do |row|
899
+ # puts "User #{row[:id]} is #{row[:name]}"
900
+ # end
901
+ #
843
902
  def read table, columns, keys: nil, index: nil, limit: nil,
844
903
  single_use: nil, request_options: nil, call_options: nil
845
904
  validate_single_use_args! single_use
@@ -847,8 +906,10 @@ module Google
847
906
 
848
907
  columns = Array(columns).map(&:to_s)
849
908
  keys = Convert.to_key_set keys
850
-
851
909
  single_use_tx = single_use_transaction single_use
910
+ request_options = Convert.to_request_options request_options,
911
+ tag_type: :request_tag
912
+
852
913
  results = nil
853
914
  @pool.with_session do |session|
854
915
  results = session.read \
@@ -914,6 +975,9 @@ module Google
914
975
  # Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
915
976
  # `:PRIORITY_HIGH`. If priority not set then default is
916
977
  # `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
978
+ # * `:tag` (String) A tag used for statistics collection
979
+ # about transaction. A tag must be a valid identifier of the format:
980
+ # `[a-zA-Z][a-zA-Z0-9_\-]{0,49}`.
917
981
  #
918
982
  # @return [Time, CommitResponse] The timestamp at which the operation
919
983
  # committed. If commit options are set it returns {CommitResponse}.
@@ -954,7 +1018,23 @@ module Google
954
1018
  # db.upsert "users", [{ id: 1, name: "Charlie", active: false }],
955
1019
  # request_options: request_options
956
1020
  #
1021
+ # @example Upsert using tag for transaction statistics collection.
1022
+ #
1023
+ # require "google/cloud/spanner"
1024
+ #
1025
+ # spanner = Google::Cloud::Spanner.new
1026
+ #
1027
+ # db = spanner.client "my-instance", "my-database"
1028
+ #
1029
+ # request_options = { tag: "Bulk-Upsert" }
1030
+ # db.upsert "users", [{ id: 1, name: "Charlie", active: false },
1031
+ # { id: 2, name: "Harvey", active: true }],
1032
+ # request_options: request_options
1033
+ #
957
1034
  def upsert table, rows, commit_options: nil, request_options: nil
1035
+ request_options = Convert.to_request_options \
1036
+ request_options, tag_type: :transaction_tag
1037
+
958
1038
  @pool.with_session do |session|
959
1039
  session.upsert table, rows, commit_options: commit_options,
960
1040
  request_options: request_options
@@ -999,7 +1079,6 @@ module Google
999
1079
  #
1000
1080
  # See [Data
1001
1081
  # types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
1002
- #
1003
1082
  # @param [Hash] commit_options A hash of commit options.
1004
1083
  # e.g., return_commit_stats. Commit options are optional.
1005
1084
  # The following options can be provided:
@@ -1015,6 +1094,9 @@ module Google
1015
1094
  # Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
1016
1095
  # `:PRIORITY_HIGH`. If priority not set then default is
1017
1096
  # `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
1097
+ # * `:tag` (String) A tag used for statistics collection
1098
+ # about transaction. A tag must be a valid identifier of the
1099
+ # format: `[a-zA-Z][a-zA-Z0-9_\-]{0,49}`.
1018
1100
  #
1019
1101
  # @return [Time, CommitResponse] The timestamp at which the operation
1020
1102
  # committed. If commit options are set it returns {CommitResponse}.
@@ -1055,7 +1137,23 @@ module Google
1055
1137
  # db.insert "users", [{ id: 1, name: "Charlie", active: false }],
1056
1138
  # request_options: request_options
1057
1139
  #
1140
+ # @example Insert using tag for transaction statistics collection.
1141
+ #
1142
+ # require "google/cloud/spanner"
1143
+ #
1144
+ # spanner = Google::Cloud::Spanner.new
1145
+ #
1146
+ # db = spanner.client "my-instance", "my-database"
1147
+ #
1148
+ # request_options = { tag: "BulkInsert-Users" }
1149
+ # db.insert "users", [{ id: 1, name: "Charlie", active: false },
1150
+ # { id: 2, name: "Harvey", active: true }],
1151
+ # request_options: request_options
1152
+ #
1058
1153
  def insert table, rows, commit_options: nil, request_options: nil
1154
+ request_options = Convert.to_request_options \
1155
+ request_options, tag_type: :transaction_tag
1156
+
1059
1157
  @pool.with_session do |session|
1060
1158
  session.insert table, rows, commit_options: commit_options,
1061
1159
  request_options: request_options
@@ -1099,7 +1197,6 @@ module Google
1099
1197
  #
1100
1198
  # See [Data
1101
1199
  # types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
1102
- #
1103
1200
  # @param [Hash] commit_options A hash of commit options.
1104
1201
  # e.g., return_commit_stats. Commit options are optional.
1105
1202
  # The following options can be provided:
@@ -1115,6 +1212,9 @@ module Google
1115
1212
  # Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
1116
1213
  # `:PRIORITY_HIGH`. If priority not set then default is
1117
1214
  # `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
1215
+ # * `:tag` (String) A tag used for statistics collection
1216
+ # about transaction. A tag must be a valid identifier of the
1217
+ # format: `[a-zA-Z][a-zA-Z0-9_\-]{0,49}`.
1118
1218
  #
1119
1219
  # @return [Time, CommitResponse] The timestamp at which the operation
1120
1220
  # committed. If commit options are set it returns {CommitResponse}.
@@ -1155,7 +1255,22 @@ module Google
1155
1255
  # db.update "users", [{ id: 1, name: "Charlie", active: false }],
1156
1256
  # request_options: request_options
1157
1257
  #
1258
+ # @example Updte using tag for transaction statistics collection.
1259
+ # require "google/cloud/spanner"
1260
+ #
1261
+ # spanner = Google::Cloud::Spanner.new
1262
+ #
1263
+ # db = spanner.client "my-instance", "my-database"
1264
+ #
1265
+ # request_options = { tag: "BulkUpdate-Users" }
1266
+ # db.update "users", [{ id: 1, name: "Charlie", active: false },
1267
+ # { id: 2, name: "Harvey", active: true }],
1268
+ # request_options: request_options
1269
+ #
1158
1270
  def update table, rows, commit_options: nil, request_options: nil
1271
+ request_options = Convert.to_request_options \
1272
+ request_options, tag_type: :transaction_tag
1273
+
1159
1274
  @pool.with_session do |session|
1160
1275
  session.update table, rows, commit_options: commit_options,
1161
1276
  request_options: request_options
@@ -1201,7 +1316,6 @@ module Google
1201
1316
  #
1202
1317
  # See [Data
1203
1318
  # types](https://cloud.google.com/spanner/docs/data-definition-language#data_types).
1204
- #
1205
1319
  # @param [Hash] commit_options A hash of commit options.
1206
1320
  # e.g., return_commit_stats. Commit options are optional.
1207
1321
  # The following options can be provided:
@@ -1217,6 +1331,9 @@ module Google
1217
1331
  # Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
1218
1332
  # `:PRIORITY_HIGH`. If priority not set then default is
1219
1333
  # `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
1334
+ # * `:tag` (String) A tag used for statistics collection
1335
+ # about transaction. A tag must be a valid identifier of the
1336
+ # format: `[a-zA-Z][a-zA-Z0-9_\-]{0,49}`.
1220
1337
  #
1221
1338
  # @return [Time, CommitResponse] The timestamp at which the operation
1222
1339
  # committed. If commit options are set it returns {CommitResponse}.
@@ -1257,6 +1374,18 @@ module Google
1257
1374
  # db.replace "users", [{ id: 1, name: "Charlie", active: false }],
1258
1375
  # request_options: request_options
1259
1376
  #
1377
+ # @example Replace using tag for transaction statistics collection.
1378
+ # require "google/cloud/spanner"
1379
+ #
1380
+ # spanner = Google::Cloud::Spanner.new
1381
+ #
1382
+ # db = spanner.client "my-instance", "my-database"
1383
+ #
1384
+ # request_options = { tag: "BulkReplace-Users" }
1385
+ # db.replace "users", [{ id: 1, name: "Charlie", active: false },
1386
+ # { id: 2, name: "Harvey", active: true }],
1387
+ # request_options: request_options
1388
+ #
1260
1389
  def replace table, rows, commit_options: nil, request_options: nil
1261
1390
  @pool.with_session do |session|
1262
1391
  session.replace table, rows, commit_options: commit_options,
@@ -1299,6 +1428,9 @@ module Google
1299
1428
  # Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
1300
1429
  # `:PRIORITY_HIGH`. If priority not set then default is
1301
1430
  # `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
1431
+ # * `:tag` (String) A tag used for statistics collection
1432
+ # about transaction. A tag must be a valid identifier of the
1433
+ # format: `[a-zA-Z][a-zA-Z0-9_\-]{0,49}`.
1302
1434
  # @param [Hash] call_options A hash of values to specify the custom
1303
1435
  # call options, e.g., timeout, retries, etc. Call options are
1304
1436
  # optional. The following settings can be provided:
@@ -1348,8 +1480,21 @@ module Google
1348
1480
  # request_options = { priority: :PRIORITY_MEDIUM }
1349
1481
  # db.delete "users", [1, 2, 3], request_options: request_options
1350
1482
  #
1483
+ # @example Delete using tag for transaction statistics collection.
1484
+ # require "google/cloud/spanner"
1485
+ #
1486
+ # spanner = Google::Cloud::Spanner.new
1487
+ #
1488
+ # db = spanner.client "my-instance", "my-database"
1489
+ #
1490
+ # request_options = { tag: "BulkDelete-Users" }
1491
+ # db.delete "users", [1, 2, 3], request_options: request_options
1492
+ #
1351
1493
  def delete table, keys = [], commit_options: nil, request_options: nil,
1352
1494
  call_options: nil
1495
+ request_options = Convert.to_request_options \
1496
+ request_options, tag_type: :transaction_tag
1497
+
1353
1498
  @pool.with_session do |session|
1354
1499
  session.delete table, keys, commit_options: commit_options,
1355
1500
  request_options: request_options,
@@ -1387,6 +1532,9 @@ module Google
1387
1532
  # Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
1388
1533
  # `:PRIORITY_HIGH`. If priority not set then default is
1389
1534
  # `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
1535
+ # * `:tag` (String) A tag used for statistics collection
1536
+ # about transaction. A tag must be a valid identifier of the
1537
+ # format: `[a-zA-Z][a-zA-Z0-9_\-]{0,49}`.
1390
1538
  # @param [Hash] call_options A hash of values to specify the custom
1391
1539
  # call options, e.g., timeout, retries, etc. Call options are
1392
1540
  # optional. The following settings can be provided:
@@ -1447,10 +1595,26 @@ module Google
1447
1595
  # c.insert "users", [{ id: 2, name: "Harvey", active: true }]
1448
1596
  # end
1449
1597
  #
1598
+ # @example Commit using tag for transaction statistics collection.
1599
+ # require "google/cloud/spanner"
1600
+ #
1601
+ # spanner = Google::Cloud::Spanner.new
1602
+ #
1603
+ # db = spanner.client "my-instance", "my-database"
1604
+ #
1605
+ # request_options = { tag: "BulkManipulate-Users" }
1606
+ # db.commit request_options: request_options do |c|
1607
+ # c.update "users", [{ id: 1, name: "Charlie", active: false }]
1608
+ # c.insert "users", [{ id: 2, name: "Harvey", active: true }]
1609
+ # end
1610
+ #
1450
1611
  def commit commit_options: nil, request_options: nil,
1451
1612
  call_options: nil, &block
1452
1613
  raise ArgumentError, "Must provide a block" unless block_given?
1453
1614
 
1615
+ request_options = Convert.to_request_options \
1616
+ request_options, tag_type: :transaction_tag
1617
+
1454
1618
  @pool.with_session do |session|
1455
1619
  session.commit(
1456
1620
  commit_options: commit_options, request_options: request_options,
@@ -1494,6 +1658,11 @@ module Google
1494
1658
  # Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
1495
1659
  # `:PRIORITY_HIGH`. If priority not set then default is
1496
1660
  # `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
1661
+ # * `:tag` (String)A tag used for statistics collection
1662
+ # about transaction. The value of a transaction tag should be the
1663
+ # same for all requests belonging to the same transaction. A tag must
1664
+ # be a valid identifier of the format: `[a-zA-Z][a-zA-Z0-9_\-]{0,49}`
1665
+ #
1497
1666
  # @param [Hash] call_options A hash of values to specify the custom
1498
1667
  # call options, e.g., timeout, retries, etc. Call options are
1499
1668
  # optional. The following settings can be provided:
@@ -1585,6 +1754,30 @@ module Google
1585
1754
  # request_options: request_options
1586
1755
  # end
1587
1756
  #
1757
+ # @example Tags for request and transaction statistics collection.
1758
+ #
1759
+ # require "google/cloud/spanner"
1760
+ #
1761
+ # spanner = Google::Cloud::Spanner.new
1762
+ # db = spanner.client "my-instance", "my-database"
1763
+ #
1764
+ # # Transaction tag will be set to "Users-Txn"
1765
+ # db.transaction request_options: { tag: "Users-Txn" } do |tx|
1766
+ # # The transaction tag set as "Users-Txn"
1767
+ # # The request tag set as "Users-Txn-1"
1768
+ # request_options = { tag: "Users-Txn-1" }
1769
+ # results = tx.execute_query "SELECT * FROM users",
1770
+ # request_options: request_options
1771
+ #
1772
+ # results.rows.each do |row|
1773
+ # puts "User #{row[:id]} is #{row[:name]}"
1774
+ # end
1775
+ #
1776
+ # # The transaction tag set as "Users-Txn"
1777
+ # tx.update "users", [{ id: 1, name: "Charlie", active: false }]
1778
+ # tx.insert "users", [{ id: 2, name: "Harvey", active: true }]
1779
+ # end
1780
+ #
1588
1781
  def transaction deadline: 120, commit_options: nil,
1589
1782
  request_options: nil, call_options: nil
1590
1783
  ensure_service!
@@ -1596,39 +1789,48 @@ module Google
1596
1789
  backoff = 1.0
1597
1790
  start_time = current_time
1598
1791
 
1792
+ request_options = Convert.to_request_options \
1793
+ request_options, tag_type: :transaction_tag
1794
+
1599
1795
  @pool.with_transaction do |tx|
1600
- Thread.current[:transaction_id] = tx.transaction_id
1601
- yield tx
1602
- commit_resp = @project.service.commit \
1603
- tx.session.path, tx.mutations,
1604
- transaction_id: tx.transaction_id,
1605
- commit_options: commit_options,
1606
- request_options: request_options,
1607
- call_options: call_options
1608
- resp = CommitResponse.from_grpc commit_resp
1609
- commit_options ? resp : resp.timestamp
1610
- rescue GRPC::Aborted, Google::Cloud::AbortedError => e
1611
- # Re-raise if deadline has passed
1612
- if current_time - start_time > deadline
1613
- if e.is_a? GRPC::BadStatus
1614
- e = Google::Cloud::Error.from_error e
1796
+ if request_options
1797
+ tx.transaction_tag = request_options[:transaction_tag]
1798
+ end
1799
+
1800
+ begin
1801
+ Thread.current[:transaction_id] = tx.transaction_id
1802
+ yield tx
1803
+ commit_resp = @project.service.commit \
1804
+ tx.session.path, tx.mutations,
1805
+ transaction_id: tx.transaction_id,
1806
+ commit_options: commit_options,
1807
+ request_options: request_options,
1808
+ call_options: call_options
1809
+ resp = CommitResponse.from_grpc commit_resp
1810
+ commit_options ? resp : resp.timestamp
1811
+ rescue GRPC::Aborted, Google::Cloud::AbortedError => e
1812
+ # Re-raise if deadline has passed
1813
+ if current_time - start_time > deadline
1814
+ if e.is_a? GRPC::BadStatus
1815
+ e = Google::Cloud::Error.from_error e
1816
+ end
1817
+ raise e
1615
1818
  end
1819
+ # Sleep the amount from RetryDelay, or incremental backoff
1820
+ sleep(delay_from_aborted(e) || backoff *= 1.3)
1821
+ # Create new transaction on the session and retry the block
1822
+ tx = tx.session.create_transaction
1823
+ retry
1824
+ rescue StandardError => e
1825
+ # Rollback transaction when handling unexpected error
1826
+ tx.session.rollback tx.transaction_id
1827
+ # Return nil if raised with rollback.
1828
+ return nil if e.is_a? Rollback
1829
+ # Re-raise error.
1616
1830
  raise e
1831
+ ensure
1832
+ Thread.current[:transaction_id] = nil
1617
1833
  end
1618
- # Sleep the amount from RetryDelay, or incremental backoff
1619
- sleep(delay_from_aborted(e) || backoff *= 1.3)
1620
- # Create new transaction on the session and retry the block
1621
- tx = tx.session.create_transaction
1622
- retry
1623
- rescue StandardError => e
1624
- # Rollback transaction when handling unexpected error
1625
- tx.session.rollback tx.transaction_id
1626
- # Return nil if raised with rollback.
1627
- return nil if e.is_a? Rollback
1628
- # Re-raise error.
1629
- raise e
1630
- ensure
1631
- Thread.current[:transaction_id] = nil
1632
1834
  end
1633
1835
  end
1634
1836
 
@@ -99,8 +99,7 @@ module Google
99
99
  if field.is_a? Fields
100
100
  field.struct(obj).to_grpc_value
101
101
  else
102
- raise ArgumentError,
103
- "A hash value cannot be set to type #{field}."
102
+ Google::Protobuf::Value.new string_value: obj.to_json
104
103
  end
105
104
  else
106
105
  if obj.respond_to?(:read) && obj.respond_to?(:rewind)
@@ -223,6 +222,8 @@ module Google
223
222
  Data.from_grpc value.list_value.values, type.struct_type.fields
224
223
  when :NUMERIC
225
224
  BigDecimal value.string_value
225
+ when :JSON
226
+ JSON.parse value.string_value
226
227
  end
227
228
  end
228
229
 
@@ -324,6 +325,25 @@ module Google
324
325
 
325
326
  [input_params, input_param_types]
326
327
  end
328
+
329
+ ##
330
+ # Build request options by replacing tag to respecitve statistics
331
+ # collection tag type.
332
+ #
333
+ # @param [Hash] options Common request options.
334
+ # * `:tag` (String) A tag used for statistics collection.
335
+ #
336
+ # @param [Symbol] tag_type Request tag type.
337
+ # Possible values are `request_tag`, `transaction_tag`
338
+ # @return [Hash, nil]
339
+ #
340
+ def to_request_options options, tag_type: nil
341
+ return unless options
342
+
343
+ return options unless options.key? :tag
344
+
345
+ options.transform_keys { |k| k == :tag ? tag_type : k }
346
+ end
327
347
  end
328
348
 
329
349
  # rubocop:enable all
@@ -12,11 +12,16 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ # DO NOT EDIT: Unless you're fixing a P0/P1 and/or a security issue. This class
16
+ # is frozen to all new features from `google-cloud-spanner/v2.11.0` onwards.
17
+
15
18
 
16
19
  module Google
17
20
  module Cloud
18
21
  module Spanner
19
22
  class Database
23
+ # @deprecated Use
24
+ # {Google::Cloud::Spanner::Admin::Database::V1::BackupInfo} instead.
20
25
  class BackupInfo
21
26
  ##
22
27
  # @private Creates a new Database::BackupInfo instance.
@@ -12,6 +12,9 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ # DO NOT EDIT: Unless you're fixing a P0/P1 and/or a security issue. This class
16
+ # is frozen to all new features from `google-cloud-spanner/v2.11.0` onwards.
17
+
15
18
 
16
19
  require "delegate"
17
20
 
@@ -26,6 +29,10 @@ module Google
26
29
  # List is a special case Array with additional values for database
27
30
  # operations.
28
31
  #
32
+ # @deprecated Use the result of
33
+ # {Google::Cloud::Spanner::Admin::Database#database_admin Client#list_database_operations}
34
+ # instead.
35
+ #
29
36
  class List < DelegateClass(::Array)
30
37
  # @private
31
38
  # The gRPC Service object.
@@ -12,6 +12,9 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ # DO NOT EDIT: Unless you're fixing a P0/P1 and/or a security issue. This class
16
+ # is frozen to all new features from `google-cloud-spanner/v2.11.0` onwards.
17
+
15
18
 
16
19
  require "google/cloud/spanner/status"
17
20
  require "google/cloud/spanner/database/job/list"
@@ -32,6 +35,10 @@ module Google
32
35
  # @see https://cloud.google.com/spanner/reference/rpc/google.longrunning#google.longrunning.Operation
33
36
  # Long-running Operation
34
37
  #
38
+ # @deprecated Use the long-running operation returned by
39
+ # {Google::Cloud::Spanner::Admin::Database#database_admin Client#create_database}
40
+ # instead.
41
+ #
35
42
  # @example
36
43
  # require "google/cloud/spanner"
37
44
  #
@@ -12,6 +12,9 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ # DO NOT EDIT: Unless you're fixing a P0/P1 and/or a security issue. This class
16
+ # is frozen to all new features from `google-cloud-spanner/v2.11.0` onwards.
17
+
15
18
 
16
19
  require "delegate"
17
20
 
@@ -22,6 +25,10 @@ module Google
22
25
  ##
23
26
  # Database::List is a special case Array with additional
24
27
  # values.
28
+ #
29
+ # @deprecated Use the result of
30
+ # {Google::Cloud::Spanner::Admin::Database#database_admin Client#list_databases}
31
+ # instead.
25
32
  class List < DelegateClass(::Array)
26
33
  ##
27
34
  # If not empty, indicates that there are more records that match
@@ -12,6 +12,9 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ # DO NOT EDIT: Unless you're fixing a P0/P1 and/or a security issue. This class
16
+ # is frozen to all new features from `google-cloud-spanner/v2.11.0` onwards.
17
+
15
18
 
16
19
  require "google/cloud/spanner/database/backup_info"
17
20
 
@@ -19,6 +22,8 @@ module Google
19
22
  module Cloud
20
23
  module Spanner
21
24
  class Database
25
+ # @deprecated Use
26
+ # {Google::Cloud::Spanner::Admin::Database::V1::RestoreInfo} instead.
22
27
  class RestoreInfo
23
28
  ##
24
29
  # @private Creates a new Database::RestoreInfo instance.
@@ -12,6 +12,9 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ # DO NOT EDIT: Unless you're fixing a P0/P1 and/or a security issue. This class
16
+ # is frozen to all new features from `google-cloud-spanner/v2.11.0` onwards.
17
+
15
18
 
16
19
  require "google/cloud/spanner/database/job"
17
20
  require "google/cloud/spanner/database/list"
@@ -25,6 +28,13 @@ module Google
25
28
  ##
26
29
  # # Database
27
30
  #
31
+ # NOTE: From `google-cloud-spanner/v2.11.0` onwards, new features for
32
+ # mananging databases will only be available through the
33
+ # [google-cloud-spanner-admin-database-v1](https://github.com/googleapis/google-cloud-ruby/tree/master/google-cloud-spanner-admin-database-v1)
34
+ # client. See the
35
+ # [README](https://github.com/googleapis/google-cloud-ruby/tree/master/google-cloud-spanner#google-cloud-spanner)
36
+ # for further details.
37
+ #
28
38
  # Represents a Cloud Spanner database. To use Cloud Spanner's read and
29
39
  # write operations, you must first create a database. A database belongs
30
40
  # to a {Instance} and contains tables and indexes. You may create multiple
@@ -38,6 +48,9 @@ module Google
38
48
  # of {Google::Cloud::Spanner::Client}. See
39
49
  # {Google::Cloud::Spanner::Project#client}.
40
50
  #
51
+ # @deprecated Use
52
+ # {Google::Cloud::Spanner::Admin::Database#database_admin} instead.
53
+ #
41
54
  # @example
42
55
  # require "google/cloud"
43
56
  #
@@ -12,6 +12,9 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ # DO NOT EDIT: Unless you're fixing a P0/P1 and/or a security issue. This class
16
+ # is frozen to all new features from `google-cloud-spanner/v2.11.0` onwards.
17
+
15
18
 
16
19
  require "delegate"
17
20
 
@@ -23,6 +26,10 @@ module Google
23
26
  ##
24
27
  # Instance::Config::List is a special case Array with additional
25
28
  # values.
29
+ #
30
+ # @deprecated Use the result of
31
+ # {Google::Cloud::Spanner::Admin::Instance#instance_admin Client#list_instance_configs}
32
+ # instead.
26
33
  class List < DelegateClass(::Array)
27
34
  ##
28
35
  # If not empty, indicates that there are more records that match