pgsql: Track a Bitmapset of non-pruned partitions in RelOptInfo

From: David Rowley <drowley(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Track a Bitmapset of non-pruned partitions in RelOptInfo
Date: 2021-08-02 23:47:59
Message-ID: E1mAhf5-0006Qp-U3@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Track a Bitmapset of non-pruned partitions in RelOptInfo

For partitioned tables with large numbers of partitions where queries are
able to prune all but a very small number of partitions, the time spent in
the planner looping over RelOptInfo.part_rels checking for non-NULL
RelOptInfos could become a large portion of the overall planning time.

Here we add a Bitmapset that records the non-pruned partitions. This
allows us to more efficiently skip the pruned partitions by looping over
the Bitmapset.

This will cause a very slight slow down in cases where no or not many
partitions could be pruned, however, those cases are already slow to plan
anyway and the overhead of looping over the Bitmapset would be
unmeasurable when compared with the other tasks such as path creation for
a large number of partitions.

Reviewed-by: Amit Langote, Zhihong Yu
Discussion: https://postgr.es/m/CAApHDvqnPx6JnUuPwaf5ao38zczrAb9mxt9gj4U1EKFfd4AqLA@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/475dbd0b718de8ac44da144f934651b959e3b705

Modified Files
--------------
src/backend/nodes/outfuncs.c | 1 +
src/backend/optimizer/path/joinrels.c | 1 +
src/backend/optimizer/plan/planner.c | 31 +++++++++++++++++++------------
src/backend/optimizer/util/inherit.c | 2 +-
src/backend/optimizer/util/relnode.c | 3 +++
src/backend/partitioning/partprune.c | 7 +++----
src/include/nodes/pathnodes.h | 3 +++
7 files changed, 31 insertions(+), 17 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message David Rowley 2021-08-03 00:26:13 pgsql: Allow ordered partition scans in more cases
Previous Message Tom Lane 2021-08-02 15:32:23 pgsql: Doc: minor improvements for logical replication protocol documen