td-client 0.8.61 → 0.8.62

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 CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 926ea0dac15ddb7e20599a09bfc0785bb84f35c9
4
- data.tar.gz: d55cdc86f5b499860fd7ee0ffbeca4ca6f7bc3e2
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NDRiYWJjYzc1NDFiOTQzMzBkNjNmMGUwNDcxMDAzOWQ5Njg0NzVmNA==
5
+ data.tar.gz: !binary |-
6
+ Y2JkMzE0NTBhNWQ4YzZiZjY0MDY2ZmY4MmE2YmY4NWYzYmY2N2Q1NA==
5
7
  SHA512:
6
- metadata.gz: c9640c8b51d3a16368c98b5f9ef6115927ed444eb510b5591bd3758c301dce59f19589a0586456e301d471de3caee348a1e9a83ae1ad146c31a1065069af0058
7
- data.tar.gz: d844034ae124704a34f3a11d7cf6631a569afa40cd84012caf2b788c52a17db7f37b444aa9b2473ddf388a25cacc080ac438a4268b27865632d779e118bb55ec
8
+ metadata.gz: !binary |-
9
+ NTllMjQzNDUyOGVkNWM1MWMxNDY5YWMwOGE4ODNjM2M5N2ZjYjZhYWUzZWQ1
10
+ YTFlMmMyMzNkNjExZGFjOWUyMzMxODM3ZGQ4YjQ2ZGUzYWZhYzEwY2M3OWE4
11
+ ODA5ODI2NTQzNGE4ZDM0OTdiMzNjOGNlODFhNzZlNDU3YTY4M2Q=
12
+ data.tar.gz: !binary |-
13
+ MjVhNmU2MmI5NDNlZDliNDU1YzQzNjdmYzkwYWQ0YWU2ZWRjMWJjMDE0ZTdl
14
+ ZDgyMGYxY2Y3OTI4NmM4MDcwODJjMmJkNmE2NThiMGFkYzEyM2VjNTc0NzNh
15
+ MjQyMWI2MTFiOGIxYTgzNmEzZTEwYjc0NTNmOTVjYjcwZGMwNDk=
data/lib/td/client/api.rb CHANGED
@@ -51,7 +51,9 @@ class API
51
51
  when 'http', 'https'
52
52
  @host = uri.host
53
53
  @port = uri.port
54
- @ssl = uri.scheme == 'https'
54
+ # the opts[:ssl] option is ignored here, it's value
55
+ # overridden by the scheme of the endpoint URI
56
+ @ssl = (uri.scheme == 'https')
55
57
  @base_path = uri.path.to_s
56
58
 
57
59
  else
@@ -80,7 +82,7 @@ class API
80
82
  else
81
83
  @http_proxy
82
84
  end
83
- proxy_host, proxy_port = http_proxy.split(':',2)
85
+ proxy_host, proxy_port = http_proxy.split(':', 2)
84
86
  proxy_port = (proxy_port ? proxy_port.to_i : 80)
85
87
  @http_class = Net::HTTP::Proxy(proxy_host, proxy_port)
86
88
  else
@@ -129,19 +131,19 @@ class API
129
131
  end
130
132
 
131
133
  def self.validate_database_name(name)
132
- validate_name("database", 3, 256, name)
134
+ validate_name("database", 3, 255, name)
133
135
  end
134
136
 
135
137
  def self.validate_table_name(name)
136
- validate_name("table", 3, 256, name)
138
+ validate_name("table", 3, 255, name)
137
139
  end
138
140
 
139
141
  def self.validate_result_set_name(name)
140
- validate_name("result set", 3, 256, name)
142
+ validate_name("result set", 3, 255, name)
141
143
  end
142
144
 
143
145
  def self.validate_column_name(name)
144
- validate_name("column", 2, 256, name)
146
+ validate_name("column", 1, 255, name)
145
147
  end
146
148
 
147
149
  def self.normalize_database_name(name)
@@ -150,10 +152,10 @@ class API
150
152
  raise "Empty name is not allowed"
151
153
  end
152
154
  if name.length < 3
153
- name += "_"*(3-name.length)
155
+ name += "_" * (3 - name.length)
154
156
  end
155
157
  if 256 < name.length
156
- name = name[0,254]+"__"
158
+ name = name[0,254] + "__"
157
159
  end
158
160
  name = name.downcase
159
161
  name = name.gsub(/[^a-z0-9_]/, '_')
@@ -448,11 +450,36 @@ class API
448
450
  if hive_result_schema.empty?
449
451
  hive_result_schema = nil
450
452
  else
451
- hive_result_schema = JSON.parse(hive_result_schema)
453
+ begin
454
+ hive_result_schema = JSON.parse(hive_result_schema)
455
+ rescue JSON::ParserError => e
456
+ # this is a workaround for a Known Limitation in the Pig Engine which does not set a default, auto-generated
457
+ # column name for anonymous columns (such as the ones that are generated from UDF like COUNT or SUM).
458
+ # The schema will contain 'nil' for the name of those columns and that breaks the JSON parser since it violates
459
+ # the JSON syntax standard.
460
+ if type == :pig and hive_result_schema !~ /[\{\}]/
461
+ begin
462
+ # NOTE: this works because a JSON 2 dimensional array is the same as a Ruby one.
463
+ # Any change in the format for the hive_result_schema output may cause a syntax error, in which case
464
+ # this lame attempt at fixing the problem will fail and we will be raising the original JSON exception
465
+ hive_result_schema = eval(hive_result_schema)
466
+ rescue SyntaxError => ignored_e
467
+ raise e
468
+ end
469
+ hive_result_schema.each_with_index {|col_schema, idx|
470
+ if col_schema[0].nil?
471
+ col_schema[0] = "_col#{idx}"
472
+ end
473
+ }
474
+ else
475
+ raise e
476
+ end
477
+ end
452
478
  end
453
479
  priority = js['priority']
454
480
  retry_limit = js['retry_limit']
455
- return [type, query, status, url, debug, start_at, end_at, cpu_time, result, hive_result_schema, priority, retry_limit, nil, database] # same as above
481
+ return [type, query, status, url, debug, start_at, end_at, cpu_time, result,
482
+ hive_result_schema, priority, retry_limit, nil, database]
456
483
  end
457
484
 
458
485
  def job_status(job_id)
@@ -933,7 +960,7 @@ class API
933
960
  result = js["users"].map {|roleinfo|
934
961
  name = roleinfo['name']
935
962
  email = roleinfo['email']
936
- [name, nil, nil, email] # set nil to org and role for API compatibiilty
963
+ [name, nil, nil, email] # set nil to org and role for API compatibility
937
964
  }
938
965
  return result
939
966
  end
@@ -331,30 +331,32 @@ class Job < Model
331
331
 
332
332
  def finished?
333
333
  update_progress! unless @status
334
- if FINISHED_STATUS.include?(@status)
335
- return true
336
- else
337
- return false
338
- end
339
- end
340
-
341
- def running?
342
- !finished?
334
+ FINISHED_STATUS.include?(@status)
343
335
  end
344
336
 
345
337
  def success?
346
338
  update_progress! unless @status
347
- @status == "success"
339
+ @status == STATUS_SUCCESS
348
340
  end
349
341
 
350
342
  def error?
351
343
  update_progress! unless @status
352
- @status == "error"
344
+ @status == STATUS_ERROR
353
345
  end
354
346
 
355
347
  def killed?
356
348
  update_progress! unless @status
357
- @status == "killed"
349
+ @status == STATUS_KILLED
350
+ end
351
+
352
+ def queued?
353
+ update_progress! unless @status
354
+ @status == STATUS_QUEUED
355
+ end
356
+
357
+ def running?
358
+ update_progress! unless @status
359
+ @status == STATUS_RUNNING
358
360
  end
359
361
 
360
362
  def update_progress!
@@ -1,5 +1,5 @@
1
1
  module TreasureData
2
2
  class Client
3
- VERSION = '0.8.61'
3
+ VERSION = '0.8.62'
4
4
  end
5
5
  end
data/spec/api_spec.rb CHANGED
@@ -12,7 +12,7 @@ describe API do
12
12
 
13
13
  INVALID_NAMES = {
14
14
  'a' => 'a__',
15
- 'a'*257 => 'a'*254+'__',
15
+ 'a' * 256 => 'a' * 253 + '__',
16
16
  'abcD' => 'abcd',
17
17
  'a-b*' => 'a_b_',
18
18
  }
@@ -39,22 +39,22 @@ describe API do
39
39
  INVALID_NAMES.each_pair {|ng,ok|
40
40
  lambda {
41
41
  API.validate_database_name(ng)
42
- }.should raise_error(RuntimeError)
42
+ }.should raise_error(ParameterValidationError)
43
43
  }
44
44
  lambda {
45
45
  API.validate_database_name('')
46
- }.should raise_error(RuntimeError)
46
+ }.should raise_error(ParameterValidationError)
47
47
  end
48
48
 
49
49
  it 'validate_table_name should raise errors' do
50
50
  INVALID_NAMES.each_pair {|ng,ok|
51
51
  lambda {
52
52
  API.validate_table_name(ng)
53
- }.should raise_error(RuntimeError)
53
+ }.should raise_error(ParameterValidationError)
54
54
  }
55
55
  lambda {
56
56
  API.validate_table_name('')
57
- }.should raise_error(RuntimeError)
57
+ }.should raise_error(ParameterValidationError)
58
58
  end
