click_house 1.3.4 → 1.3.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 55de5fd75c50aca5227537365eca6c1042bdff12833c8803f66b1022b6bbefd4
4
- data.tar.gz: 101d57eeb3a903a9b95a9955a0ac093c80796ef5fc6163837d49fc7fc64464b2
3
+ metadata.gz: fd545a5ce410be500540a02ef1f46e57b9a7a2dfe2df8b5be47022ac2cd1f5b4
4
+ data.tar.gz: 19b872a4901d7543ddf7fbb23ca53ac8f6731023b74ae5af24a52aac4b054fc3
5
5
  SHA512:
6
- metadata.gz: 860b3f17e95893e7cdd0d43c37ca42557492b7e44b8e0c61d326a8d83c9211a942775131d5a4705d53b6cdab3dc8acd716b5c2d629e7f95f9f95c74b9310398f
7
- data.tar.gz: dc0fd575a9b1c22ae571fda8edb639a8d16df3ddb6497b97b63b3886933b8904e9d94a97f0f8b17619b4c4dca987282265a3002833c3318775e74d201c6f23fa
6
+ metadata.gz: 6ad04e10ecb7acce32f3c18225b62aad8b83ef79f46e176678bbaadf0b274e8b0cefbe72c678e7ba9d047a22d98912a4de2e89b73957b721731e3666caf3850c
7
+ data.tar.gz: 0155f69f8faf71b9fbf95a1d32f04dce4c3eb2a9b43752aac786ee29a3f0db882afd85c1e44178e366938a18053f99eead8d247267d53a49f6dffd63ac0223f5
@@ -0,0 +1,68 @@
1
+ name: CI
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ rspec:
7
+ runs-on: ubuntu-latest
8
+
9
+ services:
10
+ clickhouse:
11
+ image: yandex/clickhouse-server:20.11.4.13
12
+ ports:
13
+ - 8123:8123
14
+
15
+ strategy:
16
+ matrix:
17
+ ruby-version: [2.7, 2.6, 2.5]
18
+
19
+ steps:
20
+ - uses: actions/checkout@v2
21
+
22
+ - name: Set up Ruby ${{ matrix.ruby-version }}
23
+ uses: ruby/setup-ruby@v1
24
+ with:
25
+ ruby-version: ${{ matrix.ruby-version }}
26
+
27
+ - name: Cache gems
28
+ uses: actions/cache@v1
29
+ with:
30
+ path: vendor/bundle
31
+ key: ${{ runner.os }}-${{ matrix.ruby-version }}-bundler-${{ hashFiles('**/Gemfile.lock') }}
32
+ restore-keys: |
33
+ ${{ runner.os }}-${{ matrix.ruby-version }}-bundler-
34
+
35
+ - name: Install gems
36
+ run: |
37
+ bundle config path vendor/bundle
38
+ bundle install --jobs 4 --retry 3
39
+
40
+ - name: Run tests
41
+ run: bundle exec rspec
42
+
43
+ rubocop:
44
+ runs-on: ubuntu-latest
45
+
46
+ steps:
47
+ - uses: actions/checkout@v2
48
+
49
+ - name: Set up Ruby 2.7
50
+ uses: ruby/setup-ruby@v1
51
+ with:
52
+ ruby-version: 2.7
53
+
54
+ - name: Cache gems
55
+ uses: actions/cache@v1
56
+ with:
57
+ path: vendor/bundle
58
+ key: ${{ runner.os }}-bundler-${{ hashFiles('**/Gemfile.lock') }}
59
+ restore-keys: |
60
+ ${{ runner.os }}-bundler-
61
+
62
+ - name: Install gems
63
+ run: |
64
+ bundle config path vendor/bundle
65
+ bundle install --jobs 4 --retry 3
66
+
67
+ - name: Run Rubocop
68
+ run: bundle exec rubocop
@@ -3,13 +3,13 @@ require:
3
3
 
4
4
  AllCops:
5
5
  AutoCorrect: false
6
+ SuggestExtensions: false
6
7
  Exclude:
7
8
  - 'click_house.gemspec'
8
9
  - 'bin/*'
9
10
  - 'spec/**/*'
10
11
  - 'vendor/**/*'
11
12
  TargetRubyVersion: 2.7
12
-
13
13
  Bundler/OrderedGems:
14
14
  Enabled: false
15
15
 
