Commit 18ecc5bb authored by gshchepa/uchum@gleb.loc's avatar gshchepa/uchum@gleb.loc

Merge gleb.loc:/home/uchum/work/bk/PA/5.0-opt-31019

into  gleb.loc:/home/uchum/work/bk/5.0-opt
parents f0d5ed81 b8b199af
...@@ -799,3 +799,9 @@ SELECT ROUND(qty,3), dps, ROUND(qty,dps) FROM t1; ...@@ -799,3 +799,9 @@ SELECT ROUND(qty,3), dps, ROUND(qty,dps) FROM t1;
ROUND(qty,3) dps ROUND(qty,dps) ROUND(qty,3) dps ROUND(qty,dps)
1.133 3 1.133 1.133 3 1.133
DROP TABLE t1; DROP TABLE t1;
SELECT 1 % .123456789123456789123456789123456789123456789123456789123456789123456789123456789 AS '%';
%
0.012345687012345687012345687012345687012345687012345687012345687012345687000000000
SELECT MOD(1, .123456789123456789123456789123456789123456789123456789123456789123456789123456789) AS 'MOD()';
MOD()
0.012345687012345687012345687012345687012345687012345687012345687012345687000000000
...@@ -408,3 +408,11 @@ INSERT INTO t1 VALUES (1.1325,3); ...@@ -408,3 +408,11 @@ INSERT INTO t1 VALUES (1.1325,3);
SELECT ROUND(qty,3), dps, ROUND(qty,dps) FROM t1; SELECT ROUND(qty,3), dps, ROUND(qty,dps) FROM t1;
DROP TABLE t1; DROP TABLE t1;
#
# Bug#31019: MOD() function and operator crashes MySQL when
# divisor is very long and < 1
#
SELECT 1 % .123456789123456789123456789123456789123456789123456789123456789123456789123456789 AS '%';
SELECT MOD(1, .123456789123456789123456789123456789123456789123456789123456789123456789123456789) AS 'MOD()';
...@@ -2323,11 +2323,12 @@ static int do_div_mod(decimal_t *from1, decimal_t *from2, ...@@ -2323,11 +2323,12 @@ static int do_div_mod(decimal_t *from1, decimal_t *from2,
} }
if (unlikely(intg0+frac0 > to->len)) if (unlikely(intg0+frac0 > to->len))
{ {
stop1-=to->len-frac0-intg0; stop1-=frac0+intg0-to->len;
frac0=to->len-intg0; frac0=to->len-intg0;
to->frac=frac0*DIG_PER_DEC1; to->frac=frac0*DIG_PER_DEC1;
error=E_DEC_TRUNCATED; error=E_DEC_TRUNCATED;
} }
DBUG_ASSERT(buf0 + (stop1 - start1) <= to->buf + to->len);
while (start1 < stop1) while (start1 < stop1)
*buf0++=*start1++; *buf0++=*start1++;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment