google-cloud-spanner 2.3.0 → 2.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +64 -0
  3. data/CONTRIBUTING.md +1 -1
  4. data/LOGGING.md +1 -1
  5. data/OVERVIEW.md +1 -1
  6. data/lib/google-cloud-spanner.rb +2 -0
  7. data/lib/google/cloud/spanner/backup.rb +75 -4
  8. data/lib/google/cloud/spanner/backup/job.rb +8 -8
  9. data/lib/google/cloud/spanner/backup/job/list.rb +2 -2
  10. data/lib/google/cloud/spanner/backup/list.rb +2 -2
  11. data/lib/google/cloud/spanner/batch_snapshot.rb +11 -4
  12. data/lib/google/cloud/spanner/batch_update.rb +3 -1
  13. data/lib/google/cloud/spanner/client.rb +315 -83
  14. data/lib/google/cloud/spanner/commit.rb +4 -0
  15. data/lib/google/cloud/spanner/data.rb +4 -5
  16. data/lib/google/cloud/spanner/database.rb +111 -3
  17. data/lib/google/cloud/spanner/database/backup_info.rb +12 -3
  18. data/lib/google/cloud/spanner/database/job/list.rb +2 -2
  19. data/lib/google/cloud/spanner/database/list.rb +4 -4
  20. data/lib/google/cloud/spanner/fields.rb +5 -3
  21. data/lib/google/cloud/spanner/instance.rb +91 -3
  22. data/lib/google/cloud/spanner/instance/config/list.rb +4 -4
  23. data/lib/google/cloud/spanner/instance/list.rb +4 -4
  24. data/lib/google/cloud/spanner/partition.rb +4 -2
  25. data/lib/google/cloud/spanner/policy.rb +3 -2
  26. data/lib/google/cloud/spanner/pool.rb +10 -10
  27. data/lib/google/cloud/spanner/project.rb +65 -5
  28. data/lib/google/cloud/spanner/results.rb +13 -9
  29. data/lib/google/cloud/spanner/service.rb +44 -24
  30. data/lib/google/cloud/spanner/session.rb +38 -15
  31. data/lib/google/cloud/spanner/snapshot.rb +10 -2
  32. data/lib/google/cloud/spanner/status.rb +4 -1
  33. data/lib/google/cloud/spanner/transaction.rb +61 -6
  34. data/lib/google/cloud/spanner/version.rb +1 -1
  35. metadata +10 -10
@@ -116,6 +116,7 @@ module Google
116
116
  # | `BOOL` | `true`/`false` | |
117
117
  # | `INT64` | `Integer` | |
118
118
  # | `FLOAT64` | `Float` | |
119
+ # | `NUMERIC` | `BigDecimal` | |
119
120
  # | `STRING` | `String` | |
120
121
  # | `DATE` | `Date` | |
121
122
  # | `TIMESTAMP` | `Time`, `DateTime` | |
@@ -141,6 +142,7 @@ module Google
141
142
  # * `:BYTES`
142
143
  # * `:DATE`
143
144
  # * `:FLOAT64`
145
+ # * `:NUMERIC`
144
146
  # * `:INT64`
145
147
  # * `:STRING`
146
148
  # * `:TIMESTAMP`
@@ -163,6 +165,8 @@ module Google
163
165
  # * `:optimizer_version` (String) The version of optimizer to use.
164
166
  # Empty to use database default. "latest" to use the latest
165
167
  # available optimizer version.
168
+ # * `:optimizer_statistics_package` (String) Statistics package to
169
+ # use. Empty to use the database default.
166
170
  # @param [Hash] call_options A hash of values to specify the custom
167
171
  # call options, e.g., timeout, retries, etc. Call options are
168
172
  # optional. The following settings can be provided:
@@ -283,7 +287,10 @@ module Google
283
287
  # db = spanner.client "my-instance", "my-database"
284
288
  #
285
289
  # results = db.execute_query \
286
- # "SELECT * FROM users", query_options: { optimizer_version: "1" }
290
+ # "SELECT * FROM users", query_options: {
291
+ # optimizer_version: "1",
292
+ # optimizer_statistics_package: "auto_20191128_14_47_22UTC"
293
+ # }
287
294
  #