@@ -36,6 +36,16 @@ Performance/StringInclude:
36
36
  Enabled: true
37
37
  Performance/Sum:
38
38
  Enabled: true
39
+ Performance/ArraySemiInfiniteRangeSlice:
40
+ Enabled: true
41
+ Performance/BlockGivenWithExplicitBlock:
42
+ Enabled: true
43
+ Performance/CollectionLiteralInLoop:
44
+ Enabled: true
45
+ Performance/ConstantRegexp:
46
+ Enabled: true
47
+ Performance/MethodObjectAsBlock:
48
+ Enabled: false
39
49
 
40
50
  # ============================== Metrics ============================
41
51
  Metrics/ClassLength:
@@ -193,6 +203,20 @@ Style/RedundantSelfAssignment:
193
203
  Enabled: true
194
204
  Style/SoleNestedConditional:
195
205
  Enabled: true
206
+ Style/ArgumentsForwarding:
207
+ Enabled: true
208
+ Style/CollectionCompact:
209
+ Enabled: true
210
+ Style/DocumentDynamicEvalDefinition:
211
+ Enabled: false
212
+ Style/NegatedIfElseCondition:
213
+ Enabled: true
214
+ Style/NilLambda:
215
+ Enabled: true
216
+ Style/SwapValues:
217
+ Enabled: true
218
+ Style/RedundantArgument:
219
+ Enabled: true
196
220
 
197
221
  # ============================== Lint ==============================
198
222
  Lint/DuplicateMethods:
@@ -247,3 +271,19 @@ Lint/UselessMethodDefinition:
247
271
  Enabled: true
248
272
  Lint/UselessTimes:
249
273
  Enabled: true
274
+ Lint/DuplicateBranch:
275
+ Enabled: true
276
+ Lint/DuplicateRegexpCharacterClassElement:
277
+ Enabled: true
278
+ Lint/EmptyBlock:
279
+ Enabled: true
280
+ Lint/EmptyClass:
281
+ Enabled: true
282
+ Lint/NoReturnInBeginEndBlocks:
283
+ Enabled: true
284
+ Lint/ToEnumArguments:
285
+ Enabled: true
286
+ Lint/UnmodifiedReduceAccumulator:
287
+ Enabled: true
288
+ Lint/UnexpectedBlockArity:
289
+ Enabled: true
@@ -1,6 +1,10 @@
1
+ # 1.3.5
2
+ * added `ClickHouse.connexction.explain("sql")`
3
+
1
4
  # 1.3.4
2
5
  * added `ClickHouse.type_names(nullable: false)`
3
6
  * fixed `connection#create_table` column definitions
7
+ * `ClickHouse.add_type` now handles Nullable types automatically
4
8
 
5
9
  # 1.3.3
6
10
  * fix logger typo
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- click_house (1.3.4)
4
+ click_house (1.3.5)
5
5
  faraday
6
6
  faraday_middleware
7
7
 
@@ -18,7 +18,7 @@ GEM
18
18
  faraday (~> 1.0)
19
19
  method_source (1.0.0)
20
20
  multipart-post (2.1.1)
21
- parallel (1.19.2)
21
+ parallel (1.20.1)
22
22
  parser (2.7.2.0)
23
23
  ast (~> 2.4.1)
24
24
  pry (0.13.1)
@@ -26,34 +26,34 @@ GEM
26
26
  method_source (~> 1.0)
27
27
  rainbow (3.0.0)
28
28
  rake (13.0.1)
29
- regexp_parser (1.8.2)
29
+ regexp_parser (2.0.0)
30
30
  rexml (3.2.4)
31
- rspec (3.9.0)
32
- rspec-core (~> 3.9.0)
33
- rspec-expectations (~> 3.9.0)
34
- rspec-mocks (~> 3.9.0)
35
- rspec-core (3.9.3)
36
- rspec-support (~> 3.9.3)
37
- rspec-expectations (3.9.2)
31
+ rspec (3.10.0)
32
+ rspec-core (~> 3.10.0)
33
+ rspec-expectations (~> 3.10.0)
34
+ rspec-mocks (~> 3.10.0)
35
+ rspec-core (3.10.0)
36
+ rspec-support (~> 3.10.0)
37
+ rspec-expectations (3.10.0)
38
38
  diff-lcs (>= 1.2.0, < 2.0)