59
59
 
60
60
  it 'normalize_database_name should return valid data' do
metadata CHANGED
@@ -1,141 +1,141 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: td-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.61
4
+ version: 0.8.62
5
5
  platform: ruby
6
6
  authors:
7
7
  - Treasure Data, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-22 00:00:00.000000000 Z
11
+ date: 2014-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.4.4
20
- - - "!="
20
+ - - ! '!='
21
21
  - !ruby/object:Gem::Version
22
22
  version: 0.5.0
23
- - - "!="
23
+ - - ! '!='
24
24
  - !ruby/object:Gem::Version
25
25
  version: 0.5.1
26
- - - "!="
26
+ - - ! '!='
27
27
  - !ruby/object:Gem::Version
28
28
  version: 0.5.2
29
- - - "!="
29
+ - - ! '!='
30
30
  - !ruby/object:Gem::Version
31
31
  version: 0.5.3
32
- - - "<"
32
+ - - <
33
33
  - !ruby/object:Gem::Version
34
34
  version: 0.6.0
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">="
39
+ - - ! '>='
40
40
  - !ruby/object:Gem::Version
41
41
  version: 0.4.4
42
- - - "!="
42
+ - - ! '!='
43
43
  - !ruby/object:Gem::Version
44
44
  version: 0.5.0
45
- - - "!="
45
+ - - ! '!='
46
46
  - !ruby/object:Gem::Version
47
47
  version: 0.5.1
48
- - - "!="
48
+ - - ! '!='
49
49
  - !ruby/object:Gem::Version
50
50
  version: 0.5.2
51
- - - "!="
51
+ - - ! '!='
52
52
  - !ruby/object:Gem::Version
53
53
  version: 0.5.3
54
- - - "<"
54
+ - - <
55
55
  - !ruby/object:Gem::Version
56
56
  version: 0.6.0
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: json
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - ">="
61
+ - - ! '>='
62
62
  - !ruby/object:Gem::Version
63
63
  version: 1.7.6
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
- - - ">="
68
+ - - ! '>='
69
69
  - !ruby/object:Gem::Version
70
70
  version: 1.7.6
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: httpclient
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - "~>"
75
+ - - ~>
76
76
  - !ruby/object:Gem::Version
77
77
  version: 2.3.4
78
78
  type: :runtime
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - "~>"
82
+ - - ~>
83
83
  - !ruby/object:Gem::Version
84
84
  version: 2.3.4
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: rspec
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - "~>"
89
+ - - ~>
90
90
  - !ruby/object:Gem::Version
91
91
  version: '2.8'
92
92
  type: :development
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
- - - "~>"
96
+ - - ~>
97
97
  - !ruby/object:Gem::Version
98
98
  version: '2.8'
99
99
  - !ruby/object:Gem::Dependency
100
100
  name: webmock
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
- - - "~>"
103
+ - - ~>
104
104
  - !ruby/object:Gem::Version
105
105
  version: '1.16'
106
106
  type: :development
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
- - - "~>"
110
+ - - ~>
111
111
  - !ruby/object:Gem::Version
112
112
  version: '1.16'
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: simplecov
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
- - - ">="
117
+ - - ! '>='
118
118
  - !ruby/object:Gem::Version
119
119
  version: 0.5.4
120
120
  type: :development
121
121
  prerelease: false
122
122
  version_requirements: !ruby/object:Gem::Requirement
123
123
  requirements:
124
- - - ">="
124
+ - - ! '>='
125
125
  - !ruby/object:Gem::Version
126
126
  version: 0.5.4
127
127
  - !ruby/object:Gem::Dependency
128
128
  name: rake
129
129
  requirement: !ruby/object:Gem::Requirement
130
130
  requirements:
131
- - - ">="
131
+ - - ! '>='
132
132
  - !ruby/object:Gem::Version
133
133
  version: '0'
134
134
  type: :development
135
135
  prerelease: false
136
136
  version_requirements: !ruby/object:Gem::Requirement
137
137
  requirements:
138
- - - ">="
138
+ - - ! '>='
139
139
  - !ruby/object:Gem::Version
140
140
  version: '0'
141
141
  description: Treasure Data API library for Ruby
@@ -171,12 +171,12 @@ require_paths:
171
171
  - lib
172
172
  required_ruby_version: !ruby/object:Gem::Requirement
173
173
  requirements:
174
- - - ">="
174
+ - - ! '>='
175
175
  - !ruby/object:Gem::Version
176
176
  version: '0'
177
177
  required_rubygems_version: !ruby/object:Gem::Requirement
178
178
  requirements:
179
- - - ">="
179
+ - - ! '>='
180
180
  - !ruby/object:Gem::Version
181
181
  version: '0'
182
182
  requirements: []