aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/commands/tablecmds.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 32eb5f88bf7..747acbd2b91 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -15244,24 +15244,14 @@ ATExecDetachPartition(Relation rel, RangeVar *name)
idx = index_open(idxid, AccessExclusiveLock);
IndexSetParentIndex(idx, InvalidOid);
update_relispartition(classRel, idxid, false);
- index_close(idx, NoLock);
-
- /*
- * Detach any constraints associated with the index too. Only UNIQUE
- * and PRIMARY KEY index constraints can be inherited, so no need
- * to check for others.
- */
- if (!idx->rd_index->indisprimary && !idx->rd_index->indisunique)
- continue;
+ /* If there's a constraint associated with the index, detach it too */
constrOid = get_relation_idx_constraint_oid(RelationGetRelid(partRel),
idxid);
- if (!OidIsValid(constrOid))
- elog(ERROR, "missing pg_constraint entry of index \"%s\" of partition \"%s\"",
- RelationGetRelationName(idx),
- RelationGetRelationName(partRel));
+ if (OidIsValid(constrOid))
+ ConstraintSetParentConstraint(constrOid, InvalidOid);
- ConstraintSetParentConstraint(constrOid, InvalidOid);
+ index_close(idx, NoLock);
}
heap_close(classRel, RowExclusiveLock);