clickhouse-activerecord 0.5.11 → 0.5.13
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/lib/active_record/connection_adapters/clickhouse/oid/array.rb +36 -0
- data/lib/active_record/connection_adapters/clickhouse/schema_creation.rb +5 -1
- data/lib/active_record/connection_adapters/clickhouse/schema_statements.rb +2 -2
- data/lib/active_record/connection_adapters/clickhouse_adapter.rb +11 -0
- data/lib/clickhouse-activerecord/migration.rb +1 -1
- data/lib/clickhouse-activerecord/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0d11fee214ec195a5ccb8569e2f0302c7273a74bacc012069837a7f5fd5bec6
|
4
|
+
data.tar.gz: 32d98a8051a6246d567d5ef9278b4a6795b385d4290203c6d6742c961a6490d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0bfb1e29754b50d7c33033dd0be37d1a4205dbb9ff12671fc27f217572d493f2a01c3a28c98e0bfaa968564ca8f714c5abefecf6d14638fa4f767aa00ea13fdf
|
7
|
+
data.tar.gz: eebb37d468dbf8695b50b60ee47e3641517778ee06dc82df767e126bc8f7cd94e9de8c690622777c849ba0ce8adec65d9ff55d30ea0a0b25981f6e41afcbe1dd
|
@@ -23,6 +23,42 @@ module ActiveRecord
|
|
23
23
|
@subtype
|
24
24
|
end
|
25
25
|
|
26
|
+
def deserialize(value)
|
27
|
+
if value.is_a?(::Array)
|
28
|
+
value.map { |item| deserialize(item) }
|
29
|
+
else
|
30
|
+
return value if value.nil?
|
31
|
+
case @subtype
|
32
|
+
when :integer
|
33
|
+
value.to_i
|
34
|
+
when :datetime
|
35
|
+
::DateTime.parse(value)
|
36
|
+
when :date
|
37
|
+
::Date.parse(value)
|
38
|
+
else
|
39
|
+
super
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def serialize(value)
|
45
|
+
if value.is_a?(::Array)
|
46
|
+
value.map { |item| serialize(item) }
|
47
|
+
else
|
48
|
+
return value if value.nil?
|
49
|
+
case @subtype
|
50
|
+
when :integer
|
51
|
+
value.to_i
|
52
|
+
when :datetime
|
53
|
+
DateTime.new.serialize(value)
|
54
|
+
when :date
|
55
|
+
Date.new.serialize(value)
|
56
|
+
else
|
57
|
+
super
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
26
62
|
end
|
27
63
|
end
|
28
64
|
end
|
@@ -125,7 +125,11 @@ module ActiveRecord
|
|
125
125
|
end
|
126
126
|
|
127
127
|
def current_database
|
128
|
-
ActiveRecord::
|
128
|
+
if ActiveRecord::version >= Gem::Version.new('6')
|
129
|
+
ActiveRecord::Base.connection_db_config.database
|
130
|
+
else
|
131
|
+
ActiveRecord::Base.connection_config[:database]
|
132
|
+
end
|
129
133
|
end
|
130
134
|
end
|
131
135
|
end
|
@@ -6,8 +6,8 @@ module ActiveRecord
|
|
6
6
|
module ConnectionAdapters
|
7
7
|
module Clickhouse
|
8
8
|
module SchemaStatements
|
9
|
-
def execute(sql, name = nil)
|
10
|
-
do_execute(sql, name)
|
9
|
+
def execute(sql, name = nil, settings: {})
|
10
|
+
do_execute(sql, name, settings: settings)
|
11
11
|
end
|
12
12
|
|
13
13
|
def exec_insert(sql, name, _binds, _pk = nil, _sequence_name = nil)
|
@@ -11,6 +11,7 @@ require 'active_record/connection_adapters/clickhouse/schema_definitions'
|
|
11
11
|
require 'active_record/connection_adapters/clickhouse/schema_creation'
|
12
12
|
require 'active_record/connection_adapters/clickhouse/schema_statements'
|
13
13
|
require 'net/http'
|
14
|
+
require 'openssl'
|
14
15
|
|
15
16
|
module ActiveRecord
|
16
17
|
class Base
|
@@ -224,6 +225,15 @@ module ActiveRecord
|
|
224
225
|
end
|
225
226
|
end
|
226
227
|
|
228
|
+
def _quote(value)
|
229
|
+
case value
|
230
|
+
when Array
|
231
|
+
'[' + value.map { |v| _quote(v) }.join(', ') + ']'
|
232
|
+
else
|
233
|
+
super
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
227
237
|
# Quoting time without microseconds
|
228
238
|
def quoted_date(value)
|
229
239
|
if value.acts_like?(:time)
|
@@ -301,6 +311,7 @@ module ActiveRecord
|
|
301
311
|
options = apply_replica(table_name, options)
|
302
312
|
td = create_table_definition(apply_cluster(table_name), **options)
|
303
313
|
block.call td if block_given?
|
314
|
+
td.column(:id, options[:id], null: false) if options[:id].present? && td[:id].blank?
|
304
315
|
|
305
316
|
if options[:force]
|
306
317
|
drop_table(table_name, options.merge(if_exists: true))
|
@@ -10,7 +10,7 @@ module ClickhouseActiverecord
|
|
10
10
|
|
11
11
|
version_options = connection.internal_string_options_for_primary_key
|
12
12
|
table_options = {
|
13
|
-
id: false, options: 'ReplacingMergeTree(ver)
|
13
|
+
id: false, options: 'ReplacingMergeTree(ver) ORDER BY (version)', if_not_exists: true
|
14
14
|
}
|
15
15
|
full_config = connection.instance_variable_get(:@full_config) || {}
|
16
16
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clickhouse-activerecord
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergey Odintsov
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-02-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -136,7 +136,7 @@ homepage: https://github.com/pnixx/clickhouse-activerecord
|
|
136
136
|
licenses:
|
137
137
|
- MIT
|
138
138
|
metadata: {}
|
139
|
-
post_install_message:
|
139
|
+
post_install_message:
|
140
140
|
rdoc_options: []
|
141
141
|
require_paths:
|
142
142
|
- lib
|
@@ -151,8 +151,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
requirements: []
|
154
|
-
rubygems_version: 3.0.
|
155
|
-
signing_key:
|
154
|
+
rubygems_version: 3.0.4
|
155
|
+
signing_key:
|
156
156
|
specification_version: 4
|
157
157
|
summary: ClickHouse ActiveRecord
|
158
158
|
test_files: []
|