aboutsummaryrefslogtreecommitdiff
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
commit7b14bcc06cc56b110118fba408f4b9b72a663387 (patch)
tree70ccacbe456ae514bdabe74947dc61e87713bc84
parent42bdf853f664d0566c9e7af027635b48d66c0f71 (diff)
downloadpostgresql-7b14bcc06cc56b110118fba408f4b9b72a663387.tar.gz
postgresql-7b14bcc06cc56b110118fba408f4b9b72a663387.zip
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 ce0c7b3153f..588c1ec5365 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -14588,7 +14588,7 @@ ATExecDetachPartition(Relation rel, RangeVar *name)
if (OidIsValid(defaultPartOid))
LockRelationOid(defaultPartOid, AccessExclusiveLock);
- partRel = heap_openrv(name, AccessShareLock);
+ partRel = heap_openrv(name, ShareUpdateExclusiveLock);
/* All inheritance related checks are performed within the function */
RemoveInheritance(partRel, rel);