--echo # --echo # Start of 10.5 tests --echo # --echo # --echo # MDEV-20305 Data loss on DOUBLE and DECIMAL conversion to INT --echo # DELIMITER $$; CREATE PROCEDURE p1(type VARCHAR(64), val VARCHAR(64)) BEGIN EXECUTE IMMEDIATE CONCAT('CREATE TABLE t1 (a ', type, ')'); SHOW CREATE TABLE t1; EXECUTE IMMEDIATE CONCAT('INSERT INTO t1 VALUES (', val, ')'); SELECT a, ~a, a & 18446744073709551615, 18446744073709551615 & a, 0 | a, a | 0, a << 0, a >> 0, a ^ 1, 1 ^ a, BIT_COUNT(a) FROM t1; SHOW WARNINGS; DROP TABLE t1; END; $$ DELIMITER ;$$ --vertical_results CALL p1('BIGINT UNSIGNED', 18446744073709551615); CALL p1('DOUBLE', 18446744073709551615); CALL p1('DECIMAL(30,0)', 18446744073709551615); CALL p1('BIGINT', -1); CALL p1('DOUBLE', -1); CALL p1('DECIMAL(30,0)', -1); CALL p1('BIGINT', -9223372036854775808); CALL p1('DOUBLE', -9223372036854775808); CALL p1('DECIMAL(30,0)', -9223372036854775808); --horizontal_results DROP PROCEDURE p1; SELECT CAST(CAST(18446744073709551615 AS UNSIGNED) AS DECIMAL(32))<<0 AS c1; SELECT CAST(CAST(18446744073709551615 AS UNSIGNED) AS DOUBLE)<<0 AS c1; SELECT COALESCE(CAST(CAST(0xFFFFFFFFFFFFFFFF AS UNSIGNED) AS DECIMAL(32))) << 0 AS c1; SELECT COALESCE(CAST(CAST(0xFFFFFFFFFFFFFFFF AS UNSIGNED) AS DOUBLE)) << 0 AS c1; SELECT 18446744073709551615 ^ 1 AS c1; SELECT 18446744073709551615.0 ^ 1 AS c1; SELECT 18446744073709551615e0 ^ 1 AS c1; SELECT LAST_VALUE(18446744073709551615) ^ 1 AS c1; SELECT LAST_VALUE(18446744073709551615.0) ^ 1 AS c1; SELECT LAST_VALUE(18446744073709551615e0) ^ 1 AS c1; SELECT 18446744073709551615 & 18446744073709551615 AS c1; SELECT 18446744073709551615 & 18446744073709551615.0 AS c1; SELECT 18446744073709551615 & 18446744073709551615e0 AS c1; SELECT 18446744073709551615.0 & 18446744073709551615 AS c1; SELECT 18446744073709551615.0 & 18446744073709551615.0 AS c1; SELECT 18446744073709551615.0 & 18446744073709551615e0 AS c1; SELECT 18446744073709551615e0 & 18446744073709551615 AS c1; SELECT 18446744073709551615e0 & 18446744073709551615.0 AS c1; SELECT 18446744073709551615e0 & 18446744073709551615e0 AS c1; SELECT 0 | 18446744073709551615 AS c1; SELECT 0 | 18446744073709551615.0 AS c1; SELECT 0 | 18446744073709551615e0 AS c1; SELECT 18446744073709551615 | 0 AS c1; SELECT 18446744073709551615.0 | 0 AS c1; SELECT 18446744073709551615e0 | 0 AS c1; SELECT ~18446744073709551615 AS c1; SELECT ~18446744073709551615.0 AS c1; SELECT ~18446744073709551615e0 AS c1; SELECT BIT_COUNT(18446744073709551615) AS c1; SELECT BIT_COUNT(18446744073709551615.0) AS c1; SELECT BIT_COUNT(18446744073709551615e0) AS c1; SELECT BIT_COUNT(-9223372036854775808) AS c1; SELECT BIT_COUNT(-9223372036854775808.0) AS c1; SELECT BIT_COUNT(-9223372036854775808e0) AS c1; --echo # --echo # End of 10.5 tests --echo #