@@ -704,11 +704,7 @@ class Item_sum_num :public Item_sum
704
704
Item_sum_num (THD *thd, Item_sum_num *item):
705
705
Item_sum (thd, item),is_evaluated(item->is_evaluated) {}
706
706
bool fix_fields (THD *, Item **);
707
- longlong val_int ()
708
- {
709
- DBUG_ASSERT (fixed == 1 );
710
- return (longlong) rint (val_real ()); /* Real as default */
711
- }
707
+ longlong val_int () { return val_int_from_real (); /* Real as default */ }
712
708
String *val_str (String*str);
713
709
my_decimal *val_decimal (my_decimal *);
714
710
void reset_field ();
@@ -843,7 +839,7 @@ class Item_sum_avg :public Item_sum_sum
843
839
bool add ();
844
840
double val_real ();
845
841
// In SPs we might force the "wrong" type with select into a declare variable
846
- longlong val_int () { return (longlong) rint ( val_real () ); }
842
+ longlong val_int () { return val_int_from_real ( ); }
847
843
my_decimal *val_decimal (my_decimal *);
848
844
String *val_str (String *str);
849
845
void reset_field ();
@@ -1093,6 +1089,7 @@ class Item_sum_field :public Item
1093
1089
decimals= item->decimals ;
1094
1090
max_length= item->max_length ;
1095
1091
unsigned_flag= item->unsigned_flag ;
1092
+ fixed= true ;
1096
1093
}
1097
1094
table_map used_tables () const { return (table_map) 1L ; }
1098
1095
Field *get_tmp_table_field () { DBUG_ASSERT (0 ); return NULL ; }
@@ -1127,7 +1124,7 @@ class Item_avg_field_double :public Item_avg_field
1127
1124
{ }
1128
1125
enum_field_types field_type () const { return MYSQL_TYPE_DOUBLE; }
1129
1126
enum Item_result result_type () const { return REAL_RESULT; }
1130
- longlong val_int () { return (longlong) rint ( val_real () ); }
1127
+ longlong val_int () { return val_int_from_real ( ); }
1131
1128
my_decimal *val_decimal (my_decimal *dec) { return val_decimal_from_real (dec); }
1132
1129
String *val_str (String *str) { return val_string_from_real (str); }
1133
1130
double val_real ();
@@ -1162,8 +1159,7 @@ class Item_variance_field :public Item_sum_field
1162
1159
{ }
1163
1160
enum Type type () const {return FIELD_VARIANCE_ITEM; }
1164
1161
double val_real ();
1165
- longlong val_int ()
1166
- { /* can't be fix_fields()ed */ return (longlong) rint (val_real ()); }
1162
+ longlong val_int () { return val_int_from_real (); }
1167
1163
String *val_str (String *str)
1168
1164
{ return val_string_from_real (str); }
1169
1165
my_decimal *val_decimal (my_decimal *dec_buf)
@@ -1246,11 +1242,7 @@ class Item_sum_udf_float :public Item_udf_sum
1246
1242
Item_udf_sum (thd, udf_arg, list) {}
1247
1243
Item_sum_udf_float (THD *thd, Item_sum_udf_float *item)
1248
1244
:Item_udf_sum(thd, item) {}
1249
- longlong val_int ()
1250
- {
1251
- DBUG_ASSERT (fixed == 1 );
1252
- return (longlong) rint (Item_sum_udf_float::val_real ());
1253
- }
1245
+ longlong val_int () { return val_int_from_real (); }
1254
1246
double val_real ();
1255
1247
String *val_str (String*str);
1256
1248
my_decimal *val_decimal (my_decimal *);
0 commit comments