summaryrefslogtreecommitdiff
path: root/sql/item_sum.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/item_sum.cc')
-rw-r--r--sql/item_sum.cc21
1 files changed, 3 insertions, 18 deletions
diff --git a/sql/item_sum.cc b/sql/item_sum.cc
index 21f14ae8435..6b00316849e 100644
--- a/sql/item_sum.cc
+++ b/sql/item_sum.cc
@@ -400,20 +400,9 @@ bool Item_sum::collect_outer_ref_processor(uchar *param)
}
-Item_sum::Item_sum(List<Item> &list) :arg_count(list.elements),
+Item_sum::Item_sum(List<Item> &list) :Item_func_or_sum(list),
forced_const(FALSE)
{
- if ((args=(Item**) sql_alloc(sizeof(Item*)*arg_count)))
- {
- uint i=0;
- List_iterator_fast<Item> li(list);
- Item *item;
-
- while ((item=li++))
- {
- args[i++]= item;
- }
- }
if (!(orig_args= (Item **) sql_alloc(sizeof(Item *) * arg_count)))
{
args= NULL;
@@ -429,27 +418,23 @@ Item_sum::Item_sum(List<Item> &list) :arg_count(list.elements),
*/
Item_sum::Item_sum(THD *thd, Item_sum *item):
- Item_result_field(thd, item),
+ Item_func_or_sum(thd, item),
aggr_sel(item->aggr_sel),
nest_level(item->nest_level), aggr_level(item->aggr_level),
quick_group(item->quick_group),
- arg_count(item->arg_count), orig_args(NULL),
+ orig_args(NULL),
used_tables_cache(item->used_tables_cache),
forced_const(item->forced_const)
{
if (arg_count <= 2)
{
- args=tmp_args;
orig_args=tmp_orig_args;
}
else
{
- if (!(args= (Item**) thd->alloc(sizeof(Item*)*arg_count)))
- return;
if (!(orig_args= (Item**) thd->alloc(sizeof(Item*)*arg_count)))
return;
}
- memcpy(args, item->args, sizeof(Item*)*arg_count);
memcpy(orig_args, item->orig_args, sizeof(Item*)*arg_count);
init_aggregator();
with_distinct= item->with_distinct;