automerge
This commit is contained in:
commit
0ab24bef29
30
mysql-test/r/subselect4.result
Normal file
30
mysql-test/r/subselect4.result
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#
|
||||||
|
# Bug #46791: Assertion failed:(table->key_read==0),function unknown
|
||||||
|
# function,file sql_base.cc
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT, b INT, KEY(a));
|
||||||
|
INSERT INTO t1 VALUES (1,1),(2,2);
|
||||||
|
CREATE TABLE t2 LIKE t1;
|
||||||
|
INSERT INTO t2 VALUES (1,1),(2,2);
|
||||||
|
CREATE TABLE t3 LIKE t1;
|
||||||
|
# should have 1 impossible where and 2 dependent subqueries
|
||||||
|
EXPLAIN
|
||||||
|
SELECT 1 FROM t1
|
||||||
|
WHERE NOT EXISTS (SELECT 1 FROM t2 WHERE 1 = (SELECT MIN(t2.b) FROM t3))
|
||||||
|
ORDER BY count(*);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 index NULL a 5 NULL 2 Using index; Using temporary
|
||||||
|
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||||
|
# should not crash the next statement
|
||||||
|
SELECT 1 FROM t1
|
||||||
|
WHERE NOT EXISTS (SELECT 1 FROM t2 WHERE 1 = (SELECT MIN(t2.b) FROM t3))
|
||||||
|
ORDER BY count(*);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
# should not crash: the crash is caused by the previous statement
|
||||||
|
SELECT 1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
|
End of 5.0 tests.
|
32
mysql-test/t/subselect4.test
Normal file
32
mysql-test/t/subselect4.test
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# General purpose bug fix tests go here : subselect.test too large
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #46791: Assertion failed:(table->key_read==0),function unknown
|
||||||
|
--echo # function,file sql_base.cc
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT, b INT, KEY(a));
|
||||||
|
INSERT INTO t1 VALUES (1,1),(2,2);
|
||||||
|
CREATE TABLE t2 LIKE t1;
|
||||||
|
INSERT INTO t2 VALUES (1,1),(2,2);
|
||||||
|
CREATE TABLE t3 LIKE t1;
|
||||||
|
|
||||||
|
--echo # should have 1 impossible where and 2 dependent subqueries
|
||||||
|
EXPLAIN
|
||||||
|
SELECT 1 FROM t1
|
||||||
|
WHERE NOT EXISTS (SELECT 1 FROM t2 WHERE 1 = (SELECT MIN(t2.b) FROM t3))
|
||||||
|
ORDER BY count(*);
|
||||||
|
|
||||||
|
--echo # should not crash the next statement
|
||||||
|
SELECT 1 FROM t1
|
||||||
|
WHERE NOT EXISTS (SELECT 1 FROM t2 WHERE 1 = (SELECT MIN(t2.b) FROM t3))
|
||||||
|
ORDER BY count(*);
|
||||||
|
|
||||||
|
--echo # should not crash: the crash is caused by the previous statement
|
||||||
|
SELECT 1;
|
||||||
|
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
|
|
||||||
|
|
||||||
|
--echo End of 5.0 tests.
|
@ -1523,12 +1523,8 @@ JOIN::optimize()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/* If this join belongs to an uncacheable query save the original join */
|
||||||
If this join belongs to an uncacheable subquery save
|
if (select_lex->uncacheable && init_save_join_tab())
|
||||||
the original join
|
|
||||||
*/
|
|
||||||
if (select_lex->uncacheable && !is_top_level_join() &&
|
|
||||||
init_save_join_tab())
|
|
||||||
DBUG_RETURN(-1); /* purecov: inspected */
|
DBUG_RETURN(-1); /* purecov: inspected */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user