From: Martin Hansson Date: April 14 2011 9:29am Subject: bzr commit into mysql-5.1 branch (martin.hansson:3658) List-Archive: http://lists.mysql.com/commits/135410 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1263223821==" --===============1263223821== 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 09:29:33 +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 09:29:33 +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 --===============1263223821== 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\ # uzkl1nkor4gvhfyp # target_branch: file:///data0/martin/bzrroot/bug11758558/mysql-5.1/ # testament_sha1: 2b692fb3b5cbdbeccdb6eb38f19e090786e06d0c # timestamp: 2011-04-14 11:29:36 +0200 # base_revision_id: serge.kozlov@stripped\ # ghrxsnitso1ogg50 # # Begin bundle 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 yRThQkA7IdjI --===============1263223821==--