Re: Allowing parallel-safe initplans

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Richard Guo <guofenglinux@gmail.com>
Cc: pgsql-hackers@lists.postgresql.org
Date: 2023-04-13T14:00:51Z
Lists: pgsql-hackers
Richard Guo <guofenglinux@gmail.com> writes:
> * For the diff in standard_planner, I was wondering why not move the
> initPlans up to the Gather node, just as we did before.  So I tried that
> way but did not notice the breakage of regression tests as stated in the
> comments.  Would you please confirm that?

Try it with debug_parallel_query = regress.

> * Not related to this patch.  In SS_make_initplan_from_plan, the comment
> says that the node's parParam and args lists remain empty.  I wonder if
> we need to explicitly set node->parParam and node->args to NIL before
> that comment, or can we depend on makeNode to initialize them to NIL?

I'm generally a fan of explicitly initializing fields, but the basic
argument for that is greppability.  That comment serves the purpose,
so I don't feel a big need to change it.

			regards, tom lane



Commits

  1. Account for optimized MinMax aggregates during SS_finalize_plan.

  2. Add test case showing that commit d0d44049d fixed a live bug.

  3. Allow plan nodes with initPlans to be considered parallel-safe.

  4. Allow parallel workers to execute subplans.

  5. Mark a query's topmost Paths parallel-unsafe if they will have initPlans.