• Chaithra Gopalareddy's avatar
    Bug#13012483:EXPLAIN EXTENDED, PREPARED STATEMENT, CRASH IN · 6a0d03fc
    Chaithra Gopalareddy authored
    CHECK_SIMPLE_EQUALITY
    
    PROBLEM:
    Crash in "check_simple_equality" when using a subquery with "IN" and
    "ALL" in prepare.
    
    ANALYSIS:
    Crash can be reproduced using a simplified query like this one:
    prepare s from "select 1 from g1 where 1 < all (
                    select @:=(1 in (select 1 from g1)) from g1)";
    
    This bug is currently present only on 5.5.and 5.1. Its fixed as part
    of work log(#1110) in 5.6. We are taking one change to fix this
    in 5.5 and 5.1.
    
    Problem seems to be present because we are trying to evaluate "is_null"
    on an argument which is part of a subquery
    (In Item_is_not_null_test::update_used_tables()).
    But the condition to evaluate is only when we do not have a sub query
    present, which means to say that "with_subselect" is not set.
    With respect to the above query, we create an object of type
    "Item_in_optimizer" which by definition is always associated with a
    subquery. While in 5.6 we set "with_subselect" to true for
    "Item_in_optimizer" object, we do not do the same in 5.5. This results in
    the evaluation for "is_null" resulting in a coredump.
    So, we are now setting "with_subselect" to true for "Item_in_optimizer"
    in 5.1 and 5.5.
    
    
    mysql-test/r/func_in.result:
      Result file changes for the test case added
    mysql-test/t/func_in.test:
      Test case added for Bug#13012483
    sql/item_cmpfunc.h:
      Changed Item_in_optimizer::Item_in_optimizer( ) to set "with_subselect"
      to true
    6a0d03fc
item_cmpfunc.h 53.3 KB