From: Martin Hansson Date: April 14 2011 7:25am Subject: bzr commit into mysql-5.1 branch (martin.hansson:3658) List-Archive: http://lists.mysql.com/commits/135383 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0628658891==" --===============0628658891== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///data0/martin/bzrroot/bug11758558/mysql-5.1/ based on revid:serge.kozlov@stripped 3658 Martin Hansson 2011-04-14 Bug 11758558 - 50774: WRONG RESULTSET WHEN TIMESTAMP VALUES ARE APPENDED WITH .0 The bug was fixed by the patch for bug number BUG 11763109 - 55779: SELECT DOES NOT WORK PROPERLY IN MYSQL SERVER VERSION "5.1.42 SUSE MYSQL (Exact same fix as was proposed for this bug.) Since the motivation for the two bug reports was completely different, however, it still makes sense to push the test case. This patch contains only the test case. modified: mysql-test/r/type_timestamp.result mysql-test/t/type_timestamp.test === modified file 'mysql-test/r/type_timestamp.result' --- a/mysql-test/r/type_timestamp.result 2010-09-13 07:18:35 +0000 +++ b/mysql-test/r/type_timestamp.result 2011-04-14 07:25:24 +0000 @@ -547,4 +547,67 @@ a 2000-01-01 00:00:01 2000-01-01 00:00:01 DROP TABLE t1; +# +# Bug#50774: failed to get the correct resultset when timestamp values +# are appended with .0 +# +CREATE TABLE t1 ( a TIMESTAMP, KEY ( a ) ); +INSERT INTO t1 VALUES( '2010-02-01 09:31:01' ); +INSERT INTO t1 VALUES( '2010-02-01 09:31:02' ); +INSERT INTO t1 VALUES( '2010-02-01 09:31:03' ); +INSERT INTO t1 VALUES( '2010-02-01 09:31:04' ); +SELECT * FROM t1 WHERE a >= '2010-02-01 09:31:02.0'; +a +2010-02-01 09:31:02 +2010-02-01 09:31:03 +2010-02-01 09:31:04 +SELECT * FROM t1 WHERE '2010-02-01 09:31:02.0' <= a; +a +2010-02-01 09:31:02 +2010-02-01 09:31:03 +2010-02-01 09:31:04 +SELECT * FROM t1 WHERE a <= '2010-02-01 09:31:02.0'; +a +2010-02-01 09:31:01 +2010-02-01 09:31:02 +SELECT * FROM t1 WHERE '2010-02-01 09:31:02.0' >= a; +a +2010-02-01 09:31:01 +2010-02-01 09:31:02 +EXPLAIN +SELECT * FROM t1 WHERE a >= '2010-02-01 09:31:02.0'; +id select_type table type possible_keys key key_len ref rows Extra +x x x range x x x x x x +SELECT * FROM t1 WHERE a >= '2010-02-01 09:31:02.0'; +a +2010-02-01 09:31:02 +2010-02-01 09:31:03 +2010-02-01 09:31:04 +CREATE TABLE t2 ( a TIMESTAMP, KEY ( a DESC ) ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:01' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:02' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:03' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:04' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:05' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:06' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:07' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:08' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:09' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:10' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:11' ); +# The bug would cause the range optimizer's comparison to use an open +# interval here. This reveals itself only in the number of reads +# performed. +FLUSH STATUS; +EXPLAIN +SELECT * FROM t2 WHERE a < '2010-02-01 09:31:02.0'; +id select_type table type possible_keys key key_len ref rows Extra +x x x range x x x x x x +SELECT * FROM t2 WHERE a < '2010-02-01 09:31:02.0'; +a +2010-02-01 09:31:01 +SHOW STATUS LIKE 'Handler_read_next'; +Variable_name Value +Handler_read_next 1 +DROP TABLE t1, t2; End of 5.1 tests === modified file 'mysql-test/t/type_timestamp.test' --- a/mysql-test/t/type_timestamp.test 2010-09-13 07:18:35 +0000 +++ b/mysql-test/t/type_timestamp.test 2011-04-14 07:25:24 +0000 @@ -373,4 +373,51 @@ SELECT a FROM t1 WHERE a >= '20000101000 DROP TABLE t1; +--echo # +--echo # Bug#50774: failed to get the correct resultset when timestamp values +--echo # are appended with .0 +--echo # +CREATE TABLE t1 ( a TIMESTAMP, KEY ( a ) ); + +INSERT INTO t1 VALUES( '2010-02-01 09:31:01' ); +INSERT INTO t1 VALUES( '2010-02-01 09:31:02' ); +INSERT INTO t1 VALUES( '2010-02-01 09:31:03' ); +INSERT INTO t1 VALUES( '2010-02-01 09:31:04' ); + +SELECT * FROM t1 WHERE a >= '2010-02-01 09:31:02.0'; +SELECT * FROM t1 WHERE '2010-02-01 09:31:02.0' <= a; +SELECT * FROM t1 WHERE a <= '2010-02-01 09:31:02.0'; +SELECT * FROM t1 WHERE '2010-02-01 09:31:02.0' >= a; + +--replace_column 1 x 2 x 3 x 5 x 6 x 7 x 8 x 9 x 10 x +EXPLAIN +SELECT * FROM t1 WHERE a >= '2010-02-01 09:31:02.0'; +SELECT * FROM t1 WHERE a >= '2010-02-01 09:31:02.0'; + +CREATE TABLE t2 ( a TIMESTAMP, KEY ( a DESC ) ); + +INSERT INTO t2 VALUES( '2010-02-01 09:31:01' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:02' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:03' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:04' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:05' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:06' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:07' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:08' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:09' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:10' ); +INSERT INTO t2 VALUES( '2010-02-01 09:31:11' ); + +--echo # The bug would cause the range optimizer's comparison to use an open +--echo # interval here. This reveals itself only in the number of reads +--echo # performed. +FLUSH STATUS; +--replace_column 1 x 2 x 3 x 5 x 6 x 7 x 8 x 9 x 10 x +EXPLAIN +SELECT * FROM t2 WHERE a < '2010-02-01 09:31:02.0'; +SELECT * FROM t2 WHERE a < '2010-02-01 09:31:02.0'; +SHOW STATUS LIKE 'Handler_read_next'; + +DROP TABLE t1, t2; + --echo End of 5.1 tests --===============0628658891== 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\ # 7wnmmmjeeeg53pw1 # target_branch: file:///data0/martin/bzrroot/bug11758558/mysql-5.1/ # testament_sha1: ae1f07ea2159fe5c73c431af540707012440eb73 # timestamp: 2011-04-14 09:25:29 +0200 # base_revision_id: serge.kozlov@stripped\ # ghrxsnitso1ogg50 # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWURojkQABozfgAAwWPf//3/v /+C////wYAl99LsaQACgoA0ABoAABxkyaMQxNMBAwJpgjBMTTTQAYQSlTTeqaTMjQTQwBMTTAanq aG0mAJgJhxkyaMQxNMBAwJpgjBMTTTQAYQSmkRMUzQE0nk9JPEnqbSek9T1NHkmnoj1HqDag9QcZ MmjEMTTAQMCaYIwTE000AGEEkgIAE00Jkwmgp6p+pMm0TTZTT1PU9NT2oahpw4HgjiOcT8m43EQi CEMYwL/LixdJZlfy4z1E03GvSrXi04xthFnS+z4CrOarTkcLaynp7nSwpazM1yekyGYmUqdQ11oO J3eaI7MgbMTV3hm9MpJak3wmuHQFfCzdIGoNAaBJMoDMQNwXDlNj8ntS66hCQmZCN4Bt2fI/kfI6 jDMzHWwEl/tXnpKETmcP7Mq4oe0Mrx1UxKQmB1WlZE8RJg4wIweejpbFHgCtVgGZu0JifK+2/rx7 zSYslB8xHJbC4ewk6CYQhCEhIZvpcgEAQHhCz1FcGQ3WHYFcq0VRbs15xDtoid1gcjHHL5VqDgZJ IlJCcko0nrcsneS2CJGUg+kdY8mYECSc5sz4gfEE4HCQ4LiiYZTIWC04qSBbIuKk/ZTbU5WIGg0l RiO47TYaj3Ej7fPYNc9fkITZG2oimDvgISSSQrRHamlJxxxx5gYF5gYlxJgsEkNeyGYTjafeJJwi bB6MIF6BOV5AxQYAkqgSXgTPohOtA9qVqjxbEiajsOdBz8Qy6SGOzLUagCvU1ueopQskDLmKkffA kbFFIchwAwJJ1YVhqgP81qBJMDkCCIQ0C4gooJAkmAOFA5LiyVCRS4KZDhikDFVECKtKHlBYCSoR QRUj7CogTaNXQgUo97t49wJJhwIYgpEAgYwInhcSEkmmkV6G73RJJFtJGXcoozlkUdxmviMBrB2E 99m397QwWpwxTu0gpnLQElMuMi0dZUaV7JBD6lajcZWZvELIxhIARwB/JfmDIYEMmBkwgehalAbX PZW4NpxAbXspAyudiFg8211oyPp0NDjQp6F7wpiMVju0Ek9ZdTIpnDlQV6iPMgTK5lZ220Wtmdbg NJJQAiNYUgOYIJFNmkMbHQZq62GT62kthU7CzkUFRIpN2+H2ncalUBtveApW5pWyxC+UvdRbeEXa Q9V5zDBtRJPZu0UUUl4UBKFApDudJz6kLscQtP+loXSYuIuLS7by3xKN+weA+669VkMrGzahPXKw nRKEaqgrDsKSo7Ss/8cQHF1dxmUF7KIbnqNpXCBRAwLTPOoxoytH6uBo6DYjgsLsVhM2asSNAJK3 e2BCDUWrAQlFhzwSUU6EHwq1PHSmOUYPBpWp0lQiibO/LHwHJ7fzGBmgRTpnQJF0DqZbz6pIElkv FozmBiBz/YnA+205qhB+QveH0SSciZ7QcGNjMMw3qKMerjQiEBB74D17w+I0qgcCsEwVuQH+YoD4 e69wA5z0kvp8GElI+CKo2haH+vzHmABTjjQfFAMS6E8iSNAfESTCSlO39yAfQzD+gtqAgX1pJfQp 0AKkQRI7HhBqB0HgkrxJbKAB7Bdq3FBtRg7/gXWai5D2BfuEJPxALLyqCAMhkkmGGnrALxJOygQM f2JokDMWoCAkn2wFegvDU9FgktkArgMw9JLSdwM8gklW26dY8EWAS1nacfEcg+Q3in/BevzeiImL RRGwQeIgkEV8fPkaDadmzQ6QCyATW3pSWIwyhJKvZ9xZM+55spYmgwMyv60wM5A89jGCVTHZcg9V H4DyI12yB3/B/Z/EfeTNipUMDA2DZn34Jc0tvutbuoO6h53FIZvecJn6a7iF+BxSm9gX8H6iV1wt CZJhl3hQP7xhahjTT4mc8AqkDq4Igqf0NIyKTbPcclj5H6UJiRb8+NAZnqdsN+h9Q5EhlIYL4pzR IgnRTjqZDc3HTzJbSLty4Ew0Lx+5dHYlwUobULFZMdT1ScRPTXS85lwxj1/YC8DNQrOZADlsi+DU /NxcGu4zMxiFgZpggMty2kK3U0qZtqKlwZ0h5+vLZBJkFyN5QVvPRkaKaKRUZEzmaBkefCRzj3ng up2cdoaBtPU8ikZq9bkeewbeg2b1kBMJLyZkUGxbjxXOR1H2nadhyYYVx4INg8j+KYRPoUF5CKvI JQuxLFoig3meRcNORj6IajoGQtB6FczDIPx2opoJSPlw2SpvR4BmjEp2jGS58RPcKCJm0uBzYZxX dgYDOmM2NsBUUzFOUstSEiISeHUkcjvMATA5RHFxNTgVx3/WVYqwkPuHuHrqbNnaWbFmdZiW/5nq mOnd0V6vBxDWIqOThgK2AtAoLKUEShN56D/4MDELLChzUjiA9OQM8YFvrIQZERyjFQeG8o4qBJdQ HUTEMEHjkzBSnLx27UqNyKk40oPRbDoCJVsMDIG4yUJuGGK1mCrQ5ETmPTLxMdOeBzWVpUalNBiK RmYbmGCI4ZewRaXkB33EyTRh5G45VUuiO8DmBpqwRvyHl1LFjhy5MKgegKriwmSJp5rIkIpcTw8V MMnuUheRN1TixFr8ywgSkIcOL05dhtIdzN09Sg4HhB7Erntw9m/VjPtCqkwyKyjQHE9r1rOBaYIe bKAz8U5SkMg8zzZm2o1YmoQ4AxvQ5DQK9VR3KyYbYSKnGLqxIXfU8jIGqNCD0EiRKrGR21cVaOBr hwKm/lbAwFidhEROZJE0WLLAdMrLB4OCJPItNxrGOw21dzHT8GBhsDE8XLBSHarxjPI7ylZkiHgb ytNX9TkeRV2neWnIYCxXMFgEojyB+BvDmMI8ojhgDF+HE4e2NRE1rUBEYe9jczh44oMzARA1I2bS xFFilt/+LuSKcKEgiNEciA== --===============0628658891==--