summaryrefslogtreecommitdiff
path: root/sql/table.cc
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2005-01-19 18:23:24 +0200
committerunknown <bell@sanja.is.com.ua>2005-01-19 18:23:24 +0200
commit1d71b90e1a2bca80d0035c1ae711d04348894126 (patch)
tree1277687b5475afc8c5a00f7a2c0fbcccb08bf1f7 /sql/table.cc
parent27e8ac47fc169f28278ba642c16d54d3dc52125a (diff)
parent957a5cb45e0695be9d5063c1c8be1c8721bc0244 (diff)
downloadmariadb-git-1d71b90e1a2bca80d0035c1ae711d04348894126.tar.gz
merge
sql/table.cc: Auto merged
Diffstat (limited to 'sql/table.cc')
-rw-r--r--sql/table.cc17
1 files changed, 15 insertions, 2 deletions
diff --git a/sql/table.cc b/sql/table.cc
index a030da95db4..ff8841fc8ca 100644
--- a/sql/table.cc
+++ b/sql/table.cc
@@ -1695,6 +1695,7 @@ bool st_table_list::setup_ancestor(THD *thd, Item **conds,
Field_translator *transl;
SELECT_LEX *select= &view->select_lex;
SELECT_LEX *current_select_save= thd->lex->current_select;
+ byte *main_table_list_save= thd->lex->select_lex.table_list.first;
Item *item;
TABLE_LIST *tbl;
List_iterator_fast<Item> it(select->item_list);
@@ -1717,8 +1718,13 @@ bool st_table_list::setup_ancestor(THD *thd, Item **conds,
if (field_translation)
{
DBUG_PRINT("info", ("there are already translation table"));
- /* prevent look up in SELECTs tree */
+ /*
+ prevent look up in SELECTs tree, and emulate main table list by
+ ancestor table list for subquery processing
+ */
thd->lex->current_select= &thd->lex->select_lex;
+ thd->lex->select_lex.table_list.first= (byte *)ancestor;
+
thd->lex->select_lex.no_wrap_view_item= 1;
thd->set_query_id= 1;
/* this view was prepared already on previous PS/SP execution */
@@ -1763,8 +1769,13 @@ bool st_table_list::setup_ancestor(THD *thd, Item **conds,
DBUG_RETURN(1);
}
- /* prevent look up in SELECTs tree */
+ /*
+ prevent look up in SELECTs tree, and emulate main table list by ancestor
+ table list for subquery processing
+ */
thd->lex->current_select= &thd->lex->select_lex;
+ thd->lex->select_lex.table_list.first= (byte *)ancestor;
+
thd->lex->select_lex.no_wrap_view_item= 1;
/*
@@ -1909,6 +1920,7 @@ bool st_table_list::setup_ancestor(THD *thd, Item **conds,
ok:
thd->lex->select_lex.no_wrap_view_item= save_wrapper;
thd->lex->current_select= current_select_save;
+ thd->lex->select_lex.table_list.first= main_table_list_save;
thd->set_query_id= save_set_query_id;
thd->allow_sum_func= save_allow_sum_func;
DBUG_RETURN(0);
@@ -1923,6 +1935,7 @@ err:
}
thd->lex->select_lex.no_wrap_view_item= save_wrapper;
thd->lex->current_select= current_select_save;
+ thd->lex->select_lex.table_list.first= main_table_list_save;
thd->set_query_id= save_set_query_id;
thd->allow_sum_func= save_allow_sum_func;
DBUG_RETURN(1);