clickhouse-activerecord 0.3.4 → 0.3.12

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: 1b9461371fc0031e2d5f70577857979c6ab9f210028c733a5d1296c22157527c
4
- data.tar.gz: b3fb5414957d5c4b9ae3cfe32de5c3f292ef82ba390ac8dea45466663e081733
3
+ metadata.gz: 50dff8ae7219e2f3a04ee530331d19ca0b61396437723819891c1d8b41f0692d
4
+ data.tar.gz: 75d50e8e2f32fa84f990bc15da6177082b7a0b0d5a508cba822b3c3afbc60c41
5
5
  SHA512:
6
- metadata.gz: b72edc5f389e47bc3e6e95bb7ea3e7b239bf35a0d208e721b0fcdc82c6c9e90b68719d0c3e3dc28daf99cea1ee8a053f0ca83173be6dbb9212946f3fc6a30994
7
- data.tar.gz: 610bd1ee31541e875f78a2339bbaff8f90f77074a31017f06d8971d9bc00cc27a13c2bda7f9ef2cde2643d7fb971c904aea76bf59181f78af93b5d1597b5f4b8
6
+ metadata.gz: ebdeb04ba96eb81eb76efdbd09580b51719656136de38b973cea267bc1405dba03cd417058df1909b9bd1e4279c97d845292947de251792f94fc9f0b30cf65cb
7
+ data.tar.gz: 3a0b0feda885ab74f54f6d61b78ff02efed20d403b0bc4bff99b83ee811d4988e8620c92a84e549bc70e0ccb93c662e665a562bb51d49b5ed552bc850c076696
@@ -1,10 +1,26 @@
1
+ ### Version 0.3.10 (Dec 20, 2019)
2
+
3
+ * Support structure dump/load [@StoneGod](https://github.com/StoneGod)
4
+
5
+ ### Version 0.3.6 (Sep 2, 2019)
6
+
7
+ * Support Rails 6.0
8
+ * Fix relation `last` method
9
+
10
+ ### Version 0.3.4 (Jun 28, 2019)
11
+
12
+ * Fix DateTime sql format without microseconds for Rails 5.2
13
+ * Support ssl connection
14
+ * Migration support
15
+ * Rake tasks for create / drop database
16
+
1
17
  ### Version 0.3.0 (Nov 27, 2018)
2
18
 
3
19
  * Support materialized view
4
20
  * Aggregated functions for view
5
21
  * Schema dumper with SQL create table
6
22
  * Added migrations support [@Bugagazavr](https://github.com/Bugagazavr)
7
-
23
+
8
24
  ### Version 0.2.0 (Oct 3, 2017)
9
25
 
10
26
  * Support Rails 5.0
@@ -12,7 +28,7 @@
12
28
  ### Version 0.1.2 (Sep 27, 2017)
13
29
 
14
30
  * Fix Big Int type
15
-
31
+
16
32
  ### Version 0.1.0 (Aug 31, 2017)
17
33
 
18
34
  * Initial release
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Clickhouse::Activerecord
2
2
 
3
3
  A Ruby database ActiveRecord driver for ClickHouse. Support Rails >= 5.2.
4
+ Tested on ClickHouse version 18.14.
4
5
 
5
6
  ## Installation
6
7
 
@@ -17,8 +18,22 @@ And then execute:
17
18
  Or install it yourself as:
18
19
 
19
20
  $ gem install clickhouse-activerecord
21
+
22
+ ## Available database connection parameters
23
+ ```yml
24
+ default: &default
25
+ adapter: clickhouse
26
+ database: database
27
+ host: localhost
28
+ port: 8123
29
+ username: username
30
+ password: password
31
+ ssl: true # optional for using ssl connection
32
+ debug: true # use for showing in to log technical information
33
+ migrations_paths: db/clickhouse # optional, default: db/migrate_clickhouse
34
+ ```
20
35
 
21
- ## Usage
36
+ ## Usage in Rails 5
22
37
 
23
38
  Add your `database.yml` connection information with postfix `_clickhouse` for you environment:
24
39
 
@@ -26,10 +41,6 @@ Add your `database.yml` connection information with postfix `_clickhouse` for yo
26
41
  development_clickhouse:
27
42
  adapter: clickhouse
28
43
  database: database
29
- host: localhost
30
- username: username
31
- password: password
32
- debug: true # use for showing in to log technical information
33
44
  ```
34
45
 
35
46
  Add to your model:
@@ -54,13 +65,34 @@ Or global connection:
54
65
  development:
55
66
  adapter: clickhouse
56
67
  database: database
57
- host: localhost
58
- username: username
59
- password: password
68
+ ```
69
+
70
+ ## Usage in Rails 6 with second database
71
+
72
+ Add your `database.yml` connection information for you environment:
73
+
74
+ ```yml
75
+ development:
76
+ primary:
77
+ ...
78
+
79
+ clickhouse:
80
+ adapter: clickhouse
81
+ database: database
82
+ ```
83
+
84
+ Connection [Multiple Databases with Active Record](https://guides.rubyonrails.org/active_record_multiple_databases.html) or short example:
85
+
86
+ ```ruby
87
+ class Action < ActiveRecord::Base
88
+ connects_to database: { writing: :clickhouse, reading: :clickhouse }
89
+ end
60
90
  ```
61
91
 
62
92
  ### Rake tasks
63
93
 
94
+ **Note!** For Rails 6 you can use default rake tasks if you configure `migrations_paths` in your `database.yml`, for example: `rake db:migrate`
95
+
64
96
  Create / drop / purge / reset database:
65
97
 
66
98
  $ rake clickhouse:create
@@ -75,6 +107,10 @@ Migration:
75
107
 
76
108
  Rollback migration not supported!
77
109
 
110
+ ### Dump / Load for multiple using databases
111
+
112
+ If you using multiple databases, for example: PostgreSQL, Clickhouse.
113
+
78
114
  Schema dump to `db/clickhouse_schema.rb` file:
79
115
 
80
116
  $ rake clickhouse:schema:dump
@@ -82,9 +118,24 @@ Schema dump to `db/clickhouse_schema.rb` file:
82
118
  Schema load from `db/clickhouse_schema.rb` file:
83
119
 
84
120
  $ rake clickhouse:schema:load
85
-
121
+
86
122
  We use schema for emulate development or tests environment on PostgreSQL adapter.
87
123
 
124
+ Structure dump to `db/clickhouse_structure.sql` file:
125
+
126
+ $ rake clickhouse:structure:dump
127
+
128
+ Structure load from `db/clickhouse_structure.sql` file:
129
+
130
+ $ rake clickhouse:structure:load
131
+
132
+ ### Dump / Load for only Clickhouse database using
133
+
134
+ $ rake db:schema:dump
135
+ $ rake db:schema:load
136
+ $ rake db:structure:dump
137
+ $ rake db:structure:load
138
+
88
139
  ### Insert and select data
89
140
 
90
141
  ```ruby
@@ -105,7 +156,7 @@ ActionView.maximum(:date)
105
156
 
106
157
  Donations to this project are going directly to [PNixx](https://github.com/PNixx), the original author of this project:
107
158
 
108
- * BTC address: `1Lx2gaJtzfF2dxGFxB65YtY5kNY9xUi6ia`
159
+ * BTC address: `1H3rhpf7WEF5JmMZ3PVFMQc7Hm29THgUfN`
109
160
  * ETH address: `0x6F094365A70fe7836A633d2eE80A1FA9758234d5`
110
161
  * XMR address: `42gP71qLB5M43RuDnrQ3vSJFFxis9Kw9VMURhpx9NLQRRwNvaZRjm2TFojAMC8Fk1BQhZNKyWhoyJSn5Ak9kppgZPjE17Zh`
111
162
 
@@ -23,8 +23,8 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  spec.require_paths = ['lib']
25
25
 
26
- spec.add_runtime_dependency 'bundler', '~> 1.13', '>= 1.13.4'
27
- spec.add_runtime_dependency 'activerecord', '~> 5.2'
26
+ spec.add_runtime_dependency 'bundler', '>= 1.13.4'
27
+ spec.add_runtime_dependency 'activerecord', '>= 5.2'
28
28
 
29
29
  spec.add_development_dependency 'bundler', '~> 1.15'
30
30
  spec.add_development_dependency 'rake', '~> 10.0'
@@ -8,6 +8,7 @@ module ActiveRecord
8
8
 
9
9
  def serialize(value)
10
10
  value = super
11
+ return unless value
11
12
  return value.strftime('%Y-%m-%d %H:%M:%S') unless value.acts_like?(:time)
12
13
 
13
14
  value.to_time.strftime('%Y-%m-%d %H:%M:%S')
@@ -17,6 +17,8 @@ module ActiveRecord
17
17
  def exec_query(sql, name = nil, binds = [], prepare: false)
18
18
  result = do_execute(sql, name)
19
19
  ActiveRecord::Result.new(result['meta'].map { |m| m['name'] }, result['data'])
20
+ rescue StandartError => _e
21
+ raise ActiveRecord::ActiveRecordError, "Response: #{result}"
20
22
  end
21
23
 
22
24
  def exec_update(_sql, _name = nil, _binds = [])
@@ -38,37 +40,6 @@ module ActiveRecord
38
40
  { options: sql.gsub(/^(?:.*?)ENGINE = (.*?)$/, '\\1') }
39
41
  end
40
42
 
41
- # @todo copied from ActiveRecord::ConnectionAdapters::SchemaStatements v5.2.2
42
- # Why version column type of String, but insert to Integer?
43
- def assume_migrated_upto_version(version, migrations_paths)
44
- migrations_paths = Array(migrations_paths)
45
- version = version.to_i
46
- sm_table = quote_table_name(ActiveRecord::SchemaMigration.table_name)
47
-
48
- migrated = ActiveRecord::SchemaMigration.all_versions.map(&:to_i)
49
- versions = migration_context.migration_files.map do |file|
50
- migration_context.parse_migration_filename(file).first.to_i
51
- end
52
-
53
- unless migrated.include?(version)
54
- do_execute( "INSERT INTO #{sm_table} (version) VALUES (#{quote(version.to_s)})", 'SchemaMigration', format: nil)
55
- end
56
-
57
- inserting = (versions - migrated).select { |v| v < version }
58
- if inserting.any?
59
- if (duplicate = inserting.detect { |v| inserting.count(v) > 1 })
60
- raise "Duplicate migration #{duplicate}. Please renumber your migrations to resolve the conflict."
61
- end
62
- if supports_multi_insert?
63
- do_system_execute insert_versions_sql(inserting.map(&:to_s))
64
- else
65
- inserting.each do |v|
66
- do_system_execute insert_versions_sql(v)
67
- end
68
- end
69
- end
70
- end
71
-
72
43
  # Not indexes on clickhouse
73
44
  def indexes(table_name, name = nil)
74
45
  []
@@ -86,21 +57,22 @@ module ActiveRecord
86
57
  end
87
58
  end
88
59
 
89
- private
90
-
91
- def apply_format(sql, format)
92
- format ? "#{sql} FORMAT #{format}" : sql
93
- end
94
-
95
- def do_execute(sql, name = nil, format: 'JSONCompact')
60
+ def do_execute(sql, name = nil, format: 'JSONCompact', settings: {})
96
61
  log(sql, "#{adapter_name} #{name}") do
97
62
  formatted_sql = apply_format(sql, format)
98
- res = @connection.post("/?#{@config.to_param}", formatted_sql)
63
+ request_params = @config || {}
64
+ res = @connection.post("/?#{request_params.merge(settings).to_param}", formatted_sql)
99
65
 
100
66
  process_response(res)
101
67
  end
102
68
  end
103
69
 
70
+ private
71
+
72
+ def apply_format(sql, format)
73
+ format ? "#{sql} FORMAT #{format}" : sql
74
+ end
75
+
104
76
  def process_response(res)
105
77
  case res.code.to_i
106
78
  when 200
@@ -109,6 +81,8 @@ module ActiveRecord
109
81
  raise ActiveRecord::ActiveRecordError,
110
82
  "Response code: #{res.code}:\n#{res.body}"
111
83
  end
84
+ rescue JSON::ParserError
85
+ res.body
112
86
  end
113
87
 
114
88
  def log_with_debug(sql, name = nil)
@@ -121,7 +95,11 @@ module ActiveRecord
121
95
  end
122
96
 
123
97
  def create_table_definition(*args)
124
- Clickhouse::TableDefinition.new(*args)
98
+ if ActiveRecord::version >= Gem::Version.new('6')
99
+ Clickhouse::TableDefinition.new(self, *args)
100
+ else
101
+ Clickhouse::TableDefinition.new(*args)
102
+ end
125
103
  end
126
104
 
127
105
  def new_column_from_field(table_name, field)
@@ -130,7 +108,11 @@ module ActiveRecord
130
108
  default = field[3]
131
109
  default_value = extract_value_from_default(default)
132
110
  default_function = extract_default_function(default_value, default)
133
- ClickhouseColumn.new(field[0], default_value, type_metadata, field[1].include?('Nullable'), table_name, default_function)
111
+ if ActiveRecord::version >= Gem::Version.new('6')
112
+ ClickhouseColumn.new(field[0], default_value, type_metadata, field[1].include?('Nullable'), default_function)
113
+ else
114
+ ClickhouseColumn.new(field[0], default_value, type_metadata, field[1].include?('Nullable'), table_name, default_function)
115
+ end
134
116
  end
135
117
 
136
118
  protected
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'clickhouse-activerecord/arel/visitors/to_sql'
4
- require 'active_record/connection_adapters/abstract_adapter'
4
+ require 'clickhouse-activerecord/arel/table'
5
5
  require 'active_record/connection_adapters/clickhouse/oid/date'
6
6
  require 'active_record/connection_adapters/clickhouse/oid/date_time'
7
7
  require 'active_record/connection_adapters/clickhouse/oid/big_integer'
@@ -18,6 +18,7 @@ module ActiveRecord
18
18
  config = config.symbolize_keys
19
19
  host = config[:host] || 'localhost'
20
20
  port = config[:port] || 8123
21
+ ssl = config[:ssl].present? ? config[:ssl] : port == 443
21
22
 
22
23
  if config.key?(:database)
23
24
  database = config[:database]
@@ -25,7 +26,30 @@ module ActiveRecord
25
26
  raise ArgumentError, 'No database specified. Missing argument: database.'
26
27
  end
27
28
 
28
- ConnectionAdapters::ClickhouseAdapter.new(nil, logger, [host, port], { user: config[:username], password: config[:password], database: database }.compact, config[:debug])
29
+ ConnectionAdapters::ClickhouseAdapter.new(logger, [host, port, ssl], { user: config[:username], password: config[:password], database: database }.compact, config)
30
+ end
31
+ end
32
+ end
33
+
34
+ class Relation
35
+
36
+ # Replace for only ClickhouseAdapter
37
+ def reverse_order!
38
+ orders = order_values.uniq
39
+ orders.reject!(&:blank?)
40
+ if self.connection.is_a?(ConnectionAdapters::ClickhouseAdapter) && orders.empty? && !primary_key
41
+ self.order_values = %w(date created_at).select {|c| column_names.include?(c) }.map{|c| arel_attribute(c).desc }
42
+ else
43
+ self.order_values = reverse_sql_order(orders)
44
+ end
45
+ self
46
+ end
47
+ end
48
+
49
+ module TypeCaster
50
+ class Map
51
+ def is_view
52
+ types.is_view
29
53
  end
30
54
  end
31
55
  end
@@ -39,6 +63,11 @@ module ActiveRecord
39
63
  def is_view=(value)
40
64
  @is_view = value
41
65
  end
66
+
67
+ def arel_table # :nodoc:
68
+ @arel_table ||= ClickhouseActiverecord::Arel::Table.new(table_name, type_caster: type_caster)
69
+ end
70
+
42
71
  end
43
72
  end
44
73
 
@@ -64,17 +93,34 @@ module ActiveRecord
64
93
  include Clickhouse::SchemaStatements
65
94
 
66
95
  # Initializes and connects a Clickhouse adapter.
67
- def initialize(connection, logger, connection_parameters, config, debug = false)
68
- super(connection, logger)
96
+ def initialize(logger, connection_parameters, config, full_config)
97
+ super(nil, logger)
69
98
  @connection_parameters = connection_parameters
70
99
  @config = config
71
- @debug = debug
100
+ @debug = full_config[:debug] || false
101
+ @full_config = full_config
72
102
 
73
103
  @prepared_statements = false
104
+ if ActiveRecord::version == Gem::Version.new('6.0.0')
105
+ @prepared_statement_status = Concurrent::ThreadLocalVar.new(false)
106
+ end
74
107
 
75
108
  connect
76
109
  end
77
110
 
111
+ # Support SchemaMigration from v5.2.2 to v6+
112
+ def schema_migration # :nodoc:
113
+ if ActiveRecord::version >= Gem::Version.new('6')
114
+ super
115
+ else
116
+ ActiveRecord::SchemaMigration
117
+ end
118
+ end
119
+
120
+ def migrations_paths
121
+ @full_config[:migrations_paths] || 'db/migrate_clickhouse'
122
+ end
123
+
78
124
  def arel_visitor # :nodoc:
79
125
  ClickhouseActiverecord::Arel::Visitors::ToSql.new(self)
80
126
  end
@@ -130,6 +176,14 @@ module ActiveRecord
130
176
  value.to_s(:db)
131
177
  end
132
178
 
179
+ def column_name_for_operation(operation, node) # :nodoc:
180
+ if ActiveRecord::version >= Gem::Version.new('6')
181
+ visitor.compile(node)
182
+ else
183
+ column_name_from_arel_node(node)
184
+ end
185
+ end
186
+
133
187
  # Executes insert +sql+ statement in the context of this connection using
134
188
  # +binds+ as the bind substitutes. +name+ is logged along with
135
189
  # the executed +sql+ statement.
@@ -177,8 +231,7 @@ module ActiveRecord
177
231
  private
178
232
 
179
233
  def connect
180
- # for ssl port need use ssl
181
- @connection = Net::HTTP.start(@connection_parameters[0], @connection_parameters[1], use_ssl: @connection_parameters[1] == 443)
234
+ @connection = Net::HTTP.start(@connection_parameters[0], @connection_parameters[1], use_ssl: @connection_parameters[2], verify_mode: OpenSSL::SSL::VERIFY_NONE)
182
235
  end
183
236
  end
184
237
  end
@@ -0,0 +1,9 @@
1
+ module ClickhouseActiverecord
2
+ module Arel
3
+ class Table < ::Arel::Table
4
+ def is_view
5
+ type_caster.is_view
6
+ end
7
+ end
8
+ end
9
+ end
@@ -6,13 +6,12 @@ module ClickhouseActiverecord
6
6
  class ToSql < ::Arel::Visitors::ToSql
7
7
 
8
8
  def aggregate(name, o, collector)
9
- # todo how get model class from request? This method works with only rails 4.2.
10
9
  # replacing function name for materialized view
11
- # if o.expressions.first && o.expressions.first != '*' && !o.expressions.first.is_a?(String) && o.expressions.first.relation && o.expressions.first.relation.engine && o.expressions.first.relation.engine.is_view
12
- # super("#{name.downcase}Merge", o, collector)
13
- # else
10
+ if o.expressions.first && o.expressions.first != '*' && !o.expressions.first.is_a?(String) && o.expressions.first.relation&.is_view
11
+ super("#{name.downcase}Merge", o, collector)
12
+ else
14
13
  super
15
- # end
14
+ end
16
15
  end
17
16
 
18
17
  end
@@ -31,13 +31,27 @@ module ClickhouseActiverecord
31
31
  create
32
32
  end
33
33
 
34
+ def structure_dump(*args)
35
+ tables = connection.execute("SHOW TABLES FROM #{@configuration['database']}")['data'].flatten
36
+
37
+ File.open(args.first, 'w:utf-8') do |file|
38
+ tables.each do |table|
39
+ next if table.match(/\.inner/)
40
+ file.puts connection.execute("SHOW CREATE TABLE #{table}")['data'].try(:first).try(:first).gsub("#{@configuration['database']}.", '') + ";\n\n"
41
+ end
42
+ end
43
+ end
44
+
45
+ def structure_load(*args)
46
+ File.read(args.first).split(";\n\n").each { |sql| connection.execute(sql) }
47
+ end
48
+
34
49
  def migrate
35
50
  check_target_version
36
51
 
37
52
  verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] != "false" : true
38
53
  scope = ENV["SCOPE"]
39
54
  verbose_was, ActiveRecord::Migration.verbose = ActiveRecord::Migration.verbose, verbose
40
- binding.pry
41
55
  connection.migration_context.migrate(target_version) do |migration|
42
56
  scope.blank? || scope == migration.scope
43
57
  end
@@ -1,3 +1,3 @@
1
1
  module ClickhouseActiverecord
2
- VERSION = '0.3.4'
2
+ VERSION = '0.3.12'
3
3
  end
@@ -6,6 +6,20 @@ class ClickhouseMigrationGenerator < ActiveRecord::Generators::MigrationGenerato
6
6
  def create_migration_file
7
7
  set_local_assigns!
8
8
  validate_file_name!
9
- migration_template @migration_template, "db/migrate_clickhouse/#{file_name}.rb"
9
+ migration_template @migration_template, File.join(db_migrate_path, "#{file_name}.rb")
10
+ end
11
+
12
+ private
13
+
14
+ def db_migrate_path
15
+ if defined?(Rails.application) && Rails.application
16
+ configured_migrate_path || default_migrate_path
17
+ else
18
+ default_migrate_path
19
+ end
20
+ end
21
+
22
+ def default_migrate_path
23
+ "db/migrate_clickhouse"
10
24
  end
11
25
  end
@@ -27,6 +27,18 @@ namespace :clickhouse do
27
27
 
28
28
  end
29
29
 
30
+ namespace :structure do
31
+ desc 'Load database structure'
32
+ task load: [:load_config, 'db:check_protected_environments'] do
33
+ ClickhouseActiverecord::Tasks.new(ActiveRecord::Base.configurations["#{Rails.env}_clickhouse"]).structure_load("#{Rails.root}/db/clickhouse_structure.sql")
34
+ end
35
+
36
+ desc 'Dump database structure'
37
+ task dump: [:load_config, 'db:check_protected_environments'] do
38
+ ClickhouseActiverecord::Tasks.new(ActiveRecord::Base.configurations["#{Rails.env}_clickhouse"]).structure_dump("#{Rails.root}/db/clickhouse_structure.sql")
39
+ end
40
+ end
41
+
30
42
  desc 'Creates the database from DATABASE_URL or config/database.yml'
31
43
  task create: [:load_config] do
32
44
  ActiveRecord::Tasks::DatabaseTasks.create(ActiveRecord::Base.configurations["#{Rails.env}_clickhouse"])
metadata CHANGED
@@ -1,22 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clickhouse-activerecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Odintsov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-28 00:00:00.000000000 Z
11
+ date: 2020-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.13'
20
17
  - - ">="
21
18
  - !ruby/object:Gem::Version
22
19
  version: 1.13.4
@@ -24,9 +21,6 @@ dependencies:
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '1.13'
30
24
  - - ">="
31
25
  - !ruby/object:Gem::Version
32
26
  version: 1.13.4
@@ -34,14 +28,14 @@ dependencies:
34
28
  name: activerecord
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
- - - "~>"
31
+ - - ">="
38
32
  - !ruby/object:Gem::Version
39
33
  version: '5.2'
40
34
  type: :runtime
41
35
  prerelease: false
42
36
  version_requirements: !ruby/object:Gem::Requirement
43
37
  requirements:
44
- - - "~>"
38
+ - - ">="
45
39
  - !ruby/object:Gem::Version
46
40
  version: '5.2'
47
41
  - !ruby/object:Gem::Dependency
@@ -126,6 +120,7 @@ files:
126
120
  - lib/active_record/connection_adapters/clickhouse/schema_statements.rb
127
121
  - lib/active_record/connection_adapters/clickhouse_adapter.rb
128
122
  - lib/clickhouse-activerecord.rb
123
+ - lib/clickhouse-activerecord/arel/table.rb
129
124
  - lib/clickhouse-activerecord/arel/visitors/to_sql.rb
130
125
  - lib/clickhouse-activerecord/railtie.rb
131
126
  - lib/clickhouse-activerecord/schema_dumper.rb