presto-client 0.6.0 → 0.6.5
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 +5 -5
- data/.github/CODEOWNERS +1 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +18 -0
- data/.travis.yml +6 -6
- data/ChangeLog.md +164 -0
- data/Gemfile +4 -0
- data/LICENSE +202 -0
- data/README.md +23 -8
- data/Rakefile +1 -3
- data/lib/presto/client/faraday_client.rb +9 -1
- data/lib/presto/client/model_versions/316.rb +3 -3
- data/lib/presto/client/query.rb +2 -4
- data/lib/presto/client/statement_client.rb +40 -29
- data/lib/presto/client/version.rb +1 -1
- data/modelgen/model_versions.rb +3 -3
- data/presto-client.gemspec +2 -1
- data/release.rb +56 -0
- data/spec/basic_query_spec.rb +82 -0
- data/spec/gzip_spec.rb +40 -0
- data/spec/spec_helper.rb +24 -0
- data/spec/statement_client_spec.rb +79 -18
- data/spec/tpch/q01.sql +21 -0
- data/spec/tpch/q02.sql +43 -0
- data/spec/tpch_query_spec.rb +41 -0
- metadata +33 -6
- data/ChangeLog +0 -176
data/spec/spec_helper.rb
CHANGED
@@ -16,3 +16,27 @@ require 'webmock/rspec'
|
|
16
16
|
|
17
17
|
require 'presto-client'
|
18
18
|
include Presto::Client
|
19
|
+
|
20
|
+
require 'tiny-presto'
|
21
|
+
|
22
|
+
MAX_RETRY_COUNT = 5
|
23
|
+
RETRYABLE_ERRORS = [
|
24
|
+
/No nodes available to run query/
|
25
|
+
]
|
26
|
+
|
27
|
+
def run_with_retry(client, sql)
|
28
|
+
i = 0
|
29
|
+
while i < MAX_RETRY_COUNT
|
30
|
+
begin
|
31
|
+
columns, rows = @client.run(sql)
|
32
|
+
return columns, rows
|
33
|
+
rescue Presto::Client::PrestoQueryError => e
|
34
|
+
if RETRYABLE_ERRORS.any? { |error| e.message =~ error }
|
35
|
+
sleep(i)
|
36
|
+
i += 1
|
37
|
+
next
|
38
|
+
end
|
39
|
+
raise "Fail to run query: #{e}"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -10,6 +10,7 @@ describe Presto::Client::StatementClient do
|
|
10
10
|
time_zone: "US/Pacific",
|
11
11
|
language: "ja_JP",
|
12
12
|
debug: true,
|
13
|
+
follow_redirect: true
|
13
14
|
}
|
14
15
|
end
|
15
16
|
|
@@ -112,24 +113,53 @@ describe Presto::Client::StatementClient do
|
|
112
113
|
retry_p.should be_true
|
113
114
|
end
|
114
115
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
116
|
+
# presto version could be "V0_ddd" or "Vddd"
|
117
|
+
/\APresto::Client::ModelVersions::V(\w+)/ =~ Presto::Client::Models.to_s
|
118
|
+
|
119
|
+
# https://github.com/prestosql/presto/commit/80a2c5113d47e3390bf6dc041486a1c9dfc04592
|
120
|
+
# renamed DeleteHandle to DeleteTarget, then DeleteHandle exists when presto version
|
121
|
+
# is less than 313.
|
122
|
+
if $1[0, 2] == "0_" || $1.to_i < 314
|
123
|
+
it "decodes DeleteHandle" do
|
124
|
+
dh = Models::DeleteHandle.decode({
|
125
|
+
"handle" => {
|
126
|
+
"connectorId" => "c1",
|
127
|
+
"connectorHandle" => {}
|
128
|
+
}
|
129
|
+
})
|
130
|
+
dh.handle.should be_a_kind_of Models::TableHandle
|
131
|
+
dh.handle.connector_id.should == "c1"
|
132
|
+
dh.handle.connector_handle.should == {}
|
133
|
+
end
|
126
134
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
135
|
+
it "validates models" do
|
136
|
+
lambda do
|
137
|
+
Models::DeleteHandle.decode({
|
138
|
+
"handle" => "invalid"
|
139
|
+
})
|
140
|
+
end.should raise_error(TypeError, /String to Hash/)
|
141
|
+
end
|
142
|
+
else
|
143
|
+
it "decodes DeleteTarget" do
|
144
|
+
dh = Models::DeleteTarget.decode({
|
145
|
+
"handle" => {
|
146
|
+
"catalogName" => "c1",
|
147
|
+
"connectorHandle" => {}
|
148
|
+
}
|
131
149
|
})
|
132
|
-
|
150
|
+
dh.handle.should be_a_kind_of Models::TableHandle
|
151
|
+
dh.handle.catalog_name.should == "c1"
|
152
|
+
dh.handle.connector_handle.should == {}
|
153
|
+
end
|
154
|
+
|
155
|
+
it "validates models" do
|
156
|
+
lambda do
|
157
|
+
Models::DeleteTarget.decode({
|
158
|
+
"catalogName" => "c1",
|
159
|
+
"handle" => "invalid"
|
160
|
+
})
|
161
|
+
end.should raise_error(TypeError, /String to Hash/)
|
162
|
+
end
|
133
163
|
end
|
134
164
|
|
135
165
|
it "receives headers of POST" do
|
@@ -148,6 +178,22 @@ describe Presto::Client::StatementClient do
|
|
148
178
|
q.current_results_headers["X-Test-Header"].should == "123"
|
149
179
|
end
|
150
180
|
|
181
|
+
describe "#query_id" do
|
182
|
+
it "returns query_id" do
|
183
|
+
stub_request(:post, "localhost/v1/statement").
|
184
|
+
with(body: query).to_return(body: response_json2.to_json, headers: {"X-Test-Header" => "123"})
|
185
|
+
|
186
|
+
stub_request(:get, "localhost/v1/next_uri").
|
187
|
+
to_return(body: response_json.to_json, headers: {"X-Test-Header" => "123"})
|
188
|
+
|
189
|
+
sc = StatementClient.new(faraday, query, options.merge(http_open_timeout: 1))
|
190
|
+
sc.query_id.should == "queryid"
|
191
|
+
sc.has_next?.should be_true
|
192
|
+
sc.advance.should be_true
|
193
|
+
sc.query_id.should == "queryid"
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
151
197
|
describe '#query_info' do
|
152
198
|
let :headers do
|
153
199
|
{
|
@@ -184,6 +230,19 @@ describe Presto::Client::StatementClient do
|
|
184
230
|
statement_client.query_info
|
185
231
|
end.should raise_error(PrestoHttpError, /Presto API returned unexpected data format./)
|
186
232
|
end
|
233
|
+
|
234
|
+
it "is redirected if server returned 301" do
|
235
|
+
stub_request(:get, "http://localhost/v1/query/#{response_json2[:id]}").
|
236
|
+
with(headers: headers).
|
237
|
+
to_return(status: 301, headers: {"Location" => "http://localhost/v1/query/redirected"})
|
238
|
+
|
239
|
+
stub_request(:get, "http://localhost/v1/query/redirected").
|
240
|
+
with(headers: headers).
|
241
|
+
to_return(body: {"queryId" => "queryid"}.to_json)
|
242
|
+
|
243
|
+
query_info = statement_client.query_info
|
244
|
+
query_info.query_id.should == "queryid"
|
245
|
+
end
|
187
246
|
end
|
188
247
|
|
189
248
|
describe "Killing a query" do
|
@@ -564,11 +623,13 @@ describe Presto::Client::StatementClient do
|
|
564
623
|
to_return(body: early_running_response.to_json)
|
565
624
|
client.advance
|
566
625
|
|
567
|
-
sleep 1
|
568
626
|
stub_request(:get, "localhost/v1/next_uri").
|
569
627
|
with(headers: headers).
|
570
628
|
to_return(body: done_response.to_json)
|
571
|
-
client.advance
|
629
|
+
client.advance # set finished
|
630
|
+
|
631
|
+
sleep 1
|
632
|
+
client.advance # set finished
|
572
633
|
end
|
573
634
|
|
574
635
|
end
|
data/spec/tpch/q01.sql
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
SELECT
|
2
|
+
l.returnflag,
|
3
|
+
l.linestatus,
|
4
|
+
sum(l.quantity) AS sum_qty,
|
5
|
+
sum(l.extendedprice) AS sum_base_price,
|
6
|
+
sum(l.extendedprice * (1 - l.discount)) AS sum_disc_price,
|
7
|
+
sum(l.extendedprice * (1 - l.discount) * (1 + l.tax)) AS sum_charge,
|
8
|
+
avg(l.quantity) AS avg_qty,
|
9
|
+
avg(l.extendedprice) AS avg_price,
|
10
|
+
avg(l.discount) AS avg_disc,
|
11
|
+
count(*) AS count_order
|
12
|
+
FROM
|
13
|
+
"tpch"."tiny"."lineitem" AS l
|
14
|
+
WHERE
|
15
|
+
l.shipdate <= DATE '1998-12-01' - INTERVAL '90' DAY
|
16
|
+
GROUP BY
|
17
|
+
l.returnflag,
|
18
|
+
l.linestatus
|
19
|
+
ORDER BY
|
20
|
+
l.returnflag,
|
21
|
+
l.linestatus
|
data/spec/tpch/q02.sql
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
SELECT
|
2
|
+
s.acctbal,
|
3
|
+
s.name,
|
4
|
+
n.name,
|
5
|
+
p.partkey,
|
6
|
+
p.mfgr,
|
7
|
+
s.address,
|
8
|
+
s.phone,
|
9
|
+
s.comment
|
10
|
+
FROM
|
11
|
+
"tpch"."tiny"."part" p,
|
12
|
+
"tpch"."tiny"."supplier" s,
|
13
|
+
"tpch"."tiny"."partsupp" ps,
|
14
|
+
"tpch"."tiny"."nation" n,
|
15
|
+
"tpch"."tiny"."region" r
|
16
|
+
WHERE
|
17
|
+
p.partkey = ps.partkey
|
18
|
+
AND s.suppkey = ps.suppkey
|
19
|
+
AND p.size = 15
|
20
|
+
AND p.type like '%BRASS'
|
21
|
+
AND s.nationkey = n.nationkey
|
22
|
+
AND n.regionkey = r.regionkey
|
23
|
+
AND r.name = 'EUROPE'
|
24
|
+
AND ps.supplycost = (
|
25
|
+
SELECT
|
26
|
+
min(ps.supplycost)
|
27
|
+
FROM
|
28
|
+
"tpch"."tiny"."partsupp" ps,
|
29
|
+
"tpch"."tiny"."supplier" s,
|
30
|
+
"tpch"."tiny"."nation" n,
|
31
|
+
"tpch"."tiny"."region" r
|
32
|
+
WHERE
|
33
|
+
p.partkey = ps.partkey
|
34
|
+
AND s.suppkey = ps.suppkey
|
35
|
+
AND s.nationkey = n.nationkey
|
36
|
+
AND n.regionkey = r.regionkey
|
37
|
+
AND r.name = 'EUROPE'
|
38
|
+
)
|
39
|
+
ORDER BY
|
40
|
+
s.acctbal desc,
|
41
|
+
n.name,
|
42
|
+
s.name,
|
43
|
+
p.partkey
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Presto::Client::Client do
|
4
|
+
before(:all) do
|
5
|
+
@spec_path = File.dirname(__FILE__)
|
6
|
+
WebMock.disable!
|
7
|
+
@cluster = TinyPresto::Cluster.new('ghcr.io/trinodb/presto', '316')
|
8
|
+
@container = @cluster.run
|
9
|
+
@client = Presto::Client.new(server: 'localhost:8080', catalog: 'tpch', user: 'test-user', schema: 'tiny')
|
10
|
+
loop do
|
11
|
+
begin
|
12
|
+
# Make sure to all workers are available.
|
13
|
+
@client.run('select 1234')
|
14
|
+
break
|
15
|
+
rescue StandardError => exception
|
16
|
+
puts "Waiting for cluster ready... #{exception}"
|
17
|
+
sleep(5)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
puts 'Cluster is ready'
|
21
|
+
end
|
22
|
+
|
23
|
+
after(:all) do
|
24
|
+
@cluster.stop
|
25
|
+
WebMock.enable!
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'q01' do
|
29
|
+
q = File.read("#{@spec_path}/tpch/q01.sql")
|
30
|
+
columns, rows = run_with_retry(@client, q)
|
31
|
+
expect(columns.length).to be(10)
|
32
|
+
expect(rows.length).to be(4)
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'q02' do
|
36
|
+
q = File.read("#{@spec_path}/tpch/q02.sql")
|
37
|
+
columns, rows = run_with_retry(@client, q)
|
38
|
+
expect(columns.length).to be(8)
|
39
|
+
expect(rows.length).to be(4)
|
40
|
+
end
|
41
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: presto-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sadayuki Furuhashi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0.12'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: faraday_middleware
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.12.2
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.12.2
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: msgpack
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -121,10 +135,13 @@ executables: []
|
|
121
135
|
extensions: []
|
122
136
|
extra_rdoc_files: []
|
123
137
|
files:
|
138
|
+
- ".github/CODEOWNERS"
|
139
|
+
- ".github/PULL_REQUEST_TEMPLATE.md"
|
124
140
|
- ".gitignore"
|
125
141
|
- ".travis.yml"
|
126
|
-
- ChangeLog
|
142
|
+
- ChangeLog.md
|
127
143
|
- Gemfile
|
144
|
+
- LICENSE
|
128
145
|
- README.md
|
129
146
|
- Rakefile
|
130
147
|
- lib/presto-client.rb
|
@@ -148,13 +165,19 @@ files:
|
|
148
165
|
- modelgen/models.rb
|
149
166
|
- modelgen/presto_models.rb
|
150
167
|
- presto-client.gemspec
|
168
|
+
- release.rb
|
169
|
+
- spec/basic_query_spec.rb
|
151
170
|
- spec/client_spec.rb
|
171
|
+
- spec/gzip_spec.rb
|
152
172
|
- spec/model_spec.rb
|
153
173
|
- spec/spec_helper.rb
|
154
174
|
- spec/statement_client_spec.rb
|
175
|
+
- spec/tpch/q01.sql
|
176
|
+
- spec/tpch/q02.sql
|
177
|
+
- spec/tpch_query_spec.rb
|
155
178
|
homepage: https://github.com/treasure-data/presto-client-ruby
|
156
179
|
licenses:
|
157
|
-
- Apache
|
180
|
+
- Apache-2.0
|
158
181
|
metadata: {}
|
159
182
|
post_install_message:
|
160
183
|
rdoc_options: []
|
@@ -171,13 +194,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
171
194
|
- !ruby/object:Gem::Version
|
172
195
|
version: '0'
|
173
196
|
requirements: []
|
174
|
-
|
175
|
-
rubygems_version: 2.5.1
|
197
|
+
rubygems_version: 3.0.3
|
176
198
|
signing_key:
|
177
199
|
specification_version: 4
|
178
200
|
summary: Presto client library
|
179
201
|
test_files:
|
202
|
+
- spec/basic_query_spec.rb
|
180
203
|
- spec/client_spec.rb
|
204
|
+
- spec/gzip_spec.rb
|
181
205
|
- spec/model_spec.rb
|
182
206
|
- spec/spec_helper.rb
|
183
207
|
- spec/statement_client_spec.rb
|
208
|
+
- spec/tpch/q01.sql
|
209
|
+
- spec/tpch/q02.sql
|
210
|
+
- spec/tpch_query_spec.rb
|
data/ChangeLog
DELETED
@@ -1,176 +0,0 @@
|
|
1
|
-
2019-07-23 version 0.6.0
|
2
|
-
|
3
|
-
* Support presto 316 model class
|
4
|
-
|
5
|
-
|
6
|
-
2019-01-30 version 0.5.14
|
7
|
-
|
8
|
-
* Added `Query#current_results_headers` that returns HTTP response headers
|
9
|
-
|
10
|
-
2018-12-10 version 0.5.13
|
11
|
-
|
12
|
-
* Added `query_timeout` and `plan_timeout` options with default disabled
|
13
|
-
* Changed timer to use CLOCK_MONOTONIC to avoid unexpected behavior when
|
14
|
-
system clock is updated
|
15
|
-
|
16
|
-
2018-08-07 version 0.5.12
|
17
|
-
|
18
|
-
* Upgrade to Presto 0.205 model
|
19
|
-
|
20
|
-
2018-06-27 version 0.5.11
|
21
|
-
|
22
|
-
* Support multiple session properties
|
23
|
-
* Check invalid JSON data response
|
24
|
-
|
25
|
-
2018-03-22 version 0.5.10
|
26
|
-
|
27
|
-
* Added client_info, client_tags, and http_headers options.
|
28
|
-
|
29
|
-
2018-03-02 version 0.5.9
|
30
|
-
|
31
|
-
* Added error_name field at PrestoQueryError
|
32
|
-
|
33
|
-
2017-11-13 version 0.5.8
|
34
|
-
|
35
|
-
* Added `Client#kill(query_id)` method.
|
36
|
-
* Added additional checking of internal exceptions so that client doesn't
|
37
|
-
silently return in case when Presto query is killed and Presto returns a
|
38
|
-
valid `200 OK` response with `result_uri: null`.
|
39
|
-
* Fixed `undefined local variable 'body'` error that was possibly happening
|
40
|
-
when Presto returned an unexpected data structure.
|
41
|
-
|
42
|
-
2017-08-28 version 0.5.7
|
43
|
-
* Support a password option with HTTP basic auth
|
44
|
-
* Changed retry timeout from hard coded 2h to configurable default 2min
|
45
|
-
* Fix too deep nested json failure
|
46
|
-
|
47
|
-
2017-07-03 version 0.5.6:
|
48
|
-
* Added missing inner class models for version 0.178
|
49
|
-
|
50
|
-
2017-06-28 version 0.5.5:
|
51
|
-
* Added support for model version 0.178
|
52
|
-
|
53
|
-
2017-05-15 version 0.5.4:
|
54
|
-
|
55
|
-
* Support "Content-Type: application/x-msgpack" for more efficient parsing of
|
56
|
-
HTTP response body.
|
57
|
-
* Added "enable_x_msgpack: true" option to send Accept header with
|
58
|
-
application/x-msgpack.
|
59
|
-
|
60
|
-
|
61
|
-
2017-04-26 version 0.5.3:
|
62
|
-
|
63
|
-
* Added support for model version 0.173.
|
64
|
-
* Changed the default latest model version to 0.173.
|
65
|
-
* Fixed compatibility with the new major version of Farady
|
66
|
-
* Require Faraday 0.12 or later
|
67
|
-
|
68
|
-
|
69
|
-
2017-02-01 version 0.5.2:
|
70
|
-
|
71
|
-
* Relax dependent version of Faraday to be able to use all 0.x versions.
|
72
|
-
* Fix build script that was broken due to new major version of rake.
|
73
|
-
|
74
|
-
|
75
|
-
2016-11-01 version 0.5.1:
|
76
|
-
|
77
|
-
* Assume ConnectorId as a primitive type to be able to decode "connectorId"
|
78
|
-
fields.
|
79
|
-
|
80
|
-
|
81
|
-
2016-10-28 version 0.5.0:
|
82
|
-
|
83
|
-
* Support multiple model versions
|
84
|
-
* Added support for model version 0.153.
|
85
|
-
* Changed the default latest model version to 0.513.
|
86
|
-
|
87
|
-
|
88
|
-
2016-08-09 version 0.4.17:
|
89
|
-
|
90
|
-
* Added support for :ssl option.
|
91
|
-
|
92
|
-
|
93
|
-
2016-08-03 version 0.4.16:
|
94
|
-
|
95
|
-
* Upgraded Presto model version to 0.151
|
96
|
-
|
97
|
-
|
98
|
-
2016-08-03 version 0.4.15:
|
99
|
-
|
100
|
-
* decode method of model classes validate Hash type
|
101
|
-
|
102
|
-
|
103
|
-
2016-08-02 version 0.4.14:
|
104
|
-
|
105
|
-
* Added support for resuming fetching query results by using new `Query.resume(next_uri, options)` method (@tetrakai++)
|
106
|
-
|
107
|
-
|
108
|
-
2016-08-02 version 0.4.13:
|
109
|
-
|
110
|
-
* Added support for :http_proxy option to use a HTTP proxy server
|
111
|
-
* Added support for hashed Client response using `run_with_names` (thanks to MoovWeb for allowing me to contribute)
|
112
|
-
* Upgraded Presto model version to 0.134
|
113
|
-
|
114
|
-
2015-04-01 version 0.4.5:
|
115
|
-
|
116
|
-
* Upgraded Presto model version to 0.99
|
117
|
-
|
118
|
-
|
119
|
-
2014-11-20 version 0.4.3:
|
120
|
-
|
121
|
-
* Updated gem dependency to accept faraday ~> 0.9.x as well as ~> 0.8.8
|
122
|
-
|
123
|
-
|
124
|
-
2014-10-15 version 0.4.2:
|
125
|
-
|
126
|
-
* Added support for :properties option to set session properties introduced
|
127
|
-
since Presto 0.78
|
128
|
-
|
129
|
-
|
130
|
-
2014-06-12 version 0.4.1:
|
131
|
-
|
132
|
-
* Added EquiJoinClause model class
|
133
|
-
* Added StageId#query_id and #id methods
|
134
|
-
* Added TaskId#query_id, #stage_id and #id methods
|
135
|
-
|
136
|
-
|
137
|
-
2014-06-10 version 0.4.0:
|
138
|
-
|
139
|
-
* Added Query#current_results, #advance and #query_info for advanced users
|
140
|
-
* Generate model classes from Presto source code to include complete classes
|
141
|
-
|
142
|
-
|
143
|
-
2014-05-06 version 0.3.3:
|
144
|
-
|
145
|
-
* Added :time_zone and :language options added by Presto 0.66
|
146
|
-
|
147
|
-
|
148
|
-
2014-04-01 version 0.3.2:
|
149
|
-
|
150
|
-
* Fixed a problem that client skips the last chunk if result is large
|
151
|
-
|
152
|
-
|
153
|
-
2014-01-30 version 0.3.1:
|
154
|
-
|
155
|
-
* Added http_debug option
|
156
|
-
* Disabled HTTP debug logging by default
|
157
|
-
|
158
|
-
|
159
|
-
2014-01-22 version 0.3.0:
|
160
|
-
|
161
|
-
* Added http_timeout option
|
162
|
-
* Added http_open_timeout option
|
163
|
-
* Changed Query.start API to start(query, options) to http options
|
164
|
-
|
165
|
-
|
166
|
-
2014-01-22 version 0.2.0:
|
167
|
-
|
168
|
-
* Added Query#cancel
|
169
|
-
* Added Query#close
|
170
|
-
* Added Client#run
|
171
|
-
* Changed required_ruby_version from 1.9.3 to 1.9.1
|
172
|
-
|
173
|
-
|
174
|
-
2014-01-07 version 0.1.0:
|
175
|
-
|
176
|
-
* First release
|