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