aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
diff options
context:
space:
mode:
authorSean Griffin <sean@thoughtbot.com>2014-11-22 13:16:14 -0700
committerSean Griffin <sean@thoughtbot.com>2014-11-22 13:16:14 -0700
commitdcc143cd702bfbfef9cb92e1fde75171d088a5ac (patch)
treef0b9c0a407d286bfc57fd7a9d3ec04382650bfba /activerecord/test/cases
parentb33ed44ad312c5274fe72b26172ac0116d9ffb28 (diff)
downloadrails-dcc143cd702bfbfef9cb92e1fde75171d088a5ac.tar.gz
rails-dcc143cd702bfbfef9cb92e1fde75171d088a5ac.tar.bz2
rails-dcc143cd702bfbfef9cb92e1fde75171d088a5ac.zip
Rename the primary key index when renaming a table in pg
Also checked to make sure this does not affect foreign key constraints. (It doesn't). Fixes #12856 Closes #14088
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r--activerecord/test/cases/adapters/postgresql/rename_table_test.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/activerecord/test/cases/adapters/postgresql/rename_table_test.rb b/activerecord/test/cases/adapters/postgresql/rename_table_test.rb
new file mode 100644
index 0000000000..056a035622
--- /dev/null
+++ b/activerecord/test/cases/adapters/postgresql/rename_table_test.rb
@@ -0,0 +1,34 @@
+require "cases/helper"
+
+class PostgresqlRenameTableTest < ActiveRecord::TestCase
+ def setup
+ @connection = ActiveRecord::Base.connection
+ @connection.create_table :before_rename, force: true
+ end
+
+ def teardown
+ @connection.execute 'DROP TABLE IF EXISTS "before_rename"'
+ @connection.execute 'DROP TABLE IF EXISTS "after_rename"'
+ end
+
+ test "renaming a table also renames the primary key index" do
+ # sanity check
+ assert_equal 1, num_indices_named("before_rename_pkey")
+ assert_equal 0, num_indices_named("after_rename_pkey")
+
+ @connection.rename_table :before_rename, :after_rename
+
+ assert_equal 0, num_indices_named("before_rename_pkey")
+ assert_equal 1, num_indices_named("after_rename_pkey")
+ end
+
+ private
+
+ def num_indices_named(name)
+ @connection.execute(<<-SQL).values.length
+ SELECT 1 FROM "pg_index"
+ JOIN "pg_class" ON "pg_index"."indexrelid" = "pg_class"."oid"
+ WHERE "pg_class"."relname" = '#{name}'
+ SQL
+ end
+end