diff options
author | Davi Arnaut <Davi.Arnaut@Sun.COM> | 2009-11-02 09:21:39 -0200 |
---|---|---|
committer | Davi Arnaut <Davi.Arnaut@Sun.COM> | 2009-11-02 09:21:39 -0200 |
commit | 9a0836289761d474ec3372f9fe219b1500e80b52 (patch) | |
tree | bb35488e2d55c68d42dd179686f0b5b6949f7055 /sql/item_cmpfunc.cc | |
parent | e5676d0a0b45b1cad652ebae5ec4fbee401b5aca (diff) | |
download | mariadb-git-9a0836289761d474ec3372f9fe219b1500e80b52.tar.gz |
Bug#48370: Absolutely wrong calculations with GROUP BY and decimal fields when using IF
Bug#45261: Crash, stored procedure + decimal
Revert fix for Bug#45261 due to unforeseen bugs.
Diffstat (limited to 'sql/item_cmpfunc.cc')
-rw-r--r-- | sql/item_cmpfunc.cc | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 9fc52bb8876..df92c165f2d 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -2217,7 +2217,7 @@ uint Item_func_ifnull::decimal_precision() const int arg1_int_part= args[1]->decimal_int_part(); int max_int_part= max(arg0_int_part, arg1_int_part); int precision= max_int_part + decimals; - return precision; + return min(precision, DECIMAL_MAX_PRECISION); } @@ -2401,7 +2401,7 @@ uint Item_func_if::decimal_precision() const int arg1_prec= args[1]->decimal_int_part(); int arg2_prec= args[2]->decimal_int_part(); int precision=max(arg1_prec,arg2_prec) + decimals; - return precision; + return min(precision, DECIMAL_MAX_PRECISION); } @@ -2809,7 +2809,7 @@ uint Item_func_case::decimal_precision() const if (else_expr_num != -1) set_if_bigger(max_int_part, args[else_expr_num]->decimal_int_part()); - return max_int_part + decimals; + return min(max_int_part + decimals, DECIMAL_MAX_PRECISION); } |