google-cloud-bigquery 1.11.0 → 1.11.1
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 +5 -1
- data/lib/google/cloud/bigquery/convert.rb +14 -0
- data/lib/google/cloud/bigquery/data.rb +3 -3
- data/lib/google/cloud/bigquery/dataset.rb +4 -11
- data/lib/google/cloud/bigquery/dataset/access.rb +9 -9
- data/lib/google/cloud/bigquery/dataset/list.rb +1 -1
- data/lib/google/cloud/bigquery/job.rb +4 -9
- data/lib/google/cloud/bigquery/job/list.rb +1 -1
- data/lib/google/cloud/bigquery/project/list.rb +1 -1
- data/lib/google/cloud/bigquery/query_job.rb +1 -1
- data/lib/google/cloud/bigquery/service.rb +10 -6
- data/lib/google/cloud/bigquery/table.rb +7 -22
- data/lib/google/cloud/bigquery/table/async_inserter.rb +3 -2
- data/lib/google/cloud/bigquery/table/list.rb +1 -1
- data/lib/google/cloud/bigquery/version.rb +1 -1
- metadata +19 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af312b5a34c7761d3c9023ca0905f486df0ce6be2e1e6c0fbd5ad3eaddf55554
|
4
|
+
data.tar.gz: a24f6071b4f439c8f6a2d8ab2c78efdd83dcac355c778043098dc59162402d00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd85e8b063c0370c7c66ed7ac433d311c1910ae1d772288a83e36b3bb29095e4870ba7d6f886715ee1d2512a0b1b19988e78bd879edc70218c304f61217c082a
|
7
|
+
data.tar.gz: e2f2ecfafa58a0c94628e2cecf8ad4f43d78314ece44ae3be1187e27db100b917120df19328593646b288ba09112166dcbb966c2cf7d50627729d138d02e082d
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
+
### 1.11.1 / 2019-05-21
|
4
|
+
|
5
|
+
* Declare explicit dependency on mime-types
|
6
|
+
|
3
7
|
### 1.11.0 / 2019-02-01
|
4
8
|
|
5
9
|
* Make use of Credentials#project_id
|
@@ -8,7 +12,7 @@
|
|
8
12
|
This value was added in googleauth 0.7.0.
|
9
13
|
* Loosen googleauth dependency
|
10
14
|
Allow for new releases up to 0.10.
|
11
|
-
The googleauth devs have committed to
|
15
|
+
The googleauth devs have committed to maintaining the current API
|
12
16
|
and will not make backwards compatible changes before 0.10.
|
13
17
|
|
14
18
|
### 1.10.0 / 2018-12-06
|
@@ -360,6 +360,20 @@ module Google
|
|
360
360
|
return "DATASTORE_BACKUP" if path.end_with? ".backup_info"
|
361
361
|
nil
|
362
362
|
end
|
363
|
+
|
364
|
+
##
|
365
|
+
# @private
|
366
|
+
#
|
367
|
+
# Converts a primitive time value in milliseconds to a Ruby Time object.
|
368
|
+
#
|
369
|
+
# @return [Time, nil] The Ruby Time object, or nil if the given argument
|
370
|
+
# is nil.
|
371
|
+
def self.millis_to_time time_millis
|
372
|
+
return nil unless time_millis
|
373
|
+
time_millis = Integer time_millis
|
374
|
+
time_secs = time_millis / 1000.0
|
375
|
+
::Time.at time_secs
|
376
|
+
end
|
363
377
|
end
|
364
378
|
|
365
379
|
# rubocop:enable Metrics/ModuleLength
|
@@ -439,9 +439,9 @@ module Google
|
|
439
439
|
#
|
440
440
|
def all request_limit: nil
|
441
441
|
request_limit = request_limit.to_i if request_limit
|
442
|
-
|
443
|
-
|
444
|
-
|
442
|
+
|
443
|
+
return enum_for :all, request_limit: request_limit unless block_given?
|
444
|
+
|
445
445
|
results = self
|
446
446
|
loop do
|
447
447
|
results.each { |r| yield r }
|
@@ -20,6 +20,7 @@ require "google/cloud/bigquery/table"
|
|
20
20
|
require "google/cloud/bigquery/external"
|
21
21
|
require "google/cloud/bigquery/dataset/list"
|
22
22
|
require "google/cloud/bigquery/dataset/access"
|
23
|
+
require "google/cloud/bigquery/convert"
|
23
24
|
require "google/apis/bigquery_v2"
|
24
25
|
|
25
26
|
module Google
|
@@ -237,11 +238,7 @@ module Google
|
|
237
238
|
def created_at
|
238
239
|
return nil if reference?
|
239
240
|
ensure_full_data!
|
240
|
-
|
241
|
-
::Time.at(Integer(@gapi.creation_time) / 1000.0)
|
242
|
-
rescue StandardError
|
243
|
-
nil
|
244
|
-
end
|
241
|
+
Convert.millis_to_time @gapi.creation_time
|
245
242
|
end
|
246
243
|
|
247
244
|
##
|
@@ -255,11 +252,7 @@ module Google
|
|
255
252
|
def modified_at
|
256
253
|
return nil if reference?
|
257
254
|
ensure_full_data!
|
258
|
-
|
259
|
-
::Time.at(Integer(@gapi.last_modified_time) / 1000.0)
|
260
|
-
rescue StandardError
|
261
|
-
nil
|
262
|
-
end
|
255
|
+
Convert.millis_to_time @gapi.last_modified_time
|
263
256
|
end
|
264
257
|
|
265
258
|
##
|
@@ -2261,7 +2254,7 @@ module Google
|
|
2261
2254
|
return [] if array_or_str.nil?
|
2262
2255
|
Array(array_or_str).map do |uri_or_code|
|
2263
2256
|
resource = Google::Apis::BigqueryV2::UserDefinedFunctionResource.new
|
2264
|
-
if uri_or_code.start_with?
|
2257
|
+
if uri_or_code.start_with? "gs://"
|
2265
2258
|
resource.resource_uri = uri_or_code
|
2266
2259
|
else
|
2267
2260
|
resource.inline_code = uri_or_code
|
@@ -935,10 +935,10 @@ module Google
|
|
935
935
|
|
936
936
|
# @private
|
937
937
|
def add_access_role_scope_value role, scope, value
|
938
|
-
role = validate_role
|
938
|
+
role = validate_role role
|
939
939
|
scope = validate_scope scope
|
940
940
|
# If scope is special group, make sure value is in the list
|
941
|
-
value = validate_special_group
|
941
|
+
value = validate_special_group value if scope == :special_group
|
942
942
|
# Remove any rules of this scope and value
|
943
943
|
@rules.reject!(&find_by_scope_and_value(scope, value))
|
944
944
|
# Add new rule for this role, scope, and value
|
@@ -949,7 +949,7 @@ module Google
|
|
949
949
|
# @private
|
950
950
|
def add_access_view value
|
951
951
|
# scope is view, make sure value is in the right format
|
952
|
-
value = validate_view
|
952
|
+
value = validate_view value
|
953
953
|
# Remove existing view rule, if any
|
954
954
|
@rules.reject!(&find_view(value))
|
955
955
|
# Add new rule for this role, scope, and value
|
@@ -959,10 +959,10 @@ module Google
|
|
959
959
|
|
960
960
|
# @private
|
961
961
|
def remove_access_role_scope_value role, scope, value
|
962
|
-
role = validate_role
|
962
|
+
role = validate_role role
|
963
963
|
scope = validate_scope scope
|
964
964
|
# If scope is special group, make sure value is in the list
|
965
|
-
value = validate_special_group
|
965
|
+
value = validate_special_group value if scope == :special_group
|
966
966
|
# Remove any rules of this role, scope, and value
|
967
967
|
@rules.reject!(
|
968
968
|
&find_by_role_and_scope_and_value(role, scope, value)
|
@@ -972,17 +972,17 @@ module Google
|
|
972
972
|
# @private
|
973
973
|
def remove_access_view value
|
974
974
|
# scope is view, make sure value is in the right format
|
975
|
-
value = validate_view
|
975
|
+
value = validate_view value
|
976
976
|
# Remove existing view rule, if any
|
977
977
|
@rules.reject!(&find_view(value))
|
978
978
|
end
|
979
979
|
|
980
980
|
# @private
|
981
981
|
def lookup_access_role_scope_value role, scope, value
|
982
|
-
role = validate_role
|
982
|
+
role = validate_role role
|
983
983
|
scope = validate_scope scope
|
984
984
|
# If scope is special group, make sure value is in the list
|
985
|
-
value = validate_special_group
|
985
|
+
value = validate_special_group value if scope == :special_group
|
986
986
|
# Detect any rules of this role, scope, and value
|
987
987
|
!(!@rules.detect(
|
988
988
|
&find_by_role_and_scope_and_value(role, scope, value)
|
@@ -992,7 +992,7 @@ module Google
|
|
992
992
|
# @private
|
993
993
|
def lookup_access_view value
|
994
994
|
# scope is view, make sure value is in the right format
|
995
|
-
value = validate_view
|
995
|
+
value = validate_view value
|
996
996
|
# Detect view rule, if any
|
997
997
|
!(!@rules.detect(&find_view(value)))
|
998
998
|
end
|
@@ -124,7 +124,7 @@ module Google
|
|
124
124
|
def all request_limit: nil
|
125
125
|
request_limit = request_limit.to_i if request_limit
|
126
126
|
unless block_given?
|
127
|
-
return enum_for
|
127
|
+
return enum_for :all, request_limit: request_limit
|
128
128
|
end
|
129
129
|
results = self
|
130
130
|
loop do
|
@@ -16,6 +16,7 @@
|
|
16
16
|
require "google/cloud/errors"
|
17
17
|
require "google/cloud/bigquery/service"
|
18
18
|
require "google/cloud/bigquery/job/list"
|
19
|
+
require "google/cloud/bigquery/convert"
|
19
20
|
require "json"
|
20
21
|
|
21
22
|
module Google
|
@@ -172,9 +173,7 @@ module Google
|
|
172
173
|
# @return [Time, nil] The creation time from the job statistics.
|
173
174
|
#
|
174
175
|
def created_at
|
175
|
-
|
176
|
-
rescue StandardError
|
177
|
-
nil
|
176
|
+
Convert.millis_to_time @gapi.statistics.creation_time
|
178
177
|
end
|
179
178
|
|
180
179
|
##
|
@@ -185,9 +184,7 @@ module Google
|
|
185
184
|
# @return [Time, nil] The start time from the job statistics.
|
186
185
|
#
|
187
186
|
def started_at
|
188
|
-
|
189
|
-
rescue StandardError
|
190
|
-
nil
|
187
|
+
Convert.millis_to_time @gapi.statistics.start_time
|
191
188
|
end
|
192
189
|
|
193
190
|
##
|
@@ -197,9 +194,7 @@ module Google
|
|
197
194
|
# @return [Time, nil] The end time from the job statistics.
|
198
195
|
#
|
199
196
|
def ended_at
|
200
|
-
|
201
|
-
rescue StandardError
|
202
|
-
nil
|
197
|
+
Convert.millis_to_time @gapi.statistics.end_time
|
203
198
|
end
|
204
199
|
|
205
200
|
##
|
@@ -124,7 +124,7 @@ module Google
|
|
124
124
|
def all request_limit: nil
|
125
125
|
request_limit = request_limit.to_i if request_limit
|
126
126
|
unless block_given?
|
127
|
-
return enum_for
|
127
|
+
return enum_for :all, request_limit: request_limit
|
128
128
|
end
|
129
129
|
results = self
|
130
130
|
loop do
|
@@ -125,7 +125,7 @@ module Google
|
|
125
125
|
def all request_limit: nil
|
126
126
|
request_limit = request_limit.to_i if request_limit
|
127
127
|
unless block_given?
|
128
|
-
return enum_for
|
128
|
+
return enum_for :all, request_limit: request_limit
|
129
129
|
end
|
130
130
|
results = self
|
131
131
|
loop do
|
@@ -1178,7 +1178,7 @@ module Google
|
|
1178
1178
|
Array(array_or_str).map do |uri_or_code|
|
1179
1179
|
resource =
|
1180
1180
|
Google::Apis::BigqueryV2::UserDefinedFunctionResource.new
|
1181
|
-
if uri_or_code.start_with?
|
1181
|
+
if uri_or_code.start_with? "gs://"
|
1182
1182
|
resource.resource_uri = uri_or_code
|
1183
1183
|
else
|
1184
1184
|
resource.inline_code = uri_or_code
|
@@ -90,7 +90,9 @@ module Google
|
|
90
90
|
# Returns the dataset specified by datasetID.
|
91
91
|
def get_dataset dataset_id
|
92
92
|
# The get operation is considered idempotent
|
93
|
-
execute
|
93
|
+
execute backoff: true do
|
94
|
+
service.get_dataset @project, dataset_id
|
95
|
+
end
|
94
96
|
end
|
95
97
|
|
96
98
|
##
|
@@ -253,7 +255,7 @@ module Google
|
|
253
255
|
# Cancel the job specified by jobId.
|
254
256
|
def cancel_job job_id, location: nil
|
255
257
|
# The BigQuery team has told us cancelling is considered idempotent
|
256
|
-
execute
|
258
|
+
execute backoff: true do
|
257
259
|
service.cancel_job @project, job_id, location: location
|
258
260
|
end
|
259
261
|
end
|
@@ -262,7 +264,7 @@ module Google
|
|
262
264
|
# Returns the job specified by jobID.
|
263
265
|
def get_job job_id, location: nil
|
264
266
|
# The get operation is considered idempotent
|
265
|
-
execute
|
267
|
+
execute backoff: true do
|
266
268
|
service.get_job @project, job_id, location: location
|
267
269
|
end
|
268
270
|
end
|
@@ -273,7 +275,9 @@ module Google
|
|
273
275
|
configuration: config
|
274
276
|
)
|
275
277
|
# Jobs have generated id, so this operation is considered idempotent
|
276
|
-
execute
|
278
|
+
execute backoff: true do
|
279
|
+
service.insert_job @project, job_object
|
280
|
+
end
|
277
281
|
end
|
278
282
|
|
279
283
|
def query_job query_job_gapi
|
@@ -414,7 +418,7 @@ module Google
|
|
414
418
|
|
415
419
|
# Generate a random string similar to the BigQuery service job IDs.
|
416
420
|
def generate_id
|
417
|
-
SecureRandom.urlsafe_base64
|
421
|
+
SecureRandom.urlsafe_base64 21
|
418
422
|
end
|
419
423
|
|
420
424
|
def mime_type_for file
|
@@ -432,7 +436,7 @@ module Google
|
|
432
436
|
yield
|
433
437
|
end
|
434
438
|
rescue Google::Apis::Error => e
|
435
|
-
raise Google::Cloud::Error.from_error
|
439
|
+
raise Google::Cloud::Error.from_error e
|
436
440
|
end
|
437
441
|
|
438
442
|
class Backoff
|
@@ -22,6 +22,7 @@ require "google/cloud/bigquery/encryption_configuration"
|
|
22
22
|
require "google/cloud/bigquery/external"
|
23
23
|
require "google/cloud/bigquery/insert_response"
|
24
24
|
require "google/cloud/bigquery/table/async_inserter"
|
25
|
+
require "google/cloud/bigquery/convert"
|
25
26
|
require "google/apis/bigquery_v2"
|
26
27
|
|
27
28
|
module Google
|
@@ -558,11 +559,7 @@ module Google
|
|
558
559
|
def created_at
|
559
560
|
return nil if reference?
|
560
561
|
ensure_full_data!
|
561
|
-
|
562
|
-
::Time.at(Integer(@gapi.creation_time) / 1000.0)
|
563
|
-
rescue StandardError
|
564
|
-
nil
|
565
|
-
end
|
562
|
+
Convert.millis_to_time @gapi.creation_time
|
566
563
|
end
|
567
564
|
|
568
565
|
##
|
@@ -578,11 +575,7 @@ module Google
|
|
578
575
|
def expires_at
|
579
576
|
return nil if reference?
|
580
577
|
ensure_full_data!
|
581
|
-
|
582
|
-
::Time.at(Integer(@gapi.expiration_time) / 1000.0)
|
583
|
-
rescue StandardError
|
584
|
-
nil
|
585
|
-
end
|
578
|
+
Convert.millis_to_time @gapi.expiration_time
|
586
579
|
end
|
587
580
|
|
588
581
|
##
|
@@ -596,11 +589,7 @@ module Google
|
|
596
589
|
def modified_at
|
597
590
|
return nil if reference?
|
598
591
|
ensure_full_data!
|
599
|
-
|
600
|
-
::Time.at(Integer(@gapi.last_modified_time) / 1000.0)
|
601
|
-
rescue StandardError
|
602
|
-
nil
|
603
|
-
end
|
592
|
+
Convert.millis_to_time @gapi.last_modified_time
|
604
593
|
end
|
605
594
|
|
606
595
|
##
|
@@ -987,11 +976,7 @@ module Google
|
|
987
976
|
ensure_full_data!
|
988
977
|
return nil unless @gapi.streaming_buffer
|
989
978
|
oldest_entry_time = @gapi.streaming_buffer.oldest_entry_time
|
990
|
-
|
991
|
-
::Time.at(Integer(oldest_entry_time) / 1000.0)
|
992
|
-
rescue StandardError
|
993
|
-
nil
|
994
|
-
end
|
979
|
+
Convert.millis_to_time oldest_entry_time
|
995
980
|
end
|
996
981
|
|
997
982
|
##
|
@@ -1747,7 +1732,7 @@ module Google
|
|
1747
1732
|
|
1748
1733
|
job_gapi = updater.to_gapi
|
1749
1734
|
|
1750
|
-
return load_local
|
1735
|
+
return load_local files, job_gapi if local_file? files
|
1751
1736
|
load_storage files, job_gapi
|
1752
1737
|
end
|
1753
1738
|
|
@@ -2490,7 +2475,7 @@ module Google
|
|
2490
2475
|
return [] if array_or_str.nil?
|
2491
2476
|
Array(array_or_str).map do |uri_or_code|
|
2492
2477
|
resource = Google::Apis::BigqueryV2::UserDefinedFunctionResource.new
|
2493
|
-
if uri_or_code.start_with?
|
2478
|
+
if uri_or_code.start_with? "gs://"
|
2494
2479
|
resource.resource_uri = uri_or_code
|
2495
2480
|
else
|
2496
2481
|
resource.inline_code = uri_or_code
|
@@ -231,7 +231,8 @@ module Google
|
|
231
231
|
time_since_first_publish = ::Time.now - @batch_created_at
|
232
232
|
if time_since_first_publish < @interval
|
233
233
|
# still waiting for the interval to insert the batch...
|
234
|
-
@
|
234
|
+
timeout = @interval - time_since_first_publish
|
235
|
+
@cond.wait timeout
|
235
236
|
else
|
236
237
|
# interval met, insert the batch...
|
237
238
|
push_batch_request!
|
@@ -247,7 +248,7 @@ module Google
|
|
247
248
|
orig_rows = @batch.rows
|
248
249
|
json_rows = @batch.json_rows
|
249
250
|
insert_ids = @batch.insert_ids
|
250
|
-
Concurrent::Future.new
|
251
|
+
Concurrent::Future.new executor: @thread_pool do
|
251
252
|
begin
|
252
253
|
raise ArgumentError, "No rows provided" if json_rows.empty?
|
253
254
|
options = { skip_invalid: @skip_invalid,
|
@@ -134,7 +134,7 @@ module Google
|
|
134
134
|
def all request_limit: nil
|
135
135
|
request_limit = request_limit.to_i if request_limit
|
136
136
|
unless block_given?
|
137
|
-
return enum_for
|
137
|
+
return enum_for :all, request_limit: request_limit
|
138
138
|
end
|
139
139
|
results = self
|
140
140
|
loop do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-cloud-bigquery
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.11.
|
4
|
+
version: 1.11.1
|
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: 2019-
|
12
|
+
date: 2019-05-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: google-cloud-core
|
@@ -73,6 +73,20 @@ dependencies:
|
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '1.0'
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
name: mime-types
|
78
|
+
requirement: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.0'
|
83
|
+
type: :runtime
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.0'
|
76
90
|
- !ruby/object:Gem::Dependency
|
77
91
|
name: minitest
|
78
92
|
requirement: !ruby/object:Gem::Requirement
|
@@ -163,14 +177,14 @@ dependencies:
|
|
163
177
|
requirements:
|
164
178
|
- - "~>"
|
165
179
|
- !ruby/object:Gem::Version
|
166
|
-
version: 0.
|
180
|
+
version: 0.64.0
|
167
181
|
type: :development
|
168
182
|
prerelease: false
|
169
183
|
version_requirements: !ruby/object:Gem::Requirement
|
170
184
|
requirements:
|
171
185
|
- - "~>"
|
172
186
|
- !ruby/object:Gem::Version
|
173
|
-
version: 0.
|
187
|
+
version: 0.64.0
|
174
188
|
- !ruby/object:Gem::Dependency
|
175
189
|
name: simplecov
|
176
190
|
requirement: !ruby/object:Gem::Requirement
|
@@ -276,8 +290,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
276
290
|
- !ruby/object:Gem::Version
|
277
291
|
version: '0'
|
278
292
|
requirements: []
|
279
|
-
|
280
|
-
rubygems_version: 2.7.6
|
293
|
+
rubygems_version: 3.0.3
|
281
294
|
signing_key:
|
282
295
|
specification_version: 4
|
283
296
|
summary: API Client library for Google BigQuery
|