aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/trigger.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/commands/trigger.c')
-rw-r--r--src/backend/commands/trigger.c44
1 files changed, 5 insertions, 39 deletions
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index 7661e004a93..08f9a307fd1 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -1147,8 +1147,6 @@ CreateTriggerFiringOn(CreateTrigStmt *stmt, const char *queryString,
if (partition_recurse)
{
PartitionDesc partdesc = RelationGetPartitionDesc(rel, true);
- List *idxs = NIL;
- List *childTbls = NIL;
int i;
MemoryContext oldcxt,
perChildCxt;
@@ -1158,53 +1156,23 @@ CreateTriggerFiringOn(CreateTrigStmt *stmt, const char *queryString,
ALLOCSET_SMALL_SIZES);
/*
- * When a trigger is being created associated with an index, we'll
- * need to associate the trigger in each child partition with the
- * corresponding index on it.
+ * We don't currently expect to be called with a valid indexOid. If
+ * that ever changes then we'll need to quite code here to find the
+ * corresponding child index.
*/
- if (OidIsValid(indexOid))
- {
- ListCell *l;
- List *idxs = NIL;
-
- idxs = find_inheritance_children(indexOid, ShareRowExclusiveLock);
- foreach(l, idxs)
- childTbls = lappend_oid(childTbls,
- IndexGetRelation(lfirst_oid(l),
- false));
- }
+ Assert(!OidIsValid(indexOid));
oldcxt = MemoryContextSwitchTo(perChildCxt);
/* Iterate to create the trigger on each existing partition */
for (i = 0; i < partdesc->nparts; i++)
{
- Oid indexOnChild = InvalidOid;
- ListCell *l;
- ListCell *l2;
CreateTrigStmt *childStmt;
Relation childTbl;
Node *qual;
childTbl = table_open(partdesc->oids[i], ShareRowExclusiveLock);
- /* Find which of the child indexes is the one on this partition */
- if (OidIsValid(indexOid))
- {
- forboth(l, idxs, l2, childTbls)
- {
- if (lfirst_oid(l2) == partdesc->oids[i])
- {
- indexOnChild = lfirst_oid(l);
- break;
- }
- }
- if (!OidIsValid(indexOnChild))
- elog(ERROR, "failed to find index matching index \"%s\" in partition \"%s\"",
- get_rel_name(indexOid),
- get_rel_name(partdesc->oids[i]));
- }
-
/*
* Initialize our fabricated parse node by copying the original
* one, then resetting fields that we pass separately.
@@ -1224,7 +1192,7 @@ CreateTriggerFiringOn(CreateTrigStmt *stmt, const char *queryString,
CreateTriggerFiringOn(childStmt, queryString,
partdesc->oids[i], refRelOid,
- InvalidOid, indexOnChild,
+ InvalidOid, InvalidOid,
funcoid, trigoid, qual,
isInternal, true, trigger_fires_when);
@@ -1235,8 +1203,6 @@ CreateTriggerFiringOn(CreateTrigStmt *stmt, const char *queryString,
MemoryContextSwitchTo(oldcxt);
MemoryContextDelete(perChildCxt);
- list_free(idxs);
- list_free(childTbls);
}
/* Keep lock on target rel until end of xact */