Re: BUG #6172: DROP EXTENSION error without CASCADE
От | Tom Lane |
---|---|
Тема | Re: BUG #6172: DROP EXTENSION error without CASCADE |
Дата | |
Msg-id | 3115.1314021160@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: BUG #6172: DROP EXTENSION error without CASCADE (Dimitri Fontaine <dimitri@2ndQuadrant.fr>) |
Список | 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 по дате отправления: