• Tom Lane's avatar
    Avoid uselessly building a duplicate of the original clause in trivial cases · 92c0bf09
    Tom Lane authored
    where the EquivalenceClass machinery is unable to deduce anything more from a
    simple "var = const" qual clause.  There are probably some more cases where
    this could be done, but this seems to take care of most of the added overhead
    for simple queries.  Per gripe from Guillaume Smet.
    
    In passing, fix a problem that was exposed by this change:
    reconsider_outer_join_clause and friends were passing the wrong relids to
    build_implied_join_equality, resulting in RestrictInfos with the wrong
    required_relids.  This mistake was masked in typical cases since the bogus
    RestrictInfos would never have escaped from the EquivalenceClass machinery,
    but I think there might be corner cases involving "broken" ECs where there
    would have been a visible failure even without the new optimization.  In any
    case the code was certainly not operating as intended.
    92c0bf09
equivclass.c 54.6 KB