diff options
author | unknown <timour@askmonty.org> | 2011-07-07 16:28:26 +0300 |
---|---|---|
committer | unknown <timour@askmonty.org> | 2011-07-07 16:28:26 +0300 |
commit | 4128ec48522534732d16a74cda006dc794748042 (patch) | |
tree | d770292ee97cf8aab9dd4931d7fee4f91de178ce /mysql-test/t/subselect4.test | |
parent | 801a4ebca96fa00c85e1ca068c9491ae3f813551 (diff) | |
download | mariadb-git-4128ec48522534732d16a74cda006dc794748042.tar.gz |
Fix bug lp:806943
Analysis:
This bug is yet another incarnation of the generic problem
where optimization of the outer query triggers evaluation
of a subquery, and this evaluation performs a destructive
change to the subquery plan. Specifically a temp table is
created for the DISTINCT operation that replaces the
original subquery table. Later, select_describe() attempts
to print the table name, however, there is no corresponding
TABLE_LIST object to the internal temp table, so we get a
crash. Execution works fine because it is not interested in
the corresponding TABLE_LIST object (or its name).
Solution:
Similar to other such bugs, block the evaluation of expensive
Items in convert_const_to_int().
Diffstat (limited to 'mysql-test/t/subselect4.test')
-rw-r--r-- | mysql-test/t/subselect4.test | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/mysql-test/t/subselect4.test b/mysql-test/t/subselect4.test index 69ef5ffbd21..1cc3a7314a3 100644 --- a/mysql-test/t/subselect4.test +++ b/mysql-test/t/subselect4.test @@ -1461,4 +1461,37 @@ WHERE t2.f2 = (SELECT f2 FROM t3 drop table t1,t2,t3,t4; +--echo # +--echo # LP BUG#806943 Second crash with select_describe with nested subqueries in maria-5.3 +--echo # + +CREATE TABLE t1 ( f4 int) ; +INSERT INTO t1 VALUES (0),(0); + +CREATE TABLE t2 ( f2 int) ; + +CREATE TABLE t3 ( f1 int NOT NULL ); + +CREATE TABLE t4 ( f2 int, f3 int) ; +INSERT INTO t4 VALUES (8,0),(3,0); + +EXPLAIN SELECT * +FROM t2, t3 +WHERE t3.f1 = ( + SELECT SUM( f2 ) + FROM t4 + WHERE EXISTS ( + SELECT DISTINCT f4 + FROM t1)); +SELECT * +FROM t2, t3 +WHERE t3.f1 = ( + SELECT SUM( f2 ) + FROM t4 + WHERE EXISTS ( + SELECT DISTINCT f4 + FROM t1)); + +drop table t1, t2, t3, t4; + set optimizer_switch=@subselect4_tmp; |