aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorMatthew Draper <matthew@trebex.net>2018-01-24 21:53:01 +1030
committerGitHub <noreply@github.com>2018-01-24 21:53:01 +1030
commitee1fda121effe791676460d72cf1bcaafe052e22 (patch)
treef370f9758c8f9732cafc505a6ea54662d6bc7530 /activerecord
parentbc26f303705d6202c1ba3d6b1a9cfd2160d74cd8 (diff)
parent1d8266fc689d6ec4f9df2b4a64214c5dcc9b0b7d (diff)
downloadrails-ee1fda121effe791676460d72cf1bcaafe052e22.tar.gz
rails-ee1fda121effe791676460d72cf1bcaafe052e22.tar.bz2
rails-ee1fda121effe791676460d72cf1bcaafe052e22.zip
Merge pull request #31773 from dinahshi/postgresql_bulk_patch
Postgresql bulk_change_table should flatten procs array
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb2
-rw-r--r--activerecord/test/cases/migration_test.rb5
2 files changed, 4 insertions, 3 deletions
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 b9d2f4da39..8678fab2ac 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 ffcf6a588e..2ef055fb01 100644
--- a/activerecord/test/cases/migration_test.rb
+++ b/activerecord/test/cases/migration_test.rb
@@ -881,7 +881,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}"
}
@@ -889,12 +889,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