bigquery 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 72abb6272b9cd6cd208c7c2da3aa18482722377f
4
- data.tar.gz: 64cb7f2129a24290541a2a10894ce3f9df310438
3
+ metadata.gz: 4801bae739335efd291f0b1bc7f40c24774d28ad
4
+ data.tar.gz: 7fc58959d20e1b2320fe668fa98ae2b19bda2a19
5
5
  SHA512:
6
- metadata.gz: df3dd14bfefe8ec762d4577e57f2757429a251c68834193c0672544d42c9908f9c5c038ebbf55b6cbbeab8c357be47caabcda269d8ff1bbef8b938f1a2de1c12
7
- data.tar.gz: 57073c1b5fb9e1f65481847c6ddcb9177410bb5f56c0771a32265465a14ef54816ec41d02b54af725974e4af33a36807d534e7e9c5046c7047690831c7a985b2
6
+ metadata.gz: 676d0d4c40351e00a645f68e37c0cfdc4b075beab86c74b31bf8717df3d9240a30973ca3b1fc7ccc8fe9b29088675b507d09e46a09a195131582f61905d73ccc
7
+ data.tar.gz: 0900f97212217ceecd258db6df7d0f4b365d5ab291bd0c19e3049355378b9266ca2c427bbabaaa8ee3b0d60df768ca847c6b197a9e391459a68be7d9677b30c3
@@ -1,3 +1,7 @@
1
+ # 0.8.0
2
+ * Allow media and parameters when inserting jobs #20
3
+ * Add query options such as useQueryCache, dryRun, maxResults #22
4
+
1
5
  # 0.7.0
2
6
  * Adds support for passing string as key #18
3
7
  * Switch to Signet::OAuth2::Client for authorization #17
@@ -1,19 +1,19 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bigquery (0.7.0)
4
+ bigquery (0.8.0)
5
5
  google-api-client (~> 0.8.2)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activesupport (4.2.0)
10
+ activesupport (4.2.1)
11
11
  i18n (~> 0.7)
12
12
  json (~> 1.7, >= 1.7.7)
13
13
  minitest (~> 5.1)
14
14
  thread_safe (~> 0.3, >= 0.3.4)
15
15
  tzinfo (~> 1.1)
16
- addressable (2.3.7)
16
+ addressable (2.3.8)
17
17
  autoparse (0.3.3)
18
18
  addressable (>= 2.3.1)
19
19
  extlib (>= 0.9.15)
@@ -27,24 +27,37 @@ GEM
27
27
  extlib (0.9.16)
28
28
  faraday (0.9.1)
29
29
  multipart-post (>= 1.2, < 3)
30
- google-api-client (0.8.2)
30
+ google-api-client (0.8.6)
31
31
  activesupport (>= 3.2)
32
32
  addressable (~> 2.3)
33
33
  autoparse (~> 0.3)
34
34
  extlib (~> 0.9)
35
35
  faraday (~> 0.9)
36
+ googleauth (~> 0.3)
36
37
  launchy (~> 2.4)
37
38
  multi_json (~> 1.10)
38
39
  retriable (~> 1.4)
39
40
  signet (~> 0.6)
41
+ googleauth (0.4.1)
42
+ faraday (~> 0.9)
43
+ jwt (~> 1.4)
44
+ logging (~> 2.0)
45
+ memoist (~> 0.12)
46
+ multi_json (= 1.11)
47
+ signet (~> 0.6)
40
48
  i18n (0.7.0)
41
49
  json (1.8.2)
42
- jwt (1.2.1)
50
+ jwt (1.5.0)
43
51
  launchy (2.4.3)
44
52
  addressable (~> 2.3)
53
+ little-plugger (1.1.3)
54
+ logging (2.0.0)
55
+ little-plugger (~> 1.1)
56
+ multi_json (~> 1.10)
57
+ memoist (0.12.0)
45
58
  method_source (0.8.2)
46
59
  minitest (5.3.4)
47
- multi_json (1.10.1)
60
+ multi_json (1.11.0)
48
61
  multipart-post (2.0.0)
49
62
  pry (0.9.12.6)
50
63
  coderay (~> 1.0)
@@ -62,7 +75,7 @@ GEM
62
75
  jwt (~> 1.0)
63
76
  multi_json (~> 1.10)
64
77
  slop (3.5.0)
65
- thread_safe (0.3.4)
78
+ thread_safe (0.3.5)
66
79
  tzinfo (1.2.2)
67
80
  thread_safe (~> 0.1)
68
81
 
