From 3b11e4f8347884c716bdf0b11aba34e8aee1a0c4 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 27 Oct 2010 12:35:15 +0300 Subject: [PATCH] Fixed LP bug #609121 Post-review fix - avoid re-evaluation of the having clause when it evaluates to true. --- sql/sql_select.cc | 9 ++++++--- sql/sql_select.h | 3 +-- 2 files changed, 7 insertions(+), 5 deletions(-) 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