At file:///home/psergey/dev/maria-5.1-table-elim-r11-gcov/

------------------------------------------------------------
revno: 2745
revision-id: [email protected]
parent: [email protected]
committer: Sergey Petrunya <[email protected]>
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)


_______________________________________________
Mailing list: https://launchpad.net/~maria-developers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to