diff options
author | unknown <Sinisa@sinisa.nasamreza.org> | 2002-10-11 21:49:10 +0300 |
---|---|---|
committer | unknown <Sinisa@sinisa.nasamreza.org> | 2002-10-11 21:49:10 +0300 |
commit | e6403485edbc32dee18b246b21ed901d7e8c3225 (patch) | |
tree | 2d7062b28bee0edd940168f445301d0156f904cb /sql/sql_class.cc | |
parent | 08f44a43658eea5034a35b706ae65c678be0160b (diff) | |
download | mariadb-git-e6403485edbc32dee18b246b21ed901d7e8c3225.tar.gz |
SCRUM task
mysql-test/r/select.result:
SELECT ... INTO user_variables
mysql-test/t/select.test:
SELECT ... INTO user_variables
sql/sql_class.cc:
SELECT ... INTO user_variables
sql/sql_class.h:
SELECT ... INTO user_variables
sql/sql_lex.h:
SELECT ... INTO user_variables
sql/sql_parse.cc:
SELECT ... INTO user_variables
sql/sql_yacc.yy:
SELECT ... INTO user_variables
Diffstat (limited to 'sql/sql_class.cc')
-rw-r--r-- | sql/sql_class.cc | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 648e05c1610..02c98c87c4e 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -907,3 +907,47 @@ bool select_exists_subselect::send_data(List<Item> &items) DBUG_RETURN(0); } + +/*************************************************************************** +** Dump of select to variables +***************************************************************************/ + + +bool select_dumpvar::send_data(List<Item> &items) +{ + List_iterator_fast<Item> li(items); + List_iterator_fast<LEX_STRING> gl(current_thd->lex.select_into_var_list); + Item *item; + LEX_STRING *ls; + DBUG_ENTER("send_data"); + + if (row_count++ > 1) + { + my_error(ER_TOO_MANY_ROWS, MYF(0)); + goto err; + } + 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(); + } + DBUG_RETURN(0); +err: + DBUG_RETURN(1); +} + +bool select_dumpvar::send_eof() +{ + if (row_count) + { + ::send_ok(thd,row_count); + return 0; + } + else + { + my_error(ER_EMPTY_QUERY,MYF(0)); + return 1; + } +} |