On Thu, Aug 25, 2022 at 5:18 AM Tom Lane <t...@sss.pgh.pa.us> wrote: > Richard Guo <guofengli...@gmail.com> writes: > > Do we need to also > > generate two SpecialJoinInfos for the B/C join in the first order, with > > and without the A/B join in its min_lefthand? > > No, the SpecialJoinInfos would stay as they are now. It's already the > case that the first join's min_righthand would contain only B, and > the second one's min_righthand would contain only C.
I'm not sure if I understand it correctly. If we are given the first order from the parser, the SpecialJoinInfo for the B/C join would have min_lefthand as containing both B and the A/B join. And this SpecialJoinInfo would make the B/C join be invalid, which is not what we want. Currently the patch resolves this by explicitly running remove_unneeded_nulling_relids, and the A/B join would be removed from B/C join's min_lefthand, if Pbc is strict for B. Do we still need this kind of fixup if we are to keep just one form of SpecialJoinInfo and two forms of RestrictInfos? Thanks Richard