summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2018-12-20 16:42:13 -0300
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2018-12-20 16:42:13 -0300
commit1c142612c846cd01ed0615041e09e6fab7d44571 (patch)
tree5427b7b27ef6902b2b1e908f1948d77ba4ceae14
parent164d439550dd4b29b8c0bf317779ac8d4b4c2d8f (diff)
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
-rw-r--r--src/backend/commands/tablecmds.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 08e9bfcbf18..ec974d11833 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -13865,7 +13865,7 @@ ATExecDetachPartition(Relation rel, RangeVar *name)
new_repl[Natts_pg_class];
ObjectAddress address;
- partRel = heap_openrv(name, AccessShareLock);
+ partRel = heap_openrv(name, ShareUpdateExclusiveLock);
/* All inheritance related checks are performed within the function */
RemoveInheritance(partRel, rel);