diff options
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/func_group.result | 16 | ||||
-rw-r--r-- | mysql-test/t/func_group.test | 12 |
2 files changed, 28 insertions, 0 deletions
diff --git a/mysql-test/r/func_group.result b/mysql-test/r/func_group.result index 652633b09d1..023b0091357 100644 --- a/mysql-test/r/func_group.result +++ b/mysql-test/r/func_group.result @@ -2298,5 +2298,21 @@ id avg cast_avg 2 9223372036854775807.0000 9223372036854775807 DROP TABLE t1; # +# MDEV-8921 Wrong result for CAST(AVG(double_column) AS SIGNED) +# +CREATE TABLE t1 (id INT, a DOUBLE); +INSERT INTO t1 VALUES (1,0x7FFFFFFFFFFFFFFF),(2,0x7FFFFFFFFFFFFFFF); +SELECT id, AVG(a) AS avg, CAST(MIN(a) AS SIGNED) AS cast_min,CAST(AVG(a) AS SIGNED) AS cast_avg FROM t1 GROUP BY id HAVING avg!=123 ORDER BY id; +id avg cast_min cast_avg +1 9.223372036854776e18 9223372036854775807 9223372036854775807 +2 9.223372036854776e18 9223372036854775807 9223372036854775807 +DROP TABLE t1; +CREATE TABLE t1 (a DOUBLE); +INSERT INTO t1 VALUES (0x7FFFFFFFFFFFFFFF); +SELECT MIN(a), SUM(a), CAST(SUM(a) AS SIGNED), CAST(AVG(a) AS SIGNED) FROM t1; +MIN(a) SUM(a) CAST(SUM(a) AS SIGNED) CAST(AVG(a) AS SIGNED) +9.223372036854776e18 9.223372036854776e18 9223372036854775807 9223372036854775807 +DROP TABLE t1; +# # End of 10.1 tests # diff --git a/mysql-test/t/func_group.test b/mysql-test/t/func_group.test index 2497e4850b7..9fedfa8bc72 100644 --- a/mysql-test/t/func_group.test +++ b/mysql-test/t/func_group.test @@ -1582,5 +1582,17 @@ SELECT id, AVG(a) AS avg, CAST(AVG(a) AS SIGNED) AS cast_avg FROM t1 GROUP BY id DROP TABLE t1; --echo # +--echo # MDEV-8921 Wrong result for CAST(AVG(double_column) AS SIGNED) +--echo # +CREATE TABLE t1 (id INT, a DOUBLE); +INSERT INTO t1 VALUES (1,0x7FFFFFFFFFFFFFFF),(2,0x7FFFFFFFFFFFFFFF); +SELECT id, AVG(a) AS avg, CAST(MIN(a) AS SIGNED) AS cast_min,CAST(AVG(a) AS SIGNED) AS cast_avg FROM t1 GROUP BY id HAVING avg!=123 ORDER BY id; +DROP TABLE t1; +CREATE TABLE t1 (a DOUBLE); +INSERT INTO t1 VALUES (0x7FFFFFFFFFFFFFFF); +SELECT MIN(a), SUM(a), CAST(SUM(a) AS SIGNED), CAST(AVG(a) AS SIGNED) FROM t1; +DROP TABLE t1; + +--echo # --echo # End of 10.1 tests --echo # |