39
- rspec-support (~> 3.9.0)
40
- rspec-mocks (3.9.1)
39
+ rspec-support (~> 3.10.0)
40
+ rspec-mocks (3.10.0)
41
41
  diff-lcs (>= 1.2.0, < 2.0)
42
- rspec-support (~> 3.9.0)
43
- rspec-support (3.9.3)
44
- rubocop (0.93.1)
42
+ rspec-support (~> 3.10.0)
43
+ rspec-support (3.10.0)
44
+ rubocop (1.5.2)
45
45
  parallel (~> 1.10)
46
46
  parser (>= 2.7.1.5)
47
47
  rainbow (>= 2.2.2, < 4.0)
48
- regexp_parser (>= 1.8)
48
+ regexp_parser (>= 1.8, < 3.0)
49
49
  rexml
50
- rubocop-ast (>= 0.6.0)
50
+ rubocop-ast (>= 1.2.0, < 2.0)
51
51
  ruby-progressbar (~> 1.7)
52
52
  unicode-display_width (>= 1.4.0, < 2.0)
53
- rubocop-ast (0.8.0)
53
+ rubocop-ast (1.3.0)
54
54
  parser (>= 2.7.1.5)
55
- rubocop-performance (1.8.1)
56
- rubocop (>= 0.87.0)
55
+ rubocop-performance (1.9.1)
56
+ rubocop (>= 0.90.0, < 2.0)
57
57
  rubocop-ast (>= 0.4.0)
58
58
  ruby-progressbar (1.10.1)
59
59
  ruby2_keywords (0.0.2)
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # ClickHouse Ruby driver
4
4
 
