clickhouse-activerecord 1.0.9 → 1.0.11

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: f32d998cd41ae14becbea5f03a9b83b996a6622808c49c124d466771825163d7
4
- data.tar.gz: 3f49b195d406ce1a7b5ec2f50bba2e12fc37d2c0f4d312998f3ce2a3173ec88d
3
+ metadata.gz: 48c4995d403717ca5d9b4d8bdadbedd4bae8d42cf7dad7f37768d12922ebb032
4
+ data.tar.gz: 01cc522bc62fc1015e66b9239b11bf0e5cf4fa9bc998375e0021130737cacaf3
5
5
  SHA512:
6
- metadata.gz: 99195548b29bdc67139eff0537099c4ee6384efec7eaa5733cd0edbe6b6998ade9c1fcce775b3f8e576ad63ca9dc62a5626cb6b1d9e8d5fb0410611e264d0121
7
- data.tar.gz: f9d9fd7a8d3be305447f5612da41fa4dffdfac2536b7015a3b8404395f143feb28ca08ac132c3bfe0bab9b73302e9a7fd59067754410ab629f20fb5280209aba
6
+ metadata.gz: 8ee641fb865778a883b93d56a834ab4c842e3f0531a60c3e6a10278a558b9eddc14a101a2dd96688c983090d5dabfb1d3040f78ff09946facc7f7709cbd81dec
7
+ data.tar.gz: 147bcb2f4c7af96e9d68532de7f0c16f4fda78ac31c63735d12f7f7e04597869d827c7fd58cf72e8adc9750395d12442d6becbcc2d9e534e9819e6eef839f20a
@@ -93,6 +93,12 @@ module ActiveRecord
93
93
 
94
94
  args.each { |name| column(name, kind, **options.except(:limit)) }
95
95
  end
96
+
97
+ private
98
+
99
+ def valid_column_definition_options
100
+ super + [:array, :low_cardinality, :fixed_string, :value, :type]
101
+ end
96
102
  end
97
103
 
98
104
  class IndexDefinition
@@ -143,7 +143,10 @@ module ActiveRecord
143
143
  def request(sql, format = nil, settings = {})
144
144
  formatted_sql = apply_format(sql, format)
145
145
  request_params = @connection_config || {}
146
- @connection.post("/?#{request_params.merge(settings).to_param}", formatted_sql, 'User-Agent' => "Clickhouse ActiveRecord #{ClickhouseActiverecord::VERSION}")
146
+ @connection.post("/?#{request_params.merge(settings).to_param}", formatted_sql, {
147
+ 'User-Agent' => "Clickhouse ActiveRecord #{ClickhouseActiverecord::VERSION}",
148
+ 'Content-Type' => 'application/x-www-form-urlencoded',
149
+ })
147
150
  end
148
151
 
149
152
  def apply_format(sql, format)
@@ -293,7 +293,11 @@ module ActiveRecord
293
293
  options = apply_replica(table_name, options)
294
294
  td = create_table_definition(apply_cluster(table_name), **options)
295
295
  block.call td if block_given?
296
- td.column(:id, options[:id], null: false) if options[:id].present? && td[:id].blank? && options[:as].blank?
296
+ # support old migration version: in 5.0 options id: :integer, but 7.1 options empty
297
+ # todo remove auto add id column in future
298
+ if (!options.key?(:id) || options[:id].present? && options[:id] != false) && td[:id].blank? && options[:as].blank?
299
+ td.column(:id, options[:id] || :integer, null: false)
300
+ end
297
301
 
298
302
  if options[:force]
299
303
  drop_table(table_name, options.merge(if_exists: true))
@@ -104,7 +104,8 @@ HEADER
104
104
  raise StandardError, "Unknown type '#{column.sql_type}' for column '#{column.name}'" unless @connection.valid_type?(column.type)
105
105
  next if column.name == pk
106
106
  type, colspec = column_spec(column)
107
- tbl.print " t.#{type} #{column.name.inspect}"
107
+ name = column.name =~ (/\./) ? "\"`#{column.name}`\"" : column.name.inspect
108
+ tbl.print " t.#{type} #{name}"
108
109
  tbl.print ", #{format_colspec(colspec)}" if colspec.present?
109
110
  tbl.puts
110
111
  end
@@ -1,3 +1,3 @@
1
1
  module ClickhouseActiverecord
2
- VERSION = '1.0.9'
2
+ VERSION = '1.0.11'
3
3
  end
@@ -36,10 +36,16 @@ module CoreExtensions
36
36
  connection.insert(im, "#{self.class} Create Rollback Version", primary_key, version)
37
37
  end
38
38
 
39
- def all_versions
39
+ def versions
40
40
  return super unless connection.is_a?(::ActiveRecord::ConnectionAdapters::ClickhouseAdapter)
41
41
 
42
- final.where(active: 1).order(:version).pluck(:version)
42
+ sm = ::Arel::SelectManager.new(arel_table)
43
+ sm.final!
44
+ sm.project(arel_table[primary_key])
45
+ sm.order(arel_table[primary_key].asc)
46
+ sm.where([arel_table['active'].eq(1)])
47
+
48
+ connection.select_values(sm, "#{self.class} Load")
43
49
  end
44
50
  end
45
51
  end
@@ -37,6 +37,8 @@ namespace :clickhouse do
37
37
  end
38
38
 
39
39
  namespace :structure do
40
+ config = ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, name: 'clickhouse')
41
+
40
42
  desc 'Load database structure'
41
43
  task load: ['db:check_protected_environments'] do
42
44
  ClickhouseActiverecord::Tasks.new(config).structure_load(Rails.root.join('db/clickhouse_structure.sql'))
@@ -85,8 +87,4 @@ namespace :clickhouse do
85
87
  Rake::Task['clickhouse:schema:dump'].execute(simple: true)
86
88
  end
87
89
  end
88
-
89
- def config
90
- ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, name: 'clickhouse')
91
- end
92
90
  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: 1.0.9
4
+ version: 1.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Odintsov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-05-03 00:00:00.000000000 Z
11
+ date: 2024-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler