Re: Another FK violation when referencing a multi-level partitioned table

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Jehan-Guillaume de Rorthais <jgdr(at)dalibo(dot)com>
Cc: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: Another FK violation when referencing a multi-level partitioned table
Date: 2020-02-07 21:30:51
Message-ID: 20200207213051.GA32185@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On 2020-Feb-06, Jehan-Guillaume de Rorthais wrote:

Hello,

> When working on the patch to fix another FK violation [1], I found that FK
> constraints were not properly cloned to partition not directly hooked to the
> root table.

Uh.

> Surprisingly, the comment explains how this should be done in two steps, but
> the code corrupted the first step by skipping inherited constraints and lacks
> the second step:
>
> * [...]to avoid duplicates. So do it in two
> * steps: first construct the list of constraints to clone, then go over
> * that list cloning those whose parents are not in the list. (We must
> * not rely on the parent being seen first, since the catalog scan could
> * return children first.)
> */

Strange that this escaped testing previously.

> Please, find in attachment a proposal patch to fix this FK violation.

You fix looks correct to me, so pushed. I took a minute to apply some
minor corrections to the comments, too.

Thanks for reporting!

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

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message PG Bug reporting form 2020-02-07 21:36:50 BUG #16250: As the owner of a database, I can't CREATE EXTENSION postgis;
Previous Message 0010203112132233 2020-02-07 20:26:12 Re: BUG #16249: Partition pruning blocks on exclusively locked table partition