# # Start of 5.5 tests # # # MDEV-15955 Assertion `field_types == 0 || field_types[field_pos] == MYSQL_TYPE_LONGLONG' failed in Protocol_text::store_longlong # CREATE TABLE t1 (a INT); INSERT INTO t1 VALUES (1),(2); SELECT @a := 1 FROM t1 ORDER BY STRCMP(STDDEV_SAMP(a), 'bar'); @a := 1 1 SELECT COALESCE(1) FROM t1 ORDER BY STRCMP(STDDEV_SAMP(a), 'bar'); COALESCE(1) 1 SELECT COALESCE(@a:=1) FROM t1 ORDER BY STRCMP(STDDEV_SAMP(a), 'bar'); COALESCE(@a:=1) 1 SELECT COALESCE(@a) FROM t1 ORDER BY STRCMP(STDDEV_SAMP(a), 'bar'); COALESCE(@a) 1 DROP TABLE t1; # # MDEV-21065 UNIQUE constraint causes a query with string comparison to omit a row in the result set # CREATE TABLE t1 (c0 INT UNIQUE); INSERT INTO t1 VALUES (NULL), (NULL), (NULL), (NULL), (1), (0); SELECT * FROM t1 WHERE c0 < '\n2'; c0 0 1 DROP TABLE t1; SELECT CAST('\n2' AS INT); CAST('\n2' AS INT) 2 # # End of 5.5 tests # # # Start of 10.1 tests # # # MDEV-8741 Equal field propagation leaves some remainders after simplifying WHERE zerofill_column=2010 AND zerofill_column>=2010 # CREATE TABLE t1 (a INT ZEROFILL); INSERT INTO t1 VALUES (2010),(2020); EXPLAIN EXTENDED SELECT * FROM t1 WHERE a=2010 AND a>=2010; id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where Warnings: Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 2010 DROP TABLE t1; # # MDEV-8369 Unexpected impossible WHERE for a condition on a ZEROFILL field # CREATE TABLE t1 (a INT ZEROFILL); INSERT INTO t1 VALUES (128),(129); SELECT * FROM t1 WHERE a=128; a 0000000128 SELECT * FROM t1 WHERE hex(a)='80'; a 0000000128 SELECT * FROM t1 WHERE a=128 AND hex(a)='80'; a 0000000128 EXPLAIN EXTENDED SELECT * FROM t1 WHERE a=128 AND hex(a)='80'; id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where Warnings: Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 128 and hex(`test`.`t1`.`a`) = '80' DROP TABLE t1; # # End of 10.1 tests # # # Start of 10.2 tests # # # MDEV-9393 Split Copy_field::get_copy_func() into virtual methods in Field # CREATE TABLE t1 (a INT); INSERT INTO t1 VALUES (10.1),(10.9); SELECT * FROM t1; a 10 11 DROP TABLE t1; CREATE TABLE t1 (a INT); CREATE TABLE t2 (a DECIMAL(10,2)); INSERT INTO t2 VALUES (10.1),(10.9); INSERT INTO t1 SELECT a FROM t2; SELECT * FROM t1; a 10 11 DROP TABLE t1,t2; CREATE TABLE t1 (a DECIMAL(10,2)); INSERT INTO t1 VALUES (10.1),(10.9); ALTER TABLE t1 MODIFY a INT; SELECT * FROM t1; a 10 11 DROP TABLE t1; CREATE TABLE t1 (a INT); INSERT INTO t1 VALUES (TIME'00:00:10.1'),(TIME'00:00:10.9'); SELECT * FROM t1; a 10 10 DROP TABLE t1; CREATE TABLE t1 (a INT); CREATE TABLE t2 (a TIME(1)); INSERT INTO t2 VALUES (10.1),(10.9); INSERT INTO t1 SELECT a FROM t2; SELECT * FROM t1; a 10 10 DROP TABLE t1,t2; CREATE TABLE t1 (a TIME(1)); INSERT INTO t1 VALUES (10.1),(10.9); ALTER TABLE t1 MODIFY a INT; SELECT * FROM t1; a 10 10 DROP TABLE t1; # # MDEV-9334 ALTER from DECIMAL to BIGINT UNSIGNED returns a wrong result # CREATE TABLE t1 (a DECIMAL(30,0)); INSERT INTO t1 VALUES (CAST(0xFFFFFFFFFFFFFFFF AS UNSIGNED)); SELECT * FROM t1; a 18446744073709551615 ALTER TABLE t1 MODIFY a BIGINT UNSIGNED; SELECT * FROM t1; a 18446744073709551615 DROP TABLE t1; # # End of 10.2 tests # # # Start of 10.3 tests # # # MDEV-15926 MEDIUMINT returns wrong I_S attributes # CREATE TABLE t1 (a MEDIUMINT, b MEDIUMINT UNSIGNED); SELECT COLUMN_NAME, NUMERIC_PRECISION FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1' ORDER BY COLUMN_NAME; COLUMN_NAME NUMERIC_PRECISION a 7 b 8 DROP TABLE t1; # # MDEV-15946 MEDIUMINT(N<8) creates a wrong data type on conversion to string # CREATE TABLE t1 ( uint8 TINYINT(2) UNSIGNED, sint8 TINYINT(2), uint16 SMALLINT(2) UNSIGNED, sint16 SMALLINT(2), uint24 MEDIUMINT(2) UNSIGNED, sint24 MEDIUMINT(2), uint32 INT(2) UNSIGNED, sint32 INT(2), uint64 BIGINT(2) UNSIGNED, sint64 BIGINT(2) ); CREATE TABLE t2 AS SELECT CONCAT(uint8),CONCAT(sint8), CONCAT(uint16),CONCAT(sint16), CONCAT(uint24),CONCAT(sint24), CONCAT(uint32),CONCAT(sint32), CONCAT(uint64),CONCAT(sint64) FROM t1; SHOW CREATE TABLE t2; Table Create Table t2 CREATE TABLE `t2` ( `CONCAT(uint8)` varchar(3) DEFAULT NULL, `CONCAT(sint8)` varchar(4) DEFAULT NULL, `CONCAT(uint16)` varchar(5) DEFAULT NULL, `CONCAT(sint16)` varchar(6) DEFAULT NULL, `CONCAT(uint24)` varchar(8) DEFAULT NULL, `CONCAT(sint24)` varchar(8) DEFAULT NULL, `CONCAT(uint32)` varchar(10) DEFAULT NULL, `CONCAT(sint32)` varchar(11) DEFAULT NULL, `CONCAT(uint64)` varchar(20) DEFAULT NULL, `CONCAT(sint64)` varchar(20) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 DROP TABLE t2; CREATE TABLE t2 AS SELECT CONCAT(COALESCE(uint8)),CONCAT(COALESCE(sint8)), CONCAT(COALESCE(uint16)),CONCAT(COALESCE(sint16)), CONCAT(COALESCE(uint24)),CONCAT(COALESCE(sint24)), CONCAT(COALESCE(uint32)),CONCAT(COALESCE(sint32)), CONCAT(COALESCE(uint64)),CONCAT(COALESCE(sint64)) FROM t1; SHOW CREATE TABLE t2; Table Create Table t2 CREATE TABLE `t2` ( `CONCAT(COALESCE(uint8))` varchar(3) DEFAULT NULL, `CONCAT(COALESCE(sint8))` varchar(4) DEFAULT NULL, `CONCAT(COALESCE(uint16))` varchar(5) DEFAULT NULL, `CONCAT(COALESCE(sint16))` varchar(6) DEFAULT NULL, `CONCAT(COALESCE(uint24))` varchar(8) DEFAULT NULL, `CONCAT(COALESCE(sint24))` varchar(8) DEFAULT NULL, `CONCAT(COALESCE(uint32))` varchar(10) DEFAULT NULL, `CONCAT(COALESCE(sint32))` varchar(11) DEFAULT NULL, `CONCAT(COALESCE(uint64))` varchar(20) DEFAULT NULL, `CONCAT(COALESCE(sint64))` varchar(20) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 DROP TABLE t2; DROP TABLE t1; CREATE FUNCTION uint8() RETURNS TINYINT(2) UNSIGNED RETURN 1; CREATE FUNCTION sint8() RETURNS TINYINT(2) RETURN 1; CREATE FUNCTION uint16() RETURNS SMALLINT(2) UNSIGNED RETURN 1; CREATE FUNCTION sint16() RETURNS SMALLINT(2) RETURN 1; CREATE FUNCTION uint24() RETURNS MEDIUMINT(2) UNSIGNED RETURN 1; CREATE FUNCTION sint24() RETURNS MEDIUMINT(2) RETURN 1; CREATE FUNCTION uint32() RETURNS INT(2) UNSIGNED RETURN 1; CREATE FUNCTION sint32() RETURNS INT(2) RETURN 1; CREATE FUNCTION uint64() RETURNS BIGINT(2) UNSIGNED RETURN 1; CREATE FUNCTION sint64() RETURNS BIGINT(2) RETURN 1; CREATE TABLE t1 AS SELECT CONCAT(uint8()), CONCAT(sint8()), CONCAT(uint16()),CONCAT(sint16()), CONCAT(uint24()),CONCAT(sint24()), CONCAT(uint32()),CONCAT(sint32()), CONCAT(uint64()),CONCAT(sint64()); SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `CONCAT(uint8())` varchar(3) DEFAULT NULL, `CONCAT(sint8())` varchar(4) DEFAULT NULL, `CONCAT(uint16())` varchar(5) DEFAULT NULL, `CONCAT(sint16())` varchar(6) DEFAULT NULL, `CONCAT(uint24())` varchar(8) DEFAULT NULL, `CONCAT(sint24())` varchar(8) DEFAULT NULL, `CONCAT(uint32())` varchar(10) DEFAULT NULL, `CONCAT(sint32())` varchar(11) DEFAULT NULL, `CONCAT(uint64())` varchar(20) DEFAULT NULL, `CONCAT(sint64())` varchar(20) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 DROP TABLE t1; CREATE TABLE t1 AS SELECT CONCAT(COALESCE(uint8())),CONCAT(COALESCE(sint8())), CONCAT(COALESCE(uint16())),CONCAT(COALESCE(sint16())), CONCAT(COALESCE(uint24())),CONCAT(COALESCE(sint24())), CONCAT(COALESCE(uint32())),CONCAT(COALESCE(sint32())), CONCAT(COALESCE(uint64())),CONCAT(COALESCE(sint64())); SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `CONCAT(COALESCE(uint8()))` varchar(3) DEFAULT NULL, `CONCAT(COALESCE(sint8()))` varchar(4) DEFAULT NULL, `CONCAT(COALESCE(uint16()))` varchar(5) DEFAULT NULL, `CONCAT(COALESCE(sint16()))` varchar(6) DEFAULT NULL, `CONCAT(COALESCE(uint24()))` varchar(8) DEFAULT NULL, `CONCAT(COALESCE(sint24()))` varchar(8) DEFAULT NULL, `CONCAT(COALESCE(uint32()))` varchar(10) DEFAULT NULL, `CONCAT(COALESCE(sint32()))` varchar(11) DEFAULT NULL, `CONCAT(COALESCE(uint64()))` varchar(20) DEFAULT NULL, `CONCAT(COALESCE(sint64()))` varchar(20) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 DROP TABLE t1; DROP FUNCTION uint8; DROP FUNCTION sint8; DROP FUNCTION uint16; DROP FUNCTION sint16; DROP FUNCTION uint24; DROP FUNCTION sint24; DROP FUNCTION uint32; DROP FUNCTION sint32; DROP FUNCTION uint64; DROP FUNCTION sint64; # # MDEV-20285 Wrong result on INSERT..SELECT when converting from SIGNED to UNSIGNED # CREATE TABLE t1 (a TINYINT UNSIGNED); CREATE TABLE t2 (a TINYINT); INSERT INTO t1 VALUES (255); INSERT IGNORE INTO t2 SELECT a FROM t1; Warnings: Warning 1264 Out of range value for column 'a' at row 1 SELECT * FROM t2; a 127 DROP TABLE t1, t2; # # End of 10.3 tests # # # Start of 10.4 tests # # # MDEV-11362 True condition elimination does not work for DECIMAL and temporal dynamic SQL parameters # CREATE TABLE t1 (a INT); INSERT INTO t1 VALUES (1),(2),(3); EXPLAIN EXTENDED SELECT * FROM t1 WHERE 1+a<=>1+a; id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Warnings: Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where 1 EXECUTE IMMEDIATE 'EXPLAIN EXTENDED SELECT * FROM t1 WHERE ?+a<=>?+a' USING 1,1; id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Warnings: Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where 1 EXECUTE IMMEDIATE 'EXPLAIN EXTENDED SELECT * FROM t1 WHERE ?+a<=>1+a' USING 1; id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Warnings: Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where 1 EXECUTE IMMEDIATE 'EXPLAIN EXTENDED SELECT * FROM t1 WHERE 1+a<=>?+a' USING 1; id select_type table type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Warnings: Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where 1 DROP TABLE t1; # # MDEV-15759 Expect "Impossible WHERE" for indexed_int_column=out_of_range_int_constant # CREATE TABLE t1 (a TINYINT, KEY(a)); INSERT INTO t1 VALUES (1),(2),(3),(4),(5); EXPLAIN SELECT * FROM t1 WHERE a=200; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables EXPLAIN SELECT * FROM t1 WHERE a<=>200; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables DROP TABLE t1; # # MDEV-8554 Expect "Impossible WHERE" for never true values like a!=a, aa # CREATE TABLE t1 (a INT); INSERT INTO t1 VALUES (1),(2),(3); EXPLAIN SELECT * FROM t1 WHERE a!=a; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE SELECT COUNT(*) FROM t1 WHERE a!=a; COUNT(*) 0 EXPLAIN SELECT * FROM t1 WHERE a>a; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE SELECT COUNT(*) FROM t1 WHERE a>a; COUNT(*) 0 EXPLAIN SELECT COUNT(*) FROM t1 WHERE aa; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE SELECT COUNT(*) FROM t1 WHERE a>a; COUNT(*) 0 EXPLAIN SELECT COUNT(*) FROM t1 WHERE aa-1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where SELECT COUNT(*) FROM t1 WHERE a>a-1; COUNT(*) 3 EXPLAIN SELECT COUNT(*) FROM t1 WHERE a> NULL WITH ROLLUP; 1 1 DROP TABLE t1; # # End of 10.5 tests #