Re: recent ALTER whatever .. SET SCHEMA refactoring
От | Kohei KaiGai |
---|---|
Тема | Re: recent ALTER whatever .. SET SCHEMA refactoring |
Дата | |
Msg-id | CADyhKSVLNmmV7T9e3R8BSwzcYHNxfOcrm_e+pONTA9oijXagkg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: recent ALTER whatever .. SET SCHEMA refactoring (Robert Haas <robertmhaas@gmail.com>) |
Ответы |
Re: recent ALTER whatever .. SET SCHEMA refactoring
|
Список | pgsql-hackers |
2013/1/8 Robert Haas <robertmhaas@gmail.com>: > On Tue, Jan 8, 2013 at 4:05 AM, Kohei KaiGai <kaigai@kaigai.gr.jp> wrote: >> Does it make sense an idea to invoke AlterFunctionNamespace_oid() >> or AlterCollationNamespace_oid() from AlterObjectNamespace_internal() >> for checks of namespace conflicts? >> It can handle special cases with keeping modularity between common >> and specific parts. Let's consider function pointer when we have mode >> than 5 object classes that needs special treatment. > > Unless I'm gravely mistaken, we're only talking about a handful of > lines of code. We have lots of functions, in objectaddress.c for > example, whose behavior is conditional on the type of object that they > are operating on. And we just write out all the cases. I'm not > understanding why we need to take a substantially more complex > approach here. > I'm probably saying same idea. It just adds invocation of external functions to check naming conflicts of functions or collation; that takes additional 4-lines for special case handling in AlterObjectNamespace_internal(). Do you have different image for the special case handling? @@ -380,6 +368,10 @@ AlterObjectNamespace_internal(Relation rel, Oid objid, Oid nspOid) errmsg("%s already exists in schema \"%s\"", getObjectDescriptionOids(classId, objid), get_namespace_name(nspOid)))); + else if (classId == ProcedureRelationId) + AlterFunctionNamespace_oid(rel, objid, nspOid); + else if (classId == CollationRelationId) + AlterCollationNamespace_oid(rel, objid, nspOid); /* Build modified tuple */ values = palloc0(RelationGetNumberOfAttributes(rel) * sizeof(Datum)); Thanks, -- KaiGai Kohei <kaigai@kaigai.gr.jp>
Вложения
В списке pgsql-hackers по дате отправления: