diff options
author | unknown <kaa@polly.(none)> | 2007-11-12 12:35:42 +0300 |
---|---|---|
committer | unknown <kaa@polly.(none)> | 2007-11-12 12:35:42 +0300 |
commit | eae5346872cda90361af8ca7ee4012d40464f9e6 (patch) | |
tree | 8db6a8f85cabd66766f54afa1cd7dda41b79dd6e /mysql-test | |
parent | 04a5618d13f330668164abc072b262776a564462 (diff) | |
parent | 84fbbf4d7d937df5d0cb9081ea73e9342b0ceae6 (diff) | |
download | mariadb-git-eae5346872cda90361af8ca7ee4012d40464f9e6.tar.gz |
Merge polly.(none):/home/kaa/src/opt/bug30666/my51-bug29131
into polly.(none):/home/kaa/src/opt/mysql-5.1-opt
sql/sql_select.cc:
Auto merged
mysql-test/r/select.result:
Manual merge.
mysql-test/t/select.test:
Manual merge.
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/select.result | 39 | ||||
-rw-r--r-- | mysql-test/t/select.test | 36 |
2 files changed, 75 insertions, 0 deletions
diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index 745819107f0..cde781dea00 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -4233,6 +4233,45 @@ str_to_date('1000-01-01','%Y-%m-%d') between NULL and '2000-00-00' select str_to_date('1000-01-01','%Y-%m-%d') between NULL and NULL; str_to_date('1000-01-01','%Y-%m-%d') between NULL and NULL 0 +CREATE TABLE t1 (c11 INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY); +CREATE TABLE t2 (c21 INT UNSIGNED NOT NULL, +c22 INT DEFAULT NULL, +KEY(c21, c22)); +CREATE TABLE t3 (c31 INT UNSIGNED NOT NULL DEFAULT 0, +c32 INT DEFAULT NULL, +c33 INT NOT NULL, +c34 INT UNSIGNED DEFAULT 0, +KEY (c33, c34, c32)); +INSERT INTO t1 values (),(),(),(),(); +INSERT INTO t2 SELECT a.c11, b.c11 FROM t1 a, t1 b; +INSERT INTO t3 VALUES (1, 1, 1, 0), +(2, 2, 0, 0), +(3, 3, 1, 0), +(4, 4, 0, 0), +(5, 5, 1, 0); +SELECT c32 FROM t1, t2, t3 WHERE t1.c11 IN (1, 3, 5) AND +t3.c31 = t1.c11 AND t2.c21 = t1.c11 AND +t3.c33 = 1 AND t2.c22 in (1, 3) +ORDER BY c32; +c32 +1 +1 +3 +3 +5 +5 +SELECT c32 FROM t1, t2, t3 WHERE t1.c11 IN (1, 3, 5) AND +t3.c31 = t1.c11 AND t2.c21 = t1.c11 AND +t3.c33 = 1 AND t2.c22 in (1, 3) +ORDER BY c32 DESC; +c32 +5 +5 +3 +3 +1 +1 +DROP TABLE t1, t2, t3; End of 5.0 tests create table t1(a INT, KEY (a)); INSERT INTO t1 VALUES (1),(2),(3),(4),(5); diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index 4929fb355fc..2a4a377a69d 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -3567,6 +3567,42 @@ select str_to_date('1000-01-01','%Y-%m-%d') between '0000-00-00' and NULL; select str_to_date('1000-01-01','%Y-%m-%d') between NULL and '2000-00-00'; select str_to_date('1000-01-01','%Y-%m-%d') between NULL and NULL; +# +# Bug #30666: Incorrect order when using range conditions on 2 tables or more +# + +CREATE TABLE t1 (c11 INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY); +CREATE TABLE t2 (c21 INT UNSIGNED NOT NULL, + c22 INT DEFAULT NULL, + KEY(c21, c22)); +CREATE TABLE t3 (c31 INT UNSIGNED NOT NULL DEFAULT 0, + c32 INT DEFAULT NULL, + c33 INT NOT NULL, + c34 INT UNSIGNED DEFAULT 0, + KEY (c33, c34, c32)); + +INSERT INTO t1 values (),(),(),(),(); +INSERT INTO t2 SELECT a.c11, b.c11 FROM t1 a, t1 b; +INSERT INTO t3 VALUES (1, 1, 1, 0), + (2, 2, 0, 0), + (3, 3, 1, 0), + (4, 4, 0, 0), + (5, 5, 1, 0); + +# Show that ORDER BY produces the correct results order +SELECT c32 FROM t1, t2, t3 WHERE t1.c11 IN (1, 3, 5) AND + t3.c31 = t1.c11 AND t2.c21 = t1.c11 AND + t3.c33 = 1 AND t2.c22 in (1, 3) + ORDER BY c32; + +# Show that ORDER BY DESC produces the correct results order +SELECT c32 FROM t1, t2, t3 WHERE t1.c11 IN (1, 3, 5) AND + t3.c31 = t1.c11 AND t2.c21 = t1.c11 AND + t3.c33 = 1 AND t2.c22 in (1, 3) + ORDER BY c32 DESC; + +DROP TABLE t1, t2, t3; + --echo End of 5.0 tests # |