summaryrefslogtreecommitdiff
path: root/sql/item_sum.h
diff options
context:
space:
mode:
authorunknown <ramil@mysql.com>2005-11-30 11:17:25 +0400
committerunknown <ramil@mysql.com>2005-11-30 11:17:25 +0400
commit490a1e2855078d661b584ef690a05ca4defceebd (patch)
tree52f17b933d9481353fbb7a4d8bfe99acc842c9c9 /sql/item_sum.h
parentd54359ffdada0d949931c7cbe1ba816c3724d49f (diff)
downloadmariadb-git-490a1e2855078d661b584ef690a05ca4defceebd.tar.gz
Addition to fix for bug #12956: cast make differ rounding.
- use rint() in some other val_int() methods as well.
Diffstat (limited to 'sql/item_sum.h')
-rw-r--r--sql/item_sum.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/sql/item_sum.h b/sql/item_sum.h
index 87cc248e5e4..2c2bcedab9b 100644
--- a/sql/item_sum.h
+++ b/sql/item_sum.h
@@ -126,7 +126,7 @@ public:
longlong val_int()
{
DBUG_ASSERT(fixed == 1);
- return (longlong) val_real(); /* Real as default */
+ return (longlong) rint(val_real()); /* Real as default */
}
String *val_str(String*str);
my_decimal *val_decimal(my_decimal *);
@@ -392,7 +392,7 @@ public:
bool add();
double val_real();
// In SPs we might force the "wrong" type with select into a declare variable
- longlong val_int() { return (longlong)val_real(); }
+ longlong val_int() { return (longlong) rint(val_real()); }
my_decimal *val_decimal(my_decimal *);
String *val_str(String *str);
void reset_field();
@@ -421,7 +421,7 @@ public:
enum Type type() const {return FIELD_VARIANCE_ITEM; }
double val_real();
longlong val_int()
- { /* can't be fix_fields()ed */ return (longlong) val_real(); }
+ { /* can't be fix_fields()ed */ return (longlong) rint(val_real()); }
String *val_str(String*);
my_decimal *val_decimal(my_decimal *);
bool is_null() { (void) val_int(); return null_value; }
@@ -699,7 +699,7 @@ class Item_sum_udf_float :public Item_udf_sum
longlong val_int()
{
DBUG_ASSERT(fixed == 1);
- return (longlong) Item_sum_udf_float::val_real();
+ return (longlong) rint(Item_sum_udf_float::val_real());
}
double val_real();
String *val_str(String*str);