click_house 1.6.2 → 1.7.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 +4 -4
- data/.github/workflows/main.yml +1 -1
- data/.rubocop.yml +77 -1
- data/CHANGELOG.md +7 -0
- data/Gemfile.lock +24 -22
- data/README.md +1 -1
- data/docker-compose.yml +1 -1
- data/lib/click_house/connection.rb +1 -1
- data/lib/click_house/definition/column.rb +6 -3
- data/lib/click_house/extend/connection_inserting.rb +3 -3
- data/lib/click_house/extend/type_definition.rb +1 -0
- data/lib/click_house/middleware/logging.rb +1 -1
- data/lib/click_house/middleware/raise_error.rb +6 -0
- data/lib/click_house/response/result_set.rb +9 -4
- data/lib/click_house/type/low_cardinality_type.rb +21 -0
- data/lib/click_house/type.rb +1 -0
- data/lib/click_house/version.rb +1 -1
- data/lib/click_house.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 49f4230ea84634e1cfed295d8cc41239d1212bb48807b68636ce82c6cba08039
|
|
4
|
+
data.tar.gz: e78054a1f0e3094746adfea54b8fcf649d306cbaa1fce636e822a073ac446376
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 280540bf287f99f4fc87e90c47bd94312cc4a82047ada6f193ca4e77b84527c7733e2260f8cb7c960a04d726ffbe449612cf9ee3f297bf30cc6ba27e2ccb9b7c
|
|
7
|
+
data.tar.gz: 8a4e4213c46c99181a521e749e57fd63857cb0f135fa41ef9e25781947ecbef4eb8844a9062305a5080abeea85e4dee652d50b432e9c1b1cd65f12bf43006624
|
data/.github/workflows/main.yml
CHANGED
data/.rubocop.yml
CHANGED
|
@@ -14,7 +14,9 @@ Bundler/OrderedGems:
|
|
|
14
14
|
Enabled: false
|
|
15
15
|
|
|
16
16
|
# ============================== Gemspec ======================
|
|
17
|
-
Gemspec/
|
|
17
|
+
Gemspec/DeprecatedAttributeAssignment:
|
|
18
|
+
Enabled: true
|
|
19
|
+
Gemspec/RequireMFA: # new in 1.23
|
|
18
20
|
Enabled: true
|
|
19
21
|
|
|
20
22
|
# =============================== Performance =======================
|
|
@@ -52,6 +54,10 @@ Performance/RedundantSplitRegexpArgument:
|
|
|
52
54
|
Enabled: true
|
|
53
55
|
Performance/MapCompact:
|
|
54
56
|
Enabled: true
|
|
57
|
+
Performance/ConcurrentMonotonicTime: # new in 1.12
|
|
58
|
+
Enabled: true
|
|
59
|
+
Performance/StringIdentifierArgument: # new in 1.13
|
|
60
|
+
Enabled: true
|
|
55
61
|
|
|
56
62
|
# ============================== Metrics ============================
|
|
57
63
|
Metrics/ClassLength:
|
|
@@ -77,6 +83,8 @@ Naming/AccessorMethodName:
|
|
|
77
83
|
Enabled: false
|
|
78
84
|
Naming/InclusiveLanguage:
|
|
79
85
|
Enabled: true
|
|
86
|
+
Naming/BlockForwarding: # new in 1.24
|
|
87
|
+
Enabled: true
|
|
80
88
|
|
|
81
89
|
# ============================== Layout =============================
|
|
82
90
|
Layout/LineLength:
|
|
@@ -117,6 +125,10 @@ Layout/SpaceBeforeBrackets:
|
|
|
117
125
|
Enabled: true
|
|
118
126
|
Layout/LineEndStringConcatenationIndentation:
|
|
119
127
|
Enabled: true
|
|
128
|
+
Layout/LineContinuationLeadingSpace: # new in 1.31
|
|
129
|
+
Enabled: true
|
|
130
|
+
Layout/LineContinuationSpacing: # new in 1.31
|
|
131
|
+
Enabled: true
|
|
120
132
|
|
|
121
133
|
# ============================== Style ==============================
|
|
122
134
|
Style/RescueModifier:
|
|
@@ -247,6 +259,50 @@ Style/QuotedSymbols:
|
|
|
247
259
|
Enabled: true
|
|
248
260
|
Style/StringChars:
|
|
249
261
|
Enabled: true
|
|
262
|
+
Style/EmptyHeredoc: # new in 1.32
|
|
263
|
+
Enabled: true
|
|
264
|
+
Style/EnvHome: # new in 1.29
|
|
265
|
+
Enabled: true
|
|
266
|
+
Style/FetchEnvVar: # new in 1.28
|
|
267
|
+
Enabled: true
|
|
268
|
+
Style/FileRead: # new in 1.24
|
|
269
|
+
Enabled: true
|
|
270
|
+
Style/FileWrite: # new in 1.24
|
|
271
|
+
Enabled: true
|
|
272
|
+
Style/MagicCommentFormat: # new in 1.35
|
|
273
|
+
Enabled: true
|
|
274
|
+
Style/MapCompactWithConditionalBlock: # new in 1.30
|
|
275
|
+
Enabled: true
|
|
276
|
+
Style/MapToHash: # new in 1.24
|
|
277
|
+
Enabled: true
|
|
278
|
+
Style/NestedFileDirname: # new in 1.26
|
|
279
|
+
Enabled: true
|
|
280
|
+
Style/NumberedParameters: # new in 1.22
|
|
281
|
+
Enabled: true
|
|
282
|
+
Style/NumberedParametersLimit: # new in 1.22
|
|
283
|
+
Enabled: true
|
|
284
|
+
Style/ObjectThen: # new in 1.28
|
|
285
|
+
Enabled: true
|
|
286
|
+
Style/OpenStructUse: # new in 1.23
|
|
287
|
+
Enabled: true
|
|
288
|
+
Style/OperatorMethodCall: # new in 1.37
|
|
289
|
+
Enabled: true
|
|
290
|
+
Style/RedundantEach: # new in 1.38
|
|
291
|
+
Enabled: true
|
|
292
|
+
Style/RedundantInitialize: # new in 1.27
|
|
293
|
+
Enabled: true
|
|
294
|
+
Style/RedundantSelfAssignmentBranch: # new in 1.19
|
|
295
|
+
Enabled: true
|
|
296
|
+
Style/RedundantStringEscape: # new in 1.37
|
|
297
|
+
Enabled: true
|
|
298
|
+
Style/SelectByRegexp: # new in 1.22
|
|
299
|
+
Enabled: true
|
|
300
|
+
|
|
301
|
+
# ============================== Security ==============================
|
|
302
|
+
Security/CompoundHash: # new in 1.28
|
|
303
|
+
Enabled: true
|
|
304
|
+
Security/IoMethods: # new in 1.22
|
|
305
|
+
Enabled: true
|
|
250
306
|
|
|
251
307
|
# ============================== Lint ==============================
|
|
252
308
|
Lint/DuplicateMethods:
|
|
@@ -335,3 +391,23 @@ Lint/AmbiguousAssignment:
|
|
|
335
391
|
Enabled: true
|
|
336
392
|
Lint/EmptyInPattern:
|
|
337
393
|
Enabled: true
|
|
394
|
+
Lint/AmbiguousOperatorPrecedence: # new in 1.21
|
|
395
|
+
Enabled: true
|
|
396
|
+
Lint/AmbiguousRange: # new in 1.19
|
|
397
|
+
Enabled: true
|
|
398
|
+
Lint/ConstantOverwrittenInRescue: # new in 1.31
|
|
399
|
+
Enabled: true
|
|
400
|
+
Lint/DuplicateMagicComment: # new in 1.37
|
|
401
|
+
Enabled: true
|
|
402
|
+
Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
|
|
403
|
+
Enabled: true
|
|
404
|
+
Lint/NonAtomicFileOperation: # new in 1.31
|
|
405
|
+
Enabled: true
|
|
406
|
+
Lint/RefinementImportMethods: # new in 1.27
|
|
407
|
+
Enabled: true
|
|
408
|
+
Lint/RequireRangeParentheses: # new in 1.32
|
|
409
|
+
Enabled: true
|
|
410
|
+
Lint/RequireRelativeSelfPath: # new in 1.22
|
|
411
|
+
Enabled: true
|
|
412
|
+
Lint/UselessRuby2Keywords: # new in 1.23
|
|
413
|
+
Enabled: true
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# 1.6.3
|
|
2
|
+
* [PR](https://github.com/shlima/click_house/pull/38) Add option format for insert
|
|
3
|
+
* [PR](https://github.com/shlima/click_house/pull/34) Support X-ClickHouse-Exception-Code header
|
|
4
|
+
* [ISSUE](https://github.com/shlima/click_house/issues/33) Fix parameterized types parsing
|
|
5
|
+
* Added LowCardinality DDL support
|
|
6
|
+
* Fixed body logging with POST queries
|
|
7
|
+
|
|
1
8
|
# 1.6.2
|
|
2
9
|
* [PR](https://github.com/shlima/click_house/pull/31) Add rows_before_limit_at_least to ResultSet
|
|
3
10
|
* [PR](https://github.com/shlima/click_house/pull/29) Force JSON format by using "default_format" instead of modifying the query
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
click_house (1.
|
|
4
|
+
click_house (1.7.0)
|
|
5
5
|
faraday (>= 1.7)
|
|
6
6
|
faraday_middleware
|
|
7
7
|
|
|
@@ -11,7 +11,7 @@ GEM
|
|
|
11
11
|
ast (2.4.2)
|
|
12
12
|
coderay (1.1.3)
|
|
13
13
|
diff-lcs (1.5.0)
|
|
14
|
-
faraday (1.10.
|
|
14
|
+
faraday (1.10.2)
|
|
15
15
|
faraday-em_http (~> 1.0)
|
|
16
16
|
faraday-em_synchrony (~> 1.0)
|
|
17
17
|
faraday-excon (~> 1.1)
|
|
@@ -36,48 +36,50 @@ GEM
|
|
|
36
36
|
faraday-retry (1.0.3)
|
|
37
37
|
faraday_middleware (1.2.0)
|
|
38
38
|
faraday (~> 1.0)
|
|
39
|
+
json (2.6.2)
|
|
39
40
|
method_source (1.0.0)
|
|
40
41
|
multipart-post (2.2.3)
|
|
41
42
|
parallel (1.22.1)
|
|
42
|
-
parser (3.1.1
|
|
43
|
+
parser (3.1.2.1)
|
|
43
44
|
ast (~> 2.4.1)
|
|
44
45
|
pry (0.14.1)
|
|
45
46
|
coderay (~> 1.1)
|
|
46
47
|
method_source (~> 1.0)
|
|
47
48
|
rainbow (3.1.1)
|
|
48
49
|
rake (13.0.6)
|
|
49
|
-
regexp_parser (2.
|
|
50
|
+
regexp_parser (2.6.0)
|
|
50
51
|
rexml (3.2.5)
|
|
51
|
-
rspec (3.
|
|
52
|
-
rspec-core (~> 3.
|
|
53
|
-
rspec-expectations (~> 3.
|
|
54
|
-
rspec-mocks (~> 3.
|
|
55
|
-
rspec-core (3.
|
|
56
|
-
rspec-support (~> 3.
|
|
57
|
-
rspec-expectations (3.
|
|
52
|
+
rspec (3.12.0)
|
|
53
|
+
rspec-core (~> 3.12.0)
|
|
54
|
+
rspec-expectations (~> 3.12.0)
|
|
55
|
+
rspec-mocks (~> 3.12.0)
|
|
56
|
+
rspec-core (3.12.0)
|
|
57
|
+
rspec-support (~> 3.12.0)
|
|
58
|
+
rspec-expectations (3.12.0)
|
|
58
59
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
59
|
-
rspec-support (~> 3.
|
|
60
|
-
rspec-mocks (3.
|
|
60
|
+
rspec-support (~> 3.12.0)
|
|
61
|
+
rspec-mocks (3.12.0)
|
|
61
62
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
62
|
-
rspec-support (~> 3.
|
|
63
|
-
rspec-support (3.
|
|
64
|
-
rubocop (1.
|
|
63
|
+
rspec-support (~> 3.12.0)
|
|
64
|
+
rspec-support (3.12.0)
|
|
65
|
+
rubocop (1.38.0)
|
|
66
|
+
json (~> 2.3)
|
|
65
67
|
parallel (~> 1.10)
|
|
66
|
-
parser (>= 3.1.
|
|
68
|
+
parser (>= 3.1.2.1)
|
|
67
69
|
rainbow (>= 2.2.2, < 4.0)
|
|
68
70
|
regexp_parser (>= 1.8, < 3.0)
|
|
69
|
-
rexml
|
|
70
|
-
rubocop-ast (>= 1.
|
|
71
|
+
rexml (>= 3.2.5, < 4.0)
|
|
72
|
+
rubocop-ast (>= 1.23.0, < 2.0)
|
|
71
73
|
ruby-progressbar (~> 1.7)
|
|
72
74
|
unicode-display_width (>= 1.4.0, < 3.0)
|
|
73
|
-
rubocop-ast (1.
|
|
75
|
+
rubocop-ast (1.23.0)
|
|
74
76
|
parser (>= 3.1.1.0)
|
|
75
|
-
rubocop-performance (1.
|
|
77
|
+
rubocop-performance (1.15.0)
|
|
76
78
|
rubocop (>= 1.7.0, < 2.0)
|
|
77
79
|
rubocop-ast (>= 0.4.0)
|
|
78
80
|
ruby-progressbar (1.11.0)
|
|
79
81
|
ruby2_keywords (0.0.5)
|
|
80
|
-
unicode-display_width (2.
|
|
82
|
+
unicode-display_width (2.3.0)
|
|
81
83
|
|
|
82
84
|
PLATFORMS
|
|
83
85
|
ruby
|
data/README.md
CHANGED
|
@@ -221,7 +221,7 @@ end
|
|
|
221
221
|
```ruby
|
|
222
222
|
ClickHouse.connection.create_table('visits', if_not_exists: true, engine: 'MergeTree(date, (year, date), 8192)') do |t|
|
|
223
223
|
t.FixedString :id, 16
|
|
224
|
-
t.UInt16 :year
|
|
224
|
+
t.UInt16 :year, low_cardinality: true
|
|
225
225
|
t.Date :date
|
|
226
226
|
t.DateTime :time, 'UTC'
|
|
227
227
|
t.Decimal :money, 5, 4
|
data/docker-compose.yml
CHANGED
|
@@ -53,9 +53,9 @@ module ClickHouse
|
|
|
53
53
|
conn.headers = config.headers
|
|
54
54
|
conn.ssl.verify = config.ssl_verify
|
|
55
55
|
conn.request(:basic_auth, config.username, config.password) if config.auth?
|
|
56
|
+
conn.response :json, content_type: %r{application/json}
|
|
56
57
|
conn.response Middleware::RaiseError
|
|
57
58
|
conn.response Middleware::Logging, logger: config.logger!
|
|
58
|
-
conn.response :json, content_type: %r{application/json}
|
|
59
59
|
conn.response Middleware::ParseCsv, content_type: %r{text/csv}
|
|
60
60
|
conn.adapter config.adapter
|
|
61
61
|
end
|
|
@@ -6,6 +6,7 @@ module ClickHouse
|
|
|
6
6
|
attr_accessor :name
|
|
7
7
|
attr_accessor :type
|
|
8
8
|
attr_accessor :nullable
|
|
9
|
+
attr_accessor :low_cardinality
|
|
9
10
|
attr_accessor :extensions
|
|
10
11
|
attr_accessor :default
|
|
11
12
|
attr_accessor :materialized
|
|
@@ -17,10 +18,12 @@ module ClickHouse
|
|
|
17
18
|
end
|
|
18
19
|
|
|
19
20
|
def to_s
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
type = extension_type
|
|
22
|
+
type = "Nullable(#{type})" if nullable
|
|
23
|
+
type = "LowCardinality(#{type})" if low_cardinality
|
|
22
24
|
|
|
23
|
-
|
|
25
|
+
"#{name} #{type} #{opts}"
|
|
26
|
+
end
|
|
24
27
|
|
|
25
28
|
def opts
|
|
26
29
|
options = {
|
|
@@ -14,8 +14,8 @@ module ClickHouse
|
|
|
14
14
|
# end
|
|
15
15
|
#
|
|
16
16
|
# == Example with a param
|
|
17
|
-
# subject.insert('rspec', values: [{ name: 'Sun', id: 1 }, { name: 'Moon', id: 2 }])
|
|
18
|
-
def insert(table, columns: [], values: [])
|
|
17
|
+
# subject.insert('rspec', values: [{ name: 'Sun', id: 1 }, { name: 'Moon', id: 2 }], format: 'JSONStringsEachRow')
|
|
18
|
+
def insert(table, columns: [], values: [], format: 'JSONEachRow')
|
|
19
19
|
yield(values) if block_given?
|
|
20
20
|
|
|
21
21
|
body = if columns.empty?
|
|
@@ -26,7 +26,7 @@ module ClickHouse
|
|
|
26
26
|
|
|
27
27
|
return EMPTY_INSERT if values.empty?
|
|
28
28
|
|
|
29
|
-
execute("INSERT INTO #{table} FORMAT
|
|
29
|
+
execute("INSERT INTO #{table} FORMAT #{format}", body.join("\n")).success?
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
end
|
|
@@ -30,7 +30,7 @@ module ClickHouse
|
|
|
30
30
|
def on_complete(env)
|
|
31
31
|
summary = extract_summary(env.response_headers)
|
|
32
32
|
logger.info("\e[1m[35mSQL (#{duration_stats_log(env.body)})\e[0m #{query(env)};")
|
|
33
|
-
logger.debug(body) if body
|
|
33
|
+
logger.debug(body) if body
|
|
34
34
|
logger.info("\e[1m[36mRead: #{summary.fetch(:read_rows)} rows, #{summary.fetch(:read_bytes)}. Written: #{summary.fetch(:written_rows)} rows, #{summary.fetch(:written_bytes)}\e[0m")
|
|
35
35
|
end
|
|
36
36
|
# rubocop:enable Layout/LineLength
|
|
@@ -4,6 +4,7 @@ module ClickHouse
|
|
|
4
4
|
module Middleware
|
|
5
5
|
class RaiseError < Faraday::Middleware
|
|
6
6
|
SUCCEED_STATUSES = (200..299).freeze
|
|
7
|
+
EXCEPTION_CODE_HEADER = 'x-clickhouse-exception-code'
|
|
7
8
|
|
|
8
9
|
Faraday::Response.register_middleware self => self
|
|
9
10
|
|
|
@@ -16,6 +17,11 @@ module ClickHouse
|
|
|
16
17
|
private
|
|
17
18
|
|
|
18
19
|
def on_complete(env)
|
|
20
|
+
# Valid since Clickhouse 22.6
|
|
21
|
+
if env.response_headers.key?(EXCEPTION_CODE_HEADER)
|
|
22
|
+
raise DbException, env.body
|
|
23
|
+
end
|
|
24
|
+
|
|
19
25
|
return if SUCCEED_STATUSES.include?(env.status)
|
|
20
26
|
|
|
21
27
|
raise DbException, "[#{env.status}] #{env.body}"
|
|
@@ -9,6 +9,9 @@ module ClickHouse
|
|
|
9
9
|
TYPE_ARGV_DELIM = ','
|
|
10
10
|
NULLABLE = 'Nullable'
|
|
11
11
|
NULLABLE_TYPE_RE = /#{NULLABLE}\((.+)\)/i.freeze
|
|
12
|
+
ARG_D_RE = /\A-?\d+\Z/.freeze
|
|
13
|
+
PLACEHOLDER_D = '%d'
|
|
14
|
+
PLACEHOLDER_S = '%s'
|
|
12
15
|
|
|
13
16
|
def_delegators :to_a,
|
|
14
17
|
:inspect, :each, :fetch, :length, :count, :size,
|
|
@@ -25,10 +28,10 @@ module ClickHouse
|
|
|
25
28
|
# @output "DateTime(%s)"
|
|
26
29
|
#
|
|
27
30
|
# @input "Nullable(Decimal(10, 5))"
|
|
28
|
-
# @output "Nullable(Decimal(%
|
|
31
|
+
# @output "Nullable(Decimal(%d, %d))"
|
|
29
32
|
#
|
|
30
33
|
# @input "Decimal(10, 5)"
|
|
31
|
-
# @output "Decimal(%
|
|
34
|
+
# @output "Decimal(%d, %d)"
|
|
32
35
|
def extract_type_info(type)
|
|
33
36
|
type = type.gsub(NULLABLE_TYPE_RE, '\1')
|
|
34
37
|
nullable = Regexp.last_match(1)
|
|
@@ -37,9 +40,11 @@ module ClickHouse
|
|
|
37
40
|
type = type.gsub(/\((.+)\)/, '')
|
|
38
41
|
|
|
39
42
|
if (match = Regexp.last_match(1))
|
|
40
|
-
counter = Array.new(match.count(TYPE_ARGV_DELIM).next) { '%s' }
|
|
41
|
-
type = "#{type}(#{counter.join("#{TYPE_ARGV_DELIM} ")})"
|
|
42
43
|
argv = match.split("#{TYPE_ARGV_DELIM} ")
|
|
44
|
+
placeholder = argv.map do |value|
|
|
45
|
+
value.match?(ARG_D_RE) ? PLACEHOLDER_D : PLACEHOLDER_S
|
|
46
|
+
end
|
|
47
|
+
type = "#{type}(#{placeholder.join("#{TYPE_ARGV_DELIM} ")})"
|
|
43
48
|
end
|
|
44
49
|
|
|
45
50
|
[nullable ? "#{NULLABLE}(#{type})" : type, argv]
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ClickHouse
|
|
4
|
+
module Type
|
|
5
|
+
class LowCardinalityType < BaseType
|
|
6
|
+
attr_reader :subtype
|
|
7
|
+
|
|
8
|
+
def initialize(subtype)
|
|
9
|
+
@subtype = subtype
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def cast(*argv)
|
|
13
|
+
subtype.cast(*argv)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def serialize(*argv)
|
|
17
|
+
subtype.serialize(*argv)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
data/lib/click_house/type.rb
CHANGED
data/lib/click_house/version.rb
CHANGED
data/lib/click_house.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.
|
|
4
|
+
version: 1.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Aliaksandr Shylau
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-
|
|
11
|
+
date: 2022-11-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
@@ -183,6 +183,7 @@ files:
|
|
|
183
183
|
- lib/click_house/type/float_type.rb
|
|
184
184
|
- lib/click_house/type/integer_type.rb
|
|
185
185
|
- lib/click_house/type/ip_type.rb
|
|
186
|
+
- lib/click_house/type/low_cardinality_type.rb
|
|
186
187
|
- lib/click_house/type/nullable_type.rb
|
|
187
188
|
- lib/click_house/type/string_type.rb
|
|
188
189
|
- lib/click_house/type/undefined_type.rb
|