pgsql: Fix handling of "Subplans Removed" field in EXPLAIN output. - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Fix handling of "Subplans Removed" field in EXPLAIN output.
Date
Msg-id E1iz2bl-0001lQ-7n@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Fix handling of "Subplans Removed" field in EXPLAIN output.

Commit 499be013d added this field in a rather poorly-thought-through
manner, with the result being that rather than being a field of the
Append or MergeAppend plan node as intended (and as it seems to be,
in text format), it was actually an element of the "Plans" subgroup.
At least in JSON format, that's flat out invalid syntax, because
"Plans" is an array not an object.

While it's not hard to move the generation of the field so that it
appears where it's supposed to, this does result in a visible change
in field order in text format, in cases where a Append or MergeAppend
plan node has any InitPlans attached.  That's slightly annoying to
do in stable branches; but the alternative of continuing to emit
broken non-text formats seems worse.

Also, since the set of fields emitted is not supposed to be
data-dependent in non-text formats, make sure that "Subplans Removed"
appears in Append and MergeAppend nodes even when it's zero, in those
formats.  (The previous coding made it look like it could appear in
some other node types such as BitmapAnd, but we don't actually support
runtime pruning there, so don't emit it in those cases.)

Per bug #16171 from Mahadevan Ramachandran.  Fix by Daniel Gustafsson
and Tom Lane, reviewed by Hamid Akhtar.  Back-patch to v11 where this
code came in.

Discussion: https://postgr.es/m/16171-b72259ab75505fa2@postgresql.org

Branch
------
REL_11_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/842a23efa92ab5ac91e013968e7575782fc1ebf1

Modified Files
--------------
src/backend/commands/explain.c                | 67 ++++++++++++++++++---------
src/test/regress/expected/partition_prune.out |  4 +-
2 files changed, 46 insertions(+), 25 deletions(-)


pgsql-committers by date:

Previous
From: Peter Geoghegan
Date:
Subject: Re: pgsql: Handle lack of DSM slots in parallel btree build.
Next
From: Thomas Munro
Date:
Subject: pgsql: Handle lack of DSM slots in parallel btree build, take 2.