Bug #29729 | datetime compared with date failing to add zero time on group by query | ||
---|---|---|---|
Submitted: | 11 Jul 2007 18:06 | Modified: | 23 Jul 2007 0:44 |
Reporter: | austin woz | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: General | Severity: | S2 (Serious) |
Version: | 5.0.44, 5.0.45 | OS: | Linux |
Assigned to: | Evgeny Potemkin | CPU Architecture: | Any |
Tags: | backport_050044SP1, date, datetime, GROUP BY, regression |
[11 Jul 2007 18:06]
austin woz
[11 Jul 2007 19:21]
Valeriy Kravchuk
Thank you for a bug report. Verified just as described: mysql> CREATE TABLE `CategoryHits` ( -> `categoryId` int(11) unsigned NOT NULL, -> `hitMonth` date NOT NULL, -> `count` int(11) unsigned NOT NULL default '0', -> PRIMARY KEY (`categoryId`,`hitMonth`) -> ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Query OK, 0 rows affected (0.16 sec) mysql> insert into `CategoryHits` values(1, '2007-07-01', 1); Query OK, 1 row affected (0.05 sec) mysql> insert into `CategoryHits` values(2, '2007-07-01', 2); Query OK, 1 row affected (0.05 sec) mysql> SELECT * FROM CategoryHits C where hitMonth='2007-07-01 00:00:00'; +------------+------------+-------+ | categoryId | hitMonth | count | +------------+------------+-------+ | 1 | 2007-07-01 | 1 | | 2 | 2007-07-01 | 2 | +------------+------------+-------+ 2 rows in set (0.02 sec) mysql> SELECT sum(C.count) FROM CategoryHits C where hitMonth='2007-07-01 00:00: 00' group by hitMonth; Empty set (0.00 sec) But: mysql> SELECT sum(C.count) FROM CategoryHits C where hitMonth='2007-07-01' group by hitMonth; +--------------+ | sum(C.count) | +--------------+ | 3 | +--------------+ 1 row in set (0.02 sec)
[14 Jul 2007 18:01]
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/30935 ChangeSet@1.2527, 2007-07-14 21:57:23+04:00, evgen@moonbone.local +3 -0 Bug#29729: Wrong conversion error led to an empty result set. The Field_newdate::store when storing a DATETIME value was returning the 'value was cut' error even if the thd->count_cuted_fields flag is set to CHECK_FIELD_IGNORE. This made range optimizr think that there is no appropriate data in the table and thus to return an empty set. Now the Field_newdate::store function returns conversion error only if the thd->count_cuted_fields flag isn't set to CHECK_FIELD_IGNORE.
[14 Jul 2007 18: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/30937 ChangeSet@1.2527, 2007-07-14 22:43:58+04:00, evgen@moonbone.local +3 -0 Bug#29729: Wrong conversion error led to an empty result set. The Field_newdate::store when storing a DATETIME value was returning the 'value was cut' error even if the thd->count_cuted_fields flag is set to CHECK_FIELD_IGNORE. This made range optimizr think that there is no appropriate data in the table and thus to return an empty set. Now the Field_newdate::store function returns conversion error only if the thd->count_cuted_fields flag isn't set to CHECK_FIELD_IGNORE.
[20 Jul 2007 23:46]
Bugs System
Pushed into 5.1.21-beta
[20 Jul 2007 23:49]
Bugs System
Pushed into 5.0.48
[23 Jul 2007 0:44]
Paul DuBois
Noted in 5.0.48, 5.1.21 changelogs. For a table with a DATE column date_col such that selecting rows with WHERE date_col = 'date_val 00:00:00' yielded a non-empty result, adding GROUP BY date_col caused the result to be empty.