bool show_relname;
int numrels = queryDesc->estate->es_num_result_relations;
int numrootrels = queryDesc->estate->es_num_root_result_relations;
- List *leafrels = queryDesc->estate->es_leaf_result_relations;
- List *targrels = queryDesc->estate->es_trig_target_relations;
+ List *routerels;
+ List *targrels;
int nr;
ListCell *l;
+ routerels = queryDesc->estate->es_tuple_routing_result_relations;
+ targrels = queryDesc->estate->es_trig_target_relations;
+
ExplainOpenGroup("Triggers", "Triggers", false, es);
show_relname = (numrels > 1 || numrootrels > 0 ||
- leafrels != NIL || targrels != NIL);
+ routerels != NIL || targrels != NIL);
rInfo = queryDesc->estate->es_result_relations;
for (nr = 0; nr < numrels; rInfo++, nr++)
report_triggers(rInfo, show_relname, es);
for (nr = 0; nr < numrootrels; rInfo++, nr++)
report_triggers(rInfo, show_relname, es);
- foreach(l, leafrels)
+ foreach(l, routerels)
{
rInfo = (ResultRelInfo *) lfirst(l);
report_triggers(rInfo, show_relname, es);
rInfo++;
nr--;
}
- /* Third, search through the leaf result relations, if any */
- foreach(l, estate->es_leaf_result_relations)
+ /*
+ * Third, search through the result relations that were created during
+ * tuple routing, if any.
+ */
+ foreach(l, estate->es_tuple_routing_result_relations)
{
rInfo = (ResultRelInfo *) lfirst(l);
if (RelationGetRelid(rInfo->ri_RelationDesc) == relid)
resultRTindex,
rel,
estate->es_instrument);
+
+ /*
+ * Since we've just initialized this ResultRelInfo, it's not in
+ * any list attached to the estate as yet. Add it, so that it can
+ * be found later.
+ */
+ estate->es_tuple_routing_result_relations =
+ lappend(estate->es_tuple_routing_result_relations,
+ leaf_part_rri);
}
part_tupdesc = RelationGetDescr(partrel);
mtstate != NULL &&
mtstate->mt_onconflict != ONCONFLICT_NONE);
- estate->es_leaf_result_relations =
- lappend(estate->es_leaf_result_relations, leaf_part_rri);
-
proute->partitions[i] = leaf_part_rri;
i++;
}
estate->es_root_result_relations = NULL;
estate->es_num_root_result_relations = 0;
- estate->es_leaf_result_relations = NIL;
+ estate->es_tuple_routing_result_relations = NIL;
estate->es_trig_target_relations = NIL;
estate->es_trig_tuple_slot = NULL;
ResultRelInfo *es_root_result_relations; /* array of ResultRelInfos */
int es_num_root_result_relations; /* length of the array */
- /* Info about leaf partitions of partitioned table(s) for insert queries: */
- List *es_leaf_result_relations; /* List of ResultRelInfos */
+ /*
+ * The following list contains ResultRelInfos created by the tuple
+ * routing code for partitions that don't already have one.
+ */
+ List *es_tuple_routing_result_relations;
/* Stuff used for firing triggers: */
List *es_trig_target_relations; /* trigger-only ResultRelInfos */