Loading mysql-test/r/func_group.result +24 −0 Original line number Diff line number Diff line Loading @@ -832,6 +832,30 @@ 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; create table t1 (col1 decimal(16,12)); insert into t1 values (-5.00000000001); insert into t1 values (-5.00000000001); select col1,sum(col1),max(col1),min(col1) from t1 group by col1; col1 sum(col1) max(col1) min(col1) -5.000000000010 -10.000000000020 -5.000000000010 -5.000000000010 delete from t1; insert into t1 values (5.00000000001); insert into t1 values (5.00000000001); select col1,sum(col1),max(col1),min(col1) from t1 group by col1; col1 sum(col1) max(col1) min(col1) 5.000000000010 10.000000000020 5.000000000010 5.000000000010 DROP TABLE t1; CREATE TABLE t1( id int PRIMARY KEY, a int, Loading mysql-test/t/func_group.test +25 −0 Original line number Diff line number Diff line Loading @@ -537,6 +537,31 @@ 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; # # BUG#8465 decimal MIN and MAX return incorrect result # create table t1 (col1 decimal(16,12)); insert into t1 values (-5.00000000001); insert into t1 values (-5.00000000001); select col1,sum(col1),max(col1),min(col1) from t1 group by col1; delete from t1; insert into t1 values (5.00000000001); insert into t1 values (5.00000000001); select col1,sum(col1),max(col1),min(col1) from t1 group by col1; DROP TABLE t1; # # Bug 8893: wrong result for min/max optimization with 2 indexes # Loading strings/decimal.c +3 −0 Original line number Diff line number Diff line Loading @@ -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++; Loading Loading
mysql-test/r/func_group.result +24 −0 Original line number Diff line number Diff line Loading @@ -832,6 +832,30 @@ 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; create table t1 (col1 decimal(16,12)); insert into t1 values (-5.00000000001); insert into t1 values (-5.00000000001); select col1,sum(col1),max(col1),min(col1) from t1 group by col1; col1 sum(col1) max(col1) min(col1) -5.000000000010 -10.000000000020 -5.000000000010 -5.000000000010 delete from t1; insert into t1 values (5.00000000001); insert into t1 values (5.00000000001); select col1,sum(col1),max(col1),min(col1) from t1 group by col1; col1 sum(col1) max(col1) min(col1) 5.000000000010 10.000000000020 5.000000000010 5.000000000010 DROP TABLE t1; CREATE TABLE t1( id int PRIMARY KEY, a int, Loading
mysql-test/t/func_group.test +25 −0 Original line number Diff line number Diff line Loading @@ -537,6 +537,31 @@ 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; # # BUG#8465 decimal MIN and MAX return incorrect result # create table t1 (col1 decimal(16,12)); insert into t1 values (-5.00000000001); insert into t1 values (-5.00000000001); select col1,sum(col1),max(col1),min(col1) from t1 group by col1; delete from t1; insert into t1 values (5.00000000001); insert into t1 values (5.00000000001); select col1,sum(col1),max(col1),min(col1) from t1 group by col1; DROP TABLE t1; # # Bug 8893: wrong result for min/max optimization with 2 indexes # Loading
strings/decimal.c +3 −0 Original line number Diff line number Diff line Loading @@ -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++; Loading