trino-client 1.0.0
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 +7 -0
- data/.github/CODEOWNERS +1 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +18 -0
- data/.github/workflows/ruby.yml +30 -0
- data/.gitignore +4 -0
- data/ChangeLog.md +168 -0
- data/Gemfile +7 -0
- data/LICENSE +202 -0
- data/README.md +131 -0
- data/Rakefile +45 -0
- data/lib/trino-client.rb +1 -0
- data/lib/trino/client.rb +23 -0
- data/lib/trino/client/client.rb +78 -0
- data/lib/trino/client/errors.rb +46 -0
- data/lib/trino/client/faraday_client.rb +242 -0
- data/lib/trino/client/model_versions/0.149.rb +1683 -0
- data/lib/trino/client/model_versions/0.153.rb +1719 -0
- data/lib/trino/client/model_versions/0.173.rb +1685 -0
- data/lib/trino/client/model_versions/0.178.rb +1964 -0
- data/lib/trino/client/model_versions/0.205.rb +2169 -0
- data/lib/trino/client/model_versions/303.rb +2574 -0
- data/lib/trino/client/model_versions/316.rb +2595 -0
- data/lib/trino/client/model_versions/351.rb +2726 -0
- data/lib/trino/client/models.rb +38 -0
- data/lib/trino/client/query.rb +144 -0
- data/lib/trino/client/statement_client.rb +279 -0
- data/lib/trino/client/version.rb +20 -0
- data/modelgen/model_versions.rb +280 -0
- data/modelgen/modelgen.rb +119 -0
- data/modelgen/models.rb +31 -0
- data/modelgen/trino_models.rb +270 -0
- data/release.rb +56 -0
- data/spec/basic_query_spec.rb +82 -0
- data/spec/client_spec.rb +75 -0
- data/spec/gzip_spec.rb +40 -0
- data/spec/model_spec.rb +35 -0
- data/spec/spec_helper.rb +42 -0
- data/spec/statement_client_spec.rb +637 -0
- data/spec/tpch/q01.sql +21 -0
- data/spec/tpch/q02.sql +43 -0
- data/spec/tpch_query_spec.rb +41 -0
- data/trino-client.gemspec +31 -0
- metadata +211 -0
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 Trino::Client::Client do
|
4
|
+
before(:all) do
|
5
|
+
@spec_path = File.dirname(__FILE__)
|
6
|
+
WebMock.disable!
|
7
|
+
@cluster = TinyPresto::Cluster.new()
|
8
|
+
@container = @cluster.run
|
9
|
+
@client = Trino::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('show schemas')
|
14
|
+
break
|
15
|
+
rescue StandardError => exception
|
16
|
+
puts "Waiting for cluster ready... #{exception}"
|
17
|
+
sleep(3)
|
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
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require File.expand_path 'lib/trino/client/version', File.dirname(__FILE__)
|
2
|
+
|
3
|
+
Gem::Specification.new do |gem|
|
4
|
+
gem.name = "trino-client"
|
5
|
+
gem.version = Trino::Client::VERSION
|
6
|
+
|
7
|
+
gem.authors = ["Sadayuki Furuhashi"]
|
8
|
+
gem.email = ["sf@treasure-data.com"]
|
9
|
+
gem.description = %q{Trino client library}
|
10
|
+
gem.summary = %q{Trino client library}
|
11
|
+
gem.homepage = "https://github.com/treasure-data/trino-client-ruby"
|
12
|
+
gem.license = "Apache-2.0"
|
13
|
+
|
14
|
+
gem.files = `git ls-files`.split($\)
|
15
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
16
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
17
|
+
gem.require_paths = ["lib"]
|
18
|
+
gem.has_rdoc = false
|
19
|
+
|
20
|
+
gem.required_ruby_version = ">= 1.9.1"
|
21
|
+
|
22
|
+
gem.add_dependency "faraday", ["~> 0.12"]
|
23
|
+
gem.add_dependency "faraday_middleware", ["~> 0.12.2"]
|
24
|
+
gem.add_dependency "msgpack", [">= 0.7.0"]
|
25
|
+
|
26
|
+
gem.add_development_dependency "rake", [">= 0.9.2", "< 11.0"]
|
27
|
+
gem.add_development_dependency "rspec", ["~> 2.13.0"]
|
28
|
+
gem.add_development_dependency "webmock", ["~> 2.0.0"]
|
29
|
+
gem.add_development_dependency "addressable", ["~> 2.4.0"] # 2.5.0 doesn't support Ruby 1.9.3
|
30
|
+
gem.add_development_dependency "simplecov", ["~> 0.10.0"]
|
31
|
+
end
|
metadata
ADDED
@@ -0,0 +1,211 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: trino-client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sadayuki Furuhashi
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-07-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: faraday
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.12'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
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
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: msgpack
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.7.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.7.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.9.2
|
62
|
+
- - "<"
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '11.0'
|
65
|
+
type: :development
|
66
|
+
prerelease: false
|
67
|
+
version_requirements: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: 0.9.2
|
72
|
+
- - "<"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '11.0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: rspec
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: 2.13.0
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 2.13.0
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: webmock
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: 2.0.0
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 2.0.0
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: addressable
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 2.4.0
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - "~>"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 2.4.0
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: simplecov
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: 0.10.0
|
124
|
+
type: :development
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: 0.10.0
|
131
|
+
description: Trino client library
|
132
|
+
email:
|
133
|
+
- sf@treasure-data.com
|
134
|
+
executables: []
|
135
|
+
extensions: []
|
136
|
+
extra_rdoc_files: []
|
137
|
+
files:
|
138
|
+
- ".github/CODEOWNERS"
|
139
|
+
- ".github/PULL_REQUEST_TEMPLATE.md"
|
140
|
+
- ".github/workflows/ruby.yml"
|
141
|
+
- ".gitignore"
|
142
|
+
- ChangeLog.md
|
143
|
+
- Gemfile
|
144
|
+
- LICENSE
|
145
|
+
- README.md
|
146
|
+
- Rakefile
|
147
|
+
- lib/trino-client.rb
|
148
|
+
- lib/trino/client.rb
|
149
|
+
- lib/trino/client/client.rb
|
150
|
+
- lib/trino/client/errors.rb
|
151
|
+
- lib/trino/client/faraday_client.rb
|
152
|
+
- lib/trino/client/model_versions/0.149.rb
|
153
|
+
- lib/trino/client/model_versions/0.153.rb
|
154
|
+
- lib/trino/client/model_versions/0.173.rb
|
155
|
+
- lib/trino/client/model_versions/0.178.rb
|
156
|
+
- lib/trino/client/model_versions/0.205.rb
|
157
|
+
- lib/trino/client/model_versions/303.rb
|
158
|
+
- lib/trino/client/model_versions/316.rb
|
159
|
+
- lib/trino/client/model_versions/351.rb
|
160
|
+
- lib/trino/client/models.rb
|
161
|
+
- lib/trino/client/query.rb
|
162
|
+
- lib/trino/client/statement_client.rb
|
163
|
+
- lib/trino/client/version.rb
|
164
|
+
- modelgen/model_versions.rb
|
165
|
+
- modelgen/modelgen.rb
|
166
|
+
- modelgen/models.rb
|
167
|
+
- modelgen/trino_models.rb
|
168
|
+
- release.rb
|
169
|
+
- spec/basic_query_spec.rb
|
170
|
+
- spec/client_spec.rb
|
171
|
+
- spec/gzip_spec.rb
|
172
|
+
- spec/model_spec.rb
|
173
|
+
- spec/spec_helper.rb
|
174
|
+
- spec/statement_client_spec.rb
|
175
|
+
- spec/tpch/q01.sql
|
176
|
+
- spec/tpch/q02.sql
|
177
|
+
- spec/tpch_query_spec.rb
|
178
|
+
- trino-client.gemspec
|
179
|
+
homepage: https://github.com/treasure-data/trino-client-ruby
|
180
|
+
licenses:
|
181
|
+
- Apache-2.0
|
182
|
+
metadata: {}
|
183
|
+
post_install_message:
|
184
|
+
rdoc_options: []
|
185
|
+
require_paths:
|
186
|
+
- lib
|
187
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
188
|
+
requirements:
|
189
|
+
- - ">="
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: 1.9.1
|
192
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
193
|
+
requirements:
|
194
|
+
- - ">="
|
195
|
+
- !ruby/object:Gem::Version
|
196
|
+
version: '0'
|
197
|
+
requirements: []
|
198
|
+
rubygems_version: 3.0.3
|
199
|
+
signing_key:
|
200
|
+
specification_version: 4
|
201
|
+
summary: Trino client library
|
202
|
+
test_files:
|
203
|
+
- spec/basic_query_spec.rb
|
204
|
+
- spec/client_spec.rb
|
205
|
+
- spec/gzip_spec.rb
|
206
|
+
- spec/model_spec.rb
|
207
|
+
- spec/spec_helper.rb
|
208
|
+
- spec/statement_client_spec.rb
|
209
|
+
- spec/tpch/q01.sql
|
210
|
+
- spec/tpch/q02.sql
|
211
|
+
- spec/tpch_query_spec.rb
|