• Tom Lane's avatar
    Improve planner's ability to recognize cases where an IN's RHS is unique. · 3e4b3465
    Tom Lane authored
    If the right-hand side of a semijoin is unique, then we can treat it like a
    normal join (or another way to say that is: we don't need to explicitly
    unique-ify the data before doing it as a normal join).  We were recognizing
    such cases when the RHS was a sub-query with appropriate DISTINCT or GROUP
    BY decoration, but there's another way: if the RHS is a plain relation with
    unique indexes, we can check if any of the indexes prove the output is
    unique.  Most of the infrastructure for that was there already in the join
    removal code, though I had to rearrange it a bit.  Per reflection about a
    recent example in pgsql-performance.
    3e4b3465
analyzejoins.c 15.1 KB