288
295
  # results.rows.each do |row|
289
296
  # puts "User #{row[:id]} is #{row[:name]}"
@@ -314,7 +321,7 @@ module Google
314
321
  #
315
322
  def execute_query sql, params: nil, types: nil, transaction: nil,
316
323
  partition_token: nil, seqno: nil, query_options: nil,
317
- call_options: nil
324
+ request_options: nil, call_options: nil
318
325
  ensure_service!
319
326
  if query_options.nil?
320
327
  query_options = @query_options
@@ -328,6 +335,7 @@ module Google
328
335
  partition_token: partition_token,
329
336
  seqno: seqno,
330
337
  query_options: query_options,
338
+ request_options: request_options,
331
339
  call_options: call_options
332
340
  @last_updated_at = Time.now
333
341
  results
@@ -369,7 +377,8 @@ module Google
369
377
  # @return [Array<Integer>] A list with the exact number of rows that
370
378
  # were modified for each DML statement.
371
379
  #
372
- def batch_update transaction, seqno, call_options: nil
380
+ def batch_update transaction, seqno, request_options: nil,
381
+ call_options: nil
373
382
  ensure_service!
374
383
 
375
384
  raise ArgumentError, "block is required" unless block_given?
@@ -379,6 +388,7 @@ module Google
379
388
 
380
389
  results = service.execute_batch_dml path, transaction,
381
390
  batch.statements, seqno,
391
+ request_options: request_options,
382
392
  call_options: call_options
383
393
  @last_updated_at = Time.now
384
394
  results
@@ -434,13 +444,15 @@ module Google
434
444
  # end
435
445
  #
436
446
  def read table, columns, keys: nil, index: nil, limit: nil,
437
- transaction: nil, partition_token: nil, call_options: nil
447
+ transaction: nil, partition_token: nil, request_options: nil,
448
+ call_options: nil
438
449
  ensure_service!
439
450
 
440
451
  results = Results.read service, path, table, columns,
441
452
  keys: keys, index: index, limit: limit,
442
453
  transaction: transaction,
443
454
  partition_token: partition_token,
455
+ request_options: request_options,
444
456
  call_options: call_options
445
457
  @last_updated_at = Time.now
446
458
  results
@@ -542,13 +554,15 @@ module Google
542
554
  # puts commit_resp.timestamp
543
555
  # puts commit_resp.stats.mutation_count
544
556
  #
545
- def commit transaction_id: nil, commit_options: nil, call_options: nil
557
+ def commit transaction_id: nil, commit_options: nil,
558
+ request_options: nil, call_options: nil
546
559
  ensure_service!
547
560
  commit = Commit.new
548
561
  yield commit
549
562
  commit_resp = service.commit path, commit.mutations,
550
563
  transaction_id: transaction_id,
551
564
  commit_options: commit_options,
565
+ request_options: request_options,
552
566
  call_options: call_options
553
567
  @last_updated_at = Time.now
554
568
  resp = CommitResponse.from_grpc commit_resp
@@ -573,6 +587,7 @@ module Google
573
587
  # | `BOOL` | `true`/`false` | |
574
588
  # | `INT64` | `Integer` | |
575
589
  # | `FLOAT64` | `Float` | |
590
+ # | `NUMERIC` | `BigDecimal` | |
576
591
  # | `STRING` | `String` | |
577
592
  # | `DATE` | `Date` | |
578
593
  # | `TIMESTAMP` | `Time`, `DateTime` | |
@@ -633,13 +648,14 @@ module Google
633
648
  # puts commit_resp.stats.mutation_count
634
649
  #
635
650
  def upsert table, *rows, transaction_id: nil, commit_options: nil,
636
- call_options: nil
651
+ request_options: nil, call_options: nil
637
652
  opts = {
638
653
  transaction_id: transaction_id,
639
654
  commit_options: commit_options,
655
+ request_options: request_options,
640
656
  call_options: call_options
641
657
  }
642
- commit opts do |c|
658
+ commit(**opts) do |c|
643
659
  c.upsert table, rows
644
660
  end
645
661
  end
@@ -662,6 +678,7 @@ module Google
662
678
  # | `BOOL` | `true`/`false` | |
663
679
  # | `INT64` | `Integer` | |
