From: Martin Hansson Date: April 18 2011 8:48am Subject: bzr push into mysql-5.1 branch (martin.hansson:3662 to 3663) List-Archive: http://lists.mysql.com/commits/135597 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0008713003==" --===============0008713003== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline 3663 Martin Hansson 2011-04-18 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 3662 Bjorn Munch 2011-04-16 [merge] merge from 5.1-mtr modified: mysql-test/lib/My/Find.pm mysql-test/mysql-test-run.pl === 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-18 08:44:41 +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-18 08:44:41 +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 --===============0008713003== 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\ # cdlnzt5x3zheiqyj # target_branch: file:///data0/martin/bzrroot/bug11758558/mysql-5.1/ # testament_sha1: 3c422b19c0371e19e8b796a2171c491730d0e24a # timestamp: 2011-04-18 10:48:54 +0200 # base_revision_id: bjorn.munch@stripped\ # w3jtsmo0qkyd39iw # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWTg8aSMABodfgAAwWPf//3/v /+C////wYAl3wUXsANCgAAFAdAABDKUZBppkAMnqANAABoAAAAEqZQmNSP0JM9U002k2poDQ0GgD Q0DRpo0HGTJoxDE0wEDAmmCMExNNNABhBqepIA0AaGQAAAA0G1AAABxkyaMQxNMBAwJpgjBMTTTQ AYQSRAgJggmmQaEwpkaaTT1PTSbTTJiJ6RpnzmRDSKaT5MplIQhBBBhfAfappwE1ZfrTLmJKuu7d ZtzakpXxkzz9P7C5HYrU6OnS0r7fzeedbXbTdOCTMJFTTZ2h66QcZ3eqI6TAu8queGzwmStl+86s zqC7gl3AeoPQHoGZk0BIgfsGZqP9Pb+DN9nAYZhMyEc4Bu3fI858jtGGZmO24El81geicZHUcfZG V8g8IHTbKR6pDOYypKItgtC9xOc3v/rwJH4AEd3YGMZjCQl21yP67/uYimpplEK9AWDERXiQQQQY ZhmEvhnAIAwH6Qw8C4EwvIPQFxx8/GK9Hr8Rh154nsvHIx65/xSw/k5SiaiFZKz7j7XMD2k7yJGZ GFY90ChiRJp3bWfED4gnBxIcNRVQM6EGqTqI4gKCFRHGgdQkpGQHEYi6UncdB2HMYyJVUYQzv11B Z9UQoh0UAa1gQSSSQYwiqKHogBISEkDIyMTIzMCbBcJIbFkMwnN5+IknEUYPQwgXoCk8CJkgxBJW Aku8ofVCegHtSj1NkYmhwOVDl4BYsuygxz56GgBdo1ZmVIWYLkKofVE6DcpJFSHAGBJPaFoQH+xZ gkmB0CCIR3hsJIJgkmANoyXQyU0hgnAcYyVZAiBeTgWFoJK0KiSmcX9JaVQ7k5Wj9X4kHBJMOCGJ EAgWgWrLVQ78CoSSatIu3HPy/OZRI10sKVVKaO6lNlew+JtBq1hVxuuDUsdaaBrcs1yA5jV1Zgkq GJLM1G02bbbpBLBEdxpdCAhZl0ZgCOcIdK/2DIYEMmBkwgghkBZra7VC0WHLG4LdocPa1hQVPvXx 5Xax5oUGwjF48MugElcaFdKHTjURwJEyZaRUczyXbs8gMUrShWF4EUjrh06ubKgGQE06sfGjtWXh CUE9S3mj59Q1UmrMCw4dEfSdhrVxEgmz7MQmNkxm+rGZtYqjBfeT6wK8p23GZg8CYOpVBqY2qs5U Ld0kfckZZrg6I/SYJ40JyJSYt7UBPHceK6WdjSPUsqWJ1gTerELQ6yZQ4lp/4Y4WWmhQvkHM4D3F sbpEwK8KHIqNmy0pXk2dpxWjGyDZDmpjHA2aGmkBo16FdKwSV/Bsyyy7YoWrIQlNh4Akqx4soxiU tceVo6lGANNpKiKTZ/Zl3jqDfaMCUCLOydgZjQDxTfE+DMwMzcthgeRzogdH7lYHpvPSqkHsF7g+ qSToofkDhlczDMN9BSl5nNpIIiD3RIL3B8Bp2A4K4TBa6A/WSA9/twcAd4JJfX3sJKZ70WSvC8P2 /QgYgFeWVR8EAxPkUzJo2hCQkmElOl//CIfU1h6hcyAiYWpJfUr2gFiIomc8Ai1Q8YAksBJbqgCD Bq03lRzIxf+g1XaGpEGBf8CM4ZAF2BZFAGYySTDDU2AGAknziRMv5KImDMXoCIkoXxFggwDSCLhJ bohbEZiCSW2moGgRSStbfS0gCLgJ7DoOnvHQfIbvUP2X07oIkJi8Ui4EfeTFT1HqPvk/tKB8j+77 z3YntJ4Avhh+ZWJ4o9xZ+H6l1D8IHNWxRBibS37UwM6CB/hjFKxjhqQfNS95AkNq3RPN/f6Gnt6q jcY2rI/FQOYbaQyS5Jb7i6h2DmqgOfMDhlQ+N5ENWBYlODAv7PkJZXi0KE2GXYFRDsGFmMa9fxt+ JWvGzXmFYNBF6rIFROPE6Vl3ltSkA5Ms+fGsND+Dnjv1neOiYymMF0kqREQMVDbLBgQw8A15EuGF M1JSTNC2UEN5lS1icLkNsFZotbHmOjr7UolR5990DvMhi7u798HawledmIHD+dnSx82Mg5sjcVjE bw3JgiMulcCOL11qhwsOu15kD+O3fFJkGpHSVFsDeyNqoisVWZQ7TeG3Qkod52EjQMg0PoeJQZu/ J0d2g25BpIPCTImazhE6jzWHMdxwZDC4ncg2ECXrTCKdYHUVmBKa6SKUcMzaihyOnQ1DTmZ+dDVd YZi3EEK9mGQeveiuonM/fo3TrwRiB3BojMs3DHHpK/OtCEFQ5dJvIbLNYpSES3QJwooIrpFARGDA DLgelgBUiM4B3kzE8DAEwOpDl5RUiWy6PtLKAWkyF5ByC7jfzdRdtWh4UEuj5n0THb3dqwWAOR2C LDrctocFdWgiVJuryXMR/syNAuvK3awciQToME8RgXG8lHBOihBTmowDnLIEk05CGCEB0zBUnW8D x370u/gjFOY1m46wRzXMMDIG7JKM3GGLVsBWodH3KZyIpl4mmHLEyvKySDEWhrMedhgkOMu8Rcai I/qKE2lHwN50WVvIfvNeXqWKOHEicQMLGL3HXUwrCCAtwLyhMooG0kRkl0nh2KgaQdTXiUexy4C+ GwuIk5iHHGXA3kOxmz+hQ4nlGDE74Nx5cM8adAWVmORaVbHKObm1nEvMUQNtQa2UpDIPI8mZtyM8 TMQ4BjqQ6GieGlh2K6gc0ZljmT2iQvADzWxJ0BrTcRggmTJ25zOi3pWocGwHBV49V8TIWZwJCKUJ ooi5Z4j0LS4gHFQmVaGo4G4Y4nPb4scvxYGGyMzxdZKZyUNmIxt0PMbSRDwOgtTW9To8SvqNRcdZ uV6vWbhSQ5A/E4ByGEeEhxgCqHmAy6i78p2kjMCIw+1jnZyA5UazWmAzESNaObeXo4gLPmiB/F3J FOFCQODxpIw= --===============0008713003==--