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:08:47
Message-ID: 20190717220847.GA12100@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2019-Jul-16, Tom Lane wrote:

> Rajkumar Raghuwanshi <rajkumar(dot)raghuwanshi(at)enterprisedb(dot)com> writes:
> > I am getting ERROR: relation 16401 has no triggers error while executing
> > below query.
>
> Yeah, I can reproduce that back to v11. If you try the same scenario
> with a non-partitioned table you get
>
> ERROR: 55006: cannot ALTER TABLE "tbl2" because it has pending trigger events
> LOCATION: CheckTableNotInUse, tablecmds.c:3436
>
> but that test evidently fails to detect pending events for a partition
> child table.

Ah, yeah. So the problem is that when dropping an FK,
ATExecDropConstraint does not recurse itself, but instead relies on the
dependency mechanism, which obviously does not run CheckTableNotInUse on
the partitions.

I think we should just run CheckTableNotInUse for each partition in
ATExecDropConstraint. Trying that out now.

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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2019-07-17 22:26:45 pgsql: Sync our copy of the timezone library with IANA release tzcode20
Previous Message Laurenz Albe 2019-07-17 21:21:06 Re: pg_receivewal documentation