Skip to content

Commit 41edbf7

Browse files
authored
Improve function dumps (#179)
1 parent 063a2e4 commit 41edbf7

File tree

4 files changed

+11
-6
lines changed

4 files changed

+11
-6
lines changed

lib/active_record/connection_adapters/clickhouse/schema_statements.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def materialized_views(name = nil)
7979
end
8080

8181
def functions
82-
result = do_system_execute("SELECT name FROM system.functions WHERE origin = 'SQLUserDefined'")
82+
result = do_system_execute("SELECT name FROM system.functions WHERE origin = 'SQLUserDefined' ORDER BY name")
8383
return [] if result.nil?
8484
result['data'].flatten
8585
end

lib/clickhouse-activerecord/tasks.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,12 @@ def structure_dump(*args)
4747
tables.sort_by! {|table| table.match(/^CREATE\s+(MATERIALIZED\s+)?VIEW/) ? 1 : 0}
4848

4949
# get all functions
50-
functions = connection.execute("SELECT create_query FROM system.functions WHERE origin = 'SQLUserDefined'")['data'].flatten
50+
functions = connection.execute("SELECT create_query FROM system.functions WHERE origin = 'SQLUserDefined' ORDER BY name")['data'].flatten
5151

5252
# put to file
5353
File.open(args.first, 'w:utf-8') do |file|
5454
functions.each do |function|
55-
file.puts function + ";\n\n"
55+
file.puts function.gsub('\\n', "\n") + ";\n\n"
5656
end
5757

5858
tables.each do |table|

spec/fixtures/migrations/plain_function_creation/1_create_some_function.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@
33
class CreateSomeFunction < ActiveRecord::Migration[7.1]
44
def up
55
sql = <<~SQL
6-
CREATE FUNCTION some_fun AS (x,y) -> x + y
6+
CREATE FUNCTION multFun AS (x,y) -> x * y
7+
SQL
8+
do_execute(sql, format: nil)
9+
10+
sql = <<~SQL
11+
CREATE FUNCTION addFun AS (x,y) -> x + y
712
SQL
813
do_execute(sql, format: nil)
914
end

spec/single/migration_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@
381381
it 'creates a function' do
382382
subject
383383

384-
expect(ActiveRecord::Base.connection.functions).to match_array(['some_fun'])
384+
expect(ActiveRecord::Base.connection.functions).to match_array(['addFun', 'multFun'])
385385
end
386386
end
387387

@@ -392,7 +392,7 @@
392392

393393
subject
394394

395-
expect(ActiveRecord::Base.connection.functions).to match_array(['some_fun', 'forced_fun'])
395+
expect(ActiveRecord::Base.connection.functions).to match_array(['forced_fun', 'some_fun'])
396396
expect(ActiveRecord::Base.connection.show_create_function('forced_fun').chomp).to eq('CREATE FUNCTION forced_fun AS (x, y) -> (x + y)')
397397
end
398398
end

0 commit comments

Comments
 (0)