td-client 1.0.1 → 1.0.2
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/lib/td/client/api.rb +3 -1
- data/lib/td/client/api/job.rb +2 -1
- data/lib/td/client/model.rb +4 -3
- data/lib/td/client/version.rb +1 -1
- data/spec/td/client/model_schema_spec.rb +28 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a45d6b813ecd784711b722f4092e5bae4092f7f
|
4
|
+
data.tar.gz: 1b0371ff2fbdc251693656e9e63b91f9763417eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7da7f3bd0bef93c74d9adb84f5b9190a1781b50aced54ad8366d04cdf6f27ac745e7a37d7e17b20c62ced7a6d176d1fb3adc68ed9434834c973322f3b4a1b5ea
|
7
|
+
data.tar.gz: a27712fd626d72ac2811b00590d887c786ad113ea40cf67ab5b1d89a3e48ec724c97809d6bed1be8bba908eddfe54346c0b96871db7189800ee1f9f7176bdcac
|
data/lib/td/client/api.rb
CHANGED
@@ -312,7 +312,9 @@ private
|
|
312
312
|
retry_delay *= 2
|
313
313
|
redo # restart from beginning of do-while loop
|
314
314
|
end
|
315
|
-
rescue Errno::ECONNREFUSED, Errno::ECONNRESET, Timeout::Error, EOFError,
|
315
|
+
rescue Errno::ECONNREFUSED, Errno::ECONNRESET, Timeout::Error, EOFError,
|
316
|
+
SystemCallError, OpenSSL::SSL::SSLError, SocketError, HTTPClient::TimeoutError,
|
317
|
+
IncompleteError => e
|
316
318
|
if block_given?
|
317
319
|
raise e
|
318
320
|
end
|
data/lib/td/client/api/job.rb
CHANGED
@@ -331,7 +331,8 @@ module Job
|
|
331
331
|
# completed?
|
332
332
|
validate_content_length_with_range(response, current_total_chunk_size)
|
333
333
|
rescue Errno::ECONNREFUSED, Errno::ECONNRESET, Timeout::Error, EOFError,
|
334
|
-
OpenSSL::SSL::SSLError, SocketError,
|
334
|
+
SystemCallError, OpenSSL::SSL::SSLError, SocketError, HTTPClient::TimeoutError,
|
335
|
+
HTTPServerException => e
|
335
336
|
if response # at least a chunk is downloaded
|
336
337
|
if etag = response.header['ETag'][0]
|
337
338
|
header['If-Range'] = etag
|
data/lib/td/client/model.rb
CHANGED
@@ -320,7 +320,7 @@ class Schema
|
|
320
320
|
@fields.each do |f|
|
321
321
|
raise ArgumentError, "Column name '#{f.name}' is duplicated." if @names.key?(f.name)
|
322
322
|
@names[f.name] = true
|
323
|
-
if f.sql_alias
|
323
|
+
if f.sql_alias && f.name != f.sql_alias
|
324
324
|
raise ArgumentError, "SQL Column alias '#{f.sql_alias}' is duplicated." if @names.key?(f.sql_alias)
|
325
325
|
@names[f.sql_alias] = true
|
326
326
|
end
|
@@ -338,7 +338,7 @@ class Schema
|
|
338
338
|
raise ParameterValidationError, "Column name '#{name}' is duplicated."
|
339
339
|
end
|
340
340
|
@names[name] = true
|
341
|
-
if sql_alias && @names.key?(sql_alias)
|
341
|
+
if sql_alias && sql_alias != name && @names.key?(sql_alias)
|
342
342
|
raise ParameterValidationError, "SQL Column alias '#{sql_alias}' is duplicated."
|
343
343
|
end
|
344
344
|
@names[sql_alias] = true
|
@@ -466,7 +466,8 @@ class Job < Model
|
|
466
466
|
yield self if block_given?
|
467
467
|
rescue timeout_klass
|
468
468
|
raise Timeout::Error, $!.message
|
469
|
-
rescue
|
469
|
+
rescue Errno::ECONNREFUSED, Errno::ECONNRESET, Timeout::Error, EOFError,
|
470
|
+
SystemCallError, OpenSSL::SSL::SSLError, SocketError, HTTPClient::TimeoutError
|
470
471
|
$stderr.puts "ignore network error (#{$!}); retry..." if verbose
|
471
472
|
end until finished?
|
472
473
|
end
|
data/lib/td/client/version.rb
CHANGED
@@ -30,6 +30,15 @@ describe 'TreasureData::Schema::Field' do
|
|
30
30
|
expect(f.sql_alias).to eq 'alice'
|
31
31
|
end
|
32
32
|
end
|
33
|
+
context 'with sql_alias which equals to its name' do
|
34
|
+
it 'works' do
|
35
|
+
name = "abc"
|
36
|
+
f = Schema::Field.new(name, 'int', name)
|
37
|
+
expect(f.name).to eq name
|
38
|
+
expect(f.type).to eq 'int'
|
39
|
+
expect(f.sql_alias).to eq name
|
40
|
+
end
|
41
|
+
end
|
33
42
|
context 'with invalid sql_alias' do
|
34
43
|
it 'raises' do
|
35
44
|
expect{ Schema::Field.new('t:t', 'int', 't:t') }.to raise_error(ParameterValidationError)
|
@@ -57,11 +66,23 @@ describe 'TreasureData::Schema' do
|
|
57
66
|
end
|
58
67
|
|
59
68
|
describe '.new' do
|
60
|
-
it do
|
69
|
+
it 'works with single field' do
|
61
70
|
f = Schema::Field.new('a', 'int')
|
62
71
|
sc = Schema.new([f])
|
63
72
|
expect(sc.fields[0]).to eq f
|
64
73
|
end
|
74
|
+
it 'works with multiple fields' do
|
75
|
+
f0 = Schema::Field.new('a', 'int')
|
76
|
+
f1 = Schema::Field.new('b', 'int', 'b')
|
77
|
+
sc = Schema.new([f0, f1])
|
78
|
+
expect(sc.fields[0]).to eq f0
|
79
|
+
expect(sc.fields[1]).to eq f1
|
80
|
+
end
|
81
|
+
it 'raises' do
|
82
|
+
f0 = Schema::Field.new('a', 'int')
|
83
|
+
f1 = Schema::Field.new('b', 'int', 'a')
|
84
|
+
expect{ Schema.new([f0, f1]) }.to raise_error(ArgumentError)
|
85
|
+
end
|
65
86
|
end
|
66
87
|
|
67
88
|
describe '#fields' do
|
@@ -79,6 +100,12 @@ describe 'TreasureData::Schema' do
|
|
79
100
|
sc.add_field('b', 'double', 'bb')
|
80
101
|
expect(sc.fields[1].name).to eq 'b'
|
81
102
|
end
|
103
|
+
it do
|
104
|
+
f = Schema::Field.new('a', 'int')
|
105
|
+
sc = Schema.new([f])
|
106
|
+
sc.add_field('b', 'double', 'b')
|
107
|
+
expect(sc.fields[1].name).to eq 'b'
|
108
|
+
end
|
82
109
|
it 'raises ParameterValidationError if name is duplicated' do
|
83
110
|
f = Schema::Field.new('a', 'int')
|
84
111
|
sc = Schema.new([f])
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: td-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
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: 2017-
|
11
|
+
date: 2017-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|