diff options
Diffstat (limited to 'mysql-test/main/cast.test')
-rw-r--r-- | mysql-test/main/cast.test | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/mysql-test/main/cast.test b/mysql-test/main/cast.test index 165980aebed..a4b87127187 100644 --- a/mysql-test/main/cast.test +++ b/mysql-test/main/cast.test @@ -731,3 +731,57 @@ SET sql_mode=DEFAULT; --echo # SELECT CAST(11068046444225730969 AS SIGNED); + +--echo # +--echo # MDEV-8919 Wrong result for CAST(9999999999999999999.0) +--echo # + +SET sql_mode=''; + +SELECT CAST(9999999999999999999e0 AS UNSIGNED); +CREATE TABLE t1 (a BIGINT UNSIGNED); +INSERT INTO t1 VALUES (9999999999999999999e0); +SELECT * FROM t1; +DROP TABLE t1; + +SELECT CAST(9999999999999999999.0 AS UNSIGNED); +CREATE TABLE t1 (a BIGINT UNSIGNED); +INSERT INTO t1 VALUES (9999999999999999999.0); +SELECT * FROM t1; +DROP TABLE t1; + +SELECT CAST(-1.0 AS UNSIGNED); +CREATE TABLE t1 (a BIGINT UNSIGNED); +INSERT INTO t1 VALUES (-1.0); +SELECT * FROM t1; +DROP TABLE t1; + +SELECT CAST(-1e0 AS UNSIGNED); +CREATE TABLE t1 (a BIGINT UNSIGNED); +INSERT INTO t1 VALUES (-1e0); +SELECT * FROM t1; +DROP TABLE t1; + +SELECT CAST(-1e308 AS UNSIGNED); +CREATE TABLE t1 (a BIGINT UNSIGNED); +INSERT INTO t1 VALUES (-1e308); +SELECT * FROM t1; +DROP TABLE t1; + +SELECT CAST(TIME'-00:00:01.123' AS UNSIGNED); +CREATE TABLE t1 (a BIGINT UNSIGNED); +INSERT INTO t1 VALUES (TIME'-00:00:01.123'); +SELECT * FROM t1; +DROP TABLE t1; + +CREATE TABLE t1 (a DOUBLE UNSIGNED); +INSERT INTO t1 VALUES (1.9e19); +SELECT CAST(a AS SIGNED), CAST(MIN(a) AS SIGNED) FROM t1; +DROP TABLE t1; + +CREATE TABLE t1 (a DECIMAL(30,1) UNSIGNED); +INSERT INTO t1 VALUES (1e19); +SELECT a, CAST(a AS SIGNED) FROM t1; +DROP TABLE t1; + +SET sql_mode=DEFAULT; |