mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
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.
This commit is contained in:
@ -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;
|
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
|
str_to_date('1000-01-01','%Y-%m-%d') between NULL and NULL
|
||||||
0
|
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
|
End of 5.0 tests
|
||||||
create table t1(a INT, KEY (a));
|
create table t1(a INT, KEY (a));
|
||||||
INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
|
INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
|
||||||
|
@ -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 '2000-00-00';
|
||||||
select str_to_date('1000-01-01','%Y-%m-%d') between NULL and NULL;
|
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
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -6299,10 +6299,9 @@ make_join_readinfo(JOIN *join, ulonglong options)
|
|||||||
ordered. If there is a temp table the ordering is done as a last
|
ordered. If there is a temp table the ordering is done as a last
|
||||||
operation and doesn't prevent join cache usage.
|
operation and doesn't prevent join cache usage.
|
||||||
*/
|
*/
|
||||||
if (!ordered_set && !join->need_tmp &&
|
if (!ordered_set && !join->need_tmp &&
|
||||||
((table == join->sort_by_table &&
|
(table == join->sort_by_table ||
|
||||||
(!join->order || join->skip_sort_order)) ||
|
(join->sort_by_table == (TABLE *) 1 && i != join->const_tables)))
|
||||||
(join->sort_by_table == (TABLE *) 1 && i != join->const_tables)))
|
|
||||||
ordered_set= 1;
|
ordered_set= 1;
|
||||||
|
|
||||||
tab->sorted= sorted;
|
tab->sorted= sorted;
|
||||||
|
Reference in New Issue
Block a user