diff options
author | Alexander Barkov <bar@mariadb.org> | 2018-01-29 20:36:38 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2018-01-29 20:36:38 +0400 |
commit | 8317ce73d448134a1c8c4a85fbe293b329a5593a (patch) | |
tree | de21deac7699df6a5f0cac20e7de640f2223b3b0 /mysql-test | |
parent | b12430adc716be51810953920448563c87fe0521 (diff) | |
download | mariadb-git-8317ce73d448134a1c8c4a85fbe293b329a5593a.tar.gz |
MDEV-15112 Inconsistent evaluation of spvariable=0 in strict mode
The patch for MDEV-15107 fixed this problem. Adding tests only.
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/sp.result | 39 | ||||
-rw-r--r-- | mysql-test/t/sp.test | 47 |
2 files changed, 86 insertions, 0 deletions
diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result index 911fd9dff1d..9a9042bc8c9 100644 --- a/mysql-test/r/sp.result +++ b/mysql-test/r/sp.result @@ -8376,3 +8376,42 @@ DECLARE v ROW(a INT); SELECT 'a' IN ('b',v); END $$ ERROR HY000: Illegal parameter data types varchar and row for operation 'in' +# +# MDEV-15112 Inconsistent evaluation of spvariable=0 in strict mode +# +SET sql_mode=STRICT_ALL_TABLES; +CREATE OR REPLACE TABLE t1 (e TIMESTAMP(6)); +INSERT INTO t1 VALUES ('2001-01-01 10:20:30'); +CREATE FUNCTION f1(a VARBINARY(255)) +RETURNS INT +DETERMINISTIC +BEGIN +RETURN a = timestamp'2038-01-19 03:14:07.999999' + OR a = 0; +END +$$ +CREATE FUNCTION f2(a VARBINARY(255)) +RETURNS INT +DETERMINISTIC +BEGIN +RETURN a = 0; +END +$$ +CREATE OR REPLACE FUNCTION f3(a VARBINARY(255)) +RETURNS INT +DETERMINISTIC +BEGIN +RETURN a = timestamp'2038-01-19 03:14:07.999999' + OR a = sleep(0); +END +$$ +SELECT f1(e) FROM t1; +ERROR 22007: Truncated incorrect DOUBLE value: '2001-01-01 10:20:30' +SELECT f2(e) FROM t1; +ERROR 22007: Truncated incorrect DOUBLE value: '2001-01-01 10:20:30' +SELECT f3(e) FROM t1; +ERROR 22007: Truncated incorrect DOUBLE value: '2001-01-01 10:20:30' +DROP FUNCTION f1; +DROP FUNCTION f2; +DROP FUNCTION f3; +DROP TABLE t1; diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test index aa960ee698e..5ddf4153497 100644 --- a/mysql-test/t/sp.test +++ b/mysql-test/t/sp.test @@ -9885,3 +9885,50 @@ BEGIN NOT ATOMIC SELECT 'a' IN ('b',v); END $$ DELIMITER ;$$ + + +--echo # +--echo # MDEV-15112 Inconsistent evaluation of spvariable=0 in strict mode +--echo # + +SET sql_mode=STRICT_ALL_TABLES; +CREATE OR REPLACE TABLE t1 (e TIMESTAMP(6)); +INSERT INTO t1 VALUES ('2001-01-01 10:20:30'); + +DELIMITER $$; +CREATE FUNCTION f1(a VARBINARY(255)) +RETURNS INT +DETERMINISTIC +BEGIN + RETURN a = timestamp'2038-01-19 03:14:07.999999' + OR a = 0; +END +$$ +CREATE FUNCTION f2(a VARBINARY(255)) +RETURNS INT +DETERMINISTIC +BEGIN + RETURN a = 0; +END +$$ +CREATE OR REPLACE FUNCTION f3(a VARBINARY(255)) +RETURNS INT +DETERMINISTIC +BEGIN + RETURN a = timestamp'2038-01-19 03:14:07.999999' + OR a = sleep(0); +END +$$ +DELIMITER ;$$ + +--error ER_TRUNCATED_WRONG_VALUE +SELECT f1(e) FROM t1; +--error ER_TRUNCATED_WRONG_VALUE +SELECT f2(e) FROM t1; +--error ER_TRUNCATED_WRONG_VALUE +SELECT f3(e) FROM t1; + +DROP FUNCTION f1; +DROP FUNCTION f2; +DROP FUNCTION f3; +DROP TABLE t1; |