summaryrefslogtreecommitdiff
path: root/mysql-test/t/explain.test
diff options
context:
space:
mode:
authorEvgeny Potemkin <epotemkin@mysql.com>2009-10-19 15:13:26 +0400
committerEvgeny Potemkin <epotemkin@mysql.com>2009-10-19 15:13:26 +0400
commit60fc8507bdcc203cc77709d44279efd0bd79f0eb (patch)
tree94084ca09596e61d7aca98f810ee34d4e4ee67b3 /mysql-test/t/explain.test
parent3c557833205a44e08b72d47db53054562907cc78 (diff)
downloadmariadb-git-60fc8507bdcc203cc77709d44279efd0bd79f0eb.tar.gz
Bug#30302: Tables that were optimized away are printed in the
EXPLAIN EXTENDED warning. Query optimizer searches for the constant tables and optimizes them away. This means that fields of such tables are substituted for their values and on later phases they are treated as constants. After this constant tables are removed from the query execution plan. Nevertheless constant tables were shown in the EXPLAIN EXTENDED warning thus producing query that might be not an equivalent of the original query. Now the print_join function skips all tables that were optimized away from printing to the EXPLAIN EXTENDED warning. If all tables were optimized away it produces the 'FROM dual' clause. mysql-test/r/explain.result: A test case added for the bug#30302. mysql-test/r/func_default.result: Adjusted test case result after fix for the bug#30302. mysql-test/r/func_regexp.result: Adjusted test case result after fix for the bug#30302. mysql-test/r/func_test.result: Adjusted test case result after fix for the bug#30302. mysql-test/r/having.result: Adjusted test case result after fix for the bug#30302. mysql-test/r/select.result: Adjusted test case result after fix for the bug#30302. mysql-test/r/subselect.result: Adjusted test case result after fix for the bug#30302. mysql-test/r/subselect3.result: Adjusted test case result after fix for the bug#30302. mysql-test/r/type_datetime.result: Adjusted test case result after fix for the bug#30302. mysql-test/t/explain.test: A test case added for the bug#30302. sql/sql_select.cc: Bug#30302: Tables that were optimized away are printed in the EXPLAIN EXTENDED warning. Now the print_join function skips all tables that were optimized away from printing to the EXPLAIN EXTENDED warning. If all tables were optimized away it produces the 'FROM dual' clause. sql/table.h: Adjusted test case result after fix for the bug#30302. The optimized_away flag is added to the TABLE_LIST struct.
Diffstat (limited to 'mysql-test/t/explain.test')
-rw-r--r--mysql-test/t/explain.test12
1 files changed, 12 insertions, 0 deletions
diff --git a/mysql-test/t/explain.test b/mysql-test/t/explain.test
index 18f1145a25d..162a310c0a6 100644
--- a/mysql-test/t/explain.test
+++ b/mysql-test/t/explain.test
@@ -167,4 +167,16 @@ flush tables;
SELECT OUTR.dt FROM t1 AS OUTR WHERE OUTR.dt IN ( SELECT INNR.dt FROM t2 AS INNR WHERE OUTR.t < '2005-11-13 7:41:31' );
drop tables t1, t2;
+
+--echo #
+--echo # Bug#30302: Tables that were optimized away are printed in the
+--echo # EXPLAIN EXTENDED warning.
+--echo #
+create table t1(f1 int);
+create table t2(f2 int);
+insert into t1 values(1);
+insert into t2 values(1),(2);
+explain extended select * from t1 where f1=1;
+explain extended select * from t1 join t2 on f1=f2 where f1=1;
+drop table t1,t2;
--echo End of 5.1 tests.