From 1d8266fc689d6ec4f9df2b4a64214c5dcc9b0b7d Mon Sep 17 00:00:00 2001 From: Dinah Shi Date: Tue, 23 Jan 2018 22:25:22 -0500 Subject: Use concat to join procs arrays in bulk_change_table --- .../connection_adapters/postgresql/schema_statements.rb | 2 +- activerecord/test/cases/migration_test.rb | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'activerecord') diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb b/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb index a8895f8606..5e7bd4c871 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb @@ -375,7 +375,7 @@ module ActiveRecord if respond_to?(method, true) sqls, procs = Array(send(method, table, *arguments)).partition { |v| v.is_a?(String) } sql_fragments << sqls - non_combinable_operations << procs if procs.present? + non_combinable_operations.concat(procs) else execute "ALTER TABLE #{quote_table_name(table_name)} #{sql_fragments.join(", ")}" unless sql_fragments.empty? non_combinable_operations.each(&:call) diff --git a/activerecord/test/cases/migration_test.rb b/activerecord/test/cases/migration_test.rb index a3ebc8070a..3a6b5b2a6f 100644 --- a/activerecord/test/cases/migration_test.rb +++ b/activerecord/test/cases/migration_test.rb @@ -866,7 +866,7 @@ if ActiveRecord::Base.connection.supports_bulk_alter? classname = ActiveRecord::Base.connection.class.name[/[^:]*$/] expected_query_count = { "Mysql2Adapter" => 3, # one query for columns, one query for primary key, one query to do the bulk change - "PostgreSQLAdapter" => 2, # one query for columns, one for bulk change + "PostgreSQLAdapter" => 3, # one query for columns, one for bulk change, one for comment }.fetch(classname) { raise "need an expected query count for #{classname}" } @@ -874,12 +874,13 @@ if ActiveRecord::Base.connection.supports_bulk_alter? assert_queries(expected_query_count, ignore_none: true) do with_bulk_change_table do |t| t.change :name, :string, default: "NONAME" - t.change :birthdate, :datetime + t.change :birthdate, :datetime, comment: "This is a comment" end end assert_equal "NONAME", column(:name).default assert_equal :datetime, column(:birthdate).type + assert_equal "This is a comment", column(:birthdate).comment end private -- cgit v1.2.3