pgsql: Cleanup partition pruning step generation

From: David Rowley <drowley(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Cleanup partition pruning step generation
Date: 2021-04-08 10:36:10
Message-ID: E1lUS1C-0007hQ-Jg@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Cleanup partition pruning step generation

There was some code in gen_prune_steps_from_opexps that needlessly
checked a list was not empty when it clearly had to contain at least one
item. This prompted a further cleanup operation in partprune.c.

Additionally, the previous code could end up adding additional needless
INTERSECT steps. However, those do not appear to be able to cause any
misbehavior.

gen_prune_steps_from_opexps is now no longer in charge of generating
combine pruning steps. Instead, gen_partprune_steps_internal, which
already does some combine step creation has been given the sole
responsibility of generating all combine steps. This means that when
we recursively call gen_partprune_steps_internal, since it always now adds
a combine step when it produces multiple steps, we can just pay attention
to the final step returned.

In passing, do quite a bit of work on the comments to try to more clearly
explain the role of both gen_partprune_steps_internal and
gen_prune_steps_from_opexps. This is fairly complex code so some extra
effort to give any new readers an overview of how things work seems like
a good idea.

Author: Amit Langote
Reported-by: Andy Fan
Reviewed-by: Kyotaro Horiguchi, Andy Fan, Ryan Lambert, David Rowley
Discussion: https://postgr.es/m/CAKU4AWqWoVii+bRTeBQmeVW+PznkdO8DfbwqNsu9Gj4ubt9A6w@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/5ac9c4307337313bedeafc21dbbab93ba809241c

Modified Files
--------------
src/backend/partitioning/partbounds.c | 2 +-
src/backend/partitioning/partprune.c | 167 +++++++++++++++++-----------------
src/include/nodes/plannodes.h | 2 +-
3 files changed, 84 insertions(+), 87 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Julien Rouhaud 2021-04-08 10:56:09 Re: pgsql: Move pg_stat_statements query jumbling to core.
Previous Message Amit Kapila 2021-04-08 10:22:02 Re: pgsql: Move pg_stat_statements query jumbling to core.