aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorRobb Kidd <robb@thekidds.org>2012-06-27 00:07:10 -0400
committerRobb Kidd <robb@thekidds.org>2012-06-27 13:10:30 -0400
commitd735abf401c722a2efb9302f5aa6683b047572f8 (patch)
treece0be5b3ce4fe42ca2705a9359a751cefc4b2c44 /activerecord/lib/active_record
parent4a20fcf7b2f26da3cb41f71d83f86d1c21fe9f22 (diff)
downloadrails-d735abf401c722a2efb9302f5aa6683b047572f8.tar.gz
rails-d735abf401c722a2efb9302f5aa6683b047572f8.tar.bz2
rails-d735abf401c722a2efb9302f5aa6683b047572f8.zip
Update psql adapter to rename a default pkey sequence when renaming a table.
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb7
1 files changed, 7 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
index a9940209fa..98bcbfff6f 100644
--- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
@@ -1208,12 +1208,19 @@ module ActiveRecord
end
# Renames a table.
+ # Also renames a table's primary key sequence if the sequence name matches the
+ # Active Record default.
#
# Example:
# rename_table('octopuses', 'octopi')
def rename_table(name, new_name)
clear_cache!
execute "ALTER TABLE #{quote_table_name(name)} RENAME TO #{quote_table_name(new_name)}"
+ pk, seq = pk_and_sequence_for(new_name)
+ if seq == "#{name}_#{pk}_seq"
+ new_seq = "#{new_name}_#{pk}_seq"
+ execute "ALTER TABLE #{quote_table_name(seq)} RENAME TO #{quote_table_name(new_seq)}"
+ end
end
# Adds a new column to the named table.