5
- [![pipeline status](https://travis-ci.com/shlima/click_house.svg?branch=master)](https://travis-ci.com/shlima/click_house)
5
+ ![CI](https://github.com/shlima/click_house/workflows/CI/badge.svg)
6
6
  [![Code Climate](https://codeclimate.com/github/shlima/click_house/badges/gpa.svg)](https://codeclimate.com/github/shlima/click_house)
7
7
  [![Gem Version](https://badge.fury.io/rb/click_house.svg)](https://badge.fury.io/rb/click_house)
8
8
 
@@ -105,6 +105,11 @@ ClickHouse.connection.truncate_tables(['table_1', 'table_2'], if_exists: true, c
105
105
  ClickHouse.connection.truncate_tables # will truncate all tables in database
106
106
  ClickHouse.connection.rename_table('old_name', 'new_name', cluster: nil)
107
107
  ClickHouse.connection.rename_table(%w[table_1 table_2], %w[new_1 new_2], cluster: nil)
108
+
109
+ ClickHouse.connection.select_all('SELECT * FROM visits')
110
+ ClickHouse.connection.select_one('SELECT * FROM visits LIMIT 1')
111
+ ClickHouse.connection.select_value('SELECT ip FROM visits LIMIT 1')
112
+ ClickHouse.connection.explain('SELECT * FROM visits CROSS JOIN visits')
108
113
  ```
109
114
 
110
115
  ## Queries
@@ -399,6 +404,10 @@ development:
399
404
  test:
400
405
  database: ecliptic_test
401
406
  <<: *default
407
+
408
+ production:
409
+ <<: *default
410
+ database: ecliptic_production
402
411
  ```
403
412
 
404
413
  ```ruby
@@ -2,7 +2,7 @@ version: '3.5'
2
2
 
3
3
  services:
4
4
  clickhouse:
5
- image: yandex/clickhouse-server:20.10.3.30
5
+ image: yandex/clickhouse-server:20.11.4.13
6
6
  ports:
7
7
  - "8123:8123"
8
8
  - "9000:9000"
@@ -8,6 +8,7 @@ module ClickHouse
8
8
  include Extend::ConnectionSelective
9
9
  include Extend::ConnectionInserting
10
10
  include Extend::ConnectionAltering
11
+ include Extend::ConnectionExplaining
11
12
 
12
13
  attr_reader :config
13
14
 
@@ -11,5 +11,6 @@ module ClickHouse
11
11
  autoload :ConnectionSelective, 'click_house/extend/connection_selective'
12
12
  autoload :ConnectionInserting, 'click_house/extend/connection_inserting'
13
13
  autoload :ConnectionAltering, 'click_house/extend/connection_altering'
14
+ autoload :ConnectionExplaining, 'click_house/extend/connection_explaining'
14
15
  end
15
16
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ClickHouse
4
+ module Extend
5
+ module ConnectionExplaining
6
+ EXPLAIN = 'EXPLAIN'
7
+ EXPLAIN_RE = /\A(\s*#{EXPLAIN})/io.freeze
8
+
9
+ def explain(sql, io: $stdout)
10
+ res = execute("#{EXPLAIN} #{sql.gsub(EXPLAIN_RE, '')}")
11
+ io << res.body
12
+ end
13
+ end
14
+ end
15
+ end
@@ -4,6 +4,7 @@ module ClickHouse
4
4
  module Extend
5
5
  module TypeDefinition
6
6
  NULLABLE = 'Nullable'
7
+ NULLABLE_RE = /#{NULLABLE}/i.freeze
7
8
 
8
9
  def types
9
10
  @types ||= Hash.new(Type::UndefinedType.new)
@@ -16,7 +17,7 @@ module ClickHouse
16
17
 
17
18
  # @return [Enum<String>]
18
19
  def type_names(nullable:)
19
- nullable ? types.keys : types.keys.grep_v(/#{NULLABLE}/i)
20
+ nullable ? types.keys : types.keys.grep_v(NULLABLE_RE)
20
21
  end
21
22
  end
22
23
  end
@@ -8,6 +8,7 @@ module ClickHouse
8
8
 
9
9
  TYPE_ARGV_DELIM = ','
10
10
  NULLABLE = 'Nullable'
11
+ NULLABLE_TYPE_RE = /#{NULLABLE}\((.+)\)/i.freeze
11
12
 
12
13
  def_delegators :to_a,
13
14
  :each, :fetch, :length, :count, :size, :first, :last, :[], :to_h
@@ -28,7 +29,7 @@ module ClickHouse
28
29
  # @input "Decimal(10, 5)"
29
30
  # @output "Decimal(%s, %s)"
30
31
  def extract_type_info(type)
31
- type = type.gsub(/#{NULLABLE}\((.+)\)/i, '\1')
32
+ type = type.gsub(NULLABLE_TYPE_RE, '\1')
32
33
  nullable = Regexp.last_match(1)
33
34
  argv = []
34
35
 
@@ -4,6 +4,7 @@ module ClickHouse
4
4
  module Util
5
5
  module Statement
6
6
  END_OF_STATEMENT = ';'
7
+ END_OF_STATEMENT_RE = /#{END_OF_STATEMENT}(\s+|\Z)/.freeze
7
8
 
8
9
  module_function
9
10
 
@@ -14,7 +15,7 @@ module ClickHouse
14
15
  def format(sql, format)
15
16
  return sql if sql.match?(/FORMAT/i)
16
17
 
17
- "#{sql.sub(/#{END_OF_STATEMENT}(\s+|\Z)/, '')} FORMAT #{format};"
18
+ "#{sql.sub(END_OF_STATEMENT_RE, '')} FORMAT #{format};"
18
19
  end
19
20
  end
20
21
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ClickHouse
4
- VERSION = '1.3.4'
4
+ VERSION = '1.3.5'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: click_house
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.4
4
+ version: 1.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aliaksandr Shylau
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-02 00:00:00.000000000 Z
11
+ date: 2020-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -129,10 +129,10 @@ executables: []
129
129
  extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
+ - ".github/workflows/main.yml"
132
133
  - ".gitignore"
133
134
  - ".rspec"
134
135
  - ".rubocop.yml"
135
- - ".travis.yml"
136
136
  - CHANGELOG.md
137
137
  - Gemfile
138
138
  - Gemfile.lock
@@ -158,6 +158,7 @@ files:
158
158
  - lib/click_house/extend/connectible.rb
159
159
  - lib/click_house/extend/connection_altering.rb
160
160
  - lib/click_house/extend/connection_database.rb
161
+ - lib/click_house/extend/connection_explaining.rb
161
162
  - lib/click_house/extend/connection_healthy.rb
162
163
  - lib/click_house/extend/connection_inserting.rb
163
164
  - lib/click_house/extend/connection_selective.rb
@@ -1,16 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - 2.6.5
5
-
6
- services:
7
- - docker
8
-
9
- before_install:
10
- - docker pull yandex/clickhouse-server
11
- - docker run -d -p 127.0.0.1:8123:8123 yandex/clickhouse-server
12
- - bundle install
13
-
14
- script:
15
- - bundle exec rubocop
16
- - bundle exec rspec