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