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

Reply via email to