From f0c6576b85a57ec82fd911f73cce7c99683b378c Mon Sep 17 00:00:00 2001 From: Igor Babaev Date: Thu, 14 Oct 2010 14:47:38 -0700 Subject: [PATCH] Reverted the MySQL fix for bug 51242 that was rejected once for mariadb-5.1.48 and mistakingly pulled in back for maria-5.1.50. --- mysql-test/r/having.result | 10 ++++++---- sql/sql_select.cc | 23 ----------------------- 2 files changed, 6 insertions(+), 27 deletions(-) diff --git a/mysql-test/r/having.result b/mysql-test/r/having.result index cd1b4ae0218..c7850b7ce03 100644 --- a/mysql-test/r/having.result +++ b/mysql-test/r/having.result @@ -470,9 +470,10 @@ WHERE table2.f1 = 2 GROUP BY table1.f1, table2.f2 HAVING (table2.f2 = 8 AND table1.f1 >= 6); id select_type table type possible_keys key key_len ref rows filtered Extra -1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible HAVING noticed after reading const tables +1 SIMPLE table2 const PRIMARY PRIMARY 4 const 1 100.00 Using filesort +1 SIMPLE table1 ALL NULL NULL NULL NULL 4 100.00 Using where Warnings: -Note 1003 select `test`.`table1`.`f1` AS `f1`,'7' AS `f2` from `test`.`t1` `table1` join `test`.`t1` `table2` where ((`test`.`table1`.`f3` = '9')) group by `test`.`table1`.`f1`,'7' having 0 +Note 1003 select `test`.`table1`.`f1` AS `f1`,'7' AS `f2` from `test`.`t1` `table1` join `test`.`t1` `table2` where ((`test`.`table1`.`f3` = '9')) group by `test`.`table1`.`f1`,'7' having (('7' = 8) and (`test`.`table1`.`f1` >= 6)) EXPLAIN EXTENDED SELECT table1.f1, table2.f2 FROM t1 AS table1 @@ -481,9 +482,10 @@ WHERE table2.f1 = 2 GROUP BY table1.f1, table2.f2 HAVING (table2.f2 = 8); id select_type table type possible_keys key key_len ref rows filtered Extra -1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible HAVING noticed after reading const tables +1 SIMPLE table2 const PRIMARY PRIMARY 4 const 1 100.00 Using filesort +1 SIMPLE table1 ALL NULL NULL NULL NULL 4 100.00 Using where Warnings: -Note 1003 select `test`.`table1`.`f1` AS `f1`,'7' AS `f2` from `test`.`t1` `table1` join `test`.`t1` `table2` where ((`test`.`table1`.`f3` = '9')) group by `test`.`table1`.`f1`,'7' having 0 +Note 1003 select `test`.`table1`.`f1` AS `f1`,'7' AS `f2` from `test`.`t1` `table1` join `test`.`t1` `table2` where ((`test`.`table1`.`f3` = '9')) group by `test`.`table1`.`f1`,'7' having ('7' = 8) DROP TABLE t1; # # Bug#52336 Segfault / crash in 5.1 copy_fields (param=0x9872980) at sql_select.cc:15355 diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 5471b35e250..619d847ed90 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -1129,29 +1129,6 @@ JOIN::optimize() conds=new Item_int((longlong) 0,1); // Always false } - /* - It's necessary to check const part of HAVING cond as there is a - chance that some cond parts may become const items after - make_join_statistics() (for example when Item is a reference to - cost table field from outer join). - - This check is performed only for those conditions which do not use - aggregate functions. In such case temporary table may not be used - and const condition elements may be lost during further having - condition transformation in JOIN::exec. - */ - if (having && const_table_map && !having->with_sum_func) - { - having->update_used_tables(); - having= remove_eq_conds(thd, having, &having_value); - if (having_value == Item::COND_FALSE) - { - having= new Item_int((longlong) 0,1); - zero_result_cause= "Impossible HAVING noticed after reading const tables"; - DBUG_RETURN(0); - } - } - if (make_join_select(this, select, conds)) { zero_result_cause=