From: Martin Hansson Date: January 10 2011 12:43pm Subject: bzr commit into mysql-5.1 branch (martin.hansson:3539) Bug#59173 List-Archive: http://lists.mysql.com/commits/128282 X-Bug: 59173 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0176314334==" --===============0176314334== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///data0/martin/bzrroot/bug59173/5.1-commit/ based on revid:vasil.dimov@stripped 3539 Martin Hansson 2011-01-10 Bug#59173: Failure to handle DATE(TIME) values where Year, Month or Day is ZERO When dates are represented internally as strings, i.e. when a string constant is compared to a date value, both values are converted to long integers, ostensibly for fast comparisons. DATE typed integer values are converted to DATETIME by multiplying by 1,000,000 (each digit pair representing hour, minute and second, respectively). But the mechanism did not distuinguish cached INTEGER values, already in correct format, from newly converted strings. Fixed by not multiplying the values for cached integer values. modified: mysql-test/r/type_datetime.result mysql-test/t/type_datetime.test sql/item_cmpfunc.cc === modified file 'mysql-test/r/type_datetime.result' --- a/mysql-test/r/type_datetime.result 2010-03-09 10:36:26 +0000 +++ b/mysql-test/r/type_datetime.result 2011-01-10 12:43:01 +0000 @@ -637,4 +637,15 @@ CAST(CAST('2008-07-29T10:42:51.1234567' 20080729104251.1234560 Warnings: Warning 1292 Truncated incorrect datetime value: '2008-07-29T10:42:51.1234567' +# +# Bug#59173: Failure to handle DATE(TIME) values where Year, Month or +# Day is ZERO +# +CREATE TABLE t1 (dt1 DATETIME); +INSERT INTO t1 (dt1) VALUES ('0000-00-01 00:00:01'); +DELETE FROM t1 WHERE dt1 = '0000-00-01 00:00:01'; +# Should be empty +SELECT * FROM t1; +dt1 +DROP TABLE t1; End of 5.1 tests === modified file 'mysql-test/t/type_datetime.test' --- a/mysql-test/t/type_datetime.test 2009-02-13 18:07:03 +0000 +++ b/mysql-test/t/type_datetime.test 2011-01-10 12:43:01 +0000 @@ -445,4 +445,15 @@ SELECT CAST(CAST('00000002006-000008-000 # show we truncate microseconds from the right SELECT CAST(CAST('2008-07-29T10:42:51.1234567' AS DateTime) AS DECIMAL(30,7)); +--echo # +--echo # Bug#59173: Failure to handle DATE(TIME) values where Year, Month or +--echo # Day is ZERO +--echo # +CREATE TABLE t1 (dt1 DATETIME); +INSERT INTO t1 (dt1) VALUES ('0000-00-01 00:00:01'); +DELETE FROM t1 WHERE dt1 = '0000-00-01 00:00:01'; +--echo # Should be empty +SELECT * FROM t1; +DROP TABLE t1; + --echo End of 5.1 tests === modified file 'sql/item_cmpfunc.cc' --- a/sql/item_cmpfunc.cc 2010-12-28 23:47:05 +0000 +++ b/sql/item_cmpfunc.cc 2011-01-10 12:43:01 +0000 @@ -1105,8 +1105,9 @@ get_datetime_value(THD *thd, Item ***ite compare it with 100000000L - any DATE value should be less than it. Don't shift cached DATETIME values up for the second time. */ - if (f_type == MYSQL_TYPE_DATE || - (f_type != MYSQL_TYPE_DATETIME && value < 100000000L)) + if (item->type() != Item::CACHE_ITEM && + (f_type == MYSQL_TYPE_DATE || + (f_type != MYSQL_TYPE_DATETIME && value < 100000000L))) value*= 1000000L; } else --===============0176314334== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/martin.hansson@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: martin.hansson@stripped\ # 7hinj0qwqnh4bjn5 # target_branch: file:///data0/martin/bzrroot/bug59173/5.1-commit/ # testament_sha1: e92bb8d9992cece77f1ccaac7d3e493e51376090 # timestamp: 2011-01-10 13:43:05 +0100 # base_revision_id: vasil.dimov@stripped\ # 0tjqdpa5w3d6tuwn # # Begin bundle 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 --===============0176314334==--