mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Fix for bug #8464 (AVG returns incorrect result)
Actually problem was not in AVG function, but in SUM before the AVG in the query.
This commit is contained in:
@ -832,3 +832,13 @@ id stddev_pop(value1) var_pop(value1) stddev_samp(value1) var_samp(value1)
|
||||
1 0.816497 0.666667 1.000000 1.000000
|
||||
2 1.118034 1.250000 1.290994 1.666667
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (col1 decimal(16,12));
|
||||
INSERT INTO t1 VALUES (-5.00000000001),(-5.00000000002),(-5.00000000003),(-5.00000000000),(-5.00000000001),(-5.00000000002);
|
||||
insert into t1 select * from t1;
|
||||
select col1,count(col1),sum(col1),avg(col1) from t1 group by col1;
|
||||
col1 count(col1) sum(col1) avg(col1)
|
||||
-5.000000000030 2 -10.000000000060 -5.0000000000300000
|
||||
-5.000000000020 4 -20.000000000080 -5.0000000000200000
|
||||
-5.000000000010 4 -20.000000000040 -5.0000000000100000
|
||||
-5.000000000000 2 -10.000000000000 -5.0000000000000000
|
||||
DROP TABLE t1;
|
||||
|
@ -537,3 +537,14 @@ CREATE TABLE t1 (id int(11),value1 float(10,2));
|
||||
INSERT INTO t1 VALUES (1,0.00),(1,1.00), (1,2.00), (2,10.00), (2,11.00), (2,12.00), (2,13.00);
|
||||
select id, stddev_pop(value1), var_pop(value1), stddev_samp(value1), var_samp(value1) from t1 group by id;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# BUG#8464 decimal AVG returns incorrect result
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (col1 decimal(16,12));
|
||||
INSERT INTO t1 VALUES (-5.00000000001),(-5.00000000002),(-5.00000000003),(-5.00000000000),(-5.00000000001),(-5.00000000002);
|
||||
insert into t1 select * from t1;
|
||||
select col1,count(col1),sum(col1),avg(col1) from t1 group by col1;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
@ -1199,7 +1199,10 @@ int decimal2bin(decimal *from, char *to, int precision, int frac)
|
||||
else if (fsize0 > fsize1 && frac1x)
|
||||
{
|
||||
if (frac0 == frac1)
|
||||
{
|
||||
frac1x=frac0x;
|
||||
fsize0= fsize1;
|
||||
}
|
||||
else
|
||||
{
|
||||
frac1++;
|
||||
|
Reference in New Issue
Block a user