From 60fc8507bdcc203cc77709d44279efd0bd79f0eb Mon Sep 17 00:00:00 2001 From: Evgeny Potemkin Date: Mon, 19 Oct 2009 15:13:26 +0400 Subject: 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. --- mysql-test/r/func_regexp.result | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mysql-test/r/func_regexp.result') diff --git a/mysql-test/r/func_regexp.result b/mysql-test/r/func_regexp.result index 54aad23402f..43f90e2e2e6 100644 --- a/mysql-test/r/func_regexp.result +++ b/mysql-test/r/func_regexp.result @@ -52,7 +52,7 @@ explain extended select * from t1 where xxx regexp('is a test of some long text id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 system NULL NULL NULL NULL 1 100.00 Warnings: -Note 1003 select 'this is a test of some long text to see what happens' AS `xxx` from `test`.`t1` where ('this is a test of some long text to see what happens' regexp 'is a test of some long text to') +Note 1003 select 'this is a test of some long text to see what happens' AS `xxx` from dual where ('this is a test of some long text to see what happens' regexp 'is a test of some long text to') select * from t1 where xxx regexp('is a test of some long text to '); xxx this is a test of some long text to see what happens -- cgit v1.2.1