Loading mysql-test/r/type_newdecimal.result +3 −0 Original line number Diff line number Diff line Loading @@ -1465,4 +1465,7 @@ Error 1264 Out of range value adjusted for column 'cast(a as DECIMAL(3,2))' at r Error 1264 Out of range value adjusted for column 'cast(a as DECIMAL(3,2))' at row 1 Error 1264 Out of range value adjusted for column 'cast(a as DECIMAL(3,2))' at row 1 Error 1264 Out of range value adjusted for column 'cast(a as DECIMAL(3,2))' at row 1 SELECT 1.000000000000 * 99.999999999998 / 100 a,1.000000000000 * (99.999999999998 / 100) b; a b 0.9999999999999800000000000000 0.9999999999999800000000000000 End of 5.0 tests mysql-test/t/type_newdecimal.test +5 −0 Original line number Diff line number Diff line Loading @@ -1149,4 +1149,9 @@ select cast(a as DECIMAL(3,2)), count(*) UNION select 12.1234 ) t group by 1; # # Bug #27984 Long Decimal Maths produces truncated results # SELECT 1.000000000000 * 99.999999999998 / 100 a,1.000000000000 * (99.999999999998 / 100) b; --echo End of 5.0 tests strings/decimal.c +2 −1 Original line number Diff line number Diff line Loading @@ -1517,9 +1517,10 @@ decimal_round(decimal_t *from, decimal_t *to, int scale, dec1 *p0= buf0+intg0+max(frac1, frac0); dec1 *p1= buf1+intg1+max(frac1, frac0); to->buf[0]= 0; while (buf0 < p0) *(--p1) = *(--p0); if (unlikely(intg1 > intg0)) to->buf[0]= 0; intg0= intg1; buf0=to->buf; Loading Loading
mysql-test/r/type_newdecimal.result +3 −0 Original line number Diff line number Diff line Loading @@ -1465,4 +1465,7 @@ Error 1264 Out of range value adjusted for column 'cast(a as DECIMAL(3,2))' at r Error 1264 Out of range value adjusted for column 'cast(a as DECIMAL(3,2))' at row 1 Error 1264 Out of range value adjusted for column 'cast(a as DECIMAL(3,2))' at row 1 Error 1264 Out of range value adjusted for column 'cast(a as DECIMAL(3,2))' at row 1 SELECT 1.000000000000 * 99.999999999998 / 100 a,1.000000000000 * (99.999999999998 / 100) b; a b 0.9999999999999800000000000000 0.9999999999999800000000000000 End of 5.0 tests
mysql-test/t/type_newdecimal.test +5 −0 Original line number Diff line number Diff line Loading @@ -1149,4 +1149,9 @@ select cast(a as DECIMAL(3,2)), count(*) UNION select 12.1234 ) t group by 1; # # Bug #27984 Long Decimal Maths produces truncated results # SELECT 1.000000000000 * 99.999999999998 / 100 a,1.000000000000 * (99.999999999998 / 100) b; --echo End of 5.0 tests
strings/decimal.c +2 −1 Original line number Diff line number Diff line Loading @@ -1517,9 +1517,10 @@ decimal_round(decimal_t *from, decimal_t *to, int scale, dec1 *p0= buf0+intg0+max(frac1, frac0); dec1 *p1= buf1+intg1+max(frac1, frac0); to->buf[0]= 0; while (buf0 < p0) *(--p1) = *(--p0); if (unlikely(intg1 > intg0)) to->buf[0]= 0; intg0= intg1; buf0=to->buf; Loading