Loading mysql-test/r/group_by.result +30 −0 Original line number Diff line number Diff line Loading @@ -1359,4 +1359,34 @@ tt 41 SET sql_mode=@save_sql_mode; DROP TABLE t1, t2; # # BUG#38072: Wrong result: HAVING not observed in a query with aggregate # CREATE TABLE t1 ( pk int(11) NOT NULL AUTO_INCREMENT, int_nokey int(11) NOT NULL, int_key int(11) NOT NULL, varchar_key varchar(1) NOT NULL, varchar_nokey varchar(1) NOT NULL, PRIMARY KEY (pk), KEY int_key (int_key), KEY varchar_key (varchar_key) ); INSERT INTO t1 VALUES (1,5,5, 'h','h'), (2,1,1, '{','{'), (3,1,1, 'z','z'), (4,8,8, 'x','x'), (5,7,7, 'o','o'), (6,3,3, 'p','p'), (7,9,9, 'c','c'), (8,0,0, 'k','k'), (9,6,6, 't','t'), (10,0,0,'c','c'); explain SELECT COUNT(varchar_key) AS X FROM t1 WHERE pk = 8 having 'foo'='bar'; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible HAVING SELECT COUNT(varchar_key) AS X FROM t1 WHERE pk = 8 having 'foo'='bar'; X drop table t1; End of 5.0 tests mysql-test/t/group_by.test +29 −0 Original line number Diff line number Diff line Loading @@ -1010,4 +1010,33 @@ select (select sum(outr.a + t1.a) from t1 limit 1) as tt from t1 as outr order b SET sql_mode=@save_sql_mode; DROP TABLE t1, t2; --echo # --echo # BUG#38072: Wrong result: HAVING not observed in a query with aggregate --echo # CREATE TABLE t1 ( pk int(11) NOT NULL AUTO_INCREMENT, int_nokey int(11) NOT NULL, int_key int(11) NOT NULL, varchar_key varchar(1) NOT NULL, varchar_nokey varchar(1) NOT NULL, PRIMARY KEY (pk), KEY int_key (int_key), KEY varchar_key (varchar_key) ); INSERT INTO t1 VALUES (1,5,5, 'h','h'), (2,1,1, '{','{'), (3,1,1, 'z','z'), (4,8,8, 'x','x'), (5,7,7, 'o','o'), (6,3,3, 'p','p'), (7,9,9, 'c','c'), (8,0,0, 'k','k'), (9,6,6, 't','t'), (10,0,0,'c','c'); explain SELECT COUNT(varchar_key) AS X FROM t1 WHERE pk = 8 having 'foo'='bar'; SELECT COUNT(varchar_key) AS X FROM t1 WHERE pk = 8 having 'foo'='bar'; drop table t1; --echo End of 5.0 tests sql/sql_select.h +1 −1 Original line number Diff line number Diff line Loading @@ -464,7 +464,7 @@ class JOIN :public Sql_alloc bool send_row_on_empty_set() { return (do_send_rows && tmp_table_param.sum_func_count != 0 && !group_list); !group_list && having_value != Item::COND_FALSE); } bool change_result(select_result *result); bool is_top_level_join() const Loading Loading
mysql-test/r/group_by.result +30 −0 Original line number Diff line number Diff line Loading @@ -1359,4 +1359,34 @@ tt 41 SET sql_mode=@save_sql_mode; DROP TABLE t1, t2; # # BUG#38072: Wrong result: HAVING not observed in a query with aggregate # CREATE TABLE t1 ( pk int(11) NOT NULL AUTO_INCREMENT, int_nokey int(11) NOT NULL, int_key int(11) NOT NULL, varchar_key varchar(1) NOT NULL, varchar_nokey varchar(1) NOT NULL, PRIMARY KEY (pk), KEY int_key (int_key), KEY varchar_key (varchar_key) ); INSERT INTO t1 VALUES (1,5,5, 'h','h'), (2,1,1, '{','{'), (3,1,1, 'z','z'), (4,8,8, 'x','x'), (5,7,7, 'o','o'), (6,3,3, 'p','p'), (7,9,9, 'c','c'), (8,0,0, 'k','k'), (9,6,6, 't','t'), (10,0,0,'c','c'); explain SELECT COUNT(varchar_key) AS X FROM t1 WHERE pk = 8 having 'foo'='bar'; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible HAVING SELECT COUNT(varchar_key) AS X FROM t1 WHERE pk = 8 having 'foo'='bar'; X drop table t1; End of 5.0 tests
mysql-test/t/group_by.test +29 −0 Original line number Diff line number Diff line Loading @@ -1010,4 +1010,33 @@ select (select sum(outr.a + t1.a) from t1 limit 1) as tt from t1 as outr order b SET sql_mode=@save_sql_mode; DROP TABLE t1, t2; --echo # --echo # BUG#38072: Wrong result: HAVING not observed in a query with aggregate --echo # CREATE TABLE t1 ( pk int(11) NOT NULL AUTO_INCREMENT, int_nokey int(11) NOT NULL, int_key int(11) NOT NULL, varchar_key varchar(1) NOT NULL, varchar_nokey varchar(1) NOT NULL, PRIMARY KEY (pk), KEY int_key (int_key), KEY varchar_key (varchar_key) ); INSERT INTO t1 VALUES (1,5,5, 'h','h'), (2,1,1, '{','{'), (3,1,1, 'z','z'), (4,8,8, 'x','x'), (5,7,7, 'o','o'), (6,3,3, 'p','p'), (7,9,9, 'c','c'), (8,0,0, 'k','k'), (9,6,6, 't','t'), (10,0,0,'c','c'); explain SELECT COUNT(varchar_key) AS X FROM t1 WHERE pk = 8 having 'foo'='bar'; SELECT COUNT(varchar_key) AS X FROM t1 WHERE pk = 8 having 'foo'='bar'; drop table t1; --echo End of 5.0 tests
sql/sql_select.h +1 −1 Original line number Diff line number Diff line Loading @@ -464,7 +464,7 @@ class JOIN :public Sql_alloc bool send_row_on_empty_set() { return (do_send_rows && tmp_table_param.sum_func_count != 0 && !group_list); !group_list && having_value != Item::COND_FALSE); } bool change_result(select_result *result); bool is_top_level_join() const Loading