mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 18:20:07 +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)
|
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);
|
||||||
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()';
|
||||||
|
|
|
@ -2329,11 +2329,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++;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue