[Maria-developers] Rev 2745: MWL#17: Table elimination in file:///home/psergey/dev/maria-5.1-table-elim-r11-gcov/
At file:///home/psergey/dev/maria-5.1-table-elim-r11-gcov/ ------------------------------------------------------------ revno: 2745 revision-id: psergey@askmonty.org-20090825103822-ldmjinfdh7ymc35r parent: psergey@askmonty.org-20090825092750-mnmatimn7cxm4rl8 committer: Sergey Petrunya <psergey@askmonty.org> branch nick: maria-5.1-table-elim-r11-gcov timestamp: Tue 2009-08-25 13:38:22 +0300 message: MWL#17: Table elimination - More test coverage - Remove unused code === modified file 'mysql-test/r/table_elim.result' --- a/mysql-test/r/table_elim.result 2009-08-25 09:27:50 +0000 +++ b/mysql-test/r/table_elim.result 2009-08-25 10:38:22 +0000 @@ -314,8 +314,8 @@ insert into t1 values (0,0,0,0),(1,1,1,1),(2,2,2,2),(3,3,3,3); create table t2 (pk int primary key, b int) as select a as pk, a as b from t1 where a in (1,2); -create table t3 (pk int primary key, b int) -as select a as pk, a as b from t1 where a in (1,3); +create table t3 (pk1 int, pk2 int, b int, unique(pk1,pk2)); +insert into t3 select a as pk1, a as pk2, a as b from t1 where a in (1,3); explain select t1.a from t1 left join t2 on t2.pk=t1.a and t2.b<t1.b; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 4 @@ -344,4 +344,11 @@ explain select t1.a from t1 left join t2 on t2.pk in (t1.a); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 4 +explain select t1.a from t1 left join t2 on TRUE; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 4 +1 SIMPLE t2 index NULL PRIMARY 4 NULL 2 Using index +explain select t1.a from t1 left join t3 on t3.pk1=t1.a and t3.pk2 IS NULL; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 4 drop table t1,t2,t3; === modified file 'mysql-test/t/table_elim.test' --- a/mysql-test/t/table_elim.test 2009-08-25 09:27:50 +0000 +++ b/mysql-test/t/table_elim.test 2009-08-25 10:38:22 +0000 @@ -274,5 +274,7 @@ explain select t1.a from t1 left join t2 on TRUE; +explain select t1.a from t1 left join t3 on t3.pk1=t1.a and t3.pk2 IS NULL; + drop table t1,t2,t3; === modified file 'sql/opt_table_elimination.cc' --- a/sql/opt_table_elimination.cc 2009-08-25 09:27:50 +0000 +++ b/sql/opt_table_elimination.cc 2009-08-25 10:38:22 +0000 @@ -490,7 +490,7 @@ { Item *tmp=new Item_null; if (tmp) - add_eq_mod(fda, eq_mod, *and_level, cond_func, args[0], args[1]); + add_eq_mod(fda, eq_mod, *and_level, cond_func, args[0], tmp); break; } case Item_func::MULT_EQUAL_FUNC: @@ -828,7 +828,7 @@ { Table_value *tbl_dep; if (!(tbl_dep= new Table_value(table))) - return NULL; /* purecov: inspected */ + return NULL; Key_module **key_list= &(tbl_dep->keys); /* Add dependencies for unique keys */ @@ -853,15 +853,8 @@ static Field_value *get_field_value(Func_dep_analyzer *fda, Field *field) { TABLE *table= field->table; - Table_value *tbl_dep; + Table_value *tbl_dep= fda->table_deps[table->tablenr]; - /* First, get the table*/ - if (!(tbl_dep= fda->table_deps[table->tablenr])) - { - if (!(tbl_dep= get_table_value(fda, table))) - return NULL; - } - /* Try finding the field in field list */ Field_value **pfield= &(tbl_dep->fields); while (*pfield && (*pfield)->field->field_index < field->field_index)
participants (1)
-
Sergey Petrunya