On 2019-Jul-16, Tom Lane wrote:
> Rajkumar Raghuwanshi <rajkumar.raghuwanshi@enterprisedb.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