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.cc13
1 files changed, 4 insertions, 9 deletions
diff --git a/sql/item_sum.cc b/sql/item_sum.cc
index 5c2f8ab27b7..a47f3ad941d 100644
--- a/sql/item_sum.cc
+++ b/sql/item_sum.cc
@@ -1129,7 +1129,7 @@ Item_sum_num::fix_fields(THD *thd, Item **ref)
maybe_null= sum_func() != COUNT_FUNC;
for (uint i=0 ; i < arg_count ; i++)
{
- if (args[i]->fix_fields(thd, args + i) || args[i]->check_cols(1))
+ if (args[i]->fix_fields_if_needed_for_scalar(thd, &args[i]))
return TRUE;
set_if_bigger(decimals, args[i]->decimals);
m_with_subquery|= args[i]->with_subquery();
@@ -1156,14 +1156,11 @@ Item_sum_hybrid::fix_fields(THD *thd, Item **ref)
DBUG_ENTER("Item_sum_hybrid::fix_fields");
DBUG_ASSERT(fixed == 0);
- Item *item= args[0];
-
if (init_sum_func_check(thd))
DBUG_RETURN(TRUE);
// 'item' can be changed during fix_fields
- if ((!item->fixed && item->fix_fields(thd, args)) ||
- (item= args[0])->check_cols(1))
+ if (args[0]->fix_fields_if_needed_for_scalar(thd, &args[0]))
DBUG_RETURN(TRUE);
m_with_subquery= args[0]->with_subquery();
@@ -1298,7 +1295,7 @@ Item_sum_sp::fix_fields(THD *thd, Item **ref)
for (uint i= 0 ; i < arg_count ; i++)
{
- if (args[i]->fix_fields(thd, args + i) || args[i]->check_cols(1))
+ if (args[i]->fix_fields_if_needed_for_scalar(thd, &args[i]))
return TRUE;
set_if_bigger(decimals, args[i]->decimals);
m_with_subquery|= args[i]->with_subquery();
@@ -3909,9 +3906,7 @@ Item_func_group_concat::fix_fields(THD *thd, Item **ref)
for (i=0 ; i < arg_count ; i++)
{
- if ((!args[i]->fixed &&
- args[i]->fix_fields(thd, args + i)) ||
- args[i]->check_cols(1))
+ if (args[i]->fix_fields_if_needed_for_scalar(thd, &args[i]))
return TRUE;
m_with_subquery|= args[i]->with_subquery();
with_param|= args[i]->with_param;