On Mon, Apr 17, 2023 at 11:04 PM Tom Lane <t...@sss.pgh.pa.us> wrote:

> Richard Guo <guofengli...@gmail.com> writes:
> > So now it seems that the breakage of regression tests is more severe
> > than being cosmetic.  I wonder if we need to update the comments to
> > indicate the potential wrong results issue if we move the initPlans to
> > the Gather node.
>
> I wondered about that too, but how come neither of us saw non-cosmetic
> failures (ie, actual query output changes not just EXPLAIN changes)
> when we tried this?  Maybe the case is somehow not exercised, but if
> so I'm more worried about adding regression tests than comments.


Sorry I forgot to mention that I did see query output changes after
moving the initPlans to the Gather node.  First of all let me make sure
I was doing it in the right way.  On the base of the patch, I was using
the diff as below

    if (debug_parallel_query != DEBUG_PARALLEL_OFF &&
-       top_plan->parallel_safe && top_plan->initPlan == NIL)
+       top_plan->parallel_safe)
    {
        Gather     *gather = makeNode(Gather);

+       gather->plan.initPlan = top_plan->initPlan;
+       top_plan->initPlan = NIL;
+
        gather->plan.targetlist = top_plan->targetlist;

And then I changed the default value of debug_parallel_query to
DEBUG_PARALLEL_REGRESS.  And then I just ran 'make installcheck' and saw
the query output changes.


> I think actually that it does work beyond the EXPLAIN weirdness,
> because since e89a71fb4 the Gather machinery knows how to transmit
> the values of Params listed in Gather.initParam to workers, and that
> is filled in setrefs.c in a way that looks like it'd work regardless
> of whether the Gather appeared organically or was stuck on by the
> debug_parallel_query hackery.  I've not tried to verify that
> directly though.


It seems that in this case the top_plan does not have any extParam, so
the Gather node that is added atop the top_plan does not have a chance
to get its initParam filled in set_param_references().

Thanks
Richard

Reply via email to