summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Babaev <igor@askmonty.org>2010-10-14 14:47:38 -0700
committerIgor Babaev <igor@askmonty.org>2010-10-14 14:47:38 -0700
commitf0c6576b85a57ec82fd911f73cce7c99683b378c (patch)
tree44a435e91b13dfb2633aea3023859368b2d1cd5a
parent01672cc026a60d434dc8276908517c9d4fed131d (diff)
downloadmariadb-git-f0c6576b85a57ec82fd911f73cce7c99683b378c.tar.gz
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.
-rw-r--r--mysql-test/r/having.result10
-rw-r--r--sql/sql_select.cc23
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=