summaryrefslogtreecommitdiff
path: root/strings/decimal.c
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2016-06-27 15:41:51 +0200
committerSergei Golubchik <serg@mariadb.org>2016-06-30 11:43:02 +0200
commit23d03a1b1e486da353f20964a1b91068bec209c0 (patch)
tree7fcbd95cf634b24e7f162a9b38559f32e31df6b5 /strings/decimal.c
parent60916a8b9e81b9e9de14fa737848419f45ff899a (diff)
downloadmariadb-git-23d03a1b1e486da353f20964a1b91068bec209c0.tar.gz
parse negative numbers into one item
use Item->neg to convert generate negative Item_num's instead of Item_func_neg(Item_num). Based on the following commit: Author: Monty <monty@mariadb.org> Date: Mon May 30 22:44:00 2016 +0300 Make negative number their own token The negation (-) operator will call Item->neg() one underlying numeric constants and remove itself (like the NOT() function does today for other NOT functions. This simplifies things - -1 is not anymore an expression but a basic_const_item - improves optimizer - DEFAULT -1 doesn't need special handling anymore - When we add DEFAULT expressions, -1 will be treated exactly like 1 - printing of items doesn't anymore put braces around all negative numbers Other things fixed: - Fixed that longlong converted to decimal's has a more appropriate size - Fixed that "-0.0" read into a decimal is interpreted as 0.0
Diffstat (limited to 'strings/decimal.c')
-rw-r--r--strings/decimal.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/strings/decimal.c b/strings/decimal.c
index e64f7634a45..5f451d668e3 100644
--- a/strings/decimal.c
+++ b/strings/decimal.c
@@ -1005,7 +1005,8 @@ static int ull2dec(ulonglong from, decimal_t *to)
error=E_DEC_OVERFLOW;
}
to->frac=0;
- to->intg=intg1*DIG_PER_DEC1;
+ /* intg can't be bigger than number of digits in a ulonglong (20) */
+ to->intg= MY_MIN(intg1*DIG_PER_DEC1, 20);
for (buf=to->buf+intg1; intg1; intg1--)
{