Re: partitioned tables referenced by FKs

Alvaro Herrera <alvherre@2ndquadrant.com>

From: Alvaro Herrera <alvherre@2ndquadrant.com>
To: Jesper Pedersen <jesper.pedersen@redhat.com>
Cc: Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>, Pg Hackers <pgsql-hackers@postgresql.org>, amitlangote09@gmail.com
Date: 2019-04-01T20:03:36Z
Lists: pgsql-hackers

Attachments

On 2019-Mar-29, Jesper Pedersen wrote:

> 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.

Thanks!

I found two issues today.  One, server side, is that during cloning for
partition attach we were not checking for concurrent deletion of
referenced tuples in partitions.  I added an isolation spec test for
this.  To fix the bug, added a find_all_inheritors() to lock all
partitions with ShareRowExclusiveLock.

Another is that psql's \d failed for versions < 12, because we were
inconditionally adding an "AND conparentid = 0" clause.

I also reworked CloneForeignKeyConstraints.  The previous style was
being forced by the old recursing method; now we can make it a lot
simpler -- it's now just two subroutine calls.

I'm satisfied with this patch now, so I intend to push early tomorrow.

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Commits

  1. Support foreign keys that reference partitioned tables

  2. Fix partitioned index creation bug with dropped columns

  3. Improve psql's \d display of foreign key constraints

  4. Fix dependency recording bug for partitioned PKs

  5. Add index_get_partition convenience function

  6. Restore RI trigger sanity check

  7. Foreign keys on partitioned tables