MDEV-5781 Item_sum_std::val_real(): Assertion `nr >= 0.0' fails on query with STDDEV_POP, ROUND and variable
This commit is contained in:
parent
92bd6801b9
commit
ce3c457e6d
@ -756,3 +756,18 @@ select 5 div 2.0;
|
|||||||
select 5.9 div 2, 1.23456789e3 DIV 2, 1.23456789e9 DIV 2, 1.23456789e19 DIV 2;
|
select 5.9 div 2, 1.23456789e3 DIV 2, 1.23456789e9 DIV 2, 1.23456789e19 DIV 2;
|
||||||
5.9 div 2 1.23456789e3 DIV 2 1.23456789e9 DIV 2 1.23456789e19 DIV 2
|
5.9 div 2 1.23456789e3 DIV 2 1.23456789e9 DIV 2 1.23456789e19 DIV 2
|
||||||
2 617 617283945 6172839450000000000
|
2 617 617283945 6172839450000000000
|
||||||
|
#
|
||||||
|
# End of 5.5 tests
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Start of 10.0 tests
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# MDEV-5781 Item_sum_std::val_real(): Assertion `nr >= 0.0' fails on query with STDDEV_POP, ROUND and variable
|
||||||
|
#
|
||||||
|
SELECT STDDEV_POP(ROUND(0,@A:=2009)) FROM (SELECT 1 UNION SELECT 2) fake_table;
|
||||||
|
STDDEV_POP(ROUND(0,@A:=2009))
|
||||||
|
0.0000
|
||||||
|
#
|
||||||
|
# End of 10.0 tests
|
||||||
|
#
|
||||||
|
@ -559,3 +559,21 @@ select 5.0 div 2.0;
|
|||||||
select 5.0 div 2;
|
select 5.0 div 2;
|
||||||
select 5 div 2.0;
|
select 5 div 2.0;
|
||||||
select 5.9 div 2, 1.23456789e3 DIV 2, 1.23456789e9 DIV 2, 1.23456789e19 DIV 2;
|
select 5.9 div 2, 1.23456789e3 DIV 2, 1.23456789e9 DIV 2, 1.23456789e19 DIV 2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 5.5 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Start of 10.0 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-5781 Item_sum_std::val_real(): Assertion `nr >= 0.0' fails on query with STDDEV_POP, ROUND and variable
|
||||||
|
--echo #
|
||||||
|
SELECT STDDEV_POP(ROUND(0,@A:=2009)) FROM (SELECT 1 UNION SELECT 2) fake_table;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 10.0 tests
|
||||||
|
--echo #
|
||||||
|
@ -2666,6 +2666,9 @@ double my_double_round(double value, longlong dec, bool dec_unsigned,
|
|||||||
volatile double value_div_tmp= value / tmp;
|
volatile double value_div_tmp= value / tmp;
|
||||||
volatile double value_mul_tmp= value * tmp;
|
volatile double value_mul_tmp= value * tmp;
|
||||||
|
|
||||||
|
if (!dec_negative && my_isinf(tmp)) // "dec" is too large positive number
|
||||||
|
return value;
|
||||||
|
|
||||||
if (dec_negative && my_isinf(tmp))
|
if (dec_negative && my_isinf(tmp))
|
||||||
tmp2= 0.0;
|
tmp2= 0.0;
|
||||||
else if (!dec_negative && my_isinf(value_mul_tmp))
|
else if (!dec_negative && my_isinf(value_mul_tmp))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user