• Michael Widenius's avatar
    Fix for LP#612894 Some aggregate functions (such as MIN MAX) work incorrectly... · 21ae73cb
    Michael Widenius authored
    Fix for LP#612894 Some aggregate functions (such as MIN MAX) work incorrectly in subqueries after getting NULL value
    
    
    mysql-test/r/group_by.result:
      Added test that showed problems that no_rows_in_results() didn't work for expressions
    mysql-test/r/subselect4.result:
      Test case for LP#612894
    mysql-test/t/group_by.test:
      Added test that showed problems that no_rows_in_results() didn't work for expressions
    mysql-test/t/subselect4.test:
      Test case for LP#612894
    sql/item.h:
      Added restore_to_before_no_rows_in_result()
      Added function processor for no_rows_in_results() and restore_to_before_no_rows_in_results() to ensure it works with functions
      Fix that above functions are handled by Item_ref()
    sql/item_func.h:
      Ensure that no_rows_in_results() and restore_to_before_no_rows_in_result() are called for all function arguments
    sql/item_sum.cc:
      Added restore_to_before_no_rows_in_result() to restore settings after Item_sum_hybrid::no_rows_in_result() was called.
      This is needed to handle the case where we have made 'make_const()' on the item in opt_sum(), but the item will be reused again in a sub query.
      Ignore multiple calls to no_rows_in_result() as Item_ref is calling it twice.
    sql/item_sum.h:
      Added restore_to_before_no_rows_in_result();
    sql/sql_select.cc:
      Added reset of no_rows_in_result() for JOIN::reinit()
    sql/sql_select.h:
      Added marker if no_rows_in_result() is called.
    21ae73cb
sql_select.h 27.5 KB