Loading mysql-test/r/func_group.result +6 −0 Original line number Diff line number Diff line Loading @@ -1419,4 +1419,10 @@ Note 1003 select (`test`.`t1`.`a` + 1) AS `y` from `test`.`t1` group by (`test`. DROP VIEW v1; DROP TABLE t1; SET SQL_MODE=DEFAULT; CREATE TABLE t1(a DOUBLE); INSERT INTO t1 VALUES (10), (20); SELECT AVG(a), CAST(AVG(a) AS DECIMAL) FROM t1; AVG(a) CAST(AVG(a) AS DECIMAL) 15 15 DROP TABLE t1; End of 5.0 tests mysql-test/t/func_group.test +10 −0 Original line number Diff line number Diff line Loading @@ -916,5 +916,15 @@ DROP VIEW v1; DROP TABLE t1; SET SQL_MODE=DEFAULT; # # Bug #34512: CAST( AVG( double ) AS DECIMAL ) returns wrong results # CREATE TABLE t1(a DOUBLE); INSERT INTO t1 VALUES (10), (20); SELECT AVG(a), CAST(AVG(a) AS DECIMAL) FROM t1; DROP TABLE t1; ### --echo End of 5.0 tests sql/item_sum.cc +9 −1 Original line number Diff line number Diff line Loading @@ -1206,7 +1206,15 @@ my_decimal *Item_sum_avg::val_decimal(my_decimal *val) null_value=1; return NULL; } sum_dec= Item_sum_sum::val_decimal(&sum_buff); /* For non-DECIMAL hybrid_type the division will be done in Item_sum_avg::val_real(). */ if (hybrid_type != DECIMAL_RESULT) return val_decimal_from_real(val); sum_dec= dec_buffs + curr_dec_buff; int2my_decimal(E_DEC_FATAL_ERROR, count, 0, &cnt); my_decimal_div(E_DEC_FATAL_ERROR, val, sum_dec, &cnt, prec_increment); return val; Loading Loading
mysql-test/r/func_group.result +6 −0 Original line number Diff line number Diff line Loading @@ -1419,4 +1419,10 @@ Note 1003 select (`test`.`t1`.`a` + 1) AS `y` from `test`.`t1` group by (`test`. DROP VIEW v1; DROP TABLE t1; SET SQL_MODE=DEFAULT; CREATE TABLE t1(a DOUBLE); INSERT INTO t1 VALUES (10), (20); SELECT AVG(a), CAST(AVG(a) AS DECIMAL) FROM t1; AVG(a) CAST(AVG(a) AS DECIMAL) 15 15 DROP TABLE t1; End of 5.0 tests
mysql-test/t/func_group.test +10 −0 Original line number Diff line number Diff line Loading @@ -916,5 +916,15 @@ DROP VIEW v1; DROP TABLE t1; SET SQL_MODE=DEFAULT; # # Bug #34512: CAST( AVG( double ) AS DECIMAL ) returns wrong results # CREATE TABLE t1(a DOUBLE); INSERT INTO t1 VALUES (10), (20); SELECT AVG(a), CAST(AVG(a) AS DECIMAL) FROM t1; DROP TABLE t1; ### --echo End of 5.0 tests
sql/item_sum.cc +9 −1 Original line number Diff line number Diff line Loading @@ -1206,7 +1206,15 @@ my_decimal *Item_sum_avg::val_decimal(my_decimal *val) null_value=1; return NULL; } sum_dec= Item_sum_sum::val_decimal(&sum_buff); /* For non-DECIMAL hybrid_type the division will be done in Item_sum_avg::val_real(). */ if (hybrid_type != DECIMAL_RESULT) return val_decimal_from_real(val); sum_dec= dec_buffs + curr_dec_buff; int2my_decimal(E_DEC_FATAL_ERROR, count, 0, &cnt); my_decimal_div(E_DEC_FATAL_ERROR, val, sum_dec, &cnt, prec_increment); return val; Loading