@@ -21,7 +21,11 @@ module BigQuery
21
21
  faraday_option: opts['faraday_option']
22
22
  )
23
23
 
24
- key = Google::APIClient::PKCS12.load_key(opts['key'], 'notasecret')
24
+ begin
25
+ key = Google::APIClient::KeyUtils.load_from_pkcs12(opts['key'], 'notasecret')
26
+ rescue ArgumentError
27
+ key = Google::APIClient::KeyUtils.load_from_pem(opts['key'], 'notasecret')
28
+ end
25
29
 
26
30
  @client.authorization = Signet::OAuth2::Client.new(
27
31
  token_credential_uri: 'https://accounts.google.com/o/oauth2/token',
@@ -38,11 +38,15 @@ module BigQuery
38
38
 
39
39
  # Insert a job
40
40
  #
41
- # @param options [Hash] hash of job options
41
+ # @param options [Hash] hash of job options
42
+ # @param parameters [Hash] hash of parameters (uploadType, etc.)
43
+ # @param media [Google::APIClient::UploadIO] media upload
42
44
  # @return [Hash] json api response
43
- def insert_job(opts)
45
+ def insert_job(opts, parameters = {}, media = nil)
44
46
  api(api_method: @bq.jobs.insert,
45
- body_object: {configuration: opts})
47
+ parameters: parameters,
48
+ body_object: {configuration: opts},
49
+ media: media)
46
50
  end
47
51
  end
48
52
  end
@@ -5,14 +5,22 @@ module BigQuery
5
5
  #
6
6
  # @param given_query [String] query to perform
7
7
  # @param options [Hash] query options
8
- # @option options [Integer] timeout (90 * 1000) timeout in miliseconds
8
+ # @option options [Integer] timeout or timeoutMs (90 * 1000) timeout in miliseconds
9
+ # @option options [Boolean] dryRun Don't actually run this job
10
+ # @option options [Integer] maxResults The maximum number of rows of data to return per page of results.
11
+ # @option options [Boolean] useQueryCache Whether to look for the result in the query cache.
9
12
  # @return [Hash] json api response
13
+ # @see https://cloud.google.com/bigquery/docs/reference/v2/jobs/query
10
14
  def query(given_query, options={})
11
- timeout = options.fetch(:timeout, 90 * 1000)
15
+ body_object = { 'query' => given_query }
16
+ body_object['timeoutMs'] = options[:timeout] || options[:timeoutMs] || 90 * 1000
17
+ body_object['maxResults'] = options[:maxResults] if options[:maxResults]
18
+ body_object['dryRun'] = options[:dryRun] if options.has_key?(:dryRun)
19
+ body_object['useQueryCache'] = options[:useQueryCache] if options.has_key?(:useQueryCache)
20
+
12
21
  response = api(
13
22
  api_method: @bq.jobs.query,
14
- body_object: { 'query' => given_query,
15
- 'timeoutMs' => timeout}
23
+ body_object: body_object,
16
24
  )
17
25
 
18
26
  response
@@ -1,3 +1,3 @@
1
1
  module BigQuery
2
- VERSION = '0.7.0'
2
+ VERSION = '0.8.0'
3
3
  end
@@ -120,6 +120,19 @@ class BigQueryTest < MiniTest::Unit::TestCase
120
120
  assert_equal result['jobComplete'], true
121
121
  end
122
122
 
123
+ def test_for_query_useQueryCache
124
+ result = @bq.query("SELECT * FROM [#{config['dataset']}.test] LIMIT 1", useQueryCache: true)
125
+ result = @bq.query("SELECT * FROM [#{config['dataset']}.test] LIMIT 1", useQueryCache: true)
126
+
127
+ assert_equal result['cacheHit'], true
128
+ end
129
+
130
+ def test_for_query_dryRun
131
+ result = @bq.query("SELECT * FROM [#{config['dataset']}.test] LIMIT 1", dryRun: true)
132
+
133
+ assert_equal result['jobReference']['jobId'], nil
134
+ end
135
+
123
136
  def test_for_insert
124
137
  result = @bq.insert('test' ,"id" => 123, "type" => "Task")
125
138
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bigquery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Bronte
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-02-18 00:00:00.000000000 Z
12
+ date: 2015-06-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: google-api-client
@@ -127,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
127
  version: '0'
128
128
  requirements: []
129
129
  rubyforge_project:
130
- rubygems_version: 2.4.5
130
+ rubygems_version: 2.4.6
131
131
  signing_key:
132
132
  specification_version: 4
133
133
  summary: A nice wrapper for Google Big Query