click_house 1.3.3 → 1.3.8
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/.github/workflows/main.yml +68 -0
- data/.rubocop.yml +43 -3
- data/CHANGELOG.md +18 -0
- data/Gemfile.lock +21 -21
- data/README.md +12 -3
- data/click_house.gemspec +1 -0
- data/docker-compose.yml +1 -1
- data/lib/click_house.rb +3 -11
- data/lib/click_house/config.rb +0 -4
- data/lib/click_house/connection.rb +1 -0
- data/lib/click_house/definition/column_set.rb +1 -11
- data/lib/click_house/extend.rb +1 -0
- data/lib/click_house/extend/connection_explaining.rb +15 -0
- data/lib/click_house/extend/type_definition.rb +10 -1
- data/lib/click_house/middleware/parse_csv.rb +1 -1
- data/lib/click_house/response/result_set.rb +4 -6
- data/lib/click_house/util/statement.rb +2 -1
- data/lib/click_house/version.rb +1 -1
- metadata +5 -4
- data/.travis.yml +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c4ca9cca59d1e59aaf5e86ef624928def03e276492c775a15dbf48938716180
|
4
|
+
data.tar.gz: 671a7c265806735bd8ce5dec00d7dcc1b8057179a2a74b3e771ff6b7792d2864
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c191e44fd27d8b08bbb2be2cca11057421557526596ca05cc8086182bbbb8a31897ccc92c3475221fdcd7a3c8fc6caeab312f4ffbbb7a313a2014d461542c16
|
7
|
+
data.tar.gz: cfed5341b0320d362b05023ce48de8400a5078337f52d9adde990eb53465e9e1a15f388ae72ebf3a7335e4a3f1762cbc6c3a0197d3fb00c4f2e42def6a1157f0
|
@@ -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.12.3.3
|
12
|
+
ports:
|
13
|
+
- 8123:8123
|
14
|
+
|
15
|
+
strategy:
|
16
|
+
matrix:
|
17
|
+
ruby-version: [2.7, 2.6, 2.5, 2.4]
|
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
|
data/.rubocop.yml
CHANGED
@@ -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:
|
@@ -44,8 +54,6 @@ Metrics/BlockLength:
|
|
44
54
|
Enabled: true
|
45
55
|
Metrics/MethodLength:
|
46
56
|
Max: 25
|
47
|
-
Metrics/LineLength:
|
48
|
-
Max: 140
|
49
57
|
Metrics/AbcSize:
|
50
58
|
Max: 40
|
51
59
|
|
@@ -63,6 +71,8 @@ Naming/AccessorMethodName:
|
|
63
71
|
Enabled: false
|
64
72
|
|
65
73
|
# ============================== Layout =============================
|
74
|
+
Layout/LineLength:
|
75
|
+
Max: 140
|
66
76
|
Layout/HashAlignment:
|
67
77
|
EnforcedHashRocketStyle: key
|
68
78
|
EnforcedColonStyle: key
|
@@ -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
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
# 1.3.8
|
2
|
+
* fix `DateTime` casting for queries like `ClickHouse.connection.select_value('select NOW()')`
|
3
|
+
* fix resulting set console inspection
|
4
|
+
|
5
|
+
# 1.3.7
|
6
|
+
* specify required ruby version [#10](https://github.com/shlima/click_house/issues/10)
|
7
|
+
|
8
|
+
# 1.3.6
|
9
|
+
* fix ruby 2.7 warning `maybe ** should be added to the call` on `ClickHouse.connection.databases`
|
10
|
+
|
11
|
+
# 1.3.5
|
12
|
+
* added `ClickHouse.connexction.explain("sql")`
|
13
|
+
|
14
|
+
# 1.3.4
|
15
|
+
* added `ClickHouse.type_names(nullable: false)`
|
16
|
+
* fixed `connection#create_table` column definitions
|
17
|
+
* `ClickHouse.add_type` now handles Nullable types automatically
|
18
|
+
|
1
19
|
# 1.3.3
|
2
20
|
* fix logger typo
|
3
21
|
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
click_house (1.3.
|
4
|
+
click_house (1.3.8)
|
5
5
|
faraday
|
6
6
|
faraday_middleware
|
7
7
|
|
@@ -18,42 +18,42 @@ GEM
|
|
18
18
|
faraday (~> 1.0)
|
19
19
|
method_source (1.0.0)
|
20
20
|
multipart-post (2.1.1)
|
21
|
-
parallel (1.
|
21
|
+
parallel (1.20.1)
|
22
22
|
parser (2.7.2.0)
|
23
23
|
ast (~> 2.4.1)
|
24
24
|
pry (0.13.1)
|
25
25
|
coderay (~> 1.1)
|
26
26
|
method_source (~> 1.0)
|
27
27
|
rainbow (3.0.0)
|
28
|
-
rake (13.0.
|
29
|
-
regexp_parser (
|
28
|
+
rake (13.0.3)
|
29
|
+
regexp_parser (2.0.1)
|
30
30
|
rexml (3.2.4)
|
31
|
-
rspec (3.
|
32
|
-
rspec-core (~> 3.
|
33
|
-
rspec-expectations (~> 3.
|
34
|
-
rspec-mocks (~> 3.
|
35
|
-
rspec-core (3.
|
36
|
-
rspec-support (~> 3.
|
37
|
-
rspec-expectations (3.
|
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.
|
40
|
-
rspec-mocks (3.
|
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.
|
43
|
-
rspec-support (3.
|
44
|
-
rubocop (
|
42
|
+
rspec-support (~> 3.10.0)
|
43
|
+
rspec-support (3.10.0)
|
44
|
+
rubocop (1.6.1)
|
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 (>=
|
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 (
|
53
|
+
rubocop-ast (1.3.0)
|
54
54
|
parser (>= 2.7.1.5)
|
55
|
-
rubocop-performance (1.
|
56
|
-
rubocop (>= 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,12 +2,11 @@
|
|
2
2
|
|
3
3
|
# ClickHouse Ruby driver
|
4
4
|
|
5
|
-
|
5
|
+

|
6
6
|
[](https://codeclimate.com/github/shlima/click_house)
|
7
7
|
[](https://badge.fury.io/rb/click_house)
|
8
8
|
|
9
9
|
```bash
|
10
|
-
# Requires modern Ruby (>= 2.5), tested with Yandex.Clickhouse v 20.9.3.45
|
11
10
|
gem install click_house
|
12
11
|
```
|
13
12
|
|
@@ -105,6 +104,11 @@ ClickHouse.connection.truncate_tables(['table_1', 'table_2'], if_exists: true, c
|
|
105
104
|
ClickHouse.connection.truncate_tables # will truncate all tables in database
|
106
105
|
ClickHouse.connection.rename_table('old_name', 'new_name', cluster: nil)
|
107
106
|
ClickHouse.connection.rename_table(%w[table_1 table_2], %w[new_1 new_2], cluster: nil)
|
107
|
+
|
108
|
+
ClickHouse.connection.select_all('SELECT * FROM visits')
|
109
|
+
ClickHouse.connection.select_one('SELECT * FROM visits LIMIT 1')
|
110
|
+
ClickHouse.connection.select_value('SELECT ip FROM visits LIMIT 1')
|
111
|
+
ClickHouse.connection.explain('SELECT * FROM visits CROSS JOIN visits')
|
108
112
|
```
|
109
113
|
|
110
114
|
## Queries
|
@@ -346,7 +350,8 @@ data = @records.map do |record|
|
|
346
350
|
end
|
347
351
|
```
|
348
352
|
|
349
|
-
If native type supports arguments, define type with `%s`
|
353
|
+
If native type supports arguments, define *String* type with `%s`
|
354
|
+
argument and *Numeric* type with `%d` argument:
|
350
355
|
|
351
356
|
```ruby
|
352
357
|
class DateTimeType
|
@@ -398,6 +403,10 @@ development:
|
|
398
403
|
test:
|
399
404
|
database: ecliptic_test
|
400
405
|
<<: *default
|
406
|
+
|
407
|
+
production:
|
408
|
+
<<: *default
|
409
|
+
database: ecliptic_production
|
401
410
|
```
|
402
411
|
|
403
412
|
```ruby
|
data/click_house.gemspec
CHANGED
@@ -10,6 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.summary = 'Modern Ruby database driver for ClickHouse'
|
11
11
|
spec.description = 'Yandex ClickHouse database interface for Ruby'
|
12
12
|
spec.homepage = 'https://github.com/shlima/click_house'
|
13
|
+
spec.required_ruby_version = '>= 2.4.0'
|
13
14
|
|
14
15
|
# Specify which files should be added to the gem when it is released.
|
15
16
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
data/docker-compose.yml
CHANGED
data/lib/click_house.rb
CHANGED
@@ -28,41 +28,33 @@ module ClickHouse
|
|
28
28
|
|
29
29
|
%w[Date].each do |column|
|
30
30
|
add_type column, Type::DateType.new
|
31
|
-
add_type "Nullable(#{column})", Type::NullableType.new(Type::DateType.new)
|
32
31
|
end
|
33
32
|
|
34
|
-
%w[String].each do |column|
|
33
|
+
%w[String FixedString(%d) UUID].each do |column|
|
35
34
|
add_type column, Type::StringType.new
|
36
|
-
add_type "Nullable(#{column})", Type::NullableType.new(Type::StringType.new)
|
37
35
|
end
|
38
36
|
|
39
|
-
[
|
37
|
+
%w[DateTime DateTime(%s)].each do |column|
|
40
38
|
add_type column, Type::DateTimeType.new
|
41
|
-
add_type "Nullable(#{column})", Type::NullableType.new(Type::DateTimeType.new)
|
42
39
|
end
|
43
40
|
|
44
41
|
['DateTime64(%d, %s)'].each do |column|
|
45
42
|
add_type column, Type::DateTime64Type.new
|
46
|
-
add_type "Nullable(#{column})", Type::NullableType.new(Type::DateTime64Type.new)
|
47
43
|
end
|
48
44
|
|
49
|
-
['Decimal(%
|
45
|
+
['Decimal(%d, %d)', 'Decimal32(%d)', 'Decimal64(%d)', 'Decimal128(%d)'].each do |column|
|
50
46
|
add_type column, Type::DecimalType.new
|
51
|
-
add_type "Nullable(#{column})", Type::NullableType.new(Type::DecimalType.new)
|
52
47
|
end
|
53
48
|
|
54
49
|
%w[UInt8 UInt16 UInt32 UInt64 Int8 Int16 Int32 Int64].each do |column|
|
55
50
|
add_type column, Type::IntegerType.new
|
56
|
-
add_type "Nullable(#{column})", Type::NullableType.new(Type::IntegerType.new)
|
57
51
|
end
|
58
52
|
|
59
53
|
%w[Float32 Float64].each do |column|
|
60
54
|
add_type column, Type::FloatType.new
|
61
|
-
add_type "Nullable(#{column})", Type::NullableType.new(Type::IntegerType.new)
|
62
55
|
end
|
63
56
|
|
64
57
|
%w[IPv4 IPv6].each do |column|
|
65
58
|
add_type column, Type::IPType.new
|
66
|
-
add_type "Nullable(#{column})", Type::NullableType.new(Type::IPType.new)
|
67
59
|
end
|
68
60
|
end
|
data/lib/click_house/config.rb
CHANGED
@@ -3,17 +3,7 @@
|
|
3
3
|
module ClickHouse
|
4
4
|
module Definition
|
5
5
|
class ColumnSet
|
6
|
-
TYPES =
|
7
|
-
'UInt8', 'UInt16', 'UInt32', 'UInt64', 'Int8', 'Int16', 'Int32', 'Int64',
|
8
|
-
'Float32', 'Float64',
|
9
|
-
'Decimal(%d, %d)', 'Decimal32(%d)', 'Decimal64(%d)', 'Decimal128(%d)',
|
10
|
-
'String',
|
11
|
-
'FixedString(%d)',
|
12
|
-
'UUID',
|
13
|
-
'Date',
|
14
|
-
'IPv4', 'IPv6',
|
15
|
-
"DateTime('%s')", "DateTime64(%d, '%s')"
|
16
|
-
].freeze
|
6
|
+
TYPES = ClickHouse.type_names(nullable: false).map { |s| s.sub('%s', "'%s'") }.freeze
|
17
7
|
|
18
8
|
class << self
|
19
9
|
# @input "DateTime('%s')"
|
data/lib/click_house/extend.rb
CHANGED
@@ -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
|
@@ -3,12 +3,21 @@
|
|
3
3
|
module ClickHouse
|
4
4
|
module Extend
|
5
5
|
module TypeDefinition
|
6
|
+
NULLABLE = 'Nullable'
|
7
|
+
NULLABLE_RE = /#{NULLABLE}/i.freeze
|
8
|
+
|
6
9
|
def types
|
7
10
|
@types ||= Hash.new(Type::UndefinedType.new)
|
8
11
|
end
|
9
12
|
|
10
|
-
def add_type(type, klass)
|
13
|
+
def add_type(type, klass, nullable: true)
|
11
14
|
types[type] = klass
|
15
|
+
types["#{NULLABLE}(#{type})"] = Type::NullableType.new(klass) if nullable
|
16
|
+
end
|
17
|
+
|
18
|
+
# @return [Enum<String>]
|
19
|
+
def type_names(nullable:)
|
20
|
+
nullable ? types.keys : types.keys.grep_v(NULLABLE_RE)
|
12
21
|
end
|
13
22
|
end
|
14
23
|
end
|
@@ -8,9 +8,11 @@ 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
|
-
:each, :fetch, :length, :count, :size,
|
14
|
+
:inspect, :each, :fetch, :length, :count, :size,
|
15
|
+
:first, :last, :[], :to_h
|
14
16
|
|
15
17
|
attr_reader :meta, :data, :statistics
|
16
18
|
|
@@ -28,7 +30,7 @@ module ClickHouse
|
|
28
30
|
# @input "Decimal(10, 5)"
|
29
31
|
# @output "Decimal(%s, %s)"
|
30
32
|
def extract_type_info(type)
|
31
|
-
type = type.gsub(
|
33
|
+
type = type.gsub(NULLABLE_TYPE_RE, '\1')
|
32
34
|
nullable = Regexp.last_match(1)
|
33
35
|
argv = []
|
34
36
|
|
@@ -71,10 +73,6 @@ module ClickHouse
|
|
71
73
|
}
|
72
74
|
end
|
73
75
|
end
|
74
|
-
|
75
|
-
def inspect
|
76
|
-
to_a
|
77
|
-
end
|
78
76
|
end
|
79
77
|
end
|
80
78
|
end
|
@@ -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(
|
18
|
+
"#{sql.sub(END_OF_STATEMENT_RE, '')} FORMAT #{format};"
|
18
19
|
end
|
19
20
|
end
|
20
21
|
end
|
data/lib/click_house/version.rb
CHANGED
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
|
+
version: 1.3.8
|
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
|
+
date: 2020-12-21 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
|
@@ -202,7 +203,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
202
203
|
requirements:
|
203
204
|
- - ">="
|
204
205
|
- !ruby/object:Gem::Version
|
205
|
-
version:
|
206
|
+
version: 2.4.0
|
206
207
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
207
208
|
requirements:
|
208
209
|
- - ">="
|
data/.travis.yml
DELETED
@@ -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
|