• unknown's avatar
    Fix bug lp:813473 · 4dfa8e5d
    unknown authored
    The bug is a duplicate of MySQL's Bug#11764086,
    however MySQL's fix is incomplete for MariaDB, so
    this fix is slightly different.
    
    In addition, this patch renames
    Item_func_not_all::top_level() to is_top_level_item()
    to make it in line with the analogous methods of
    Item_in_optimizer, and Item_subselect.
    
    Analysis:
    It is possible to determine whether a predicate is
    NULL-rejecting only if it is a top-level one. However,
    this was not taken into account for Item_in_optimizer.
    As a result, a NOT IN predicate was erroneously
    considered as NULL-rejecting, and the NULL-complemented
    rows generated by the outer join were rejected before
    being checked by the NOT IN predicate.
    
    Solution:
    Change Item_in_optimizer to be considered as
    NULL-rejecting only if it a top-level predicate.
    4dfa8e5d
subselect_no_semijoin.result 181 KB