• Tom Lane's avatar
    Avoid planner crash/Assert failure with joins to unflattened subqueries. · 1f91c8ca
    Tom Lane authored
    examine_simple_variable supposed that any RTE_SUBQUERY rel it gets pointed
    at must have been planned already.  However, this isn't a safe assumption
    because we must do selectivity estimation while generating indexscan paths,
    and that code might look at join clauses involving a rel that the loop in
    set_base_rel_sizes() hasn't reached yet.  The simplest fix is to play dumb
    in such a situation, that is give up trying to extract any stats for the
    Var.  This could possibly be improved by making a separate pass over the
    RTE list to plan each unflattened subquery before we start the main
    planning work --- but that would be pretty invasive and it doesn't seem
    worth it, for now at least.  (We couldn't just break set_base_rel_sizes()
    into two loops: the prescan would need to handle all subquery rels in the
    query, not only those in the current join subproblem.)
    
    This bug was introduced in commit 1cb108ef,
    although I think that subsequent changes may have exposed it more than it
    was originally.  Per bug #7580 from Maxim Boguk.
    1f91c8ca
selfuncs.c 205 KB