Dimitri Fontaine <dimi...@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

-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to