summaryrefslogtreecommitdiff
path: root/sql/item_subselect.cc
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2002-11-14 00:26:18 +0200
committerunknown <bell@sanja.is.com.ua>2002-11-14 00:26:18 +0200
commit81a5afb925e9c41f7f43e58e8f36d93b5befd364 (patch)
treed888a4517004a1a442146f5d6b8c8ca5fa2515dc /sql/item_subselect.cc
parente0ad88a2ff751d62853fa4f81d007d1b55fc71f4 (diff)
downloadmariadb-git-81a5afb925e9c41f7f43e58e8f36d93b5befd364.tar.gz
fixed cyclic reference bug
mysql-test/r/subselect.result: test of cyclic reference mysql-test/t/subselect.test: test of cyclic reference sql/share/czech/errmsg.txt: new error message sql/share/danish/errmsg.txt: new error message sql/share/dutch/errmsg.txt: new error message sql/share/english/errmsg.txt: new error message sql/share/estonian/errmsg.txt: new error message sql/share/french/errmsg.txt: new error message sql/share/german/errmsg.txt: new error message sql/share/greek/errmsg.txt: new error message sql/share/hungarian/errmsg.txt: new error message sql/share/italian/errmsg.txt: new error message sql/share/japanese/errmsg.txt: new error message sql/share/korean/errmsg.txt: new error message sql/share/norwegian-ny/errmsg.txt: new error message sql/share/norwegian/errmsg.txt: new error message sql/share/polish/errmsg.txt: new error message sql/share/portuguese/errmsg.txt: new error message sql/share/romanian/errmsg.txt: new error message sql/share/russian/errmsg.txt: new error message sql/share/serbian/errmsg.txt: new error message sql/share/slovak/errmsg.txt: new error message sql/share/spanish/errmsg.txt: new error message sql/share/swedish/errmsg.txt: new error message sql/share/ukrainian/errmsg.txt: new error message
Diffstat (limited to 'sql/item_subselect.cc')
-rw-r--r--sql/item_subselect.cc25
1 files changed, 25 insertions, 0 deletions
diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc
index 37c85501b06..1f1944026ef 100644
--- a/sql/item_subselect.cc
+++ b/sql/item_subselect.cc
@@ -95,6 +95,15 @@ bool Item_subselect::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
return res;
}
+bool Item_subselect::check_loop(uint id)
+{
+ DBUG_ENTER("Item_subselect::check_loop");
+ if (Item_result_field::check_loop(id))
+ DBUG_RETURN(1);
+
+ DBUG_RETURN(engine->check_loop(id));
+}
+
void Item_subselect::fix_length_and_dec()
{
engine->fix_length_and_dec();
@@ -228,6 +237,7 @@ subselect_single_select_engine::subselect_single_select_engine(THD *thd,
thd->fatal_error= 1;
my_message(ER_OUT_OF_RESOURCES, ER(ER_OUT_OF_RESOURCES), MYF(0));
}
+ unit->item= item;
this->select_lex= select_lex;
}
@@ -353,3 +363,18 @@ bool subselect_union_engine::depended()
{
return unit->dependent;
}
+
+bool subselect_single_select_engine::check_loop(uint id)
+{
+ DBUG_ENTER("subselect_single_select_engine::check_loop");
+ DBUG_RETURN(join->check_loop(id));
+}
+
+bool subselect_union_engine::check_loop(uint id)
+{
+ DBUG_ENTER("subselect_union_engine::check_loop");
+ for (SELECT_LEX *sl= unit->first_select(); sl; sl= sl->next_select())
+ if (sl->join && sl->join->check_loop(id))
+ DBUG_RETURN(1);
+ DBUG_RETURN(0);
+}