mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
Merge gleb.loc:/home/uchum/work/bk/PA/5.0-opt-31019
into gleb.loc:/home/uchum/work/bk/5.1-opt
This commit is contained in:
commit
88aa7b0a6e
3 changed files with 16 additions and 1 deletions
|
@ -799,3 +799,9 @@ SELECT ROUND(qty,3), dps, ROUND(qty,dps) FROM t1;
|
|||
ROUND(qty,3) dps ROUND(qty,dps)
|
||||
1.133 3 1.133
|
||||
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);
|
|||
SELECT ROUND(qty,3), dps, ROUND(qty,dps) FROM 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()';
|
||||
|
|
|
@ -2329,11 +2329,12 @@ static int do_div_mod(decimal_t *from1, decimal_t *from2,
|
|||
}
|
||||
if (unlikely(intg0+frac0 > to->len))
|
||||
{
|
||||
stop1-=to->len-frac0-intg0;
|
||||
stop1-=frac0+intg0-to->len;
|
||||
frac0=to->len-intg0;
|
||||
to->frac=frac0*DIG_PER_DEC1;
|
||||
error=E_DEC_TRUNCATED;
|
||||
}
|
||||
DBUG_ASSERT(buf0 + (stop1 - start1) <= to->buf + to->len);
|
||||
while (start1 < stop1)
|
||||
*buf0++=*start1++;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue