• Tom Lane's avatar
    Teach planner about some cases where a restriction clause can be · cc5e80b8
    Tom Lane authored
    propagated inside an outer join.  In particular, given
    LEFT JOIN ON (A = B) WHERE A = constant, we cannot conclude that
    B = constant at the top level (B might be null instead), but we
    can nonetheless put a restriction B = constant into the quals for
    B's relation, since no inner-side rows not meeting that condition
    can contribute to the final result.  Similarly, given
    FULL JOIN USING (J) WHERE J = constant, we can't directly conclude
    that either input J variable = constant, but it's OK to push such
    quals into each input rel.  Per recent gripe from Kim Bisgaard.
    Along the way, remove 'valid_everywhere' flag from RestrictInfo,
    as on closer analysis it was not being used for anything, and was
    defined backwards anyway.
    cc5e80b8
relation.h 33 KB