Fix lock level used for partition when detaching it
For probably bogus reasons, we acquire only AccessShareLock on the partition when we try to detach it from its parent partitioned table. This can cause ugly things to happen if another transaction is doing any sort of DDL to the partition concurrently. Upgrade that lock to ShareUpdateExclusiveLock, which per discussion seems to be the minimum needed. Reported by Robert Haas. Discussion: https://postgr.es/m/CA+TgmoYruJQ+2qnFLtF1xQtr71pdwgfxy3Ziy-TxV28M6pEmyA@mail.gmail.com
This commit is contained in:
parent
164d439550
commit
1c142612c8
@ -13865,7 +13865,7 @@ ATExecDetachPartition(Relation rel, RangeVar *name)
|
|||||||
new_repl[Natts_pg_class];
|
new_repl[Natts_pg_class];
|
||||||
ObjectAddress address;
|
ObjectAddress address;
|
||||||
|
|
||||||
partRel = heap_openrv(name, AccessShareLock);
|
partRel = heap_openrv(name, ShareUpdateExclusiveLock);
|
||||||
|
|
||||||
/* All inheritance related checks are performed within the function */
|
/* All inheritance related checks are performed within the function */
|
||||||
RemoveInheritance(partRel, rel);
|
RemoveInheritance(partRel, rel);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user