664
680
  # | `FLOAT64` | `Float` | |
681
+ # | `NUMERIC` | `BigDecimal` | |
665
682
  # | `STRING` | `String` | |
666
683
  # | `DATE` | `Date` | |
667
684
  # | `TIMESTAMP` | `Time`, `DateTime` | |
@@ -722,13 +739,14 @@ module Google
722
739
  # puts commit_resp.stats.mutation_count
723
740
  #
724
741
  def insert table, *rows, transaction_id: nil, commit_options: nil,
725
- call_options: nil
742
+ request_options: nil, call_options: nil
726
743
  opts = {
727
744
  transaction_id: transaction_id,
728
745
  commit_options: commit_options,
746
+ request_options: request_options,
729
747
  call_options: call_options
730
748
  }
731
- commit opts do |c|
749
+ commit(**opts) do |c|
732
750
  c.insert table, rows
733
751
  end
734
752
  end
@@ -750,6 +768,7 @@ module Google
750
768
  # | `BOOL` | `true`/`false` | |
751
769
  # | `INT64` | `Integer` | |
752
770
  # | `FLOAT64` | `Float` | |
771
+ # | `NUMERIC` | `BigDecimal` | |
753
772
  # | `STRING` | `String` | |
754
773
  # | `DATE` | `Date` | |
755
774
  # | `TIMESTAMP` | `Time`, `DateTime` | |
@@ -810,13 +829,14 @@ module Google
810
829
  # puts commit_resp.stats.mutation_count
811
830
  #
812
831
  def update table, *rows, transaction_id: nil, commit_options: nil,
813
- call_options: nil
832
+ request_options: nil, call_options: nil
814
833
  opts = {
815
834
  transaction_id: transaction_id,
816
835
  commit_options: commit_options,
836
+ request_options: request_options,
817
837
  call_options: call_options
818
838
  }
819
- commit opts do |c|
839
+ commit(**opts) do |c|
820
840
  c.update table, rows
821
841
  end
822
842
  end
@@ -840,6 +860,7 @@ module Google
840
860
  # | `BOOL` | `true`/`false` | |
841
861
  # | `INT64` | `Integer` | |
842
862
  # | `FLOAT64` | `Float` | |
863
+ # | `NUMERIC` | `BigDecimal` | |
843
864
  # | `STRING` | `String` | |
844
865
  # | `DATE` | `Date` | |
845
866
  # | `TIMESTAMP` | `Time`, `DateTime` | |
@@ -900,13 +921,14 @@ module Google
900
921
  # puts commit_resp.stats.mutation_count
901
922
  #
902
923
  def replace table, *rows, transaction_id: nil, commit_options: nil,
903
- call_options: nil
924
+ request_options: nil, call_options: nil
904
925
  opts = {
905
926
  transaction_id: transaction_id,
906
927
  commit_options: commit_options,
928
+ request_options: request_options,
907
929
  call_options: call_options
908
930
  }
909
- commit opts do |c|
931
+ commit(**opts) do |c|
910
932
  c.replace table, rows
911
933
  end
912
934
  end
@@ -968,13 +990,14 @@ module Google
968
990
  # puts commit_resp.stats.mutation_count
969
991
  #
970
992
  def delete table, keys = [], transaction_id: nil, commit_options: nil,
971
- call_options: nil
993
+ request_options: nil, call_options: nil
972
994
  opts = {
973
995
  transaction_id: transaction_id,
974
996
  commit_options: commit_options,
997
+ request_options: request_options,
975
998
  call_options: call_options
976
999
  }
977
- commit opts do |c|
1000
+ commit(**opts) do |c|
978
1001
  c.delete table, keys
979
1002
  end
980
1003
  end
@@ -83,6 +83,7 @@ module Google
83
83
  # | `BOOL` | `true`/`false` | |
84
84
  # | `INT64` | `Integer` | |
85
85
  # | `FLOAT64` | `Float` | |
86
+ # | `NUMERIC` | `BigDecimal` | |
86
87
  # | `STRING` | `String` | |
87
88
  # | `DATE` | `Date` | |
88
89
  # | `TIMESTAMP` | `Time`, `DateTime` | |
