Btw, as an example of the problems caused by renaming:
postgres=# CREATE TABLE a (id serial primary key); CREATE TABLE b(id serial primary key, a_id int REFERENCES a); CREATE TABLE Time: 137.840 ms CREATE TABLE Time: 143.500 ms postgres=# \d b Table "public.b" Column | Type | Modifiers --------+---------+------------------------------------------------ id | integer | not null default nextval('b_id_seq'::regclass) a_id | integer | Indexes: "b_pkey" PRIMARY KEY, btree (id) Foreign-key constraints: "b_a_id_fkey" FOREIGN KEY (a_id) REFERENCES a(id)
postgres=# REINDEX TABLE a CONCURRENTLY; NOTICE: drop cascades to constraint b_a_id_fkey on table b REINDEX Time: 248.992 ms postgres=# \d b Table "public.b" Column | Type | Modifiers --------+---------+------------------------------------------------ id | integer | not null default nextval('b_id_seq'::regclass) a_id | integer | Indexes: "b_pkey" PRIMARY KEY, btree (id)
Oops. I will fix that in the next version of the patch. There should be an elegant way to change the dependencies at the swap phase.