• Ole John Aske's avatar
    Fix for #58422: Incorrect result when OUTER JOIN'ing with an empty table. · 970c3fb2
    Ole John Aske authored
    Fixed incorrect checks in join_read_const_table() for when to 
    accept a non-existing, or empty const-row as a part of the const'ified 
    set of tables.
          
    Intention of this test is to only accept NULL-rows if this table is outer joined
    into the resultset. (In case of an inner-join we can conclude at this point that 
    resultset will be empty, end we want to return 'error' to signal this.)
          
    Initially 'maybe_null' is set to the same value as 'outer_join' in 
    setup_table_map(), mysql_priv.h ~line 2424. Later simplify_joins() will
    attemp to replace outer joins by inner join whenever possible. This
    will cause 'outer_join' to be updated. However, 'maybe_null' is *not* updated
    to reflect this rewrite as this field is used to currectly set the 'nullability'
    property for the columns in the resultset.
          
    We should therefore change join_read_const_table() to check the 'outer_join'
    property instead of 'maybe_null', as this correctly reflect the nullability of
    the *execution plan* (not *resultset*).
    970c3fb2
select.result 143 KB