diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index 7661e004a9..08f9a307fd 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 */