Re: Prevent concurrent DROP SCHEMA when certain objects are beinginitially created in the namespace
От | Michael Paquier |
---|---|
Тема | Re: Prevent concurrent DROP SCHEMA when certain objects are beinginitially created in the namespace |
Дата | |
Msg-id | 20180906192227.GN2726@paquier.xyz обсуждение исходный текст |
Ответ на | Re: Prevent concurrent DROP SCHEMA when certain objects are beinginitially created in the namespace (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: Prevent concurrent DROP SCHEMA when certain objects are beinginitially created in the namespace
|
Список | pgsql-hackers |
On Wed, Sep 05, 2018 at 09:23:37AM -0700, Andres Freund wrote: > Well, we kinda do, during some of their own DDL. CF > AcquireDeletionLock(), RangeVarGetAndCheckCreationNamespace(), and other > LockDatabaseObject() callers. The > RangeVarGetAndCheckCreationNamespace() even locks the schema an object > is created in , which is pretty much what we're discussing here. > > I think the problem with the current logic is more that the > findDependentObjects() scan doesn't use a "dirty" scan, so it doesn't > ever get to seeing conflicting operations. Well, it seems to me that we don't necessarily want to go down to that for sure on back-branches. What's actually striking me as a very bad thing is the inconsistent behavior when we need to get a namespace OID after calling QualifiedNameGetCreationNamespace using a list of defnames which does not lock the schema the DDL is working on. And this happens for basically all the object types Jimmy has mentioned. For example, when creating a composite type, the namespace lock is taken through RangeVarGetAndCheckCreationNamespace. If a user tries to create a root type, then we simply don't lock it, which leads to an inconsistency of behavior between composite types and root types. In my opinion the inconsistency of behavior for the same DDL is not logic. So I have been looking at that, and finished with the attached, which actually fixes the set of problems reported. Thoughts? -- Michael
Вложения
В списке pgsql-hackers по дате отправления: