diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 76e7f1914f9..d43353a3b53 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -12652,9 +12652,12 @@ do_select(JOIN *join,List *fields,TABLE *table,Procedure *procedure) } else if (join->send_row_on_empty_set()) { - List *columns_list= (procedure ? &join->procedure_fields_list : - fields); - rc= join->result->send_data(*columns_list); + if (!join->having || join->having->val_int()) + { + List *columns_list= (procedure ? &join->procedure_fields_list : + fields); + rc= join->result->send_data(*columns_list); + } } } else diff --git a/sql/sql_select.h b/sql/sql_select.h index ac115cea4e6..e095974d008 100644 --- a/sql/sql_select.h +++ b/sql/sql_select.h @@ -1722,8 +1722,7 @@ public: bool send_row_on_empty_set() { return (do_send_rows && tmp_table_param.sum_func_count != 0 && - !group_list && having_value != Item::COND_FALSE && - (!having || having->val_int())); + !group_list && having_value != Item::COND_FALSE); } bool change_result(select_result *result); bool is_top_level_join() const