1
0
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:
Sinisa@sinisa.nasamreza.org
2002-10-16 16:55:08 +03:00
parent 51e98da24a
commit cd5ff6301e
5 changed files with 119 additions and 106 deletions

View File

@ -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()