diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2020-05-16 06:27:55 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2020-05-16 06:27:55 +0300 |
commit | 4f29d776c756ac522ae49c481ea8975dee8787fe (patch) | |
tree | d152b05f3bca9b4022802654c129f0470ed92038 /mysql-test/main/func_math.test | |
parent | a4996f951d731322acc63033646d950ddbb0f60c (diff) | |
parent | 3eadb135fd7b7e2d40fd6b9a819ac3245043f781 (diff) | |
download | mariadb-git-4f29d776c756ac522ae49c481ea8975dee8787fe.tar.gz |
Merge 10.3 into 10.4
Diffstat (limited to 'mysql-test/main/func_math.test')
-rw-r--r-- | mysql-test/main/func_math.test | 61 |
1 files changed, 60 insertions, 1 deletions
diff --git a/mysql-test/main/func_math.test b/mysql-test/main/func_math.test index e2baee8852c..651def577ae 100644 --- a/mysql-test/main/func_math.test +++ b/mysql-test/main/func_math.test @@ -715,6 +715,65 @@ SELECT 9223372036854775808 MOD -9223372036854775808; SELECT -9223372036854775808 MOD 9223372036854775808; SELECT -9223372036854775808 MOD -9223372036854775808; +--echo # +--echo # MDEV-22502 MDB crashes in CREATE TABLE AS SELECT when the precision of returning type = 0 +--echo # + +CREATE TABLE t1 (d decimal(5,5)); +INSERT INTO t1 VALUES (0.55555); +SELECT TRUNCATE(d,0) FROM t1; +CREATE TABLE t2 AS SELECT TRUNCATE(d,0) FROM t1; +SELECT * FROM t2; +SHOW CREATE TABLE t2; +DROP TABLE t1, t2; + + +--echo # +--echo # MDEV-22503 MDB limits DECIMAL column precision to 16 doing CTAS with floor/ceil over DECIMAL(X,Y) where X > 16 +--echo # + +CREATE TABLE t44 (d1 decimal(38,0) DEFAULT NULL); +INSERT INTO t44 VALUES (12345678901234567890123456789012345678); +SELECT FLOOR(d1) FROM t44; +CREATE TABLE t45 AS SELECT FLOOR(d1) FROM t44; +SELECT * FROM t45; +SHOW CREATE TABLE t45; +DROP TABLE t44, t45; + + +DELIMITER $$; +CREATE PROCEDURE p1(prec INT, scale INT) +BEGIN + DECLARE maxval VARCHAR(128) DEFAULT ''; + SET @type= CONCAT('DECIMAL(', prec, ',', scale,')'); + SET @stmt= CONCAT('CREATE TABLE t1 (a ', @type, ',b ', @type, 'unsigned)'); + PREPARE stmt FROM @stmt; + EXECUTE stmt; + DEALLOCATE PREPARE stmt; + SET maxval= CONCAT(REPEAT('9', prec-scale), '.', REPEAT('9',scale)); + INSERT INTO t1 VALUES (maxval, maxval); + CREATE TABLE t2 AS SELECT a, b, FLOOR(a) AS fa, FLOOR(b) AS fb FROM t1; + SHOW CREATE TABLE t2; + SELECT * FROM t2; + DROP TABLE t1, t2; +END; +$$ +CREATE PROCEDURE p2(prec INT) +BEGIN + DECLARE scale INT DEFAULT 0; + WHILE scale < prec AND scale <= 30 DO + CALL p1(prec, scale); + SET scale= scale + 1; + END WHILE; +END; +$$ +DELIMITER ;$$ +--vertical_results +CALL p2(38); +CALL p2(30); +--horizontal_results +DROP PROCEDURE p2; +DROP PROCEDURE p1; --echo # @@ -1013,7 +1072,7 @@ DROP FUNCTION crc32_func; PREPARE stmt1 FROM 'SELECT CRC32(?)'; SET @val = 'a'; EXECUTE stmt1 USING @val; -DEALLOCATE PREPARE stmt; +DEALLOCATE PREPARE stmt1; # Test case for checksum on contents of a file SET NAMES utf8; |