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 */