summaryrefslogtreecommitdiff
path: root/sql/sql_class.cc
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2002-12-31 12:48:00 +0200
committerunknown <bell@sanja.is.com.ua>2002-12-31 12:48:00 +0200
commita83a0d4b328b916cffaf8165fd3d9e377ec1a8f3 (patch)
treedcab9c7a14647c8bae436c6ab8c74595fc318485 /sql/sql_class.cc
parent43d8212eec25d4def258b6a28a14978a5b79ea4c (diff)
parentdd9a10109855bf9f7fc55e40b910c5575327dbd4 (diff)
downloadmariadb-git-a83a0d4b328b916cffaf8165fd3d9e377ec1a8f3.tar.gz
Merge sanja.is.com.ua:/home/bell/mysql/mysql-4.1
into sanja.is.com.ua:/home/bell/mysql/work-row-4.1 mysql-test/r/subselect.result: Auto merged mysql-test/t/subselect.test: Auto merged sql/item.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_yacc.yy: Auto merged
Diffstat (limited to 'sql/sql_class.cc')
-rw-r--r--sql/sql_class.cc35
1 files changed, 6 insertions, 29 deletions
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index e0f85b65d27..3ca1f4827ff 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -917,10 +917,10 @@ select_subselect::select_subselect(Item_subselect *item)
this->item=item;
}
-bool select_singleval_subselect::send_data(List<Item> &items)
+bool select_singlerow_subselect::send_data(List<Item> &items)
{
- DBUG_ENTER("select_singleval_subselect::send_data");
- Item_singleval_subselect *it= (Item_singleval_subselect *)item;
+ DBUG_ENTER("select_singlerow_subselect::send_data");
+ Item_singlerow_subselect *it= (Item_singlerow_subselect *)item;
if (it->assigned())
{
my_message(ER_SUBSELECT_NO_1_ROW, ER(ER_SUBSELECT_NO_1_ROW), MYF(0));
@@ -932,32 +932,9 @@ bool select_singleval_subselect::send_data(List<Item> &items)
DBUG_RETURN(0);
}
List_iterator_fast<Item> li(items);
- Item *val_item= li++; // Only one (single value subselect)
- /*
- Following val() call have to be first, because function AVG() & STD()
- calculate value on it & determinate "is it NULL?".
- */
- it->real_value= val_item->val_result();
- if ((it->null_value= val_item->null_value))
- {
- it->reset();
- }
- else
- {
- it->max_length= val_item->max_length;
- it->decimals= val_item->decimals;
- it->set_charset(val_item->charset());
- it->int_value= val_item->val_int_result();
- String *s= val_item->str_result(&it->string_value);
- if (s != &it->string_value)
- {
- it->string_value.set(*s, 0, s->length());
- }
- // TODO: remove when correct charset handling appeared for Item
- it->str_value.set(*s, 0, s->length()); // store charset
-
- it->res_type= val_item->result_type();
- }
+ Item *val_item;
+ for (uint i= 0; (val_item= li++); i++)
+ it->store(i, val_item);
it->assigned(1);
DBUG_RETURN(0);
}