• unknown's avatar
    Fixed bug lp:825018 · 291ab712
    unknown authored
    Analysis:
    During the first execution of the query through the stored
    procedure, the optimization phase calls
    substitute_for_best_equal_field(), which calls
    Item_in_optimizer::transform(). The latter replaces
    Item_in_subselect::left_expr with args[0] via assignment.
    In this test case args[0] is an Item_outer_ref which is
    created/deallocated for each re-execution. As a result,
    during the second execution Item_in_subselect::left_expr
    pointed to freed memory, which resulted in a crash.
    
    Solution:
    The solution is to use change_item_tree(), so that the
    origianal left expression is restored after each execution.
    291ab712
subselect4.test 52.1 KB