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/r/subselect4.result | |
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/r/subselect4.result')
-rw-r--r-- | mysql-test/r/subselect4.result | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/mysql-test/r/subselect4.result b/mysql-test/r/subselect4.result index 8735a75b45d..cb2190ef5ac 100644 --- a/mysql-test/r/subselect4.result +++ b/mysql-test/r/subselect4.result @@ -1784,4 +1784,35 @@ WHERE EXISTS (SELECT DISTINCT f1 FROM t4) LIMIT 1) AND t2.f2 = t1.f1; f1 f2 f1 f2 drop table t1,t2,t3,t4; +# +# LP BUG#806943 Second crash with select_describe with nested subqueries in maria-5.3 +# +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)); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +2 SUBQUERY t4 ALL NULL NULL NULL NULL 2 +3 SUBQUERY t1 ALL NULL NULL NULL NULL 2 Using temporary +SELECT * +FROM t2, t3 +WHERE t3.f1 = ( +SELECT SUM( f2 ) +FROM t4 +WHERE EXISTS ( +SELECT DISTINCT f4 +FROM t1)); +f2 f1 +drop table t1, t2, t3, t4; set optimizer_switch=@subselect4_tmp; |