On Sat, Mar 25, 2023 at 11:41 PM Tom Lane <t...@sss.pgh.pa.us> wrote:

> Richard Guo <guofengli...@gmail.com> writes:
> > Should we instead mark the constant-TRUE clause with required_relids
> > plus the OJ relid?
>
> I do not think it matters.


Yeah, I agree that it makes no difference currently.  One day if we want
to replace the is_pushed_down flag with checking to see if a clause's
required_relids includes the OJ being formed in order to tell whether
it's a filter or join clause, I think we'd need to make this change.


>
> > Even if the join does become clauseless, it will end up being an
> > unqualified nestloop.  I think the join ordering algorithm will force
> > this join to be formed when necessary.
>
> We would find *some* valid plan, but not necessarily a *good* plan.
> The point of the dummy clause is to ensure that the join is considered
> as soon as possible.  That might not be the ideal join order of course,
> but we'll consider it among other join orders and arrive at a cost-based
> decision.  With no dummy clause, the join order heuristics would always
> delay this join as long as possible; so even if another ordering is
> better, we'd not find it.


I understand it now.  Thanks for the explanation.

Thanks
Richard

Reply via email to