Re: Another FK violation when referencing a multi-level partitioned table
Alvaro Herrera <alvherre@2ndquadrant.com>
From: Alvaro Herrera <alvherre@2ndquadrant.com>
To: Jehan-Guillaume de Rorthais <jgdr@dalibo.com>
Cc: pgsql-bugs@lists.postgresql.org
Date: 2020-02-07T21:30:51Z
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
Commits
-
Simplify FK-to-partitioned regression test query
- b2304a71748a 13.0 landed
- 3f50d5ced3f8 12.3 landed
-
Fix failure to create FKs correctly in partitions
- 55173d2e663f 13.0 landed
- 2c80a656c2b5 12.2 landed