From f2dbed06eb32beac985cb55d97408881aee3c690 Mon Sep 17 00:00:00 2001 From: nixx Date: Fri, 19 Jul 2024 15:27:23 +0300 Subject: [PATCH] fix schema migration --- .../clickhouse/schema_statements.rb | 5 ++++- lib/clickhouse-activerecord/version.rb | 2 +- lib/core_extensions/active_record/schema_migration.rb | 10 ++++++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/active_record/connection_adapters/clickhouse/schema_statements.rb b/lib/active_record/connection_adapters/clickhouse/schema_statements.rb index 82512155..de1d939f 100644 --- a/lib/active_record/connection_adapters/clickhouse/schema_statements.rb +++ b/lib/active_record/connection_adapters/clickhouse/schema_statements.rb @@ -143,7 +143,10 @@ def with_yaml_fallback(value) # :nodoc: def request(sql, format = nil, settings = {}) formatted_sql = apply_format(sql, format) request_params = @connection_config || {} - @connection.post("/?#{request_params.merge(settings).to_param}", formatted_sql, 'User-Agent' => "Clickhouse ActiveRecord #{ClickhouseActiverecord::VERSION}") + @connection.post("/?#{request_params.merge(settings).to_param}", formatted_sql, { + 'User-Agent' => "Clickhouse ActiveRecord #{ClickhouseActiverecord::VERSION}", + 'Content-Type' => 'application/x-www-form-urlencoded', + }) end def apply_format(sql, format) diff --git a/lib/clickhouse-activerecord/version.rb b/lib/clickhouse-activerecord/version.rb index 548847fc..a15da01e 100644 --- a/lib/clickhouse-activerecord/version.rb +++ b/lib/clickhouse-activerecord/version.rb @@ -1,3 +1,3 @@ module ClickhouseActiverecord - VERSION = '1.0.10' + VERSION = '1.0.11' end diff --git a/lib/core_extensions/active_record/schema_migration.rb b/lib/core_extensions/active_record/schema_migration.rb index 0da6a7ee..96109ef9 100644 --- a/lib/core_extensions/active_record/schema_migration.rb +++ b/lib/core_extensions/active_record/schema_migration.rb @@ -36,10 +36,16 @@ def delete_version(version) connection.insert(im, "#{self.class} Create Rollback Version", primary_key, version) end - def all_versions + def versions return super unless connection.is_a?(::ActiveRecord::ConnectionAdapters::ClickhouseAdapter) - final.where(active: 1).order(:version).pluck(:version) + sm = ::Arel::SelectManager.new(arel_table) + sm.final! + sm.project(arel_table[primary_key]) + sm.order(arel_table[primary_key].asc) + sm.where([arel_table['active'].eq(1)]) + + connection.select_values(sm, "#{self.class} Load") end end end