summaryrefslogtreecommitdiff
path: root/mysql-test/main/type_num.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/main/type_num.test')
-rw-r--r--mysql-test/main/type_num.test721
1 files changed, 721 insertions, 0 deletions
diff --git a/mysql-test/main/type_num.test b/mysql-test/main/type_num.test
new file mode 100644
index 00000000000..cc715d6cda2
--- /dev/null
+++ b/mysql-test/main/type_num.test
@@ -0,0 +1,721 @@
+--echo #
+--echo # Start of 10.0 tests
+--echo #
+
+--echo #
+--echo # MDEV-8468 CAST and INSERT work differently for DECIMAL/INT vs DOUBLE for a string with trailing spaces
+--echo #
+SET sql_mode='STRICT_ALL_TABLES';
+
+CREATE TABLE t1 (a FLOAT);
+INSERT INTO t1 VALUES ('1 ');
+DROP TABLE t1;
+CREATE TABLE t1 (a DOUBLE);
+INSERT INTO t1 VALUES ('1 ');
+DROP TABLE t1;
+CREATE TABLE t1 (a TINYINT);
+INSERT INTO t1 VALUES ('1 ');
+DROP TABLE t1;
+CREATE TABLE t1 (a SMALLINT);
+INSERT INTO t1 VALUES ('1 ');
+DROP TABLE t1;
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES ('1 ');
+DROP TABLE t1;
+CREATE TABLE t1 (a BIGINT);
+INSERT INTO t1 VALUES ('1 ');
+DROP TABLE t1;
+CREATE TABLE t1 (a DECIMAL);
+INSERT INTO t1 VALUES ('1 ');
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (a FLOAT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('');
+DROP TABLE t1;
+CREATE TABLE t1 (a DOUBLE);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('');
+DROP TABLE t1;
+CREATE TABLE t1 (a TINYINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('');
+DROP TABLE t1;
+CREATE TABLE t1 (a SMALLINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('');
+DROP TABLE t1;
+CREATE TABLE t1 (a INT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('');
+DROP TABLE t1;
+CREATE TABLE t1 (a BIGINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('');
+DROP TABLE t1;
+CREATE TABLE t1 (a DECIMAL);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('');
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (a FLOAT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('x');
+DROP TABLE t1;
+CREATE TABLE t1 (a DOUBLE);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('x');
+DROP TABLE t1;
+CREATE TABLE t1 (a TINYINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('x');
+DROP TABLE t1;
+CREATE TABLE t1 (a SMALLINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('x');
+DROP TABLE t1;
+CREATE TABLE t1 (a INT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('x');
+DROP TABLE t1;
+CREATE TABLE t1 (a BIGINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('x');
+DROP TABLE t1;
+CREATE TABLE t1 (a DECIMAL);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('x');
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (a FLOAT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES (' x');
+DROP TABLE t1;
+CREATE TABLE t1 (a DOUBLE);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES (' x');
+DROP TABLE t1;
+CREATE TABLE t1 (a TINYINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES (' x');
+DROP TABLE t1;
+CREATE TABLE t1 (a SMALLINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES (' x');
+DROP TABLE t1;
+CREATE TABLE t1 (a INT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES (' x');
+DROP TABLE t1;
+CREATE TABLE t1 (a BIGINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES (' x');
+DROP TABLE t1;
+CREATE TABLE t1 (a DECIMAL);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES (' x');
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (a FLOAT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('.');
+DROP TABLE t1;
+CREATE TABLE t1 (a DOUBLE);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('.');
+DROP TABLE t1;
+CREATE TABLE t1 (a TINYINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('.');
+DROP TABLE t1;
+CREATE TABLE t1 (a SMALLINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('.');
+DROP TABLE t1;
+CREATE TABLE t1 (a INT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('.');
+DROP TABLE t1;
+CREATE TABLE t1 (a BIGINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('.');
+DROP TABLE t1;
+CREATE TABLE t1 (a DECIMAL);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('.');
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (a FLOAT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('-');
+DROP TABLE t1;
+CREATE TABLE t1 (a DOUBLE);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('-');
+DROP TABLE t1;
+CREATE TABLE t1 (a TINYINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('-');
+DROP TABLE t1;
+CREATE TABLE t1 (a SMALLINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('-');
+DROP TABLE t1;
+CREATE TABLE t1 (a INT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('-');
+DROP TABLE t1;
+CREATE TABLE t1 (a BIGINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('-');
+DROP TABLE t1;
+CREATE TABLE t1 (a DECIMAL);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('-');
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (a FLOAT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('+');
+DROP TABLE t1;
+CREATE TABLE t1 (a DOUBLE);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('+');
+DROP TABLE t1;
+CREATE TABLE t1 (a TINYINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('+');
+DROP TABLE t1;
+CREATE TABLE t1 (a SMALLINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('+');
+DROP TABLE t1;
+CREATE TABLE t1 (a INT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('+');
+DROP TABLE t1;
+CREATE TABLE t1 (a BIGINT);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('+');
+DROP TABLE t1;
+CREATE TABLE t1 (a DECIMAL);
+--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+INSERT INTO t1 VALUES ('+');
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (a FLOAT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1x');
+DROP TABLE t1;
+CREATE TABLE t1 (a DOUBLE);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1x');
+DROP TABLE t1;
+CREATE TABLE t1 (a TINYINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1x');
+DROP TABLE t1;
+CREATE TABLE t1 (a SMALLINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1x');
+DROP TABLE t1;
+CREATE TABLE t1 (a INT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1x');
+DROP TABLE t1;
+CREATE TABLE t1 (a BIGINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1x');
+DROP TABLE t1;
+CREATE TABLE t1 (a DECIMAL);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1x');
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (a FLOAT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e');
+DROP TABLE t1;
+CREATE TABLE t1 (a DOUBLE);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e');
+DROP TABLE t1;
+CREATE TABLE t1 (a TINYINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e');
+DROP TABLE t1;
+CREATE TABLE t1 (a SMALLINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e');
+DROP TABLE t1;
+CREATE TABLE t1 (a INT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e');
+DROP TABLE t1;
+CREATE TABLE t1 (a BIGINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e');
+DROP TABLE t1;
+CREATE TABLE t1 (a DECIMAL);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e');
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (a FLOAT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e+');
+DROP TABLE t1;
+CREATE TABLE t1 (a DOUBLE);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e+');
+DROP TABLE t1;
+CREATE TABLE t1 (a TINYINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e+');
+DROP TABLE t1;
+CREATE TABLE t1 (a SMALLINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e+');
+DROP TABLE t1;
+CREATE TABLE t1 (a INT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e+');
+DROP TABLE t1;
+CREATE TABLE t1 (a BIGINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e+');
+DROP TABLE t1;
+CREATE TABLE t1 (a DECIMAL);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e+');
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (a FLOAT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1E-');
+DROP TABLE t1;
+CREATE TABLE t1 (a DOUBLE);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1E-');
+DROP TABLE t1;
+CREATE TABLE t1 (a TINYINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1E-');
+DROP TABLE t1;
+CREATE TABLE t1 (a SMALLINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1E-');
+DROP TABLE t1;
+CREATE TABLE t1 (a INT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1E-');
+DROP TABLE t1;
+CREATE TABLE t1 (a BIGINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1E-');
+DROP TABLE t1;
+CREATE TABLE t1 (a DECIMAL);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1E-');
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (a FLOAT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1Ex');
+DROP TABLE t1;
+CREATE TABLE t1 (a DOUBLE);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1Ex');
+DROP TABLE t1;
+CREATE TABLE t1 (a TINYINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1Ex');
+DROP TABLE t1;
+CREATE TABLE t1 (a SMALLINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1Ex');
+DROP TABLE t1;
+CREATE TABLE t1 (a INT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1Ex');
+DROP TABLE t1;
+CREATE TABLE t1 (a BIGINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1Ex');
+DROP TABLE t1;
+CREATE TABLE t1 (a DECIMAL);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1Ex');
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (a FLOAT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e+x');
+DROP TABLE t1;
+CREATE TABLE t1 (a DOUBLE);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e+x');
+DROP TABLE t1;
+CREATE TABLE t1 (a TINYINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e+x');
+DROP TABLE t1;
+CREATE TABLE t1 (a SMALLINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e+x');
+DROP TABLE t1;
+CREATE TABLE t1 (a INT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e+x');
+DROP TABLE t1;
+CREATE TABLE t1 (a BIGINT);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e+x');
+DROP TABLE t1;
+CREATE TABLE t1 (a DECIMAL);
+--error WARN_DATA_TRUNCATED
+INSERT INTO t1 VALUES ('1e+x');
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (a FLOAT);
+--error ER_WARN_DATA_OUT_OF_RANGE
+INSERT INTO t1 VALUES ('1e1000');
+DROP TABLE t1;
+CREATE TABLE t1 (a DOUBLE);
+--error ER_WARN_DATA_OUT_OF_RANGE
+INSERT INTO t1 VALUES ('1e1000');
+DROP TABLE t1;
+CREATE TABLE t1 (a TINYINT);
+--error ER_WARN_DATA_OUT_OF_RANGE
+INSERT INTO t1 VALUES ('1e1000');
+DROP TABLE t1;
+CREATE TABLE t1 (a SMALLINT);
+--error ER_WARN_DATA_OUT_OF_RANGE
+INSERT INTO t1 VALUES ('1e1000');
+DROP TABLE t1;
+CREATE TABLE t1 (a INT);
+--error ER_WARN_DATA_OUT_OF_RANGE
+INSERT INTO t1 VALUES ('1e1000');
+DROP TABLE t1;
+CREATE TABLE t1 (a BIGINT);
+--error ER_WARN_DATA_OUT_OF_RANGE
+INSERT INTO t1 VALUES ('1e1000');
+DROP TABLE t1;
+CREATE TABLE t1 (a DECIMAL);
+--error ER_WARN_DATA_OUT_OF_RANGE
+INSERT INTO t1 VALUES ('1e1000');
+DROP TABLE t1;
+
+
+SET sql_mode=DEFAULT;
+
+CREATE TABLE t1 (
+ f4 FLOAT,
+ f8 DOUBLE,
+ i1 TINYINT,
+ i2 SMALLINT,
+ i4 INT,
+ i8 BIGINT,
+ d DECIMAL
+);
+
+INSERT INTO t1 VALUES ('1 ','1 ','1 ','1 ','1 ','1 ','1 ');
+INSERT IGNORE INTO t1 VALUES ('','','','','','','');
+INSERT IGNORE INTO t1 VALUES ('x','x','x','x','x','x','x');
+INSERT IGNORE INTO t1 VALUES (' x',' x',' x',' x',' x',' x',' x');
+INSERT IGNORE INTO t1 VALUES ('.','.','.','.','.','.','.');
+INSERT IGNORE INTO t1 VALUES ('-','-','-','-','-','-','-');
+INSERT IGNORE INTO t1 VALUES ('+','+','+','+','+','+','+');
+INSERT IGNORE INTO t1 VALUES ('1x','1x','1x','1x','1x','1x','1x');
+INSERT IGNORE INTO t1 VALUES ('1e','1e','1e','1e','1e','1e','1e');
+INSERT IGNORE INTO t1 VALUES ('1e-','1e-','1e-','1e-','1e-','1e-','1e-');
+INSERT IGNORE INTO t1 VALUES ('1E+','1E+','1E+','1E+','1E+','1E+','1E+');
+INSERT IGNORE INTO t1 VALUES ('1e1000','1e1000','1e1000','1e1000','1e1000','1e1000','1e1000');
+
+DELETE FROM t1;
+INSERT INTO t1 VALUES (0,0,0,0,0,0,0);
+INSERT INTO t1 VALUES (0,0,0,0,0,0,0);
+INSERT INTO t1 VALUES (1,1,1,1,1,1,1);
+INSERT INTO t1 VALUES (1,1,1,1,1,1,1);
+INSERT INTO t1 VALUES (2,2,2,2,2,2,2);
+INSERT INTO t1 VALUES (2,2,2,2,2,2,2);
+INSERT INTO t1 VALUES (3,3,3,3,3,3,3);
+INSERT INTO t1 VALUES (3,3,3,3,3,3,3);
+INSERT INTO t1 VALUES (4,4,4,4,4,4,4);
+INSERT INTO t1 VALUES (4,4,4,4,4,4,4);
+INSERT INTO t1 VALUES (5,5,5,5,5,5,5);
+INSERT INTO t1 VALUES (5,5,5,5,5,5,5);
+
+SELECT COUNT(*) FROM t1 WHERE f4='1 ';
+SELECT COUNT(*) FROM t1 WHERE f8='1 ';
+SELECT COUNT(*) FROM t1 WHERE i1='1 ';
+SELECT COUNT(*) FROM t1 WHERE i2='1 ';
+SELECT COUNT(*) FROM t1 WHERE i4='1 ';
+SELECT COUNT(*) FROM t1 WHERE i8='1 ';
+SELECT COUNT(*) FROM t1 WHERE d='1 ';
+
+SELECT COUNT(*) FROM t1 WHERE f4='';
+SELECT COUNT(*) FROM t1 WHERE f8='';
+SELECT COUNT(*) FROM t1 WHERE i1='';
+SELECT COUNT(*) FROM t1 WHERE i2='';
+SELECT COUNT(*) FROM t1 WHERE i4='';
+SELECT COUNT(*) FROM t1 WHERE i8='';
+SELECT COUNT(*) FROM t1 WHERE d='';
+
+SELECT COUNT(*) FROM t1 WHERE f4='x';
+SELECT COUNT(*) FROM t1 WHERE f8='x';
+SELECT COUNT(*) FROM t1 WHERE i1='x';
+SELECT COUNT(*) FROM t1 WHERE i2='x';
+SELECT COUNT(*) FROM t1 WHERE i4='x';
+SELECT COUNT(*) FROM t1 WHERE i8='x';
+SELECT COUNT(*) FROM t1 WHERE d='x';
+
+SELECT COUNT(*) FROM t1 WHERE f4=' x';
+SELECT COUNT(*) FROM t1 WHERE f8=' x';
+SELECT COUNT(*) FROM t1 WHERE i1=' x';
+SELECT COUNT(*) FROM t1 WHERE i2=' x';
+SELECT COUNT(*) FROM t1 WHERE i4=' x';
+SELECT COUNT(*) FROM t1 WHERE i8=' x';
+SELECT COUNT(*) FROM t1 WHERE d=' x';
+
+SELECT COUNT(*) FROM t1 WHERE f4='.';
+SELECT COUNT(*) FROM t1 WHERE f8='.';
+SELECT COUNT(*) FROM t1 WHERE i1='.';
+SELECT COUNT(*) FROM t1 WHERE i2='.';
+SELECT COUNT(*) FROM t1 WHERE i4='.';
+SELECT COUNT(*) FROM t1 WHERE i8='.';
+SELECT COUNT(*) FROM t1 WHERE d='.';
+
+SELECT COUNT(*) FROM t1 WHERE f4='-';
+SELECT COUNT(*) FROM t1 WHERE f8='-';
+SELECT COUNT(*) FROM t1 WHERE i1='-';
+SELECT COUNT(*) FROM t1 WHERE i2='-';
+SELECT COUNT(*) FROM t1 WHERE i4='-';
+SELECT COUNT(*) FROM t1 WHERE i8='-';
+SELECT COUNT(*) FROM t1 WHERE d='-';
+
+SELECT COUNT(*) FROM t1 WHERE f4='+';
+SELECT COUNT(*) FROM t1 WHERE f8='+';
+SELECT COUNT(*) FROM t1 WHERE i1='+';
+SELECT COUNT(*) FROM t1 WHERE i2='+';
+SELECT COUNT(*) FROM t1 WHERE i4='+';
+SELECT COUNT(*) FROM t1 WHERE i8='+';
+SELECT COUNT(*) FROM t1 WHERE d='+';
+
+SELECT COUNT(*) FROM t1 WHERE f4='1x';
+SELECT COUNT(*) FROM t1 WHERE f8='1x';
+SELECT COUNT(*) FROM t1 WHERE i1='1x';
+SELECT COUNT(*) FROM t1 WHERE i2='1x';
+SELECT COUNT(*) FROM t1 WHERE i4='1x';
+SELECT COUNT(*) FROM t1 WHERE i8='1x';
+SELECT COUNT(*) FROM t1 WHERE d='1x';
+
+SELECT COUNT(*) FROM t1 WHERE f4='1e';
+SELECT COUNT(*) FROM t1 WHERE f8='1e';
+SELECT COUNT(*) FROM t1 WHERE i1='1e';
+SELECT COUNT(*) FROM t1 WHERE i2='1e';
+SELECT COUNT(*) FROM t1 WHERE i4='1e';
+SELECT COUNT(*) FROM t1 WHERE i8='1e';
+SELECT COUNT(*) FROM t1 WHERE d='1e';
+
+SELECT COUNT(*) FROM t1 WHERE f4='1e+';
+SELECT COUNT(*) FROM t1 WHERE f8='1e+';
+SELECT COUNT(*) FROM t1 WHERE i1='1e+';
+SELECT COUNT(*) FROM t1 WHERE i2='1e+';
+SELECT COUNT(*) FROM t1 WHERE i4='1e+';
+SELECT COUNT(*) FROM t1 WHERE i8='1e+';
+SELECT COUNT(*) FROM t1 WHERE d='1e+';
+
+SELECT COUNT(*) FROM t1 WHERE f4='1E-';
+SELECT COUNT(*) FROM t1 WHERE f8='1E-';
+SELECT COUNT(*) FROM t1 WHERE i1='1E-';
+SELECT COUNT(*) FROM t1 WHERE i2='1E-';
+SELECT COUNT(*) FROM t1 WHERE i4='1E-';
+SELECT COUNT(*) FROM t1 WHERE i8='1E-';
+SELECT COUNT(*) FROM t1 WHERE d='1E-';
+
+SELECT COUNT(*) FROM t1 WHERE f4='1Ex';
+SELECT COUNT(*) FROM t1 WHERE f8='1Ex';
+SELECT COUNT(*) FROM t1 WHERE i1='1Ex';
+SELECT COUNT(*) FROM t1 WHERE i2='1Ex';
+SELECT COUNT(*) FROM t1 WHERE i4='1Ex';
+SELECT COUNT(*) FROM t1 WHERE i8='1Ex';
+SELECT COUNT(*) FROM t1 WHERE d='1Ex';
+
+SELECT COUNT(*) FROM t1 WHERE f4='1e+x';
+SELECT COUNT(*) FROM t1 WHERE f8='1e+x';
+SELECT COUNT(*) FROM t1 WHERE i1='1e+x';
+SELECT COUNT(*) FROM t1 WHERE i2='1e+x';
+SELECT COUNT(*) FROM t1 WHERE i4='1e+x';
+SELECT COUNT(*) FROM t1 WHERE i8='1e+x';
+SELECT COUNT(*) FROM t1 WHERE d='1e+x';
+
+SELECT COUNT(*) FROM t1 WHERE f4='1e1000';
+SELECT COUNT(*) FROM t1 WHERE f8='1e1000';
+SELECT COUNT(*) FROM t1 WHERE i1='1e1000';
+SELECT COUNT(*) FROM t1 WHERE i2='1e1000';
+SELECT COUNT(*) FROM t1 WHERE i4='1e1000';
+SELECT COUNT(*) FROM t1 WHERE i8='1e1000';
+SELECT COUNT(*) FROM t1 WHERE d='1e1000';
+
+ALTER TABLE t1
+ ADD KEY f4(f4),
+ ADD KEY f8(f8),
+ ADD KEY i1(i1),
+ ADD KEY i2(i2),
+ ADD KEY i4(i4),
+ ADD KEY i8(i8),
+ ADD KEY d(d);
+
+SELECT COUNT(*) FROM t1 FORCE INDEX(f4) WHERE f4='1 ';
+SELECT COUNT(*) FROM t1 FORCE INDEX(f8) WHERE f8='1 ';
+SELECT COUNT(*) FROM t1 FORCE INDEX(i1) WHERE i1='1 ';
+SELECT COUNT(*) FROM t1 FORCE INDEX(i2) WHERE i2='1 ';
+SELECT COUNT(*) FROM t1 FORCE INDEX(i4) WHERE i4='1 ';
+SELECT COUNT(*) FROM t1 FORCE INDEX(i8) WHERE i8='1 ';
+SELECT COUNT(*) FROM t1 FORCE INDEX(d) WHERE d='1 ';
+
+SELECT COUNT(*) FROM t1 FORCE INDEX(f4) WHERE f4='';
+SELECT COUNT(*) FROM t1 FORCE INDEX(f8) WHERE f8='';
+SELECT COUNT(*) FROM t1 FORCE INDEX(i1) WHERE i1='';
+SELECT COUNT(*) FROM t1 FORCE INDEX(i2) WHERE i2='';
+SELECT COUNT(*) FROM t1 FORCE INDEX(i4) WHERE i4='';
+SELECT COUNT(*) FROM t1 FORCE INDEX(i8) WHERE i8='';
+SELECT COUNT(*) FROM t1 FORCE INDEX(d) WHERE d='';
+
+# TODO: Add tests for all of the other tricky examples (see above) when
+# MDEV-8490 INT,DOUBLE,DECIMAL produce different warnings on comparison
+# is fixed
+
+DROP TABLE t1;
+
+SELECT
+ CAST('1 ' AS SIGNED),
+ CAST('1 ' AS UNSIGNED),
+ CAST('1 ' AS DECIMAL),
+ CAST('1 ' AS DOUBLE);
+
+SELECT
+ CAST('' AS SIGNED),
+ CAST('' AS UNSIGNED),
+ CAST('' AS DECIMAL),
+ CAST('' AS DOUBLE);
+
+SELECT
+ CAST('x' AS SIGNED),
+ CAST('x' AS UNSIGNED),
+ CAST('x' AS DECIMAL),
+ CAST('x' AS DOUBLE);
+
+SELECT
+ CAST(' x' AS SIGNED),
+ CAST(' x' AS UNSIGNED),
+ CAST(' x' AS DECIMAL),
+ CAST(' x' AS DOUBLE);
+
+SELECT
+ CAST('.' AS SIGNED),
+ CAST('.' AS UNSIGNED),
+ CAST('.' AS DECIMAL),
+ CAST('.' AS DOUBLE);
+
+SELECT
+ CAST('-' AS SIGNED),
+ CAST('-' AS UNSIGNED),
+ CAST('-' AS DECIMAL),
+ CAST('-' AS DOUBLE);
+
+SELECT
+ CAST('+' AS SIGNED),
+ CAST('+' AS UNSIGNED),
+ CAST('+' AS DECIMAL),
+ CAST('+' AS DOUBLE);
+
+SELECT
+ CAST('1x' AS SIGNED),
+ CAST('1x' AS UNSIGNED),
+ CAST('1x' AS DECIMAL),
+ CAST('1x' AS DOUBLE);
+
+SELECT
+ CAST('1e' AS SIGNED),
+ CAST('1e' AS UNSIGNED),
+ CAST('1e' AS DECIMAL),
+ CAST('1e' AS DOUBLE);
+
+SELECT
+ CAST('1e-' AS SIGNED),
+ CAST('1e-' AS UNSIGNED),
+ CAST('1e-' AS DECIMAL),
+ CAST('1e-' AS DOUBLE);
+
+SELECT
+ CAST('1E+' AS SIGNED),
+ CAST('1E+' AS UNSIGNED),
+ CAST('1E+' AS DECIMAL),
+ CAST('1E+' AS DOUBLE);
+
+# TODO: Uncomment this test when
+# MDEV-8468 CAST and INSERT work differently for DECIMAL/INT vs DOUBLE for a string with trailing spaces
+# is fixed
+#SELECT
+# CAST('1e1000' AS SIGNED),
+# CAST('1e1000' AS UNSIGNED),
+# CAST('1e1000' AS DECIMAL),
+# CAST('1e1000' AS DOUBLE);
+
+
+--echo #
+--echo # Start of 10.1 tests
+--echo #
+
+--echo #
+--echo # MDEV-9653 Assertion `length || !scale' failed in uint my_decimal_length_to_precision(uint, uint, bool)
+--echo #
+
+--disable_ps_protocol
+--enable_metadata
+SELECT NULL+1 AS c0,
+ COALESCE(NULL)+1 AS c2,
+ COALESCE(COALESCE(NULL))+1 AS c3,
+ ''+1 AS c4,
+ COALESCE('')+1 AS c5,
+ COALESCE(COALESCE(''))+1 AS c6;
+--disable_metadata
+--enable_ps_protocol
+
+--echo #
+--echo # Start of 10.2 tests
+--echo #
+
+#
+# MDEV-8659 Conflicting declaration is accepted: INT SIGNED ZEROFILL
+#
+--error ER_PARSE_ERROR
+CREATE TABLE t1 (a INT SIGNED ZEROFILL);
+--error ER_PARSE_ERROR
+CREATE TABLE t1 (a INT SIGNED UNSIGNED);
+--error ER_PARSE_ERROR
+CREATE TABLE t1 (a INT ZEROFILL UNSIGNED ZEROFILL);
+
+# documented syntax:
+CREATE OR REPLACE TABLE t1 (a INT SIGNED);
+CREATE OR REPLACE TABLE t1 (a INT UNSIGNED);
+CREATE OR REPLACE TABLE t1 (a INT ZEROFILL);
+# not documented, supported for backward compatibility
+CREATE OR REPLACE TABLE t1 (a INT UNSIGNED ZEROFILL);
+CREATE OR REPLACE TABLE t1 (a INT ZEROFILL UNSIGNED);
+DROP TABLE t1;