diff options
-rw-r--r-- | sql/item_subselect.cc | 5 | ||||
-rw-r--r-- | sql/item_subselect.h | 2 | ||||
-rw-r--r-- | sql/sql_class.cc | 4 |
3 files changed, 7 insertions, 4 deletions
diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index e18c8d78830..fc0228455ff 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -36,7 +36,7 @@ SUBSELECT TODO: #include "sql_select.h" Item_subselect::Item_subselect(THD *thd, st_select_lex *select_lex): - executed(0), optimized(0), error(0) + assigned(0), executed(0), optimized(0), error(0) { DBUG_ENTER("Item_subselect::Item_subselect"); DBUG_PRINT("subs", ("select_lex 0x%xl", (long) select_lex)); @@ -141,7 +141,7 @@ int Item_subselect::exec() return 1; } assign_null(); - executed= 0; + executed= assigned= 0; } if (!executed) { @@ -149,6 +149,7 @@ int Item_subselect::exec() join->thd->lex.select= select_lex; join->exec(); join->thd->lex.select= save_select; + executed= 1; return join->error; } return 0; diff --git a/sql/item_subselect.h b/sql/item_subselect.h index e27f14fb83d..c6963df2d53 100644 --- a/sql/item_subselect.h +++ b/sql/item_subselect.h @@ -31,6 +31,7 @@ class Item_subselect :public Item protected: longlong int_value; double real_value; + my_bool assigned; /* value already assigned to subselect */ my_bool executed; /* simple subselect is executed */ my_bool optimized; /* simple subselect is optimized */ my_bool error; /* error in query */ @@ -59,6 +60,7 @@ public: max_length= item->max_length; decimals= item->decimals; res_type= item->res_type; + assigned= item->assigned; executed= item->executed; select_lex= item->select_lex; join= item->join; diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 0fb15c4342f..cd548f36cff 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -785,7 +785,7 @@ select_subselect::select_subselect(Item_subselect *item) bool select_subselect::send_data(List<Item> &items) { DBUG_ENTER("select_subselect::send_data"); - if (item->executed){ + if (item->assigned){ my_printf_error(ER_SUBSELECT_NO_1_ROW, ER(ER_SUBSELECT_NO_1_ROW), MYF(0)); DBUG_RETURN(1); } @@ -812,6 +812,6 @@ bool select_subselect::send_data(List<Item> &items) item->int_value= val_item->val_int(); item->res_type= val_item->result_type(); } - item->executed= 1; + item->assigned= 1; DBUG_RETURN(0); } |