From d0535d80a1bcb9210dd31a773dd5119fd9d94653 Mon Sep 17 00:00:00 2001 From: Sergey Petrunya Date: Fri, 14 Jan 2011 16:38:41 +0300 Subject: [PATCH] Test case backport for: Bug#42580 - Innodb's ORDER BY ..LIMIT returns no rows for null-safe operator <=> NULL --- mysql-test/include/icp_tests.inc | 29 ++++++++++++++++++++++++++++ mysql-test/r/innodb_icp.result | 33 ++++++++++++++++++++++++++++++++ mysql-test/r/maria_icp.result | 33 ++++++++++++++++++++++++++++++++ mysql-test/r/myisam_icp.result | 30 +++++++++++++++++++++++++++++ mysql-test/t/innodb_icp.test | 13 +++++++++++++ mysql-test/t/maria_icp.test | 13 +++++++++++++ mysql-test/t/myisam_icp.test | 6 ++++++ 7 files changed, 157 insertions(+) create mode 100644 mysql-test/include/icp_tests.inc create mode 100644 mysql-test/r/innodb_icp.result create mode 100644 mysql-test/r/maria_icp.result create mode 100644 mysql-test/r/myisam_icp.result create mode 100644 mysql-test/t/innodb_icp.test create mode 100644 mysql-test/t/maria_icp.test create mode 100644 mysql-test/t/myisam_icp.test diff --git a/mysql-test/include/icp_tests.inc b/mysql-test/include/icp_tests.inc new file mode 100644 index 00000000000..2d8c649c84f --- /dev/null +++ b/mysql-test/include/icp_tests.inc @@ -0,0 +1,29 @@ +--echo # +--echo # Bug#42580 - Innodb's ORDER BY ..LIMIT returns no rows for +--echo # null-safe operator <=> NULL +--echo # + +CREATE TABLE t1( + c1 DATE NOT NULL, + c2 DATE NULL, + c3 DATETIME, + c4 TIMESTAMP, + PRIMARY KEY(c1), + UNIQUE(c2) +); + +--echo +INSERT INTO t1 VALUES('0000-00-00', '0000-00-00', '2008-01-04', '2008-01-05'); +INSERT INTO t1 VALUES('2007-05-25', '2007-05-25', '2007-05-26', '2007-05-26'); +INSERT INTO t1 VALUES('2008-01-01', NULL , '2008-01-02', '2008-01-03'); +INSERT INTO t1 VALUES('2008-01-17', NULL , NULL , '2009-01-29'); +INSERT INTO t1 VALUES('2009-01-29', '2009-01-29', '2009-01-29', '2009-01-29'); + +--echo +SELECT * FROM t1 WHERE c2 <=> NULL ORDER BY c1,c2; +--echo +SELECT * FROM t1 WHERE c2 <=> NULL ORDER BY c1,c2 LIMIT 2; + +--echo +DROP TABLE t1; + diff --git a/mysql-test/r/innodb_icp.result b/mysql-test/r/innodb_icp.result new file mode 100644 index 00000000000..8a3e42a11f1 --- /dev/null +++ b/mysql-test/r/innodb_icp.result @@ -0,0 +1,33 @@ +set @save_storage_engine= @@storage_engine; +set storage_engine=InnoDB; +# +# Bug#42580 - Innodb's ORDER BY ..LIMIT returns no rows for +# null-safe operator <=> NULL +# +CREATE TABLE t1( +c1 DATE NOT NULL, +c2 DATE NULL, +c3 DATETIME, +c4 TIMESTAMP, +PRIMARY KEY(c1), +UNIQUE(c2) +); + +INSERT INTO t1 VALUES('0000-00-00', '0000-00-00', '2008-01-04', '2008-01-05'); +INSERT INTO t1 VALUES('2007-05-25', '2007-05-25', '2007-05-26', '2007-05-26'); +INSERT INTO t1 VALUES('2008-01-01', NULL , '2008-01-02', '2008-01-03'); +INSERT INTO t1 VALUES('2008-01-17', NULL , NULL , '2009-01-29'); +INSERT INTO t1 VALUES('2009-01-29', '2009-01-29', '2009-01-29', '2009-01-29'); + +SELECT * FROM t1 WHERE c2 <=> NULL ORDER BY c1,c2; +c1 c2 c3 c4 +2008-01-01 NULL 2008-01-02 00:00:00 2008-01-03 00:00:00 +2008-01-17 NULL NULL 2009-01-29 00:00:00 + +SELECT * FROM t1 WHERE c2 <=> NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 c4 +2008-01-01 NULL 2008-01-02 00:00:00 2008-01-03 00:00:00 +2008-01-17 NULL NULL 2009-01-29 00:00:00 + +DROP TABLE t1; +set storage_engine= @save_storage_engine; diff --git a/mysql-test/r/maria_icp.result b/mysql-test/r/maria_icp.result new file mode 100644 index 00000000000..fb7332d9a33 --- /dev/null +++ b/mysql-test/r/maria_icp.result @@ -0,0 +1,33 @@ +set @save_storage_engine= @@storage_engine; +set storage_engine=Maria; +# +# Bug#42580 - Innodb's ORDER BY ..LIMIT returns no rows for +# null-safe operator <=> NULL +# +CREATE TABLE t1( +c1 DATE NOT NULL, +c2 DATE NULL, +c3 DATETIME, +c4 TIMESTAMP, +PRIMARY KEY(c1), +UNIQUE(c2) +); + +INSERT INTO t1 VALUES('0000-00-00', '0000-00-00', '2008-01-04', '2008-01-05'); +INSERT INTO t1 VALUES('2007-05-25', '2007-05-25', '2007-05-26', '2007-05-26'); +INSERT INTO t1 VALUES('2008-01-01', NULL , '2008-01-02', '2008-01-03'); +INSERT INTO t1 VALUES('2008-01-17', NULL , NULL , '2009-01-29'); +INSERT INTO t1 VALUES('2009-01-29', '2009-01-29', '2009-01-29', '2009-01-29'); + +SELECT * FROM t1 WHERE c2 <=> NULL ORDER BY c1,c2; +c1 c2 c3 c4 +2008-01-01 NULL 2008-01-02 00:00:00 2008-01-03 00:00:00 +2008-01-17 NULL NULL 2009-01-29 00:00:00 + +SELECT * FROM t1 WHERE c2 <=> NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 c4 +2008-01-01 NULL 2008-01-02 00:00:00 2008-01-03 00:00:00 +2008-01-17 NULL NULL 2009-01-29 00:00:00 + +DROP TABLE t1; +set storage_engine= @save_storage_engine; diff --git a/mysql-test/r/myisam_icp.result b/mysql-test/r/myisam_icp.result new file mode 100644 index 00000000000..1b5de945284 --- /dev/null +++ b/mysql-test/r/myisam_icp.result @@ -0,0 +1,30 @@ +# +# Bug#42580 - Innodb's ORDER BY ..LIMIT returns no rows for +# null-safe operator <=> NULL +# +CREATE TABLE t1( +c1 DATE NOT NULL, +c2 DATE NULL, +c3 DATETIME, +c4 TIMESTAMP, +PRIMARY KEY(c1), +UNIQUE(c2) +); + +INSERT INTO t1 VALUES('0000-00-00', '0000-00-00', '2008-01-04', '2008-01-05'); +INSERT INTO t1 VALUES('2007-05-25', '2007-05-25', '2007-05-26', '2007-05-26'); +INSERT INTO t1 VALUES('2008-01-01', NULL , '2008-01-02', '2008-01-03'); +INSERT INTO t1 VALUES('2008-01-17', NULL , NULL , '2009-01-29'); +INSERT INTO t1 VALUES('2009-01-29', '2009-01-29', '2009-01-29', '2009-01-29'); + +SELECT * FROM t1 WHERE c2 <=> NULL ORDER BY c1,c2; +c1 c2 c3 c4 +2008-01-01 NULL 2008-01-02 00:00:00 2008-01-03 00:00:00 +2008-01-17 NULL NULL 2009-01-29 00:00:00 + +SELECT * FROM t1 WHERE c2 <=> NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 c4 +2008-01-01 NULL 2008-01-02 00:00:00 2008-01-03 00:00:00 +2008-01-17 NULL NULL 2009-01-29 00:00:00 + +DROP TABLE t1; diff --git a/mysql-test/t/innodb_icp.test b/mysql-test/t/innodb_icp.test new file mode 100644 index 00000000000..3a4ecd3a7de --- /dev/null +++ b/mysql-test/t/innodb_icp.test @@ -0,0 +1,13 @@ +# +# ICP/InnoDB tests (Index Condition Pushdown) +# + +--source include/have_innodb.inc + +set @save_storage_engine= @@storage_engine; +set storage_engine=InnoDB; + +--source include/icp_tests.inc + +set storage_engine= @save_storage_engine; + diff --git a/mysql-test/t/maria_icp.test b/mysql-test/t/maria_icp.test new file mode 100644 index 00000000000..beb13544ced --- /dev/null +++ b/mysql-test/t/maria_icp.test @@ -0,0 +1,13 @@ +# +# ICP/Maria tests (Index Condition Pushdown) +# + +--source include/have_maria.inc + +set @save_storage_engine= @@storage_engine; +set storage_engine=Maria; + +--source include/icp_tests.inc + +set storage_engine= @save_storage_engine; + diff --git a/mysql-test/t/myisam_icp.test b/mysql-test/t/myisam_icp.test new file mode 100644 index 00000000000..4c3db4d9d12 --- /dev/null +++ b/mysql-test/t/myisam_icp.test @@ -0,0 +1,6 @@ +# +# ICP/MyISAM tests (Index Condition Pushdown) +# + +--source include/icp_tests.inc +