Fix incorrect is-this-the-topmost-join tests in parallel planning.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 30 Jul 2022 17:05:15 +0000 (13:05 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 30 Jul 2022 17:05:15 +0000 (13:05 -0400)
commita3699c599ced03ace09646b74b8299d8f570ca76
tree0215a2d31a3c430d51fb6e086f5999092bbcd601
parentd92f2bc0dae35747387f006519a74d3058a6bcb8
Fix incorrect is-this-the-topmost-join tests in parallel planning.

Two callers of generate_useful_gather_paths were testing the wrong
thing when deciding whether to call that function: they checked for
being at the top of the current join subproblem, rather than being at
the actual top join.  This'd result in failing to construct parallel
paths for a sub-join for which they might be useful.

While set_rel_pathlist() isn't actively broken, it seems best to
make its identical-in-intention test for this be like the other two.

This has been wrong all along, but given the lack of field complaints
I'm hesitant to back-patch into stable branches; we usually prefer
to avoid non-bug-fix changes in plan choices in minor releases.
It seems not too late for v15 though.

Richard Guo, reviewed by Antonin Houska and Tom Lane

Discussion: https://postgr.es/m/CAMbWs4-mH8Zf87-w+3P2J=nJB+5OyicO28ia9q_9o=Lamf_VHg@mail.gmail.com
src/backend/optimizer/geqo/geqo_eval.c
src/backend/optimizer/path/allpaths.c