Commit a7d92c98 authored by kaa@kaamos.(none)'s avatar kaa@kaamos.(none)
Browse files

Merge kaamos.(none):/data/src/opt/bug34512/my50

into  kaamos.(none):/data/src/opt/mysql-5.0-opt
parents 3bff5b59 4ca61aa3
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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
+10 −0
Original line number Diff line number Diff line
@@ -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
+9 −1
Original line number Diff line number Diff line
@@ -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;