Bug #70220 Grouping with a view may report 'Invalid use of group function'
| Submitted: | 3 Sep 2013 6:14 | Modified: | 26 Oct 2015 15:51 |
|---|---|---|---|
| Reporter: | Roy Lyseng | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Optimizer | Severity: | S2 (Serious) |
| Version: | 5.1,5.5, 5.6, 5.7.2-m12 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | aggregation, derived table, Scalar subquery, VIEW | ||
[3 Sep 2013 6:14]
Roy Lyseng
[4 Sep 2013 7:46]
MySQL Verification Team
Hello Roy, Thank you for your bug report and the test case. Verified as described. Thanks, Umesh
[4 Sep 2013 7:47]
MySQL Verification Team
How to repeat:
use test;
CREATE TABLE test (a INT);
INSERT INTO test VALUES (1);
SELECT (SELECT GROUP_CONCAT(COUNT(q.a)) FROM test) AS i
FROM test AS q;
SELECT (SELECT GROUP_CONCAT(COUNT(q.i)) FROM test) AS i
FROM (SELECT a AS i FROM test) AS q;
CREATE VIEW q AS SELECT a AS i FROM test;
SELECT (SELECT GROUP_CONCAT(COUNT(q.i)) FROM test) AS i
FROM q;
DROP VIEW q;
DROP TABLE test;
// 5.5.33
mysql> use test;
Database changed
mysql> CREATE TABLE test (a INT);
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql> INSERT INTO test VALUES (1);
Query OK, 1 row affected (0.00 sec)
mysql>
mysql> SELECT (SELECT GROUP_CONCAT(COUNT(q.a)) FROM test) AS i
-> FROM test AS q;
+------+
| i |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
mysql>
mysql> SELECT (SELECT GROUP_CONCAT(COUNT(q.i)) FROM test) AS i
-> FROM (SELECT a AS i FROM test) AS q;
+------+
| i |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
mysql>
mysql> CREATE VIEW q AS SELECT a AS i FROM test;
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql> SELECT (SELECT GROUP_CONCAT(COUNT(q.i)) FROM test) AS i
-> FROM q;
ERROR 1111 (HY000): Invalid use of group function
mysql>
mysql> DROP VIEW q;
Query OK, 0 rows affected (0.00 sec)
mysql> DROP TABLE test;
Query OK, 0 rows affected (0.00 sec)
// 5.6.15
mysql> use test;
Database changed
mysql> CREATE TABLE test (a INT);
Query OK, 0 rows affected (0.03 sec)
mysql>
mysql> INSERT INTO test VALUES (1);
Query OK, 1 row affected (0.00 sec)
mysql>
mysql> SELECT (SELECT GROUP_CONCAT(COUNT(q.a)) FROM test) AS i
-> FROM test AS q;
+------+
| i |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
mysql>
mysql> SELECT (SELECT GROUP_CONCAT(COUNT(q.i)) FROM test) AS i
-> FROM (SELECT a AS i FROM test) AS q;
+------+
| i |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
mysql>
mysql> CREATE VIEW q AS SELECT a AS i FROM test;
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql> SELECT (SELECT GROUP_CONCAT(COUNT(q.i)) FROM test) AS i
-> FROM q;
ERROR 1111 (HY000): Invalid use of group function
mysql>
mysql> DROP VIEW q;
Query OK, 0 rows affected (0.00 sec)
mysql> DROP TABLE test;
Query OK, 0 rows affected (0.01 sec)
// 5.7.2-m12
mysql> use test;
Database changed
mysql> CREATE TABLE test (a INT);
INSERT INTO test VALUES (1);
Query OK, 0 rows affected (0.03 sec)
mysql>
mysql> INSERT INTO test VALUES (1);
Query OK, 1 row affected (0.00 sec)
mysql>
mysql> SELECT (SELECT GROUP_CONCAT(COUNT(q.a)) FROM test) AS i
-> FROM test AS q;
+------+
| i |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
mysql>
mysql> SELECT (SELECT GROUP_CONCAT(COUNT(q.i)) FROM test) AS i
-> FROM (SELECT a AS i FROM test) AS q;
+------+
| i |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
mysql>
mysql> CREATE VIEW q AS SELECT a AS i FROM test;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> SELECT (SELECT GROUP_CONCAT(COUNT(q.i)) FROM test) AS i
-> FROM q;
ERROR 1111 (HY000): Invalid use of group function
mysql>
mysql> DROP VIEW q;
Query OK, 0 rows affected (0.00 sec)
mysql> DROP TABLE test;
Query OK, 0 rows affected (0.01 sec)
// 5.1.71
mysql> use test;
Database changed
mysql> CREATE TABLE test (a INT);
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql> INSERT INTO test VALUES (1);
Query OK, 1 row affected (0.00 sec)
mysql>
mysql> SELECT (SELECT GROUP_CONCAT(COUNT(q.a)) FROM test) AS i
-> FROM test AS q;
+------+
| i |
+------+
| 1 |
+------+
1 row in set (0.02 sec)
mysql>
mysql> SELECT (SELECT GROUP_CONCAT(COUNT(q.i)) FROM test) AS i
-> FROM (SELECT a AS i FROM test) AS q;
+------+
| i |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
mysql>
mysql> CREATE VIEW q AS SELECT a AS i FROM test;
SELECT (SELECT GROUP_CONCAT(COUNT(q.i)) FROM test) AS i
Query OK, 0 rows affected (0.02 sec)
mysql>
mysql> SELECT (SELECT GROUP_CONCAT(COUNT(q.i)) FROM test) AS i
-> FROM q;
ERROR 1111 (HY000): Invalid use of group function
mysql>
mysql> DROP VIEW q;
Query OK, 0 rows affected (0.00 sec)
mysql> DROP TABLE test;
Query OK, 0 rows affected (0.00 sec)
[26 Oct 2015 15:51]
Paul DuBois
Noted in 5.8.0 changelog.
Grouping with a view could produce an ER_INVALID_GROUP_FUNC_USE error
("Invalid use of group function") when selecting from the base table
did not.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.041 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.