Re: deferrable FK constraints on partitioned rels

Alvaro Herrera <alvherre@2ndquadrant.com>

From: Alvaro Herrera <alvherre@2ndquadrant.com>
To: Pg Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-11-05T21:29:16Z
Lists: pgsql-hackers

Attachments

On 2019-Nov-05, Alvaro Herrera wrote:

> While messing around, I noticed that SET CONSTRAINTS ... DEFERRED
> does not work with partitioned tables.  I had some code to cover this
> case, but it has a bug that prevents it from working at all: the sanity
> check that verifies whether triggers exist fails.
> 
> The attached patch fixes this problem: it merely removes the sanity
> check.  With that, everything works.
> 
> (Another approach I tried was to split out constraints in partitioned
> tables vs. constraints in regular ones.  That's indeed workable, but it
> requires us to do two additional syscache access per partition for
> get_rel_relkind, which seems excessive.)

Uh, somehow I posted a previous version of the patch that implements my
rejected approach, instead of the final version I described.  Here's the
real patch (which also includes tests).

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

Commits

  1. Fix SET CONSTRAINTS .. DEFERRED on partitioned tables