pgsql: Defer creation of partially-grouped relation until it's needed.

From: Robert Haas <rhaas(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Defer creation of partially-grouped relation until it's needed.
Date: 2018-03-20 15:22:45
Message-ID: E1eyJ65-0005OC-LO@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Defer creation of partially-grouped relation until it's needed.

This avoids unnecessarily creating a RelOptInfo for which we have no
actual need. This idea is from Ashutosh Bapat, who wrote a very
different patch to accomplish a similar goal. It will be more
important if and when we get partition-wise aggregate, since then
there could be many partially grouped relations all of which could
potentially be unnecessary. In passing, this sets the grouping
relation's reltarget, which wasn't done previously but makes things
simpler for this refactoring.

Along the way, adjust things so that add_paths_to_partial_grouping_rel,
now renamed create_partial_grouping_paths, does not perform the Gather
or Gather Merge steps to generate non-partial paths from partial
paths; have the caller do it instead. This is again for the
convenience of partition-wise aggregate, which wants to inject
additional partial paths are created and before we decide which ones
to Gather/Gather Merge. This might seem like a separate change, but
it's actually pretty closely entangled; I couldn't really see much
value in separating it and having to change some things twice.

Patch by me, reviewed by Ashutosh Bapat.

Discussion: http://postgr.es/m/CA+TgmoZ+ZJTVad-=vEq393N99KTooxv9k7M+z73qnTAqkb49BQ@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/4f15e5d09de276fb77326be5567dd9796008ca2e

Modified Files
--------------
src/backend/optimizer/plan/planner.c | 324 ++++++++++++++++++-----------------
1 file changed, 170 insertions(+), 154 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Robert Haas 2018-03-20 15:33:05 pgsql: Determine grouping strategies in create_grouping_paths.
Previous Message Alvaro Herrera 2018-03-20 14:54:50 Re: pgsql: Fix CommandCounterIncrement in partition-related DDL