Re: partitioned tables referenced by FKs
Jesper Pedersen <jesper.pedersen@redhat.com>
From: Jesper Pedersen <jesper.pedersen@redhat.com>
To: Alvaro Herrera <alvherre@2ndquadrant.com>,
Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>
Cc: Pg Hackers <pgsql-hackers@postgresql.org>, amitlangote09@gmail.com
Date: 2019-03-29T19:39:53Z
Lists: pgsql-hackers
Hi Alvaro, On 3/28/19 2:59 PM, Alvaro Herrera wrote: > I ended up revising the dependencies that we give to the constraint in > the partition -- instead of giving it partition-type dependencies, we > give it an INTERNAL dependency. Now when you request to drop the > partition, it says this: > > create table pk (a int primary key) partition by list (a); > create table fk (a int references pk); > create table pk1 partition of pk for values in (1); > > alvherre=# drop table pk1; > ERROR: cannot drop table pk1 because other objects depend on it > DETAIL: constraint fk_a_fkey on table fk depends on table pk1 > HINT: Use DROP ... CASCADE to drop the dependent objects too. > > If you do say CASCADE, the constraint is dropped. Not really ideal (I > would prefer that the drop is prevented completely), but at least it's > not completely bogus. If you do "DROP TABLE pk", it works sanely. > Also, if you DETACH the partition that pg_depend row goes away, so a > subsequent drop of the partition works sanely. > > Fixed the psql issue pointed out by Amit L too. > I ran my test cases for this feature, and havn't seen any issues. Therefore I'm marking 1877 as Ready for Committer. If others have additional feedback feel free to switch it back. Best regards, Jesper
Commits
-
Support foreign keys that reference partitioned tables
- f56f8f8da6af 12.0 landed
-
Fix partitioned index creation bug with dropped columns
- 7009f1a2df65 11.3 landed
- 126d63122232 12.0 landed
-
Improve psql's \d display of foreign key constraints
- 1af25ca0c2d9 12.0 cited
-
Fix dependency recording bug for partitioned PKs
- 7e7c57bbb2eb 12.0 landed
-
Add index_get_partition convenience function
- a6da0047158b 12.0 landed
-
Restore RI trigger sanity check
- 815b20ae0c6e 12.0 landed
- 04f9b449aa30 11.3 landed
-
Foreign keys on partitioned tables
- 3de241dba86f 11.0 cited