diff options
Diffstat (limited to 'src/backend/commands/explain.c')
-rw-r--r-- | src/backend/commands/explain.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index 22616cf7add..33a16d2d8e2 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -4575,10 +4575,20 @@ show_modifytable_info(ModifyTableState *mtstate, List *ancestors, break; } - /* Should we explicitly label target relations? */ + /* + * Should we explicitly label target relations? + * + * If there's only one target relation, do not list it if it's the + * relation named in the query, or if it has been pruned. (Normally + * mtstate->resultRelInfo doesn't include pruned relations, but a single + * pruned target relation may be present, if all other target relations + * have been pruned. See ExecInitModifyTable().) + */ labeltargets = (mtstate->mt_nrels > 1 || (mtstate->mt_nrels == 1 && - mtstate->resultRelInfo[0].ri_RangeTableIndex != node->nominalRelation)); + mtstate->resultRelInfo[0].ri_RangeTableIndex != node->nominalRelation && + bms_is_member(mtstate->resultRelInfo[0].ri_RangeTableIndex, + mtstate->ps.state->es_unpruned_relids))); if (labeltargets) ExplainOpenGroup("Target Tables", "Target Tables", false, es); |