@@ -108,6 +109,7 @@ module Google
108
109
  # * `:BYTES`
109
110
  # * `:DATE`
110
111
  # * `:FLOAT64`
112
+ # * `:NUMERIC`
111
113
  # * `:INT64`
112
114
  # * `:STRING`
113
115
  # * `:TIMESTAMP`
@@ -125,6 +127,8 @@ module Google
125
127
  # * `:optimizer_version` (String) The version of optimizer to use.
126
128
  # Empty to use database default. "latest" to use the latest
127
129
  # available optimizer version.
130
+ # * `:optimizer_statistics_package` (String) Statistics package to
131
+ # use. Empty to use the database default.
128
132
  # @param [Hash] call_options A hash of values to specify the custom
129
133
  # call options, e.g., timeout, retries, etc. Call options are
130
134
  # optional. The following settings can be provided:
@@ -249,7 +253,10 @@ module Google
249
253
  #
250
254
  # db.snapshot do |snp|
251
255
  # results = snp.execute_query \
252
- # "SELECT * FROM users", query_options: { optimizer_version: "1" }
256
+ # "SELECT * FROM users", query_options: {
257
+ # optimizer_version: "1",
258
+ # optimizer_statistics_package: "auto_20191128_14_47_22UTC"
259
+ # }
253
260
  #
254
261
  # results.rows.each do |row|
255
262
  # puts "User #{row[:id]} is #{row[:name]}"
@@ -373,12 +380,13 @@ module Google
373
380
  # Hash values must contain the type value. If a Hash is used the
374
381
  # fields will be created using the same order as the Hash keys.
375
382
  #
376
- # Supported type values incude:
383
+ # Supported type values include:
377
384
  #
378
385
  # * `:BOOL`
379
386
  # * `:BYTES`
380
387
  # * `:DATE`
381
388
  # * `:FLOAT64`
389
+ # * `:NUMERIC`
382
390
  # * `:INT64`
383
391
  # * `:STRING`
384
392
  # * `:TIMESTAMP`
@@ -49,7 +49,10 @@ module Google
49
49
  # end
50
50
  #
51
51
  class Status
52
- attr_reader :code, :description, :message, :details
52
+ attr_reader :code
53
+ attr_reader :description
54
+ attr_reader :message
55
+ attr_reader :details
53
56
 
54
57
  ##
55
58
  # @private Creates a Status object.
@@ -113,6 +113,7 @@ module Google
113
113
  # | `BOOL` | `true`/`false` | |
114
114
  # | `INT64` | `Integer` | |
115
115
  # | `FLOAT64` | `Float` | |
116
+ # | `NUMERIC` | `BigDecimal` | |
116
117
  # | `STRING` | `String` | |
117
118
  # | `DATE` | `Date` | |
118
119
  # | `TIMESTAMP` | `Time`, `DateTime` | |
@@ -138,6 +139,7 @@ module Google
138
139
  # * `:BYTES`
139
140
  # * `:DATE`
140
141
  # * `:FLOAT64`
142
+ # * `:NUMERIC`
141
143
  # * `:INT64`
142
144
  # * `:STRING`
143
145
  # * `:TIMESTAMP`
@@ -155,6 +157,16 @@ module Google
155
157
  # * `:optimizer_version` (String) The version of optimizer to use.
156
158
  # Empty to use database default. "latest" to use the latest
157
159
  # available optimizer version.
160
+ # * `:optimizer_statistics_package` (String) Statistics package to
161
+ # use. Empty to use the database default.
162
+ # @param [Hash] request_options Common request options.
163
+ #
164
+ # * `:priority` (String) The relative priority for requests.
165
+ # The priority acts as a hint to the Cloud Spanner scheduler
166
+ # and does not guarantee priority or order of execution.
167
+ # Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
168
+ # `:PRIORITY_HIGH`. If priority not set then default is
169
+ # `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
158
170
  # @param [Hash] call_options A hash of values to specify the custom
159
171
  # call options, e.g., timeout, retries, etc. Call options are
160
172
  # optional. The following settings can be provided:
@@ -280,7 +292,10 @@ module Google
280
292
  #
281
293
  # db.transaction do |tx|
282
294
  # results = tx.execute_query \
283
- # "SELECT * FROM users", query_options: { optimizer_version: "1" }
295
+ # "SELECT * FROM users", query_options: {
296
+ # optimizer_version: "1",
297
+ # optimizer_statistics_package: "auto_20191128_14_47_22UTC"
298
+ # }
284
299
  #
285
300
  # results.rows.each do |row|
286
301
  # puts "User #{row[:id]} is #{row[:name]}"
@@ -312,7 +327,7 @@ module Google
312
327
  # end
313
328
  #
314
329
  def execute_query sql, params: nil, types: nil, query_options: nil,
315
- call_options: nil
330
+ request_options: nil, call_options: nil
316
331
  ensure_session!
317
332
 
318
333
  @seqno += 1
@@ -321,6 +336,7 @@ module Google
321
336
  session.execute_query sql, params: params, types: types,
322
337
  transaction: tx_selector, seqno: @seqno,
323
338
  query_options: query_options,
339
+ request_options: request_options,
324
340
  call_options: call_options
325
341
  end
326
342
  alias execute execute_query
@@ -350,6 +366,7 @@ module Google
350
366
  # | `BOOL` | `true`/`false` | |
351
367
  # | `INT64` | `Integer` | |
352
368
  # | `FLOAT64` | `Float` | |
369
+ # | `NUMERIC` | `BigDecimal` | |
353
370
  # | `STRING` | `String` | |
354
371
  # | `DATE` | `Date` | |
355
372
  # | `TIMESTAMP` | `Time`, `DateTime` | |
@@ -376,6 +393,7 @@ module Google
376
393
  # * `:BYTES`
377
394
  # * `:DATE`
378
395
  # * `:FLOAT64`
396
+ # * `:NUMERIC`
379
397
  # * `:INT64`
380
398
  # * `:STRING`
381
399
  # * `:TIMESTAMP`
@@ -391,6 +409,16 @@ module Google
391
409
  # * `:optimizer_version` (String) The version of optimizer to use.
392
410
  # Empty to use database default. "latest" to use the latest
393
411
  # available optimizer version.
412
+ # * `:optimizer_statistics_package` (String) Statistics package to
413
+ # use. Empty to use the database default.
414
+ # @param [Hash] request_options Common request options.
415
+ #
416
+ # * `:priority` (String) The relative priority for requests.
417
+ # The priority acts as a hint to the Cloud Spanner scheduler
418
+ # and does not guarantee priority or order of execution.
419
+ # Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
420
+ # `:PRIORITY_HIGH`. If priority not set then default is
421
+ # `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
394
422
  # @param [Hash] call_options A hash of values to specify the custom
395
423
  # call options, e.g., timeout, retries, etc. Call options are
396
424
  # optional. The following settings can be provided:
@@ -441,7 +469,10 @@ module Google
441
469
  # db.transaction do |tx|
442
470
  # row_count = tx.execute_update(
443
471
  # "UPDATE users SET name = 'Charlie' WHERE id = 1",
444
- # query_options: { optimizer_version: "1" }
472
+ # query_options: {
473
+ # optimizer_version: "1",
474
+ # optimizer_statistics_package: "auto_20191128_14_47_22UTC"
475
+ # }
445
476
  # )
446
477
  # end
447
478
  #
@@ -468,9 +499,10 @@ module Google
468
499
  # end
469
500
  #
470
501
  def execute_update sql, params: nil, types: nil, query_options: nil,
471
- call_options: nil
502
+ request_options: nil, call_options: nil
472
503
  results = execute_query sql, params: params, types: types,
473
504
  query_options: query_options,
505
+ request_options: request_options,
474
506
  call_options: call_options
475
507
  # Stream all PartialResultSet to get ResultSetStats
476
508
  results.rows.to_a
@@ -485,6 +517,14 @@ module Google
485
517
  ##
486
518
  # Executes DML statements in a batch.
487
519
  #
520
+ # @param [Hash] request_options Common request options.
521
+ #
522
+ # * `:priority` (String) The relative priority for requests.
523
+ # The priority acts as a hint to the Cloud Spanner scheduler
524
+ # and does not guarantee priority or order of execution.
525
+ # Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
526
+ # `:PRIORITY_HIGH`. If priority not set then default is
527
+ # `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
488
528
  # @param [Hash] call_options A hash of values to specify the custom
