← Back to team overview

maria-developers team mailing list archive

Rev 2727: MWL#17: Table elimination in file:///home/psergey/dev/maria-5.1-table-elim/

 

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

------------------------------------------------------------
revno: 2727
revision-id: psergey@xxxxxxxxxxxx-20090708171038-9nyc3hcg1o7h8635
parent: psergey@xxxxxxxxxxxx-20090630132018-8qwou8bqiq5z1qjg
committer: Sergey Petrunya <psergey@xxxxxxxxxxxx>
branch nick: maria-5.1-table-elim
timestamp: Wed 2009-07-08 21:10:38 +0400
message:
  MWL#17: Table elimination
  - When collecting Item_subselect::refers_to, put references to the correct
    subselect entry.
=== modified file 'sql/sql_lex.cc'
--- a/sql/sql_lex.cc	2009-06-22 11:46:31 +0000
+++ b/sql/sql_lex.cc	2009-07-08 17:10:38 +0000
@@ -1780,6 +1780,7 @@
 
 void st_select_lex::mark_as_dependent(st_select_lex *last, Item *dependency)
 {
+  SELECT_LEX *next_to_last;
   /*
     Mark all selects from resolved to 1 before select where was
     found table as depended (of select where was found table)
@@ -1787,6 +1788,7 @@
   for (SELECT_LEX *s= this;
        s && s != last;
        s= s->outer_select())
+  {
     if (!(s->uncacheable & UNCACHEABLE_DEPENDENT))
     {
       // Select is dependent of outer select
@@ -1802,10 +1804,12 @@
           sl->uncacheable|= UNCACHEABLE_UNITED;
       }
     }
+    next_to_last= s;
+  }
   is_correlated= TRUE;
   this->master_unit()->item->is_correlated= TRUE;
   if (dependency)
-    this->master_unit()->item->refers_to.push_back(dependency);
+    next_to_last->master_unit()->item->refers_to.push_back(dependency);
 }
 
 bool st_select_lex_node::set_braces(bool value)      { return 1; }