• evgen@moonbone.local's avatar
    Fixed bug#18503: Queries with a quantified subquery returning empty set · 8ffda481
    evgen@moonbone.local authored
    may return a wrong result.
    
    An Item_sum_hybrid object has the was_values flag which indicates whether any
    values were added to the sum function. By default it is set to true and reset
    to false on any no_rows_in_result() call. This method is called only in
    return_zero_rows() function. An ALL/ANY subquery can be optimized by MIN/MAX
    optimization. The was_values flag is used to indicate whether the subquery
    has returned at least one row. This bug occurs because return_zero_rows() is
    called only when we know that the select will return zero rows before
    starting any scans but often such information is not known.
    In the reported case the return_zero_rows() function is not called and
    the was_values flag is not reset to false and yet the subquery return no rows
    Item_func_not_all and Item_func_nop_all functions return a wrong
    comparison result.
    
    The end_send_group() function now calls no_rows_in_result() for each item
    in the fields_list if there is no rows were found for the (sub)query.
    8ffda481
subselect.test 76.2 KB