diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2019-01-20 10:56:17 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2019-01-20 11:09:00 +0900 |
commit | 4a0e3809be480cd3e0ca503d451b966259b232e9 (patch) | |
tree | 9cec6f46802f636c04d0c3239de13a36fa6bbd96 /activerecord/lib/active_record/migration/compatibility.rb | |
parent | dd8d37881c936d22acbc244e7e3b9b3a26e441b8 (diff) | |
download | rails-4a0e3809be480cd3e0ca503d451b966259b232e9.tar.gz rails-4a0e3809be480cd3e0ca503d451b966259b232e9.tar.bz2 rails-4a0e3809be480cd3e0ca503d451b966259b232e9.zip |
Fix type casting column default in `change_column`
Since #31230, `change_column` is executed as a bulk statement.
That caused incorrect type casting column default by looking up the
before changed type, not the after changed type.
In a bulk statement, we can't use `change_column_default_for_alter` if
the statement changes the column type.
This fixes the type casting to use the constructed target sql_type.
Fixes #34938.
Diffstat (limited to 'activerecord/lib/active_record/migration/compatibility.rb')
-rw-r--r-- | activerecord/lib/active_record/migration/compatibility.rb | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/migration/compatibility.rb b/activerecord/lib/active_record/migration/compatibility.rb index 8f6fcfcaea..608182e363 100644 --- a/activerecord/lib/active_record/migration/compatibility.rb +++ b/activerecord/lib/active_record/migration/compatibility.rb @@ -36,9 +36,7 @@ module ActiveRecord class V5_1 < V5_2 def change_column(table_name, column_name, type, options = {}) if adapter_name == "PostgreSQL" - clear_cache! - sql = connection.send(:change_column_sql, table_name, column_name, type, options) - execute "ALTER TABLE #{quote_table_name(table_name)} #{sql}" + super(table_name, column_name, type, options.except(:default, :null, :comment)) change_column_default(table_name, column_name, options[:default]) if options.key?(:default) change_column_null(table_name, column_name, options[:null], options[:default]) if options.key?(:null) change_column_comment(table_name, column_name, options[:comment]) if options.key?(:comment) |