• Tom Lane's avatar
    Remove the "last ditch" code path in join_search_one_level(). · e54b10a6
    Tom Lane authored
    So far as I can tell, it is no longer possible for this heuristic to do
    anything useful, because the new weaker definition of
    have_relevant_joinclause means that any relation with a joinclause must be
    considered joinable to at least one other relation.  It would still be
    possible for the code block to be entered, for example if there are join
    order restrictions that prevent any join of the current level from being
    formed; but in that case it's just a waste of cycles to attempt to form
    cartesian joins, since the restrictions will still apply.
    
    Furthermore, IMO the existence of this code path can mask bugs elsewhere;
    we would have noticed the problem with cartesian joins a lot sooner if
    this code hadn't compensated for it in the simplest case.
    
    Accordingly, let's remove it and see what happens.  I'm committing this
    separately from the prerequisite changes in have_relevant_joinclause,
    just to make the question easier to revisit if there is some fault in
    my logic.
    e54b10a6
joinrels.c 30.7 KB