From 5ecad03df9eef6e4d68cc7767b684944384e084e Mon Sep 17 00:00:00 2001 From: Sergey Petrunya Date: Wed, 8 Jul 2009 21:10:38 +0400 Subject: [PATCH] MWL#17: Table elimination - When collecting Item_subselect::refers_to, put references to the correct subselect entry. --- sql/sql_lex.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index dc8dadc971a..680a3851723 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -1780,6 +1780,7 @@ void st_select_lex_unit::exclude_tree() 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 @@ void st_select_lex::mark_as_dependent(st_select_lex *last, Item *dependency) 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 @@ void st_select_lex::mark_as_dependent(st_select_lex *last, Item *dependency) 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; }