aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/explain.c
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2018-02-08 14:29:05 -0500
committerRobert Haas <rhaas@postgresql.org>2018-02-08 14:29:05 -0500
commite44dd84325c277fd031b9ef486c51a0946c7d3a0 (patch)
treea501ae2a890898c23dcac6a791fe08299ed9b3c6 /src/backend/commands/explain.c
parent88fdc7006018b92d6ec92c54b3819764703daaba (diff)
downloadpostgresql-e44dd84325c277fd031b9ef486c51a0946c7d3a0.tar.gz
postgresql-e44dd84325c277fd031b9ef486c51a0946c7d3a0.zip
Avoid listing the same ResultRelInfo in more than one EState list.
Doing so causes EXPLAIN ANALYZE to show trigger statistics multiple times. Commit 2f178441044be430f6b4d626e4dae68a9a6f6cec seems to be to blame for this. Amit Langote, revieed by Amit Khandekar, Etsuro Fujita, and me.
Diffstat (limited to 'src/backend/commands/explain.c')
-rw-r--r--src/backend/commands/explain.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
index 41cd47e8bcd..900fa74e85e 100644
--- a/src/backend/commands/explain.c
+++ b/src/backend/commands/explain.c
@@ -652,15 +652,18 @@ ExplainPrintTriggers(ExplainState *es, QueryDesc *queryDesc)
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);
@@ -669,7 +672,7 @@ ExplainPrintTriggers(ExplainState *es, QueryDesc *queryDesc)
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);