489
529
  # call options, e.g., timeout, retries, etc. Call options are
490
530
  # optional. The following settings can be provided:
@@ -554,10 +594,11 @@ module Google
554
594
  # end
555
595
  # end
556
596
  #
557
- def batch_update call_options: nil, &block
597
+ def batch_update request_options: nil, call_options: nil, &block
558
598
  ensure_session!
559
599
  @seqno += 1
560
600
  session.batch_update tx_selector, @seqno,
601
+ request_options: request_options,
561
602
  call_options: call_options, &block
562
603
  end
563
604
 
@@ -577,6 +618,14 @@ module Google
577
618
  # Optional.
578
619
  # @param [Integer] limit If greater than zero, no more than this number
579
620
  # of rows will be returned. The default is no limit.
621
+ # @param [Hash] request_options Common request options.
622
+ #
623
+ # * `:priority` (String) The relative priority for requests.
624
+ # The priority acts as a hint to the Cloud Spanner scheduler
625
+ # and does not guarantee priority or order of execution.
626
+ # Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`,
627
+ # `:PRIORITY_HIGH`. If priority not set then default is
628
+ # `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`.
580
629
  # @param [Hash] call_options A hash of values to specify the custom
581
630
  # call options, e.g., timeout, retries, etc. Call options are
582
631
  # optional. The following settings can be provided:
@@ -609,7 +658,7 @@ module Google
609
658
  # end
610
659
  #
611
660
  def read table, columns, keys: nil, index: nil, limit: nil,
612
- call_options: nil
661
+ request_options: nil, call_options: nil
613
662
  ensure_session!
614
663
 
615
664
  columns = Array(columns).map(&:to_s)
@@ -617,6 +666,7 @@ module Google
617
666
 
618
667
  session.read table, columns, keys: keys, index: index, limit: limit,
619
668
  transaction: tx_selector,
669
+ request_options: request_options,
620
670
  call_options: call_options
621
671
  end
622
672
 
@@ -641,6 +691,7 @@ module Google
641
691
  # | `BOOL` | `true`/`false` | |
642
692
  # | `INT64` | `Integer` | |
643
693
  # | `FLOAT64` | `Float` | |
694
+ # | `NUMERIC` | `BigDecimal` | |
644
695
  # | `STRING` | `String` | |
645
696
  # | `DATE` | `Date` | |
646
697
  # | `TIMESTAMP` | `Time`, `DateTime` | |
@@ -687,6 +738,7 @@ module Google
687
738
  # | `BOOL` | `true`/`false` | |
688
739
  # | `INT64` | `Integer` | |
689
740
  # | `FLOAT64` | `Float` | |
741
+ # | `NUMERIC` | `BigDecimal` | |
690
742
  # | `STRING` | `String` | |
691
743
  # | `DATE` | `Date` | |
692
744
  # | `TIMESTAMP` | `Time`, `DateTime` | |
@@ -732,6 +784,7 @@ module Google
732
784
  # | `BOOL` | `true`/`false` | |
733
785
  # | `INT64` | `Integer` | |
734
786
  # | `FLOAT64` | `Float` | |
787
+ # | `NUMERIC` | `BigDecimal` | |
735
788
  # | `STRING` | `String` | |
736
789
  # | `DATE` | `Date` | |
737
790
  # | `TIMESTAMP` | `Time`, `DateTime` | |
@@ -779,6 +832,7 @@ module Google
779
832
  # | `BOOL` | `true`/`false` | |
780
833
  # | `INT64` | `Integer` | |
781
834
  # | `FLOAT64` | `Float` | |
835
+ # | `NUMERIC` | `BigDecimal` | |
782
836
  # | `STRING` | `String` | |
783
837
  # | `DATE` | `Date` | |
784
838
  # | `TIMESTAMP` | `Time`, `DateTime` | |
@@ -880,6 +934,7 @@ module Google
880
934
  # * `:BYTES`
881
935
  # * `:DATE`
882
936
  # * `:FLOAT64`
937
+ # * `:NUMERIC`
883
938
  # * `:INT64`
884
939
  # * `:STRING`
885
940
  # * `:TIMESTAMP`