From: Martin Hansson Date: January 19 2011 2:09pm Subject: bzr commit into mysql-5.1 branch (martin.hansson:3562) Bug#59173 List-Archive: http://lists.mysql.com/commits/129198 X-Bug: 59173 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1299355314==" --===============1299355314== 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/ based on revid:bjorn.munch@stripped 3562 Martin Hansson 2011-01-19 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 marking the INTEGER cache as being of DATETIME format. 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-19 14:09:32 +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-19 14:09:32 +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-19 14:09:32 +0000 @@ -913,7 +913,7 @@ int Arg_comparator::set_cmp_func(Item_re cache_converted_constant can't be used here because it can't correctly convert a DATETIME value from string to int representation. */ - Item_cache_int *cache= new Item_cache_int(); + Item_cache_int *cache= new Item_cache_int(MYSQL_TYPE_DATETIME); /* Mark the cache as non-const to prevent re-caching. */ cache->set_used_tables(1); if (!(*a)->is_datetime()) --===============1299355314== 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\ # lhj3epftxw59f9vg # target_branch: file:///data0/martin/bzrroot/bug59173/5.1/ # testament_sha1: 35189cdd4f717058ad9b1449e50c7f8e670cb25e # timestamp: 2011-01-19 15:09:44 +0100 # base_revision_id: bjorn.munch@stripped\ # st9m6zv8g18e29cf # # Begin bundle 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 emilE8lkedaH+LuSKcKEgb6hIrg= --===============1299355314==--