Hi,
   When I debug FDW join pushdown codes, I found below codes in
semijoin_target_ok():
    if (bms_is_member(var->varno, innerrel->relids) &&
        !bms_is_member(var->varno, outerrel->relids))

As far as I know, if a var belongs to the innerrel of joinrel, it's not
possible that it
may belong to the outerrel. So if the bms_is_member(var->varno,
innerrel->relids)
returns TRUE, then !bms_is_member(var->varno, outerrel->relids) must be
TRUE.
If bms_is_member(var->varno, innerrel->relids) returns FALSE,
!bms_is_member(var->varno, outerrel->relids) will not execute due to short
circuit.

So I think we can remove the "!bms_is_member(var->varno, outerrel->relids)"
from if.
Any thoughts?

--
Thanks,
Tender Wang

Attachment: 0001-Remove-an-unnecessary-check-as-Var-can-only-belong-t.patch
Description: Binary data

Reply via email to