diff options
author | Alexander Barkov <bar@mariadb.org> | 2016-08-08 18:37:02 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2016-08-08 18:37:02 +0400 |
commit | 5269d378dfd576ecd03c82b3e763a98c83235636 (patch) | |
tree | 0cf1b6099235503870553c08ca0b6696566e9392 | |
parent | 1b3430a5ae6b2f6d5c251f1ff07f5c273b1dc175 (diff) | |
download | mariadb-git-5269d378dfd576ecd03c82b3e763a98c83235636.tar.gz |
MDEV-10468 Assertion `nr >= 0.0' failed in Item_sum_std::val_real()
-rw-r--r-- | mysql-test/r/func_group.result | 12 | ||||
-rw-r--r-- | mysql-test/t/func_group.test | 6 | ||||
-rw-r--r-- | sql/item_sum.cc | 2 |
3 files changed, 20 insertions, 0 deletions
diff --git a/mysql-test/r/func_group.result b/mysql-test/r/func_group.result index 0253548236c..38fae2f0a4f 100644 --- a/mysql-test/r/func_group.result +++ b/mysql-test/r/func_group.result @@ -2297,3 +2297,15 @@ FROM t1; C_1 C_2 C_3 NULL 100 200 DROP TABLE t1; +# +# MDEV-10468 Assertion `nr >= 0.0' failed in Item_sum_std::val_real() +# +SELECT STDDEV_POP(f) FROM (SELECT "1e+309" AS f UNION SELECT "-1e+309" AS f) tbl; +STDDEV_POP(f) +1.7976931348623157e308 +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: '1e+309' +Warning 1292 Truncated incorrect DOUBLE value: '-1e+309' +SELECT STDDEV(f) FROM (SELECT 1.7976931348623157e+308 AS f UNION SELECT -1.7976931348623157e+308 AS f) tbl; +STDDEV(f) +1.7976931348623157e308 diff --git a/mysql-test/t/func_group.test b/mysql-test/t/func_group.test index 5824d99afa5..7013009fae7 100644 --- a/mysql-test/t/func_group.test +++ b/mysql-test/t/func_group.test @@ -1590,3 +1590,9 @@ SELECT SUM(data3) AS C_3 FROM t1; DROP TABLE t1; + +--echo # +--echo # MDEV-10468 Assertion `nr >= 0.0' failed in Item_sum_std::val_real() +--echo # +SELECT STDDEV_POP(f) FROM (SELECT "1e+309" AS f UNION SELECT "-1e+309" AS f) tbl; +SELECT STDDEV(f) FROM (SELECT 1.7976931348623157e+308 AS f UNION SELECT -1.7976931348623157e+308 AS f) tbl; diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 445895111ed..02d2875195d 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -1762,6 +1762,8 @@ double Item_sum_std::val_real() { DBUG_ASSERT(fixed == 1); double nr= Item_sum_variance::val_real(); + if (my_isinf(nr)) + return DBL_MAX; DBUG_ASSERT(nr >= 0.0); return sqrt(nr); } |