Skip to content
/ server Public
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
243 changes: 243 additions & 0 deletions mysql-test/main/func_math.result
Original file line number Diff line number Diff line change
Expand Up @@ -3645,3 +3645,246 @@ cast(1 as unsigned) - cast(2 as unsigned)
-1
set sql_mode=default;
# End of 10.5 tests
#
# MDEV-38670 Minus string is converted to -0
#
#
# Constant folding
#
SELECT -(1e0-1e0);
-(1e0-1e0)
0
SELECT -(0e0-0e0);
-(0e0-0e0)
0
SELECT -(ROUND(0.4-0.4));
-(ROUND(0.4-0.4))
0
SELECT -((1e0*0e0));
-((1e0*0e0))
0
# Testing arithmetic operations with signed zero
SELECT -0e1 + 0e1;
-0e1 + 0e1
0
SELECT 0e1 + -0e1;
0e1 + -0e1
0
SELECT -0e1 + -0e1;
-0e1 + -0e1
0
SELECT -0e1 - 0e1;
-0e1 - 0e1
0
SELECT 0e1 - '';
0e1 - ''
0
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: ''
SELECT -0e1/1e1;
-0e1/1e1
0
SELECT -0e1/1e0;
-0e1/1e0
0
SELECT 1e1 * -0e1;
1e1 * -0e1
0
SELECT 0e0*-1e0;
0e0*-1e0
0
SELECT -'';
-''
0
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: ''
SELECT -''/1e1;
-''/1e1
0
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: ''
SELECT ABS(-0e1);
ABS(-0e1)
0
SELECT ABS(-'');
ABS(-'')
0
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: ''
SELECT -0e1 % 1e1;
-0e1 % 1e1
0
SELECT -'' % 1e1;
-'' % 1e1
0
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: ''
#
# Rounding functions must not produce negative zero
#
SELECT ROUND(-0.4);
ROUND(-0.4)
0
SELECT ROUND(-0.1);
ROUND(-0.1)
0
SELECT TRUNCATE(-0.1,0);
TRUNCATE(-0.1,0)
0
SELECT CEILING(-0.1);
CEILING(-0.1)
0
SELECT SIGN(ROUND(-0.4));
SIGN(ROUND(-0.4))
0
SELECT SIGN(ROUND(-0.1));
SIGN(ROUND(-0.1))
0
SELECT SIGN(TRUNCATE(-0.1,0));
SIGN(TRUNCATE(-0.1,0))
0
SELECT SIGN(CEILING(-0.1));
SIGN(CEILING(-0.1))
0
#
# Passthrough functions must preserve signed zero
#
SELECT CONCAT(-'');
CONCAT(-'')
0
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: ''
SELECT CONCAT(0e1-0e1);
CONCAT(0e1-0e1)
0
SELECT CONCAT(ROUND(-0.4));
CONCAT(ROUND(-0.4))
0
SELECT CONCAT(TRUNCATE(-0.9,0));
CONCAT(TRUNCATE(-0.9,0))
0
#
# Aggregate functions
#
SELECT SUM(0e1*-1e1);
SUM(0e1*-1e1)
0
SELECT AVG(0e1*-1e1);
AVG(0e1*-1e1)
0
SELECT MIN(0e1*-1e1);
MIN(0e1*-1e1)
0
SELECT MAX(0e1*-1e1);
MAX(0e1*-1e1)
0
SELECT CONCAT(SUM(0e1*-1e1));
CONCAT(SUM(0e1*-1e1))
0
SELECT CONCAT(AVG(0e1*-1e1));
CONCAT(AVG(0e1*-1e1))
0
#
# Grouping and distinct behavior
#
CREATE TABLE t_signed_zero (a DOUBLE);
INSERT INTO t_signed_zero VALUES (-0e1),(0e1);
SELECT COUNT(DISTINCT a) FROM t_signed_zero;
COUNT(DISTINCT a)
1
SELECT a,COUNT(*) FROM t_signed_zero GROUP BY a;
a COUNT(*)
0 2
DROP TABLE t_signed_zero;
# Testing comparison functions with signed zero
SELECT CASE WHEN -0e1=0e1 THEN 1.0 ELSE 0.0 END;
CASE WHEN -0e1=0e1 THEN 1.0 ELSE 0.0 END
1.0
SELECT CASE WHEN -''=0e1 THEN 1.0 ELSE 0.0 END;
CASE WHEN -''=0e1 THEN 1.0 ELSE 0.0 END
1.0
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: ''
SELECT CASE WHEN -''=-0e1 THEN 1.0 ELSE 0.0 END;
CASE WHEN -''=-0e1 THEN 1.0 ELSE 0.0 END
1.0
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: ''
SELECT CASE WHEN 0e0*-1e0=0e1 THEN 1.0 ELSE 0.0 END;
CASE WHEN 0e0*-1e0=0e1 THEN 1.0 ELSE 0.0 END
1.0
CREATE TABLE t_signed_zero (a DOUBLE);
INSERT INTO t_signed_zero VALUES (0e0*-1e0);
SELECT CONCAT(a) FROM t_signed_zero;
CONCAT(a)
0
DROP TABLE t_signed_zero;
#
# Temporary table materialization
#
SELECT CONCAT(a) FROM (SELECT 0e0*-1e0 AS a) t;
CONCAT(a)
0
SELECT CONCAT(a) FROM (SELECT ROUND(-0.4) AS a) t;
CONCAT(a)
0
SELECT CONCAT(a) FROM (SELECT -(1e0-1e0) AS a) t;
CONCAT(a)
0
#
# Prepared statements
#
PREPARE s FROM 'SELECT CONCAT(-(1e0-1e0))';
EXECUTE s;
CONCAT(-(1e0-1e0))
0
DEALLOCATE PREPARE s;
PREPARE s FROM 'SELECT CONCAT(ROUND(-0.4))';
EXECUTE s;
CONCAT(ROUND(-0.4))
0
DEALLOCATE PREPARE s;
#
# CASE arithmetic mix
#
SELECT CONCAT(CASE WHEN 1 THEN 0e0*-1e0 END);
CONCAT(CASE WHEN 1 THEN 0e0*-1e0 END)
0
SELECT CONCAT(CASE WHEN 0 THEN 1 ELSE 0e0*-1e0 END);
CONCAT(CASE WHEN 0 THEN 1 ELSE 0e0*-1e0 END)
0
SELECT CONCAT(CASE WHEN 1 THEN -(1e0-1e0) END);
CONCAT(CASE WHEN 1 THEN -(1e0-1e0) END)
0
#
# UNION handling
#
SELECT CONCAT(0e0*-1e0)
UNION ALL
SELECT CONCAT(-(1e0-1e0));
CONCAT(0e0*-1e0)
0
0
SELECT CONCAT(ROUND(-0.4))
UNION
SELECT CONCAT(TRUNCATE(-0.1,0));
CONCAT(ROUND(-0.4))
0
#
# String conversion edge cases
#
SELECT SIGN(-'0');
SIGN(-'0')
0
SELECT SIGN(-'0.0');
SIGN(-'0.0')
0
SELECT SIGN(-'00');
SIGN(-'00')
0
SELECT SIGN(-' 0 ');
SIGN(-' 0 ')
0
Warnings:
Note 1292 Truncated incorrect DOUBLE value: ' 0 '
# End of 13 tests
Loading