summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2018-01-29 20:36:38 +0400
committerAlexander Barkov <bar@mariadb.org>2018-01-29 20:36:38 +0400
commit8317ce73d448134a1c8c4a85fbe293b329a5593a (patch)
treede21deac7699df6a5f0cac20e7de640f2223b3b0 /mysql-test
parentb12430adc716be51810953920448563c87fe0521 (diff)
downloadmariadb-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.result39
-rw-r--r--mysql-test/t/sp.test47
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;