From: Martin Hansson Date: April 11 2011 9:55am Subject: bzr commit into mysql-5.1 branch (martin.hansson:3651) List-Archive: http://lists.mysql.com/commits/135176 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0280991412==" --===============0280991412== 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:gleb.shchepa@stripped 3651 Martin Hansson 2011-04-11 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-11 09:55:05 +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-11 09:55:05 +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 --===============0280991412== 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\ # 09s0xfj1j3nuy7pp # target_branch: file:///data0/martin/bzrroot/bug11758558/mysql-5.1/ # testament_sha1: 0e4bfd0f3e1795a9863c537d22eeacc5b50622cb # timestamp: 2011-04-11 11:55:11 +0200 # base_revision_id: gleb.shchepa@stripped\ # r9joowzdoel2znbg # # Begin bundle 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 7J4Ccw== --===============0280991412==--