Loading mysql-test/r/subselect.result +36 −0 Original line number Diff line number Diff line Loading @@ -2946,3 +2946,39 @@ ORDER BY t2.c, t2.b LIMIT 1) WHERE t1.a = 10; a a b 10 1 359 drop table t1,t2; CREATE TABLE t1 ( field1 int NOT NULL, field2 int NOT NULL, field3 int NOT NULL, PRIMARY KEY (field1,field2,field3) ); CREATE TABLE t2 ( fieldA int NOT NULL, fieldB int NOT NULL, PRIMARY KEY (fieldA,fieldB) ); INSERT INTO t1 VALUES (1,1,1), (1,1,2), (1,2,1), (1,2,2), (1,2,3), (1,3,1); INSERT INTO t2 VALUES (1,1), (1,2), (1,3); SELECT field1, field2, COUNT(*) FROM t1 GROUP BY field1, field2; field1 field2 COUNT(*) 1 1 2 1 2 3 1 3 1 SELECT field1, field2 FROM t1 GROUP BY field1, field2 HAVING COUNT(*) >= ALL (SELECT fieldB FROM t2 WHERE fieldA = field1); field1 field2 1 2 SELECT field1, field2 FROM t1 GROUP BY field1, field2 HAVING COUNT(*) < ANY (SELECT fieldB FROM t2 WHERE fieldA = field1); field1 field2 1 1 1 3 DROP TABLE t1, t2; mysql-test/t/subselect.test +37 −0 Original line number Diff line number Diff line Loading @@ -1911,4 +1911,41 @@ SELECT sql_no_cache t1.a, r.a, r.b FROM t1 LEFT JOIN t2 r drop table t1,t2; # # Bug #21853: assert failure for a grouping query with # an ALL/ANY quantified subquery in HAVING # CREATE TABLE t1 ( field1 int NOT NULL, field2 int NOT NULL, field3 int NOT NULL, PRIMARY KEY (field1,field2,field3) ); CREATE TABLE t2 ( fieldA int NOT NULL, fieldB int NOT NULL, PRIMARY KEY (fieldA,fieldB) ); INSERT INTO t1 VALUES (1,1,1), (1,1,2), (1,2,1), (1,2,2), (1,2,3), (1,3,1); INSERT INTO t2 VALUES (1,1), (1,2), (1,3); SELECT field1, field2, COUNT(*) FROM t1 GROUP BY field1, field2; SELECT field1, field2 FROM t1 GROUP BY field1, field2 HAVING COUNT(*) >= ALL (SELECT fieldB FROM t2 WHERE fieldA = field1); SELECT field1, field2 FROM t1 GROUP BY field1, field2 HAVING COUNT(*) < ANY (SELECT fieldB FROM t2 WHERE fieldA = field1); DROP TABLE t1, t2; # End of 4.1 tests sql/item.cc +1 −0 Original line number Diff line number Diff line Loading @@ -387,6 +387,7 @@ void Item::split_sum_func2(THD *thd, Item **ref_pointer_array, } else if ((type() == SUM_FUNC_ITEM || (used_tables() & ~PARAM_TABLE_BIT)) && type() != SUBSELECT_ITEM && type() != REF_ITEM) { /* Loading Loading
mysql-test/r/subselect.result +36 −0 Original line number Diff line number Diff line Loading @@ -2946,3 +2946,39 @@ ORDER BY t2.c, t2.b LIMIT 1) WHERE t1.a = 10; a a b 10 1 359 drop table t1,t2; CREATE TABLE t1 ( field1 int NOT NULL, field2 int NOT NULL, field3 int NOT NULL, PRIMARY KEY (field1,field2,field3) ); CREATE TABLE t2 ( fieldA int NOT NULL, fieldB int NOT NULL, PRIMARY KEY (fieldA,fieldB) ); INSERT INTO t1 VALUES (1,1,1), (1,1,2), (1,2,1), (1,2,2), (1,2,3), (1,3,1); INSERT INTO t2 VALUES (1,1), (1,2), (1,3); SELECT field1, field2, COUNT(*) FROM t1 GROUP BY field1, field2; field1 field2 COUNT(*) 1 1 2 1 2 3 1 3 1 SELECT field1, field2 FROM t1 GROUP BY field1, field2 HAVING COUNT(*) >= ALL (SELECT fieldB FROM t2 WHERE fieldA = field1); field1 field2 1 2 SELECT field1, field2 FROM t1 GROUP BY field1, field2 HAVING COUNT(*) < ANY (SELECT fieldB FROM t2 WHERE fieldA = field1); field1 field2 1 1 1 3 DROP TABLE t1, t2;
mysql-test/t/subselect.test +37 −0 Original line number Diff line number Diff line Loading @@ -1911,4 +1911,41 @@ SELECT sql_no_cache t1.a, r.a, r.b FROM t1 LEFT JOIN t2 r drop table t1,t2; # # Bug #21853: assert failure for a grouping query with # an ALL/ANY quantified subquery in HAVING # CREATE TABLE t1 ( field1 int NOT NULL, field2 int NOT NULL, field3 int NOT NULL, PRIMARY KEY (field1,field2,field3) ); CREATE TABLE t2 ( fieldA int NOT NULL, fieldB int NOT NULL, PRIMARY KEY (fieldA,fieldB) ); INSERT INTO t1 VALUES (1,1,1), (1,1,2), (1,2,1), (1,2,2), (1,2,3), (1,3,1); INSERT INTO t2 VALUES (1,1), (1,2), (1,3); SELECT field1, field2, COUNT(*) FROM t1 GROUP BY field1, field2; SELECT field1, field2 FROM t1 GROUP BY field1, field2 HAVING COUNT(*) >= ALL (SELECT fieldB FROM t2 WHERE fieldA = field1); SELECT field1, field2 FROM t1 GROUP BY field1, field2 HAVING COUNT(*) < ANY (SELECT fieldB FROM t2 WHERE fieldA = field1); DROP TABLE t1, t2; # End of 4.1 tests
sql/item.cc +1 −0 Original line number Diff line number Diff line Loading @@ -387,6 +387,7 @@ void Item::split_sum_func2(THD *thd, Item **ref_pointer_array, } else if ((type() == SUM_FUNC_ITEM || (used_tables() & ~PARAM_TABLE_BIT)) && type() != SUBSELECT_ITEM && type() != REF_ITEM) { /* Loading