I don't think that the lock level mentioned in the following comment in MergeAttributes() in tablecmds.c is right, since that that function has opened the relation with ShareUpdateExclusiveLock, not with AccessShareLock. Patch attached.
1749 /* 1750 * Close the parent rel, but keep our AccessShareLock on it until xact 1751 * commit. That will prevent someone else from deleting or ALTERing 1752 * the parent before the child is committed. 1753 */ 1754 heap_close(relation, NoLock); Thanks, Best regards, Etsuro Fujita
*** a/src/backend/commands/tablecmds.c --- b/src/backend/commands/tablecmds.c *************** *** 1747,1755 **** MergeAttributes(List *schema, List *supers, char relpersistence, pfree(newattno); /* ! * Close the parent rel, but keep our AccessShareLock on it until xact ! * commit. That will prevent someone else from deleting or ALTERing ! * the parent before the child is committed. */ heap_close(relation, NoLock); } --- 1747,1755 ---- pfree(newattno); /* ! * Close the parent rel, but keep our ShareUpdateExclusiveLock on it ! * until xact commit. That will prevent someone else from deleting or ! * ALTERing the parent before the child is committed. */ heap_close(relation, NoLock); }
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers