Re: [BUG] Fix DETACH with FK pointing to a partitioned table fails

Jehan-Guillaume de Rorthais <jgdr@dalibo.com>

From: Jehan-Guillaume de Rorthais <jgdr@dalibo.com>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Tender Wang <tndrwang@gmail.com>, Junwang Zhao <zhjwpku@gmail.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>, Alexander Lakhin <exclusion@gmail.com>, Baehler Thomas SBB CFF FFS <thomas.baehler2@sbb.ch>, Guillaume Lelarge <guillaume@lelarge.info>
Date: 2024-08-20T08:26:51Z
Lists: pgsql-hackers
On Wed, 7 Aug 2024 18:50:10 -0400
Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:

> On 2024-Jul-26, Tender Wang wrote:
> 
> > Junwang Zhao <zhjwpku@gmail.com> 于2024年7月26日周五 14:57写道:
> > 
> > > There is a bug report[0] Tender comments might be the same issue as
> > > this one, but I tried Alvaro's and mine patch, neither could solve
> > > that problem, I did not tried Tender's earlier patch thought. I post
> > > the test script below in case you are interested.
> > 
> > My earlier patch should handle Alexander reported case. But I did not
> > do more test. I'm not sure that wether or not has dismatching between
> > pg_constraint and pg_trigger.
> > 
> > I aggred with Alvaro said that "requires a much more invasive
> > solution".
> 
> Here's the patch which, as far as I can tell, fixes all the reported
> problems (other than the one in bug 18541, for which I proposed an
> unrelated fix in that thread[1]).  If you can double-check, I would very
> much appreciate that.  Also, I think the test cases the patch adds
> reflect the provided examples sufficiently, but if we're still failing
> to cover some, please let me know.

I'm back on this issue as well. I start poking at this patch to review it,
test it, challenge it and then report here.

I'll try to check if some other issues might have lost/forgot on they way as
well.

In the meantime, thank you Alvaro, Tender and Junwang for your work, time,
research and patches!



Commits

  1. Fix some more bugs in foreign keys connecting partitioned tables

  2. Restructure foreign key handling code for ATTACH/DETACH

  3. Create foreign key triggers in partitioned tables too