Bug #29360 | SELECT aggregate function GROUP BY enum returns incorrect result | ||
---|---|---|---|
Submitted: | 26 Jun 2007 13:49 | Modified: | 27 Jul 2007 4:52 |
Reporter: | Gleb Shchepa | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server | Severity: | S3 (Non-critical) |
Version: | 4.1, 5.0, 5.1 | OS: | Any |
Assigned to: | Gleb Shchepa | CPU Architecture: | Any |
[26 Jun 2007 13:49]
Gleb Shchepa
[26 Jun 2007 13:55]
Gleb Shchepa
test case
Attachment: 29360.test (application/octet-stream, text), 280 bytes.
[26 Jun 2007 13:56]
Gleb Shchepa
test case result file
Attachment: 29360.result (application/octet-stream, text), 360 bytes.
[26 Jun 2007 14:17]
Gleb Shchepa
It seems like that GROUP BY clause does improper type casting to the string in a presence of aggregate functions of another columns - there is no error, if we use GROUP BY c1 + 0: mysql> SELECT c1 + 0, c1, SUM(c2) FROM t1 GROUP BY c1 + 0; +--------+------+---------+ | c1 + 0 | c1 | SUM(c2) | +--------+------+---------+ | 0 | | 1 | | 1 | a | 1 | | 2 | | 1 | | 3 | b | 1 | +--------+------+---------+ 4 rows in set (0.00 sec) But with aggregate function we have an error: mysql> SELECT c1 + 0, c1, SUM(c2) FROM t1 GROUP BY c1; +--------+------+---------+ | c1 + 0 | c1 | SUM(c2) | +--------+------+---------+ | 1 | a | 1 | | 0 | | 2 | | 3 | b | 1 | +--------+------+---------+ 3 rows in set (0.00 sec)
[26 Jun 2007 14:57]
MySQL Verification Team
Thank you for the bug report.
[11 Jul 2007 15:42]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/30715 ChangeSet@1.2527, 2007-07-11 20:50:13+05:00, gshchepa@gleb.loc +4 -0 Fixed bug #29360. The special `zero' enum value was coerced to the normal empty string enum value during a field-to-field copy. This bug affected CREATE ... SELECT statements and SELECT aggregate GROUP BY enum field statements. Also this bug made unnecessary warnings during the execution of CREATE ... SELECT statements: Warning 1265 Data truncated for column...
[11 Jul 2007 18:55]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/30734 ChangeSet@1.2527, 2007-07-12 00:03:08+05:00, gshchepa@gleb.loc +4 -0 Fixed bug #29360. The special `zero' enum value was coerced to the normal empty string enum value during a field-to-field copy. This bug affected CREATE ... SELECT statements and SELECT aggregate GROUP BY enum field statements. Also this bug made unnecessary warnings during the execution of CREATE ... SELECT statements: Warning 1265 Data truncated for column...
[11 Jul 2007 19:47]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/30736 ChangeSet@1.2528, 2007-07-12 00:55:40+05:00, gshchepa@gleb.loc +1 -0 field_conv.cc: Additional fix for bug #29360.
[20 Jul 2007 23:45]
Bugs System
Pushed into 5.1.21-beta
[20 Jul 2007 23:49]
Bugs System
Pushed into 5.0.48
[27 Jul 2007 4:52]
Paul DuBois
Noted in 5.0.48, 5.1.21 changelogs. The special zero ENUM value was coerced to the normal empty string ENUM value during a column-to-column copy. This affected CREATE ... SELECT statements and SELECT statements with aggregate functions on ENUM columns in the GROUP BY clause.