Re: getting ERROR "relation 16401 has no triggers" with partition foreign key alter

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Rajkumar Raghuwanshi <rajkumar(dot)raghuwanshi(at)enterprisedb(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: getting ERROR "relation 16401 has no triggers" with partition foreign key alter
Date: 2019-07-17 22:48:07
Message-ID: 20190717224807.GA29752@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2019-Jul-17, Alvaro Herrera wrote:

> Actually, that doesn't fix this problem, because the partitioned side is
> the *referencing* side, and ATExecDropConstraint is obsessed about the
> *referenced* side only and assumes that the calling code has already
> dealt with the referencing side checks. I'm trying a fix for that now.

Yeah, the attached patch fixes Rajkumar's reproducer.

> I wonder if there are other AT subcommands that are similarly broken,
> because many of them skip the CheckTableNotInUse for the partitions.

I suppose the question here is where else do we need to call the new
ATRecurseCheckNotInUse function (which needs a comment).

I thought about doing the recursion in CheckTableNotInUse itself, but I
didn't feel comfortable with assuming that all callers are OK with that.

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

Attachment Content-Type Size
recurse-dropfk.patch text/x-diff 3.1 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Fabien COELHO 2019-07-17 22:59:01 Re: refactoring - share str2*int64 functions
Previous Message Tom Lane 2019-07-17 22:45:39 Re: using explicit_bzero