Re: Fixing findDependentObjects()'s dependency on scan order (regressions in DROP diagnostic messages)
Amit Langote <amitlangote09@gmail.com>
From: Amit Langote <amitlangote09@gmail.com>
To: Alvaro Herrera <alvherre@2ndquadrant.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Peter Geoghegan <pg@bowt.ie>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2019-02-09T17:06:47Z
Lists: pgsql-hackers
On Sun, Feb 10, 2019 at 1:50 AM Alvaro Herrera <alvherre@2ndquadrant.com> wrote: > On 2019-Feb-09, Tom Lane wrote: > > Alvaro Herrera <alvherre@2ndquadrant.com> writes: > > > On 2019-Feb-09, Tom Lane wrote: > > >> No, that's still the back end of the deletion machinery, and in particular > > >> it would fail to clean pg_depend entries for the trigger. Going in by the > > >> front door would use performDeletion(). (See deleteOneObject() to get > > >> an idea of what's being possibly missed out here.) > > > > > This patch I think does the right thing. > > > > (squint ...) Don't much like the undocumented deleteDependencyRecordsFor > > call; that looks like it's redundant with what deleteOneObject will do. > > I think you're doing it to get rid of the INTERNAL dependency so that > > deletion won't recurse across that, but why is that a good idea? Needs > > a comment at least. > > Yeah, it's deleting the INTERNAL dependency, because otherwise the > trigger deletion is (correctly) forbidden, since the constraint depends > on it. Perhaps it'd be good to have it be more targetted: make sure it > only deletes that dependency row and not any others that the trigger > might have (though I don't have it shouldn't have any. How could it?) Reading Tom's reply to my email, I wondered if performDeletion won't do more than what the code is already doing (except calling the right trigger deletion function which the current code doesn't), because the trigger in question is an internal trigger without any dependencies (the function it invokes are pinned by the system)? Thanks, Amit
Commits
-
Redesign the partition dependency mechanism.
- 1d92a0c9f7dd 12.0 landed
-
Fix trigger drop procedure
- cc126b45ea5c 11.2 landed
- cb90de1aac18 12.0 landed
-
Sort the dependent objects before recursing in findDependentObjects().
- f1ad067fc3ae 12.0 landed
-
Avoid sometimes printing both tables and their columns in DROP CASCADE.
- 9194c4270b28 12.0 landed