clickhouse-activerecord 0.6.0 → 0.6.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 182d838abbda9972bdfa59b1e6a76af247bd4e3b275a5e611dfe6cd8ceaaea5c
4
- data.tar.gz: f987ee429692c24518a0ea54d24f52c65f96ddfe1e6d6770fe0c2dd4549c623e
3
+ metadata.gz: f67a26e07ac1e077b8966dfb82626a2a4778d8060d07cedc4a93b2681a7dcfb3
4
+ data.tar.gz: 2ef8add7034b493f2353a45af727646beac80a02989a8a198f2283e130cfa5be
5
5
  SHA512:
6
- metadata.gz: 90aac52260cd39eaa23dddb9be9290afa8ccb6731f4c84b6403d67fc56ddf1e24d075e9e33d9cc99ffdf29309608b0a8ae78a35db87d673731438dd5db50c57b
7
- data.tar.gz: 505c299c7f657deb7b0685504c0f61754b801d0900238fa9a00a939b49873e379e2d2c84f9ce3661e0c26d405b9e94a31cbeb71c514f644cf4391059df44fa22
6
+ metadata.gz: 9b5553336901a311c54f5ff449ada535060437dda68800acd5ee1781f6a46debde48294957dff568114657985a0475e7dc1c12bb54c6dba92f211416348d0ac4
7
+ data.tar.gz: b1eb6866cd5882c545fe9bec44cc8d587edb051ec1dd259822a7a5c2ff45c21cffbfae7cc59a22bfb262544c718a69821702f663972ef4987cfd1b92cbb0a22b
data/README.md CHANGED
@@ -183,6 +183,10 @@ Action.where(date: Date.current).final.limit(10)
183
183
  Action.settings(optimize_read_in_order: 1).where(date: Date.current).limit(10)
184
184
  # Clickhouse Action Load (10.3ms) SELECT actions.* FROM actions FINAL WHERE actions.date = '2017-11-29' LIMIT 10 SETTINGS optimize_read_in_order = 1
185
185
  #=> #<ActiveRecord::Relation [#<Action *** >]>
