mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Bug#23411: ... MOD-ing zero returns strange result
The Item_func_mod objects never had maybe_null set, so users had no reason to expect that they can be NULL, and may therefore deduce wrong results. Now, set maybe_null. mysql-test/r/func_test.result: Verify that the predictions are true. mysql-test/t/func_test.test: Verify that the predictions are true. sql/item_func.cc: MOD functions may be NULL.
This commit is contained in:
@@ -108,4 +108,36 @@ select 5.1 mod 3, 5.1 mod -3, -5.1 mod 3, -5.1 mod -3;
|
||||
|
||||
select 5 mod 3, 5 mod -3, -5 mod 3, -5 mod -3;
|
||||
|
||||
#
|
||||
# Bug#23411: The "%" (MOD) operator is not documented; MOD-ing zero returns strange result
|
||||
# Manual: "Division by zero produces a NULL result"
|
||||
#
|
||||
select (12%0) <=> null as '1';
|
||||
select (12%0) is null as '1';
|
||||
select 12%0 as 'NULL';
|
||||
select 12%2 as '0';
|
||||
select 12%NULL as 'NULL';
|
||||
select 12 % null as 'NULL';
|
||||
select null % 12 as 'NULL';
|
||||
select null % 0 as 'NULL';
|
||||
select 0 % null as 'NULL';
|
||||
select null % null as 'NULL';
|
||||
|
||||
select (12 mod 0) <=> null as '1';
|
||||
select (12 mod 0) is null as '1';
|
||||
select 12 mod 0 as 'NULL';
|
||||
select 12 mod 2 as '0';
|
||||
select 12 mod null as 'NULL';
|
||||
select null mod 12 as 'NULL';
|
||||
select null mod 0 as 'NULL';
|
||||
select 0 mod null as 'NULL';
|
||||
select null mod null as 'NULL';
|
||||
|
||||
select mod(12.0, 0) as 'NULL';
|
||||
select mod(12, 0.0) as 'NULL';
|
||||
select mod(12, NULL) as 'NULL';
|
||||
select mod(12.0, NULL) as 'NULL';
|
||||
select mod(NULL, 2) as 'NULL';
|
||||
select mod(NULL, 2.0) as 'NULL';
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
Reference in New Issue
Block a user