summaryrefslogtreecommitdiff
path: root/mysql-test/main/type_int.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/main/type_int.test')
-rw-r--r--mysql-test/main/type_int.test102
1 files changed, 102 insertions, 0 deletions
diff --git a/mysql-test/main/type_int.test b/mysql-test/main/type_int.test
index c2edb0a9756..7ffbe94cc0d 100644
--- a/mysql-test/main/type_int.test
+++ b/mysql-test/main/type_int.test
@@ -221,6 +221,108 @@ SELECT * FROM t2;
DROP TABLE t1, t2;
--echo #
+--echo # MDEV-21445 Strange/inconsistent behavior of IN condition when mixing numbers and strings
+--echo #
+
+CREATE TABLE t1 (
+ id bigint(20) unsigned NOT NULL,
+ PRIMARY KEY (id)
+);
+INSERT INTO t1 VALUES(1234),(97716021308405775),(97716021308405770),(97716021308405780);
+
+# OK
+SELECT * FROM t1 WHERE id IN(97716021308405775);
+SELECT * FROM t1 WHERE id IN('97716021308405775');
+SELECT * FROM t1 WHERE id IN('1234',97716021308405775);
+SELECT * FROM t1 WHERE id IN('1234','97716021308405775');
+SELECT * FROM t1 WHERE id = 1234 OR id = '97716021308405775';
+
+# The following was not OK
+SELECT * FROM t1 WHERE id IN(1234,'97716021308405775');
+SELECT * FROM t1 WHERE id IN('97716021308405775',1234);
+
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (id bigint(20) unsigned NOT NULL PRIMARY KEY);
+INSERT INTO t1 VALUES(1234),(97716021308405775),(97716021308405770),(97716021308405780);
+SELECT
+ id,
+ CASE id
+ WHEN '97716021308405770' THEN '70'
+ WHEN '97716021308405775' THEN '75'
+ WHEN '97716021308405780' THEN '80'
+ END AS c1
+FROM t1;
+
+SELECT
+ id,
+ CASE
+ WHEN id='97716021308405770' THEN '70'
+ WHEN id='97716021308405775' THEN '75'
+ WHEN id='97716021308405780' THEN '80'
+ END AS c1
+FROM t1;
+
+SELECT id, id BETWEEN '97716021308405775' AND '97716021308405775' AS c1 FROM t1;
+SELECT id, id BETWEEN '97716021308405775' AND 97716021308405775 AS c1 FROM t1;
+SELECT id, id BETWEEN 97716021308405775 AND '97716021308405775' AS c1 FROM t1;
+
+DROP TABLE t1;
+
+SELECT '97716021308405770'=97716021308405770;
+SELECT 97716021308405770='97716021308405770';
+
+SELECT '9e+16'=90000000000000000;
+SELECT 90000000000000000='9e+16';
+
+SELECT '9e+30'>90000000000000000;
+SELECT 90000000000000000<'9e+30';
+
+SELECT '9e+80'>90000000000000000;
+SELECT 90000000000000000<'9e+80';
+
+SELECT '9.9999999999999999e+80'>90000000000000000;
+SELECT 90000000000000000<'9.9999999999999999e+80';
+
+SELECT '1e+81'>90000000000000000;
+SELECT 90000000000000000<'1e+81';
+
+SELECT '9e+100'>90000000000000000;
+SELECT 90000000000000000<'9e+100';
+
+SELECT CAST(0xFFFFFFFFFFFFFFFF AS UNSIGNED)=18446744073709551615;
+SELECT 18446744073709551615=CAST(0xFFFFFFFFFFFFFFFF AS UNSIGNED);
+
+SELECT CAST(0x7FFFFFFFFFFFFFFF AS UNSIGNED)=9223372036854775807;
+SELECT 9223372036854775807=CAST(0x7FFFFFFFFFFFFFFF AS UNSIGNED);
+
+
+--echo #
+--echo # MDEV-25492 BETWEEN clause returns incorrect results on quoted 64-bit ints
+--echo #
+
+CREATE TABLE betweentest
+(
+ id int(11) unsigned NOT NULL AUTO_INCREMENT,
+ range1 bigint(20) DEFAULT NULL,
+ range2 bigint(20) DEFAULT NULL,
+ PRIMARY KEY (id)
+);
+
+INSERT INTO betweentest VALUES
+ (1,2739499741191602369,2739499741191602369),
+ (2,2739499741191602192,2739499741191602192),
+ (3,2739138623713574912,2739138623730352127);
+
+SELECT * FROM betweentest WHERE '2739499741191602192' BETWEEN range1 AND range2;
+
+SELECT * FROM betweentest WHERE 2739499741191602192 BETWEEN range1 AND range2;
+
+DROP TABLE betweentest;
+
+
+--echo #
--echo # End of 10.3 tests
--echo #