Re: FK violation in partitioned table after truncating a referenced partition
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-06T21:12:38Z
Lists: pgsql-bugs
Attachments
On 2020-Feb-04, Jehan-Guillaume de Rorthais wrote: > Please, find in attachment a bug fix proposal where a truncate on a > partition cascade to the referencing table and truncate all its > partitions if applicable. > > The patch make sure heap_truncate_find_FKs find all referencing relations, > directly **and indirectly** through their parent table. > > When considering the various way of fixing this, I thought about calling > find_all_inheritors on all relations returned by heap_truncate_find_FKs to add > them to the list or relation to truncate (I have a working patch for this as > well). However, I felt like heap_truncate_find_FKs was the real suspect here > and was responsible to find all referencing relations. Hello, thanks for reporting and patching. I agree that patching heap_truncate_find_FKs is a reasonable way to fix. I propose a slightly different formulation: instead of the loop that you have, we can just use the second loop, and add more parent constraints to the list if any constraint we scan in turn has a parent constraint. So we don't repeat the whole thing, but only that second loop. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Fix TRUNCATE .. CASCADE on partitions
- ce054a8cd4f4 12.2 landed
- 9710d3d4a87f 13.0 landed