mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
some fixes for SELECT INTO @vars ..
This commit is contained in:
@ -916,31 +916,41 @@ bool select_exists_subselect::send_data(List<Item> &items)
|
||||
/***************************************************************************
|
||||
** Dump of select to variables
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
bool select_dumpvar::send_data(List<Item> &items)
|
||||
int select_dumpvar::prepare(List<Item> &list, SELECT_LEX_UNIT *u)
|
||||
{
|
||||
List_iterator_fast<Item> li(items);
|
||||
List_iterator_fast<LEX_STRING> gl(current_thd->lex.select_into_var_list);
|
||||
List_iterator_fast<Item> li(list);
|
||||
List_iterator_fast<LEX_STRING> gl(var_list);
|
||||
Item *item;
|
||||
LEX_STRING *ls;
|
||||
DBUG_ENTER("send_data");
|
||||
|
||||
if (row_count++ > 1)
|
||||
if (var_list.elements != list.elements)
|
||||
{
|
||||
my_error(ER_TOO_MANY_ROWS, MYF(0));
|
||||
goto err;
|
||||
my_error(ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT, MYF(0));
|
||||
return 1;
|
||||
}
|
||||
while ((item=li++) && (ls=gl++))
|
||||
while ((item=li++))
|
||||
{
|
||||
ls= gl++;
|
||||
Item_func_set_user_var *xx = new Item_func_set_user_var(*ls,item);
|
||||
xx->fix_fields(current_thd,(TABLE_LIST*) current_thd->lex.select_lex.table_list.first,&item);
|
||||
xx->fix_length_and_dec();
|
||||
xx->update();
|
||||
vars.push_back(xx);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
bool select_dumpvar::send_data(List<Item> &items)
|
||||
{
|
||||
List_iterator_fast<Item_func_set_user_var> li(vars);
|
||||
Item_func_set_user_var *xx;
|
||||
DBUG_ENTER("send_data");
|
||||
|
||||
if (row_count++)
|
||||
{
|
||||
my_error(ER_TOO_MANY_ROWS, MYF(0));
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
while ((xx=li++))
|
||||
xx->update();
|
||||
DBUG_RETURN(0);
|
||||
err:
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
bool select_dumpvar::send_eof()
|
||||
|
Reference in New Issue
Block a user