pgsql: Set consider_parallel correctly for upper planner rels.

From: Robert Haas <rhaas(at)postgresql(dot)org>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Set consider_parallel correctly for upper planner rels.
Date: 2016-07-01 15:53:23
Message-ID: E1bJ0kt-0003DJ-DM@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Set consider_parallel correctly for upper planner rels.

Commit 3fc6e2d7f5b652b417fa6937c34de2438d60fa9f introduced new "upper"
RelOptInfo structures but didn't set consider_parallel for them
correctly, a point I completely missed when reviewing it. Later,
commit e06a38965b3bcdaa881e7e06892d4d8ab6c2c980 made the situation
worse by doing it incorrectly for the grouping relation. Try to
straighten all of that out. Along the way, get rid of the annoying
wholePlanParallelSafe flag, which was only necessarily because of
the fact that upper planning stages didn't use paths at the time
that code was written.

The most important immediate impact of these changes is that
force_parallel_mode will provide useful test coverage in quite a few
more scenarios than it did previously, but it's also necessary
preparation for fixing some problems related to subqueries.

Patch by me, reviewed by Tom Lane.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/5ce5e4a12ee7175cd3fc356d9d38307e1d715827

Modified Files
--------------
src/backend/nodes/outfuncs.c | 1 -
src/backend/optimizer/plan/createplan.c | 4 -
src/backend/optimizer/plan/planner.c | 201 ++++++++++++++++---------------
src/backend/optimizer/util/pathnode.c | 13 +-
src/include/nodes/relation.h | 4 +-
src/test/regress/expected/aggregates.out | 7 ++
src/test/regress/sql/aggregates.sql | 8 ++
7 files changed, 132 insertions(+), 106 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Simon Riggs 2016-07-01 16:01:55 Re: pgsql: Fix crash bug in RestoreSnapshot.
Previous Message Tom Lane 2016-07-01 15:40:49 pgsql: Be more paranoid in ruleutils.c's get_variable().