mirror of
https://github.com/postgres/postgres.git
synced 2025-06-30 21:42:05 +03:00
Fix interaction of triggers, partitioning, and EXPLAIN ANALYZE.
Add a new EState member es_leaf_result_relations, so that the trigger code knows about ResultRelInfos created by tuple routing. Also make sure ExplainPrintTriggers knows about partition-related ResultRelInfos. Etsuro Fujita, reviewed by Amit Langote Discussion: http://postgr.es/m/57163e18-8e56-da83-337a-22f2c0008051@lab.ntt.co.jp
This commit is contained in:
@ -656,17 +656,30 @@ ExplainPrintTriggers(ExplainState *es, QueryDesc *queryDesc)
|
||||
ResultRelInfo *rInfo;
|
||||
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;
|
||||
int nr;
|
||||
ListCell *l;
|
||||
|
||||
ExplainOpenGroup("Triggers", "Triggers", false, es);
|
||||
|
||||
show_relname = (numrels > 1 || targrels != NIL);
|
||||
show_relname = (numrels > 1 || numrootrels > 0 ||
|
||||
leafrels != NIL || targrels != NIL);
|
||||
rInfo = queryDesc->estate->es_result_relations;
|
||||
for (nr = 0; nr < numrels; rInfo++, nr++)
|
||||
report_triggers(rInfo, show_relname, es);
|
||||
|
||||
rInfo = queryDesc->estate->es_root_result_relations;
|
||||
for (nr = 0; nr < numrootrels; rInfo++, nr++)
|
||||
report_triggers(rInfo, show_relname, es);
|
||||
|
||||
foreach(l, leafrels)
|
||||
{
|
||||
rInfo = (ResultRelInfo *) lfirst(l);
|
||||
report_triggers(rInfo, show_relname, es);
|
||||
}
|
||||
|
||||
foreach(l, targrels)
|
||||
{
|
||||
rInfo = (ResultRelInfo *) lfirst(l);
|
||||
|
Reference in New Issue
Block a user