summaryrefslogtreecommitdiff
path: root/sql/sql_select.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_select.cc')
-rw-r--r--sql/sql_select.cc16
1 files changed, 15 insertions, 1 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 31bb8ffc032..8c96976c841 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -200,7 +200,8 @@ void relink_tables(SELECT_LEX *select_lex)
for (TABLE_LIST *cursor= (TABLE_LIST *) select_lex->table_list.first;
cursor;
cursor=cursor->next)
- cursor->table= cursor->table_list->table;
+ if (cursor->table_list)
+ cursor->table= cursor->table_list->table;
}
@@ -313,6 +314,19 @@ JOIN::prepare(Item ***rref_pointer_array,
having->split_sum_func(ref_pointer_array, all_fields);
}
+ // Is it subselect
+ {
+ Item_subselect *subselect;
+ if ((subselect= select_lex->master_unit()->item) &&
+ !select_lex->fake_select)
+ {
+ Item_subselect::trans_res res;
+ if ((res= subselect->select_transformer(thd, this)) !=
+ Item_subselect::OK)
+ DBUG_RETURN((res == Item_subselect::ERROR));
+ }
+ }
+
if (setup_ftfuncs(select_lex)) /* should be after having->fix_fields */
DBUG_RETURN(-1);