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.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/.github/CODEOWNERS +1 -0
  3. data/.github/PULL_REQUEST_TEMPLATE.md +18 -0
  4. data/.github/workflows/ruby.yml +30 -0
  5. data/.gitignore +4 -0
  6. data/ChangeLog.md +168 -0
  7. data/Gemfile +7 -0
  8. data/LICENSE +202 -0
  9. data/README.md +131 -0
  10. data/Rakefile +45 -0
  11. data/lib/trino-client.rb +1 -0
  12. data/lib/trino/client.rb +23 -0
  13. data/lib/trino/client/client.rb +78 -0
  14. data/lib/trino/client/errors.rb +46 -0
  15. data/lib/trino/client/faraday_client.rb +242 -0
  16. data/lib/trino/client/model_versions/0.149.rb +1683 -0
  17. data/lib/trino/client/model_versions/0.153.rb +1719 -0
  18. data/lib/trino/client/model_versions/0.173.rb +1685 -0
  19. data/lib/trino/client/model_versions/0.178.rb +1964 -0
  20. data/lib/trino/client/model_versions/0.205.rb +2169 -0
  21. data/lib/trino/client/model_versions/303.rb +2574 -0
  22. data/lib/trino/client/model_versions/316.rb +2595 -0
  23. data/lib/trino/client/model_versions/351.rb +2726 -0
  24. data/lib/trino/client/models.rb +38 -0
  25. data/lib/trino/client/query.rb +144 -0
  26. data/lib/trino/client/statement_client.rb +279 -0
  27. data/lib/trino/client/version.rb +20 -0
  28. data/modelgen/model_versions.rb +280 -0
  29. data/modelgen/modelgen.rb +119 -0
  30. data/modelgen/models.rb +31 -0
  31. data/modelgen/trino_models.rb +270 -0
  32. data/release.rb +56 -0
  33. data/spec/basic_query_spec.rb +82 -0
  34. data/spec/client_spec.rb +75 -0
  35. data/spec/gzip_spec.rb +40 -0
  36. data/spec/model_spec.rb +35 -0
  37. data/spec/spec_helper.rb +42 -0
  38. data/spec/statement_client_spec.rb +637 -0
  39. data/spec/tpch/q01.sql +21 -0
  40. data/spec/tpch/q02.sql +43 -0
  41. data/spec/tpch_query_spec.rb +41 -0
  42. data/trino-client.gemspec +31 -0
  43. 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