mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
merge
This commit is contained in:
commit
0dea5a630b
3 changed files with 111 additions and 0 deletions
|
@ -1063,6 +1063,60 @@ a b c d
|
||||||
127 NULL 127 NULL
|
127 NULL 127 NULL
|
||||||
128 NULL 128 NULL
|
128 NULL 128 NULL
|
||||||
DROP TABLE IF EXISTS t1,t2;
|
DROP TABLE IF EXISTS t1,t2;
|
||||||
|
#
|
||||||
|
# Bug #42116: Mysql crash on specific query
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
CREATE TABLE t2 (a INT);
|
||||||
|
CREATE TABLE t3 (a INT, INDEX (a));
|
||||||
|
CREATE TABLE t4 (a INT);
|
||||||
|
CREATE TABLE t5 (a INT);
|
||||||
|
CREATE TABLE t6 (a INT);
|
||||||
|
INSERT INTO t1 VALUES (1), (1), (1);
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
(2), (2), (2), (2), (2), (2), (2), (2), (2), (2);
|
||||||
|
INSERT INTO t3 VALUES
|
||||||
|
(3), (3), (3), (3), (3), (3), (3), (3), (3), (3);
|
||||||
|
EXPLAIN
|
||||||
|
SELECT *
|
||||||
|
FROM
|
||||||
|
t1 JOIN t2 ON t1.a = t2.a
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
(
|
||||||
|
t3 LEFT JOIN t4 ON t3.a = t4.a
|
||||||
|
)
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
t5 LEFT JOIN t6 ON t5.a = t6.a
|
||||||
|
)
|
||||||
|
ON t4.a = t5.a
|
||||||
|
)
|
||||||
|
ON t1.a = t3.a;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
||||||
|
1 SIMPLE t3 ref a a 5 test.t1.a 2 Using index
|
||||||
|
1 SIMPLE t4 ALL NULL NULL NULL NULL 0
|
||||||
|
1 SIMPLE t5 ALL NULL NULL NULL NULL 0
|
||||||
|
1 SIMPLE t6 ALL NULL NULL NULL NULL 0
|
||||||
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 10 Using where; Using join buffer
|
||||||
|
SELECT *
|
||||||
|
FROM
|
||||||
|
t1 JOIN t2 ON t1.a = t2.a
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
(
|
||||||
|
t3 LEFT JOIN t4 ON t3.a = t4.a
|
||||||
|
)
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
t5 LEFT JOIN t6 ON t5.a = t6.a
|
||||||
|
)
|
||||||
|
ON t4.a = t5.a
|
||||||
|
)
|
||||||
|
ON t1.a = t3.a;
|
||||||
|
a a a a a a
|
||||||
|
DROP TABLE t1,t2,t3,t4,t5,t6;
|
||||||
End of 5.0 tests.
|
End of 5.0 tests.
|
||||||
CREATE TABLE t1 (f1 int);
|
CREATE TABLE t1 (f1 int);
|
||||||
CREATE TABLE t2 (f1 int);
|
CREATE TABLE t2 (f1 int);
|
||||||
|
|
|
@ -730,6 +730,60 @@ SELECT * FROM t1 JOIN t2 ON a=c ORDER BY a;
|
||||||
|
|
||||||
DROP TABLE IF EXISTS t1,t2;
|
DROP TABLE IF EXISTS t1,t2;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #42116: Mysql crash on specific query
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
CREATE TABLE t2 (a INT);
|
||||||
|
CREATE TABLE t3 (a INT, INDEX (a));
|
||||||
|
CREATE TABLE t4 (a INT);
|
||||||
|
CREATE TABLE t5 (a INT);
|
||||||
|
CREATE TABLE t6 (a INT);
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (1), (1), (1);
|
||||||
|
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
(2), (2), (2), (2), (2), (2), (2), (2), (2), (2);
|
||||||
|
|
||||||
|
INSERT INTO t3 VALUES
|
||||||
|
(3), (3), (3), (3), (3), (3), (3), (3), (3), (3);
|
||||||
|
|
||||||
|
EXPLAIN
|
||||||
|
SELECT *
|
||||||
|
FROM
|
||||||
|
t1 JOIN t2 ON t1.a = t2.a
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
(
|
||||||
|
t3 LEFT JOIN t4 ON t3.a = t4.a
|
||||||
|
)
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
t5 LEFT JOIN t6 ON t5.a = t6.a
|
||||||
|
)
|
||||||
|
ON t4.a = t5.a
|
||||||
|
)
|
||||||
|
ON t1.a = t3.a;
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM
|
||||||
|
t1 JOIN t2 ON t1.a = t2.a
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
(
|
||||||
|
t3 LEFT JOIN t4 ON t3.a = t4.a
|
||||||
|
)
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
t5 LEFT JOIN t6 ON t5.a = t6.a
|
||||||
|
)
|
||||||
|
ON t4.a = t5.a
|
||||||
|
)
|
||||||
|
ON t1.a = t3.a;
|
||||||
|
|
||||||
|
DROP TABLE t1,t2,t3,t4,t5,t6;
|
||||||
|
|
||||||
--echo End of 5.0 tests.
|
--echo End of 5.0 tests.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8964,7 +8964,10 @@ static void restore_prev_nj_state(JOIN_TAB *last)
|
||||||
join->cur_embedding_map&= ~last_emb->nested_join->nj_map;
|
join->cur_embedding_map&= ~last_emb->nested_join->nj_map;
|
||||||
else if (last_emb->nested_join->join_list.elements-1 ==
|
else if (last_emb->nested_join->join_list.elements-1 ==
|
||||||
last_emb->nested_join->counter)
|
last_emb->nested_join->counter)
|
||||||
|
{
|
||||||
join->cur_embedding_map|= last_emb->nested_join->nj_map;
|
join->cur_embedding_map|= last_emb->nested_join->nj_map;
|
||||||
|
break;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
break;
|
break;
|
||||||
last_emb= last_emb->embedding;
|
last_emb= last_emb->embedding;
|
||||||
|
|
Loading…
Reference in a new issue