• Igor Babaev's avatar
    Fixed LP bug #904345. · c9259f16
    Igor Babaev authored
    The MIN/MAX optimizer code from the function opt_sum_query erroneously
    did not take into account conjunctive conditions that did not depend on
    any table, yet were not identified as constant items. These could be
    items containing rand() or PS/SP parameters. These items are supposed
    to be evaluated at the execution phase. That's why if such conditions
    can be extracted from the WHERE condition the MIN/MAX optimization is
    not applied as currently it is always done at the optimization phase.
    
    (In 5.3 expensive subqueries are also evaluated only at the execution
    phase. So, if a constant condition with such subquery can be extracted
    from the WHERE clause the MIN/MAX optimization should not be applied 
    in 5.3.)
    
    IF an IN/ALL/SOME predicate with a constant left part is transformed
    into an EXISTS subquery the resulting subquery should not be considered
    uncacheable if the right part of the predicate is not uncacheable.
    
    Backported the function dbug_print_item() from 5.3. The function is used
    only for debugging.  
     
    c9259f16
item_subselect.cc 73.3 KB