Bug #24856 | distinct with constant item and rollup => missing summary lines | ||
---|---|---|---|
Submitted: | 6 Dec 2006 16:07 | Modified: | 8 May 2007 0:40 |
Reporter: | Martin Friebe (Gold Quality Contributor) (OCA) | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server | Severity: | S3 (Non-critical) |
Version: | 4.1.22 / 5.0.22, 5.1 BK | OS: | Linux (Linux) |
Assigned to: | Igor Babaev | CPU Architecture: | Any |
Tags: | distinct, rollup |
[6 Dec 2006 16:07]
Martin Friebe
[6 Dec 2006 17:41]
Martin Friebe
This will be related, mysql assumes a olumn with a constant can not be null, but it can... create table tt2 select 'x', group_concat(a) from ru1 group by 1 with rollup; Query OK, 2 rows affected, 1 warning (0.01 sec) Records: 2 Duplicates: 0 Warnings: 1 show warnings; +---------+------+---------------------------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------------------------+ | Warning | 1263 | Data truncated; NULL supplied to NOT NULL column 'x' at row 5 | +---------+------+---------------------------------------------------------------+ 1 row in set (0.00 sec)
[6 Dec 2006 18:40]
Martin Friebe
if a is declared not null, then the column layout in the mysql command line client will be broken (as it does not assume the need for anything more but 1 digit) CREATE TABLE ru1 ( a int(11) NOT NULL default '0'); select a, group_concat(a) from ru1 group by 1 with rollup ; +---+-----------------+ | a | group_concat(a) | +---+-----------------+ | 1 | 1,1 | | 2 | 2,2,2 | |NULL | 1,1,2,2,2 | # this line is not lined up +---+-----------------+ -- Btw: this is an extension of bug 9681
[6 Dec 2006 22:23]
Sveta Smirnova
Thank you for the report. Verified as described using last BK sources. All versions are affected.
[29 Apr 2007 22:15]
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/25717 ChangeSet@1.2650, 2007-04-29 15:16:32-07:00, igor@olga.mysql.com +4 -0 Fixed bug #24856: the result set of a ROLLUP query with DISTINCT could lack some rollup rows (rows with NULLs for grouping attributes) if GROUP BY list contained constant expressions. This happened because the results of constant expressions were not put in the temporary table used for duplicate elimination. In fact a constant item from the GROUP BY list of a ROLLUP query can be replaced for an Item_null_result object when a rollup row is produced . Now the JOIN::rollup_init function wraps any constant item referenced in the GROYP BY list of a ROLLUP query into an Item_func object of a special class that is never detected as constant item. This ensures creation of fields for such constant items in temporary tables and guarantees right results when the result of the rollup operation first has to be written into a temporary table, e.g. in the cases when duplicate elimination is required.
[29 Apr 2007 23:03]
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/25718 ChangeSet@1.2650, 2007-04-29 16:04:43-07:00, igor@olga.mysql.com +4 -0 Fixed bug #24856: the result set of a ROLLUP query with DISTINCT could lack some rollup rows (rows with NULLs for grouping attributes) if GROUP BY list contained constant expressions. This happened because the results of constant expressions were not put in the temporary table used for duplicate elimination. In fact a constant item from the GROUP BY list of a ROLLUP query can be replaced for an Item_null_result object when a rollup row is produced . Now the JOIN::rollup_init function wraps any constant item referenced in the GROYP BY list of a ROLLUP query into an Item_func object of a special class that is never detected as constant item. This ensures creation of fields for such constant items in temporary tables and guarantees right results when the result of the rollup operation first has to be written into a temporary table, e.g. in the cases when duplicate elimination is required.
[30 Apr 2007 0:03]
Igor Babaev
I change the severity for S2 as due to this bug some ROLLUP queries return wrong resurn wrong result sets.
[1 May 2007 11:02]
Bugs System
Pushed into 5.1.18-beta
[1 May 2007 11:03]
Bugs System
Pushed into 5.0.42
[1 May 2007 11:05]
Bugs System
Pushed into 4.1.23
[8 May 2007 0:40]
Paul DuBois
Noted in 4.1.23, 5.0.42, 5.1.18 changelogs. The result set of a query that used WITH ROLLUP and DISTINCT could lack some rollup rows (rows with NULL values for grouping attributes) if the GROUP BY list contained constant expressions.