Re: v12: ERROR: subplan "InitPlan 2 (returns $4)" was not initialized

Richard Guo <guofenglinux@gmail.com>

From: Richard Guo <guofenglinux@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Justin Pryzby <pryzby@telsasoft.com>, pgsql-hackers@postgresql.org, David Rowley <dgrowleyml@gmail.com>
Date: 2023-04-12T06:01:37Z
Lists: pgsql-hackers
On Wed, Apr 12, 2023 at 3:59 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:

> The v1 patch attached is enough to fix the immediate issue,
> but there's another thing not to like, which is that we're also
> discarding the costs associated with the initplans.  That's
> strictly cosmetic given that all the planning decisions are
> already made, but it still seems potentially annoying if you're
> trying to understand EXPLAIN output.  So I'm inclined to instead
> do something like v2 attached, which deals with that as well.
> (On the other hand, we aren't bothering to fix up costs when
> we move initplans around in materialize_finished_plan or
> standard_planner ... so maybe that should be left for a patch
> that fixes those things too.)


+1 to the v2 patch.

* Should we likewise set the parallel_safe flag for topmost plan in
SS_attach_initplans?

* In standard_planner around line 443, we move any initPlans from
top_plan to the new added Gather node.  But since we know that the
top_plan is parallel_safe here, shouldn't it have no initPlans?

Thanks
Richard

Commits

  1. Fix parallel-safety marking when moving initplans to another node.

  2. Guard against core dump from uninitialized subplan.

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