186
+
187
+ User.joins(:actions).using(:group_id)
188
+ # Clickhouse User Load (10.3ms) SELECT users.* FROM users INNER JOIN actions USING group_id
189
+ #=> #<ActiveRecord::Relation [#<Action *** >]>
186
190
  ```
187
191
 
188
192
 
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.require_paths = ['lib']
25
25
 
26
26
  spec.add_runtime_dependency 'bundler', '>= 1.13.4'
27
- spec.add_runtime_dependency 'activerecord', '>= 5.2'
27
+ spec.add_runtime_dependency 'activerecord', '>= 5.2', '< 7'
28
28
 
29
29
  spec.add_development_dependency 'rake', '~> 13.0'
30
30
  spec.add_development_dependency 'rspec', '~> 3.4'
@@ -125,7 +125,7 @@ module ActiveRecord
125
125
  end
126
126
 
127
127
  def current_database
128
- if ActiveRecord::version >= Gem::Version.new('6')
128
+ if ActiveRecord::version >= Gem::Version.new('6.1')
129
129
  ActiveRecord::Base.connection_db_config.database
130
130
  else
131
131
  ActiveRecord::Base.connection_config[:database]
@@ -60,7 +60,9 @@ module ActiveRecord
60
60
 
61
61
  def do_system_execute(sql, name = nil)
62
62
  log_with_debug(sql, "#{adapter_name} #{name}") do
63
- res = @connection.post("/?#{@config.to_param}", "#{sql} FORMAT JSONCompact", 'User-Agent' => "Clickhouse ActiveRecord #{ClickhouseActiverecord::VERSION}")
63
+ res = @lock.synchronize do
64
+ @connection.post("/?#{@config.to_param}", "#{sql} FORMAT JSONCompact", 'User-Agent' => "Clickhouse ActiveRecord #{ClickhouseActiverecord::VERSION}")
65
+ end
64
66
 
65
67
  process_response(res)
66
68
  end
@@ -70,7 +72,9 @@ module ActiveRecord
70
72
  log(sql, "#{adapter_name} #{name}") do
71
73
  formatted_sql = apply_format(sql, format)
72
74
  request_params = @config || {}
73
- res = @connection.post("/?#{request_params.merge(settings).to_param}", formatted_sql, 'User-Agent' => "Clickhouse ActiveRecord #{ClickhouseActiverecord::VERSION}")
75
+ res = @lock.synchronize do
76
+ @connection.post("/?#{request_params.merge(settings).to_param}", formatted_sql, 'User-Agent' => "Clickhouse ActiveRecord #{ClickhouseActiverecord::VERSION}")
77
+ end
74
78
 
75
79
  process_response(res)
76
80
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'arel/visitors/clickhouse'
4
4
  require 'arel/nodes/settings'
5
+ require 'arel/nodes/using'
5
6
  require 'clickhouse-activerecord/migration'
6
7
  require 'active_record/connection_adapters/clickhouse/oid/array'
7
8
  require 'active_record/connection_adapters/clickhouse/oid/date'
@@ -333,7 +334,13 @@ module ActiveRecord
333
334
  end
334
335
 
335
336
  def drop_table(table_name, options = {}) # :nodoc:
336
- do_execute apply_cluster "DROP TABLE#{' IF EXISTS' if options[:if_exists]} #{quote_table_name(table_name)}"
337
+ query = "DROP TABLE"
338
+ query = "#{query} IF EXISTS " if options[:if_exists]
339
+ query = "#{query} #{quote_table_name(table_name)}"
340
+ query = apply_cluster(query)
341
+ query = "#{query} SYNC" if options[:sync]
342
+
343
+ do_execute(query)
337
344
 
338
345
  if options[:with_distributed]
339
346
  distributed_table_name = options.delete(:with_distributed)
@@ -0,0 +1,6 @@
1
+ module Arel # :nodoc: all
2
+ module Nodes
3
+ class Using < Arel::Nodes::Unary
4
+ end
5
+ end
6
+ end
@@ -36,6 +36,12 @@ module Arel
36
36
  collector
37
37
  end
38
38
 
39
+ def visit_Arel_Nodes_Using o, collector
40
+ collector << "USING "
41
+ visit o.expr, collector
42
+ collector
43
+ end
44
+
39
45
  def sanitize_as_setting_value(value)
40
46
  if value == :default
41
47
  'DEFAULT'
@@ -1,3 +1,3 @@
1
1
  module ClickhouseActiverecord
2
- VERSION = '0.6.0'
2
+ VERSION = '0.6.1.1'
3
3
  end
@@ -7,6 +7,11 @@ module CoreExtensions
7
7
  @ast.settings = ::Arel::Nodes::Settings.new(values)
8
8
  self
9
9
  end
10
+
11
+ def using(*exprs)
12
+ @ctx.source.right.last.right = ::Arel::Nodes::Using.new(::Arel.sql(exprs.join(',')))
13
+ self
14
+ end
10
15
  end
11
16
  end
12
17
  end
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.6.0
4
+ version: 0.6.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Odintsov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-19 00:00:00.000000000 Z
11
+ date: 2025-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -31,6 +31,9 @@ dependencies:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '5.2'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '7'
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
@@ -38,6 +41,9 @@ dependencies:
38
41
  - - ">="
39
42
  - !ruby/object:Gem::Version
40
43
  version: '5.2'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '7'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: rake
43
49
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +114,7 @@ files:
108
114
  - lib/active_record/connection_adapters/clickhouse/schema_statements.rb
109
115
  - lib/active_record/connection_adapters/clickhouse_adapter.rb
110
116
  - lib/arel/nodes/settings.rb
117
+ - lib/arel/nodes/using.rb
111
118
  - lib/arel/visitors/clickhouse.rb
112
119
  - lib/clickhouse-activerecord.rb
113
120
  - lib/clickhouse-activerecord/migration.rb
@@ -141,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
148
  - !ruby/object:Gem::Version
142
149
  version: '0'
143
150
  requirements: []
144
- rubygems_version: 3.1.6
151
+ rubygems_version: 3.3.7
145
152
  signing_key:
146
153
  specification_version: 4
147
154
  summary: ClickHouse ActiveRecord