• Tom Lane's avatar
    Improve check_partial_indexes() to consider join clauses in proof attempts. · 1746ba92
    Tom Lane authored
    Traditionally check_partial_indexes() has only looked at restriction
    clauses while trying to prove partial indexes usable in queries.  However,
    join clauses can also be used in some cases; mainly, that a strict operator
    on "x" proves an "x IS NOT NULL" index predicate, even if the operator is
    in a join clause rather than a restriction clause.  Adding this code fixes
    a regression in 9.2, because previously we would take join clauses into
    account when considering whether a partial index could be used in a
    nestloop inner indexscan path.  9.2 doesn't handle nestloop inner
    indexscans in the same way, and this consideration was overlooked in the
    rewrite.  Moving the work to check_partial_indexes() is a better solution
    anyway, since the proof applies whether or not we actually use the index
    in that particular way, and we don't have to do it over again for each
    possible outer relation.  Per report from Dave Cramer.
    1746ba92
indxpath.c 126 KB