Re: BUG #6172: DROP EXTENSION error without CASCADE - Mailing list pgsql-bugs

From Tom Lane
Subject Re: BUG #6172: DROP EXTENSION error without CASCADE
Date
Msg-id 3115.1314021160@sss.pgh.pa.us
Whole thread Raw
In response to Re: BUG #6172: DROP EXTENSION error without CASCADE  (Dimitri Fontaine <dimitri@2ndQuadrant.fr>)
List pgsql-bugs
Dimitri Fontaine <dimitri@2ndQuadrant.fr> writes:
> But in makeOperatorDependencies() we find the following piece of code:

>     /* In case we are updating a shell, delete any existing entries */
>     deleteDependencyRecordsFor(myself.classId, myself.objectId, false);

> false is for bool skipExtensionDeps.

> And now at the end of the same function, dependency is recorded back,
> except in some case:

>             oldext = getExtensionOfObject(object->classId, object->objectId);
>             if (OidIsValid(oldext))
>             {
>                 /* If already a member of this extension, nothing to do */
>                 if (oldext == CurrentExtensionObject)
>                     return;

> The problem lies in catalog scans and SnapshotNow, I think.

[ light goes on... ]  We need a CommandCounterIncrement in there.
Else, the code that looks to see if the object is already part of the
extension does not see the pg_depend row as deleted (yet).

Not sure offhand where the cleanest place to put it is.

            regards, tom lane

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #6171: Sockets Issue
Next
From: "Kevin Grittner"
Date:
Subject: Re: BUG #6171: Sockets Issue