diff options
Diffstat (limited to 'mysql-test')
100 files changed, 2262 insertions, 191 deletions
diff --git a/mysql-test/main/alter_table_errors.result b/mysql-test/main/alter_table_errors.result index 020a30304d0..b26409e3d05 100644 --- a/mysql-test/main/alter_table_errors.result +++ b/mysql-test/main/alter_table_errors.result @@ -8,3 +8,22 @@ t CREATE TABLE `t` ( `v` int(11) GENERATED ALWAYS AS (`a`) VIRTUAL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 drop table t; +create temporary table t1 (a int, v int as (a)); +alter table t1 change column a b int, algorithm=inplace; +ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY +show create table t1; +Table Create Table +t1 CREATE TEMPORARY TABLE `t1` ( + `a` int(11) DEFAULT NULL, + `v` int(11) GENERATED ALWAYS AS (`a`) VIRTUAL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +create temporary table t2 (a int, v int as (a)); +lock table t2 write; +alter table t2 change column a b int, algorithm=inplace; +ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY +show create table t2; +Table Create Table +t2 CREATE TEMPORARY TABLE `t2` ( + `a` int(11) DEFAULT NULL, + `v` int(11) GENERATED ALWAYS AS (`a`) VIRTUAL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 diff --git a/mysql-test/main/alter_table_errors.test b/mysql-test/main/alter_table_errors.test index d9982ac26f4..8fa65b0f330 100644 --- a/mysql-test/main/alter_table_errors.test +++ b/mysql-test/main/alter_table_errors.test @@ -8,3 +8,14 @@ create table t (a int, v int as (a)) engine=innodb; alter table t change column a b tinyint, algorithm=inplace; show create table t; drop table t; + +create temporary table t1 (a int, v int as (a)); +--error ER_ALTER_OPERATION_NOT_SUPPORTED +alter table t1 change column a b int, algorithm=inplace; +show create table t1; + +create temporary table t2 (a int, v int as (a)); +lock table t2 write; +--error ER_ALTER_OPERATION_NOT_SUPPORTED +alter table t2 change column a b int, algorithm=inplace; +show create table t2; diff --git a/mysql-test/main/check.result b/mysql-test/main/check.result index e3dcda773f4..e882a4cdbe6 100644 --- a/mysql-test/main/check.result +++ b/mysql-test/main/check.result @@ -85,3 +85,13 @@ t1 CREATE TABLE `t1` ( `c` int(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 DROP TABLE t1; +create temporary table t1 ( +id int not null auto_increment primary key, +f int not null default 0 +); +insert into t1 () values (); +alter ignore table t1 add constraint check (f > 0); +Warnings: +Warning 4025 CONSTRAINT `CONSTRAINT_1` failed for `test`.`t1` +alter table t1; +drop table t1; diff --git a/mysql-test/main/check.test b/mysql-test/main/check.test index cce8fd34c9c..475a7996a09 100644 --- a/mysql-test/main/check.test +++ b/mysql-test/main/check.test @@ -103,3 +103,15 @@ CREATE OR REPLACE TABLE t1 (a INT, b INT, c INT, CHECK (a+b>0)) ENGINE=MyISAM; ALTER TABLE t1 DROP COLUMN b, DROP CONSTRAINT `CONSTRAINT_1`; SHOW CREATE TABLE t1; DROP TABLE t1; + +# +# MDEV-16903 Assertion `!auto_increment_field_not_null' failed in TABLE::init after unsuccessful attempt to add CHECK constraint on temporary table +# +create temporary table t1 ( + id int not null auto_increment primary key, + f int not null default 0 +); +insert into t1 () values (); +alter ignore table t1 add constraint check (f > 0); +alter table t1; +drop table t1; diff --git a/mysql-test/main/func_group_innodb.result b/mysql-test/main/func_group_innodb.result index 27493ae710b..e149997af4f 100644 --- a/mysql-test/main/func_group_innodb.result +++ b/mysql-test/main/func_group_innodb.result @@ -246,4 +246,28 @@ EXPLAIN SELECT MIN(c) FROM t1 GROUP BY b; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range NULL b 263 NULL 3 Using index for group-by DROP TABLE t1; +# +# MDEV-17589: Stack-buffer-overflow with indexed varchar (utf8) field +# +CREATE TABLE t1 (v1 varchar(1020), v2 varchar(2), v3 varchar(2), +KEY k1 (v3,v2,v1)) ENGINE=InnoDB CHARACTER SET=utf8 ROW_FORMAT=DYNAMIC; +INSERT INTO t1 VALUES ('king', 'qu','qu'), ('bad','go','go'); +explain +SELECT MIN(t1.v1) FROM t1 where t1.v2='qu' and t1.v3='qu'; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away +SELECT MIN(t1.v1) FROM t1 where t1.v2='qu' and t1.v3='qu'; +MIN(t1.v1) +king +drop table t1; +CREATE TABLE t1 (v1 varchar(1024) CHARACTER SET utf8, KEY v1 (v1)) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +INSERT INTO t1 VALUES ('king'), ('bad'); +explain +SELECT MIN(x.v1) FROM (SELECT t1.* FROM t1 WHERE t1.v1 >= 'p') x; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No matching min/max row +SELECT MIN(x.v1) FROM (SELECT t1.* FROM t1 WHERE t1.v1 >= 'p') x; +MIN(x.v1) +NULL +drop table t1; End of 5.5 tests diff --git a/mysql-test/main/func_group_innodb.test b/mysql-test/main/func_group_innodb.test index 1d175f85ed9..c4914b97641 100644 --- a/mysql-test/main/func_group_innodb.test +++ b/mysql-test/main/func_group_innodb.test @@ -192,4 +192,23 @@ EXPLAIN SELECT MIN(c) FROM t1 GROUP BY b; DROP TABLE t1; +--echo # +--echo # MDEV-17589: Stack-buffer-overflow with indexed varchar (utf8) field +--echo # + +CREATE TABLE t1 (v1 varchar(1020), v2 varchar(2), v3 varchar(2), + KEY k1 (v3,v2,v1)) ENGINE=InnoDB CHARACTER SET=utf8 ROW_FORMAT=DYNAMIC; +INSERT INTO t1 VALUES ('king', 'qu','qu'), ('bad','go','go'); +explain +SELECT MIN(t1.v1) FROM t1 where t1.v2='qu' and t1.v3='qu'; +SELECT MIN(t1.v1) FROM t1 where t1.v2='qu' and t1.v3='qu'; +drop table t1; + +CREATE TABLE t1 (v1 varchar(1024) CHARACTER SET utf8, KEY v1 (v1)) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; +INSERT INTO t1 VALUES ('king'), ('bad'); +explain +SELECT MIN(x.v1) FROM (SELECT t1.* FROM t1 WHERE t1.v1 >= 'p') x; +SELECT MIN(x.v1) FROM (SELECT t1.* FROM t1 WHERE t1.v1 >= 'p') x; +drop table t1; + --echo End of 5.5 tests diff --git a/mysql-test/main/func_math.result b/mysql-test/main/func_math.result index eafee43e2a2..251979dba03 100644 --- a/mysql-test/main/func_math.result +++ b/mysql-test/main/func_math.result @@ -1316,5 +1316,12 @@ t2 CREATE TABLE `t2` ( DROP TABLE t1, t2; SET sql_mode=DEFAULT; # +# MDEV-18150 Assertion `decimals_to_set <= 38' failed in Item_func_round::fix_length_and_dec_decimal +# +CREATE TABLE t1 (i INT(23)); +SELECT ROUND( i, 18446744073709551594 ) AS f FROM t1; +f +DROP TABLE t1; +# # End of 10.3 tests # diff --git a/mysql-test/main/func_math.test b/mysql-test/main/func_math.test index bf95cfd7868..5d7c593a63d 100644 --- a/mysql-test/main/func_math.test +++ b/mysql-test/main/func_math.test @@ -920,5 +920,13 @@ SET sql_mode=DEFAULT; --echo # +--echo # MDEV-18150 Assertion `decimals_to_set <= 38' failed in Item_func_round::fix_length_and_dec_decimal +--echo # + +CREATE TABLE t1 (i INT(23)); +SELECT ROUND( i, 18446744073709551594 ) AS f FROM t1; +DROP TABLE t1; + +--echo # --echo # End of 10.3 tests --echo # diff --git a/mysql-test/main/grant5.result b/mysql-test/main/grant5.result index 24abc61a348..c0fecf0c369 100644 --- a/mysql-test/main/grant5.result +++ b/mysql-test/main/grant5.result @@ -18,3 +18,10 @@ ERROR 42000: Access denied for user 'test'@'%' to database 'mysql' connection default; drop user test, foo; drop role foo; +CREATE TABLE t1 (a INT); +LOCK TABLE t1 WRITE; +REVOKE EXECUTE ON PROCEDURE sp FROM u; +ERROR HY000: Table 'user' was not locked with LOCK TABLES +REVOKE PROCESS ON *.* FROM u; +ERROR HY000: Table 'user' was not locked with LOCK TABLES +DROP TABLE t1; diff --git a/mysql-test/main/grant5.test b/mysql-test/main/grant5.test index 14f2fd65020..649bba7d1ca 100644 --- a/mysql-test/main/grant5.test +++ b/mysql-test/main/grant5.test @@ -23,3 +23,13 @@ show grants for foo@'%'; # user drop user test, foo; drop role foo; +# +# MDEV-17975 Assertion `! is_set()' or `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed upon REVOKE under LOCK TABLE +# +CREATE TABLE t1 (a INT); +LOCK TABLE t1 WRITE; +--error ER_TABLE_NOT_LOCKED +REVOKE EXECUTE ON PROCEDURE sp FROM u; +--error ER_TABLE_NOT_LOCKED +REVOKE PROCESS ON *.* FROM u; +DROP TABLE t1; diff --git a/mysql-test/main/innodb_ext_key.result b/mysql-test/main/innodb_ext_key.result index c55e8d138f8..7a994730738 100644 --- a/mysql-test/main/innodb_ext_key.result +++ b/mysql-test/main/innodb_ext_key.result @@ -1089,6 +1089,7 @@ from t0 A, t0 B, t0 C; drop table t0,t1; # +# # MDEV-10360: Extended keys: index properties depend on index order # create table t0 (a int); diff --git a/mysql-test/main/innodb_ext_key.test b/mysql-test/main/innodb_ext_key.test index a721943e8bc..4104ac5f787 100644 --- a/mysql-test/main/innodb_ext_key.test +++ b/mysql-test/main/innodb_ext_key.test @@ -726,6 +726,7 @@ if ($rows < 2) drop table t0,t1; --echo # +--echo # --echo # MDEV-10360: Extended keys: index properties depend on index order --echo # create table t0 (a int); diff --git a/mysql-test/main/innodb_mysql_sync.result b/mysql-test/main/innodb_mysql_sync.result index a8a264d6580..3f284edde86 100644 --- a/mysql-test/main/innodb_mysql_sync.result +++ b/mysql-test/main/innodb_mysql_sync.result @@ -489,7 +489,9 @@ DROP TABLE t1; SET DEBUG_SYNC= 'alter_table_copy_after_lock_upgrade SIGNAL upgraded'; #Setup a table with FULLTEXT index. connection default; -CREATE TABLE t1(fld1 CHAR(10), FULLTEXT(fld1)) ENGINE= INNODB; +CREATE TABLE t1(fld1 CHAR(10), FULLTEXT(fld1), FULLTEXT(fld1)) ENGINE= INNODB; +Warnings: +Note 1831 Duplicate index `fld1_2`. This is deprecated and will be disallowed in a future release INSERT INTO t1 VALUES("String1"); #OPTIMIZE TABLE operation. OPTIMIZE TABLE t1; diff --git a/mysql-test/main/innodb_mysql_sync.test b/mysql-test/main/innodb_mysql_sync.test index 66935f811d7..4026080c4b4 100644 --- a/mysql-test/main/innodb_mysql_sync.test +++ b/mysql-test/main/innodb_mysql_sync.test @@ -650,7 +650,7 @@ SET DEBUG_SYNC= 'alter_table_copy_after_lock_upgrade SIGNAL upgraded'; --echo #Setup a table with FULLTEXT index. --connection default -CREATE TABLE t1(fld1 CHAR(10), FULLTEXT(fld1)) ENGINE= INNODB; +CREATE TABLE t1(fld1 CHAR(10), FULLTEXT(fld1), FULLTEXT(fld1)) ENGINE= INNODB; INSERT INTO t1 VALUES("String1"); --echo #OPTIMIZE TABLE operation. diff --git a/mysql-test/main/mysqldump.result b/mysql-test/main/mysqldump.result index 1366f9bdd12..556245df9cd 100644 --- a/mysql-test/main/mysqldump.result +++ b/mysql-test/main/mysqldump.result @@ -4333,12 +4333,12 @@ second ee1 root@localhost UTC ONE TIME 2035-12-31 20:01:23 NULL NULL NULL NULL E show create event ee1; Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation ee1 UTC CREATE DEFINER=`root`@`localhost` EVENT `ee1` ON SCHEDULE AT '2035-12-31 20:01:23' ON COMPLETION NOT PRESERVE ENABLE DO set @a=5 latin1 latin1_swedish_ci latin1_swedish_ci -create event ee2 on schedule at '2018-12-31 21:01:23' do set @a=5; +create event ee2 on schedule at '2030-12-31 21:01:22' do set @a=5; create event ee3 on schedule at '2030-12-31 22:01:23' do set @a=5; show events; Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation second ee1 root@localhost UTC ONE TIME 2035-12-31 20:01:23 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci -second ee2 root@localhost UTC ONE TIME 2018-12-31 21:01:23 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci +second ee2 root@localhost UTC ONE TIME 2030-12-31 21:01:22 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci second ee3 root@localhost UTC ONE TIME 2030-12-31 22:01:23 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci drop database second; create database third; @@ -4346,7 +4346,7 @@ use third; show events; Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation third ee1 root@localhost UTC ONE TIME 2035-12-31 20:01:23 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci -third ee2 root@localhost UTC ONE TIME 2018-12-31 21:01:23 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci +third ee2 root@localhost UTC ONE TIME 2030-12-31 21:01:22 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci third ee3 root@localhost UTC ONE TIME 2030-12-31 22:01:23 NULL NULL NULL NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci drop database third; set time_zone = 'SYSTEM'; diff --git a/mysql-test/main/mysqldump.test b/mysql-test/main/mysqldump.test index 6567596c35c..dbd32f3e74a 100644 --- a/mysql-test/main/mysqldump.test +++ b/mysql-test/main/mysqldump.test @@ -1810,7 +1810,7 @@ show create event ee1; ## prove three works (with spaces and tabs on the end) # start with one from the previous restore -create event ee2 on schedule at '2018-12-31 21:01:23' do set @a=5; +create event ee2 on schedule at '2030-12-31 21:01:22' do set @a=5; create event ee3 on schedule at '2030-12-31 22:01:23' do set @a=5; show events; --exec $MYSQL_DUMP --events second > $MYSQLTEST_VARDIR/tmp/bug16853-2.sql diff --git a/mysql-test/main/partition_alter.test b/mysql-test/main/partition_alter.test index 62a3e1c0777..91ae67e2f7b 100644 --- a/mysql-test/main/partition_alter.test +++ b/mysql-test/main/partition_alter.test @@ -79,7 +79,6 @@ partition p1 values less than ('2016-10-18'), partition p2 values less than ('2020-10-19')); insert t1 values (0, '2000-01-02', 0); insert t1 values (1, '2020-01-02', 10); ---replace_regex /#sql-[0-9a-f_]*/#sql-temporary/ --error ER_CONSTRAINT_FAILED alter table t1 add check (b in (0, 1)); alter table t1 add check (b in (0, 10)); @@ -96,7 +95,6 @@ partition p1 values less than ('2016-10-18'), partition p2 values less than ('2020-10-19')); insert t1 values (0, '2000-01-02', 0); insert t1 values (1, '2020-01-02', 10); ---replace_regex /#sql-[0-9a-f_]*/#sql-temporary/ --error ER_CONSTRAINT_FAILED alter table t1 add check (b in (0, 1)); alter table t1 add check (b in (0, 10)); diff --git a/mysql-test/main/partition_innodb.result b/mysql-test/main/partition_innodb.result index 3d8d2040a48..cdfe619cb29 100644 --- a/mysql-test/main/partition_innodb.result +++ b/mysql-test/main/partition_innodb.result @@ -954,6 +954,26 @@ test_jfg test_jfg11 test_jfg test_jfg12#P#p1000 test_jfg test_jfg12#P#pmax DROP DATABASE test_jfg; +create table t1 (a int) engine=innodb; +create table t2 ( +b int, +c int, +d bit not null default 0, +v bit as (d) virtual, +key (b,v) +) engine=innodb partition by hash (b); +insert into t1 values (1),(2); +insert into t2 (b,c,d) values (1,1,0),(2,2,0); +explain select t1.* from t1 join t2 on (v = a); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 2 +1 SIMPLE t2 index NULL b 7 NULL 2 Using where; Using index; Using join buffer (flat, BNL join) +select t1.* from t1 join t2 on (v = a); +a +drop table t1, t2; +# +# End of 10.2 tests +# # # MDEV-16241 Assertion `inited==RND' failed in handler::ha_rnd_end() # @@ -965,3 +985,6 @@ SELECT COUNT(*) FROM t1 WHERE x IS NULL AND y IS NULL AND z IS NULL; COUNT(*) 2 DROP TABLE t1; +# +# End of 10.3 tests +# diff --git a/mysql-test/main/partition_innodb.test b/mysql-test/main/partition_innodb.test index 4b4662da47b..57d644d293d 100644 --- a/mysql-test/main/partition_innodb.test +++ b/mysql-test/main/partition_innodb.test @@ -1048,6 +1048,27 @@ database_name = 'test_jfg'; DROP DATABASE test_jfg; +# +# MDEV-17755 Assertion `!table || (!table->read_set || bitmap_is_set(table->read_set, field_index) || (!(ptr >= table->record[0] && ptr < table->record[0] + table->s->reclength)))' failed in Field_bit::val_int upon SELECT with JOIN, partitions, indexed virtual column +# +create table t1 (a int) engine=innodb; +create table t2 ( + b int, + c int, + d bit not null default 0, + v bit as (d) virtual, + key (b,v) +) engine=innodb partition by hash (b); +insert into t1 values (1),(2); +insert into t2 (b,c,d) values (1,1,0),(2,2,0); +explain select t1.* from t1 join t2 on (v = a); +select t1.* from t1 join t2 on (v = a); +drop table t1, t2; + +--echo # +--echo # End of 10.2 tests +--echo # + --echo # --echo # MDEV-16241 Assertion `inited==RND' failed in handler::ha_rnd_end() --echo # @@ -1057,3 +1078,7 @@ PARTITION BY SYSTEM_TIME (PARTITION p1 HISTORY, PARTITION pn CURRENT); INSERT INTO t1 VALUES (1, 7, 8, 9), (2, NULL, NULL, NULL), (3, NULL, NULL, NULL); SELECT COUNT(*) FROM t1 WHERE x IS NULL AND y IS NULL AND z IS NULL; DROP TABLE t1; + +--echo # +--echo # End of 10.3 tests +--echo # diff --git a/mysql-test/main/ps_error.result b/mysql-test/main/ps_error.result new file mode 100644 index 00000000000..c3c312e82f5 --- /dev/null +++ b/mysql-test/main/ps_error.result @@ -0,0 +1,73 @@ +# +# MDEV-17741 Assertion `thd->Item_change_list::is_empty()' failed in mysql_parse after unsuccessful PS +# +SET SQL_MODE= 'STRICT_ALL_TABLES'; +CREATE TABLE t1 (a INT); +PREPARE stmt FROM "CREATE TABLE tmp AS SELECT * FROM t1 WHERE 'foo' && 0"; +Warnings: +Warning 1292 Truncated incorrect INTEGER value: 'foo' +EXECUTE stmt; +ERROR 22007: Truncated incorrect INTEGER value: 'foo' +SELECT a FROM t1 GROUP BY NULL WITH ROLLUP; +a +DROP TABLE t1; +SET sql_mode=DEFAULT; +SET SQL_MODE= 'STRICT_ALL_TABLES'; +CREATE TABLE t1 (a INT); +PREPARE stmt FROM "CREATE TABLE tmp AS SELECT * FROM t1 WHERE 'foo' && 0"; +Warnings: +Warning 1292 Truncated incorrect INTEGER value: 'foo' +EXECUTE stmt; +ERROR 22007: Truncated incorrect INTEGER value: 'foo' +SET @a = REPLACE( @@global.optimizer_switch, '=on', '=off' ) ; +DROP TABLE t1; +SET sql_mode=DEFAULT; +# +# MDEV-17738 Server crashes in Item::delete_self on closing connection after unsuccessful PS +# +SET SQL_MODE='STRICT_ALL_TABLES'; +PREPARE stmt FROM "CREATE TABLE ps AS SELECT 1 FROM DUAL WHERE 'foo' && 0"; +Warnings: +Warning 1292 Truncated incorrect INTEGER value: 'foo' +EXECUTE stmt; +ERROR 22007: Truncated incorrect INTEGER value: 'foo' +SELECT 'All done'; +All done +All done +SET SQL_MODE=DEFAULT; +SET SQL_MODE='STRICT_ALL_TABLES'; +PREPARE stmt FROM "CREATE TABLE ps AS SELECT 1 FROM DUAL WHERE 'foo' && 0"; +Warnings: +Warning 1292 Truncated incorrect INTEGER value: 'foo' +EXECUTE stmt; +ERROR 22007: Truncated incorrect INTEGER value: 'foo' +DEALLOCATE PREPARE stmt; +SELECT 'All done'; +All done +All done +SET SQL_MODE=DEFAULT; +SET SQL_MODE= 'STRICT_ALL_TABLES'; +CREATE TABLE t1 (a INT); +PREPARE stmt FROM "CREATE TABLE tmp AS SELECT * FROM t1 WHERE 'foo' && 0"; +Warnings: +Warning 1292 Truncated incorrect INTEGER value: 'foo' +EXECUTE stmt; +ERROR 22007: Truncated incorrect INTEGER value: 'foo' +SELECT a FROM t1 GROUP BY a; +a +SELECT * FROM t1; +a +DROP TABLE t1; +SET SQL_MODE=DEFAULT; +SET SQL_MODE= 'STRICT_ALL_TABLES'; +CREATE TABLE t1 (a INT); +PREPARE stmt FROM "CREATE TABLE tmp AS SELECT * FROM t1 WHERE 'foo' && 0"; +Warnings: +Warning 1292 Truncated incorrect INTEGER value: 'foo' +EXECUTE stmt; +ERROR 22007: Truncated incorrect INTEGER value: 'foo' +SELECT a FROM t1 GROUP BY a; +a +INSERT t1 SELECT * FROM ( SELECT * FROM t1 ) sq; +DROP TABLE t1; +SET SQL_MODE=DEFAULT; diff --git a/mysql-test/main/ps_error.test b/mysql-test/main/ps_error.test new file mode 100644 index 00000000000..5efb5d36137 --- /dev/null +++ b/mysql-test/main/ps_error.test @@ -0,0 +1,66 @@ +# +# Tests related to PS returning errors rather than doing successfull execution +# + +--echo # +--echo # MDEV-17741 Assertion `thd->Item_change_list::is_empty()' failed in mysql_parse after unsuccessful PS +--echo # + +SET SQL_MODE= 'STRICT_ALL_TABLES'; +CREATE TABLE t1 (a INT); +PREPARE stmt FROM "CREATE TABLE tmp AS SELECT * FROM t1 WHERE 'foo' && 0"; +--error ER_TRUNCATED_WRONG_VALUE +EXECUTE stmt; +SELECT a FROM t1 GROUP BY NULL WITH ROLLUP; +DROP TABLE t1; +SET sql_mode=DEFAULT; + +SET SQL_MODE= 'STRICT_ALL_TABLES'; +CREATE TABLE t1 (a INT); +PREPARE stmt FROM "CREATE TABLE tmp AS SELECT * FROM t1 WHERE 'foo' && 0"; +--error ER_TRUNCATED_WRONG_VALUE +EXECUTE stmt; +SET @a = REPLACE( @@global.optimizer_switch, '=on', '=off' ) ; +DROP TABLE t1; +SET sql_mode=DEFAULT; + + +--echo # +--echo # MDEV-17738 Server crashes in Item::delete_self on closing connection after unsuccessful PS +--echo # + +SET SQL_MODE='STRICT_ALL_TABLES'; +PREPARE stmt FROM "CREATE TABLE ps AS SELECT 1 FROM DUAL WHERE 'foo' && 0"; +--error ER_TRUNCATED_WRONG_VALUE +EXECUTE stmt; +--source include/restart_mysqld.inc +SELECT 'All done'; +SET SQL_MODE=DEFAULT; + +SET SQL_MODE='STRICT_ALL_TABLES'; +PREPARE stmt FROM "CREATE TABLE ps AS SELECT 1 FROM DUAL WHERE 'foo' && 0"; +--error ER_TRUNCATED_WRONG_VALUE +EXECUTE stmt; +DEALLOCATE PREPARE stmt; +SELECT 'All done'; +SET SQL_MODE=DEFAULT; + +SET SQL_MODE= 'STRICT_ALL_TABLES'; +CREATE TABLE t1 (a INT); +PREPARE stmt FROM "CREATE TABLE tmp AS SELECT * FROM t1 WHERE 'foo' && 0"; +--error ER_TRUNCATED_WRONG_VALUE +EXECUTE stmt; +SELECT a FROM t1 GROUP BY a; +SELECT * FROM t1; +DROP TABLE t1; +SET SQL_MODE=DEFAULT; + +SET SQL_MODE= 'STRICT_ALL_TABLES'; +CREATE TABLE t1 (a INT); +PREPARE stmt FROM "CREATE TABLE tmp AS SELECT * FROM t1 WHERE 'foo' && 0"; +--error ER_TRUNCATED_WRONG_VALUE +EXECUTE stmt; +SELECT a FROM t1 GROUP BY a; +INSERT t1 SELECT * FROM ( SELECT * FROM t1 ) sq; +DROP TABLE t1; +SET SQL_MODE=DEFAULT; diff --git a/mysql-test/main/range_innodb.result b/mysql-test/main/range_innodb.result index 794e6c7b3cc..8bb1c833a56 100644 --- a/mysql-test/main/range_innodb.result +++ b/mysql-test/main/range_innodb.result @@ -37,3 +37,21 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t0 ALL NULL NULL NULL NULL 10 1 SIMPLE t2 range a,b b 5 NULL 201 Using where; Using join buffer (flat, BNL join) drop table t0,t1,t2; +CREATE TABLE t1 ( +pk INT PRIMARY KEY, f1 INT, f2 CHAR(1), f3 CHAR(1), +KEY(f1), KEY(f2) +) ENGINE=InnoDB; +INSERT INTO t1 VALUES +(1,4,'v',NULL),(2,6,'v',NULL),(3,7,'c',NULL),(4,1,'e',NULL),(5,0,'x',NULL), +(6,7,'i',NULL),(7,7,'e',NULL),(8,1,'p',NULL),(9,7,'s',NULL),(10,1,'j',NULL), +(11,5,'z',NULL),(12,2,'c',NULL),(13,0,'a',NULL),(14,1,'q',NULL),(15,8,'y',NULL), +(16,1,'m',NULL),(17,1,'r',NULL),(18,9,'v',NULL),(19,1,'n',NULL); +CREATE TABLE t2 (f4 INT, f5 CHAR(1)) ENGINE=InnoDB; +INSERT INTO t2 VALUES (4,'q'),(NULL,'j'); +SELECT * FROM t1 AS t1_1, t1 AS t1_2, t2 +WHERE f5 = t1_2.f2 AND ( t1_1.f1 = 103 AND t1_1.f2 = 'o' OR t1_1.pk < f4 ); +pk f1 f2 f3 pk f1 f2 f3 f4 f5 +1 4 v NULL 14 1 q NULL 4 q +2 6 v NULL 14 1 q NULL 4 q +3 7 c NULL 14 1 q NULL 4 q +drop table t1,t2; diff --git a/mysql-test/main/range_innodb.test b/mysql-test/main/range_innodb.test index f76794814ef..605006587cc 100644 --- a/mysql-test/main/range_innodb.test +++ b/mysql-test/main/range_innodb.test @@ -45,3 +45,20 @@ explain select * from t0 left join t2 on t2.a <t0.a and t2.b between 50 and 250; drop table t0,t1,t2; +CREATE TABLE t1 ( + pk INT PRIMARY KEY, f1 INT, f2 CHAR(1), f3 CHAR(1), + KEY(f1), KEY(f2) +) ENGINE=InnoDB; + +INSERT INTO t1 VALUES +(1,4,'v',NULL),(2,6,'v',NULL),(3,7,'c',NULL),(4,1,'e',NULL),(5,0,'x',NULL), +(6,7,'i',NULL),(7,7,'e',NULL),(8,1,'p',NULL),(9,7,'s',NULL),(10,1,'j',NULL), +(11,5,'z',NULL),(12,2,'c',NULL),(13,0,'a',NULL),(14,1,'q',NULL),(15,8,'y',NULL), +(16,1,'m',NULL),(17,1,'r',NULL),(18,9,'v',NULL),(19,1,'n',NULL); + +CREATE TABLE t2 (f4 INT, f5 CHAR(1)) ENGINE=InnoDB; +INSERT INTO t2 VALUES (4,'q'),(NULL,'j'); + +SELECT * FROM t1 AS t1_1, t1 AS t1_2, t2 +WHERE f5 = t1_2.f2 AND ( t1_1.f1 = 103 AND t1_1.f2 = 'o' OR t1_1.pk < f4 ); +drop table t1,t2; diff --git a/mysql-test/main/read_only.result b/mysql-test/main/read_only.result index 2029413c0f0..83dfada5f29 100644 --- a/mysql-test/main/read_only.result +++ b/mysql-test/main/read_only.result @@ -170,11 +170,24 @@ flush privileges; drop database mysqltest_db1; set global read_only= @start_read_only; # +# MDEV-16987 - ALTER DATABASE possible in read-only mode +# +CREATE USER user1@localhost; +GRANT ALTER ON test1.* TO user1@localhost; +CREATE DATABASE test1; +SET GLOBAL read_only=1; +ALTER DATABASE test1 CHARACTER SET utf8; +ERROR HY000: The MariaDB server is running with the --read-only option so it cannot execute this statement +SET GLOBAL read_only=0; +DROP DATABASE test1; +DROP USER user1@localhost; +USE test; +# End of 5.5 tests +# # WL#5968 Implement START TRANSACTION READ (WRITE|ONLY); # # # Test interaction with read_only system variable. -DROP TABLE IF EXISTS t1; CREATE TABLE t1(a INT); INSERT INTO t1 VALUES (1), (2); CREATE USER user1; @@ -211,3 +224,4 @@ connection default; DROP USER user1; SET GLOBAL read_only= 0; DROP TABLE t1; +# End of 10.0 tests diff --git a/mysql-test/main/read_only.test b/mysql-test/main/read_only.test index a05f813346e..5314b11154f 100644 --- a/mysql-test/main/read_only.test +++ b/mysql-test/main/read_only.test @@ -283,6 +283,23 @@ flush privileges; drop database mysqltest_db1; set global read_only= @start_read_only; +--echo # +--echo # MDEV-16987 - ALTER DATABASE possible in read-only mode +--echo # +CREATE USER user1@localhost; +GRANT ALTER ON test1.* TO user1@localhost; +CREATE DATABASE test1; +SET GLOBAL read_only=1; +change_user user1; +--error ER_OPTION_PREVENTS_STATEMENT +ALTER DATABASE test1 CHARACTER SET utf8; +change_user root; +SET GLOBAL read_only=0; +DROP DATABASE test1; +DROP USER user1@localhost; +USE test; + +--echo # End of 5.5 tests --echo # --echo # WL#5968 Implement START TRANSACTION READ (WRITE|ONLY); @@ -291,10 +308,6 @@ set global read_only= @start_read_only; --echo # --echo # Test interaction with read_only system variable. ---disable_warnings -DROP TABLE IF EXISTS t1; ---enable_warnings - CREATE TABLE t1(a INT); INSERT INTO t1 VALUES (1), (2); @@ -344,3 +357,5 @@ DROP TABLE t1; # Wait till all disconnects are completed --source include/wait_until_count_sessions.inc + +--echo # End of 10.0 tests diff --git a/mysql-test/main/subselect_exists2in.result b/mysql-test/main/subselect_exists2in.result index 95fc1c19b82..36ca0bf82f2 100644 --- a/mysql-test/main/subselect_exists2in.result +++ b/mysql-test/main/subselect_exists2in.result @@ -330,7 +330,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 3 MATERIALIZED t3 ALL NULL NULL NULL NULL 2 100.00 Using where Warnings: Note 1276 Field or reference 'test.t2.b' of SELECT #3 was resolved in SELECT #2 -Note 1003 /* select#1 */ select (/* select#2 */ select 1 from dual where !(1 is not null and <in_optimizer>(1,1 in ( <materialize> (/* select#3 */ select `test`.`t3`.`c` from `test`.`t3` where `test`.`t3`.`c` is not null ), <primary_index_lookup>(1 in <temporary table> on distinct_key where 1 = `<subquery3>`.`c`))))) AS `( SELECT b FROM t2 WHERE NOT EXISTS ( SELECT c FROM t3 WHERE c = b ) )` from `test`.`t1` +Note 1003 /* select#1 */ select (/* select#2 */ select 1 from dual where !(1 is not null and <in_optimizer>(1,1 in (<primary_index_lookup>(1 in <temporary table> on distinct_key where 1 = `<subquery3>`.`c`))))) AS `( SELECT b FROM t2 WHERE NOT EXISTS ( SELECT c FROM t3 WHERE c = b ) )` from `test`.`t1` SELECT ( SELECT b FROM t2 WHERE NOT EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1; ( SELECT b FROM t2 WHERE NOT EXISTS ( SELECT c FROM t3 WHERE c = b ) ) 1 @@ -344,7 +344,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 3 MATERIALIZED t3 ALL NULL NULL NULL NULL 2 100.00 Using where Warnings: Note 1276 Field or reference 'test.t2.b' of SELECT #3 was resolved in SELECT #2 -Note 1003 /* select#1 */ select (/* select#2 */ select 1 from dual where !(1 is not null and <in_optimizer>(1,1 in ( <materialize> (/* select#3 */ select `test`.`t3`.`c` from `test`.`t3` where `test`.`t3`.`c` is not null ), <primary_index_lookup>(1 in <temporary table> on distinct_key where 1 = `<subquery3>`.`c`))))) AS `( SELECT b FROM t2 WHERE NOT EXISTS ( SELECT c FROM t3 WHERE c = b ) )` from `test`.`t1` +Note 1003 /* select#1 */ select (/* select#2 */ select 1 from dual where !(1 is not null and <in_optimizer>(1,1 in (<primary_index_lookup>(1 in <temporary table> on distinct_key where 1 = `<subquery3>`.`c`))))) AS `( SELECT b FROM t2 WHERE NOT EXISTS ( SELECT c FROM t3 WHERE c = b ) )` from `test`.`t1` SELECT ( SELECT b FROM t2 WHERE NOT EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1; ( SELECT b FROM t2 WHERE NOT EXISTS ( SELECT c FROM t3 WHERE c = b ) ) 1 diff --git a/mysql-test/main/udf.result b/mysql-test/main/udf.result index 6af6b167511..edbae7e046f 100644 --- a/mysql-test/main/udf.result +++ b/mysql-test/main/udf.result @@ -465,3 +465,17 @@ a b Hello HL DROP FUNCTION METAPHON; DROP TABLE t1; +# +# MDEV-15424: Unreasonal SQL Error (1356) on select from view +# +CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "UDF_EXAMPLE_LIB"; +create table t1(a int , b int); +insert into t1 values(100, 54), (200, 199); +create view v1 as select myfunc_int(max(a) over (order by b) , b) from t1; +select * from v1; +myfunc_int(max(a) over (order by b) , b) +154 +399 +drop view v1; +drop function myfunc_int; +drop table t1; diff --git a/mysql-test/main/udf.test b/mysql-test/main/udf.test index c3a25c6bcce..d2c0dad8398 100644 --- a/mysql-test/main/udf.test +++ b/mysql-test/main/udf.test @@ -528,3 +528,16 @@ DROP FUNCTION METAPHON; #INSERT INTO t1 (a) VALUES ('Hello'); #SELECT * FROM t1; DROP TABLE t1; + +--echo # +--echo # MDEV-15424: Unreasonal SQL Error (1356) on select from view +--echo # +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval CREATE FUNCTION myfunc_int RETURNS INTEGER SONAME "$UDF_EXAMPLE_SO"; +create table t1(a int , b int); +insert into t1 values(100, 54), (200, 199); +create view v1 as select myfunc_int(max(a) over (order by b) , b) from t1; +select * from v1; +drop view v1; +drop function myfunc_int; +drop table t1; diff --git a/mysql-test/main/union.result b/mysql-test/main/union.result index a41148f2600..da99d65dec3 100644 --- a/mysql-test/main/union.result +++ b/mysql-test/main/union.result @@ -2150,6 +2150,44 @@ select @advertAcctId as a from dual union all select 1.0 from dual; a 1000003.0 1.0 +# +# MDEV-13784: query causes seg fault +# +CREATE TABLE t1 (`bug_id` int NOT NULL PRIMARY KEY, `product_id` int NOT NULL); +INSERT INTO t1 VALUES (45199,1184); +CREATE TABLE t2 (`product_id` int NOT NULL,`userid` int NOT NULL, PRIMARY KEY (`product_id`,`userid`)); +INSERT INTO t2 VALUES (1184,103),(1184,624),(1184,1577),(1184,1582); +CREATE TABLE t3 (`id` int NOT NULL PRIMARY KEY,`name` varchar(64)); +CREATE TABLE t4 ( `userid` int NOT NULL PRIMARY KEY, `login_name` varchar(255)); +INSERT INTO t4 VALUES (103,'foo'),(624,'foo'),(1577,'foo'),(1582,'foo'); +CREATE TABLE t5 (`id` int NOT NULL PRIMARY KEY, `name` varchar(64)); +explain select +( +select login_name from t4 where userId = ( +select userid from t2 where product_id = t1.product_id +union +select userid from t2 where product_id = ( +select id from t5 where name = (select name from t3 where id = t1.product_id)) limit 1 ) +) as x from t1 where (t1.bug_id=45199); +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t1 system PRIMARY NULL NULL NULL 1 +2 SUBQUERY t4 eq_ref PRIMARY PRIMARY 4 func 1 Using where +3 SUBQUERY t2 ref PRIMARY PRIMARY 4 const 3 Using index +4 UNION t2 ref PRIMARY PRIMARY 4 func 1 Using where; Using index +5 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +6 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables +NULL UNION RESULT <union3,4> ALL NULL NULL NULL NULL NULL +select +( +select login_name from t4 where userId = ( +select userid from t2 where product_id = t1.product_id +union +select userid from t2 where product_id = ( +select id from t5 where name = (select name from t3 where id = t1.product_id)) limit 1 ) +) as x from t1 where (t1.bug_id=45199); +x +foo +drop table t1, t2, t3, t4, t5; End of 5.5 tests # # WL#1763 Avoid creating temporary table in UNION ALL diff --git a/mysql-test/main/union.test b/mysql-test/main/union.test index 878d7118ef5..e7543ba4a81 100644 --- a/mysql-test/main/union.test +++ b/mysql-test/main/union.test @@ -1485,6 +1485,41 @@ eval SET NAMES $old_charset; SET @advertAcctId = 1000003; select @advertAcctId as a from dual union all select 1.0 from dual; +--echo # +--echo # MDEV-13784: query causes seg fault +--echo # + +CREATE TABLE t1 (`bug_id` int NOT NULL PRIMARY KEY, `product_id` int NOT NULL); +INSERT INTO t1 VALUES (45199,1184); + +CREATE TABLE t2 (`product_id` int NOT NULL,`userid` int NOT NULL, PRIMARY KEY (`product_id`,`userid`)); +INSERT INTO t2 VALUES (1184,103),(1184,624),(1184,1577),(1184,1582); + +CREATE TABLE t3 (`id` int NOT NULL PRIMARY KEY,`name` varchar(64)); + + +CREATE TABLE t4 ( `userid` int NOT NULL PRIMARY KEY, `login_name` varchar(255)); +INSERT INTO t4 VALUES (103,'foo'),(624,'foo'),(1577,'foo'),(1582,'foo'); +CREATE TABLE t5 (`id` int NOT NULL PRIMARY KEY, `name` varchar(64)); + +explain select +( + select login_name from t4 where userId = ( + select userid from t2 where product_id = t1.product_id + union + select userid from t2 where product_id = ( + select id from t5 where name = (select name from t3 where id = t1.product_id)) limit 1 ) +) as x from t1 where (t1.bug_id=45199); +select +( + select login_name from t4 where userId = ( + select userid from t2 where product_id = t1.product_id + union + select userid from t2 where product_id = ( + select id from t5 where name = (select name from t3 where id = t1.product_id)) limit 1 ) +) as x from t1 where (t1.bug_id=45199); +drop table t1, t2, t3, t4, t5; + --echo End of 5.5 tests --echo # diff --git a/mysql-test/main/view.result b/mysql-test/main/view.result index 2bc82f90e46..d97517d5ce7 100644 --- a/mysql-test/main/view.result +++ b/mysql-test/main/view.result @@ -4613,7 +4613,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 2 DEPENDENT SUBQUERY t4 ALL NULL NULL NULL NULL 2 100.00 Using where Warnings: Note 1276 Field or reference 'test.t1.a' of SELECT #2 was resolved in SELECT #1 -Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,10 AS `a` from `test`.`t1` where !<expr_cache><10,`test`.`t1`.`a`>(<in_optimizer>(10,<exists>(/* select#2 */ select NULL from `test`.`t4` where `test`.`t4`.`a` >= `test`.`t1`.`a` and trigcond(<cache>(10) = NULL or <cache>(NULL is null)) having trigcond(NULL is null)))) +Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,10 AS `a` from `test`.`t1` where !<expr_cache><10,`test`.`t1`.`a`>(<in_optimizer>(10,<exists>(/* select#2 */ select NULL from `test`.`t4` where `test`.`t4`.`a` >= `test`.`t1`.`a` and trigcond(<cache>(10) = NULL or 1) having trigcond(NULL is null)))) SELECT * FROM t1, t2 WHERE t2.a NOT IN (SELECT t3.b FROM t3 RIGHT JOIN t4 ON (t4.a = t3.a) WHERE t4.a >= t1.a); @@ -4629,7 +4629,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra 2 DEPENDENT SUBQUERY t4 ALL NULL NULL NULL NULL 2 100.00 Using where Warnings: Note 1276 Field or reference 'v1.a' of SELECT #2 was resolved in SELECT #1 -Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,10 AS `a` from `test`.`t1` where !<expr_cache><10,`test`.`t1`.`a`>(<in_optimizer>(10,<exists>(/* select#2 */ select NULL from `test`.`t4` where `test`.`t4`.`a` >= `test`.`t1`.`a` and trigcond(<cache>(10) = NULL or <cache>(NULL is null)) having trigcond(NULL is null)))) +Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,10 AS `a` from `test`.`t1` where !<expr_cache><10,`test`.`t1`.`a`>(<in_optimizer>(10,<exists>(/* select#2 */ select NULL from `test`.`t4` where `test`.`t4`.`a` >= `test`.`t1`.`a` and trigcond(<cache>(10) = NULL or 1) having trigcond(NULL is null)))) SELECT * FROM v1, t2 WHERE t2.a NOT IN (SELECT t3.b FROM t3 RIGHT JOIN t4 ON (t4.a = t3.a) WHERE t4.a >= v1.a); diff --git a/mysql-test/main/win.result b/mysql-test/main/win.result index 6ee6f01ba8d..73f9c65b41f 100644 --- a/mysql-test/main/win.result +++ b/mysql-test/main/win.result @@ -3471,7 +3471,25 @@ MIN(b1) OVER () 1 drop table t1; # -# Start of 10.3 tests +# MDEV-15424: Unreasonal SQL Error (1356) on select from view +# +create table t1 (id int, n1 int); +insert into t1 values (1,1), (2,1), (3,2), (4,4); +create view v1 as SELECT ifnull(max(n1) over (partition by n1),'aaa') FROM t1; +explain select * from v1; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY <derived2> ALL NULL NULL NULL NULL 4 +2 DERIVED t1 ALL NULL NULL NULL NULL 4 Using temporary +select * from v1; +ifnull(max(n1) over (partition by n1),'aaa') +1 +1 +2 +4 +drop table t1; +drop view v1; +# +# End of 10.2 tests # # # MDEV-16489 when lead() returns null on a datetime field, the result is treated as the literal string '[NULL]' @@ -3490,3 +3508,6 @@ d x 00:00:01 00:00:02 00:00:02 NULL DROP TABLE t1; +# +# End of 10.3 tests +# diff --git a/mysql-test/main/win.test b/mysql-test/main/win.test index 1b49ac681f4..15e96ec7e8e 100644 --- a/mysql-test/main/win.test +++ b/mysql-test/main/win.test @@ -2229,7 +2229,20 @@ SELECT DISTINCT MIN(b1) OVER () FROM t1; drop table t1; --echo # ---echo # Start of 10.3 tests +--echo # MDEV-15424: Unreasonal SQL Error (1356) on select from view +--echo # + +create table t1 (id int, n1 int); +insert into t1 values (1,1), (2,1), (3,2), (4,4); + +create view v1 as SELECT ifnull(max(n1) over (partition by n1),'aaa') FROM t1; +explain select * from v1; +select * from v1; +drop table t1; +drop view v1; + +--echo # +--echo # End of 10.2 tests --echo # --echo # @@ -2245,3 +2258,7 @@ CREATE TABLE t1 (d time); INSERT INTO t1 VALUES ('00:00:01'),('00:00:02'); SELECT *, LEAD(d) OVER (ORDER BY d) AS x FROM t1; DROP TABLE t1; + +--echo # +--echo # End of 10.3 tests +--echo # diff --git a/mysql-test/std_data/mdev17909#P#p20181029.MYD b/mysql-test/std_data/mdev17909#P#p20181029.MYD new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/mysql-test/std_data/mdev17909#P#p20181029.MYD diff --git a/mysql-test/std_data/mdev17909#P#p20181029.MYI b/mysql-test/std_data/mdev17909#P#p20181029.MYI Binary files differnew file mode 100644 index 00000000000..dcdd088b4dc --- /dev/null +++ b/mysql-test/std_data/mdev17909#P#p20181029.MYI diff --git a/mysql-test/std_data/mdev17909#P#p20181128.MYD b/mysql-test/std_data/mdev17909#P#p20181128.MYD new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/mysql-test/std_data/mdev17909#P#p20181128.MYD diff --git a/mysql-test/std_data/mdev17909#P#p20181128.MYI b/mysql-test/std_data/mdev17909#P#p20181128.MYI Binary files differnew file mode 100644 index 00000000000..dcdd088b4dc --- /dev/null +++ b/mysql-test/std_data/mdev17909#P#p20181128.MYI diff --git a/mysql-test/std_data/mdev17909.frm b/mysql-test/std_data/mdev17909.frm Binary files differnew file mode 100644 index 00000000000..575ecd2c70f --- /dev/null +++ b/mysql-test/std_data/mdev17909.frm diff --git a/mysql-test/std_data/mdev17909.par b/mysql-test/std_data/mdev17909.par Binary files differnew file mode 100644 index 00000000000..d9141dd0dee --- /dev/null +++ b/mysql-test/std_data/mdev17909.par diff --git a/mysql-test/suite/encryption/r/innodb-bad-key-change.result b/mysql-test/suite/encryption/r/innodb-bad-key-change.result index 179be43cc41..5812ff6dce9 100644 --- a/mysql-test/suite/encryption/r/innodb-bad-key-change.result +++ b/mysql-test/suite/encryption/r/innodb-bad-key-change.result @@ -3,6 +3,7 @@ call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); call mtr.add_suppression("InnoDB: Table `test`\\.`t[12]` (has an unreadable root page|is corrupted)"); call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[12]\\.ibd' cannot be decrypted\\."); call mtr.add_suppression("failed to read or decrypt \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\]"); +call mtr.add_suppression("InnoDB: Encrypted page \\[page id: space=[1-9][0-9]*, page number=3\\] in file .*test.t1.ibd looks corrupted; key_version=1"); call mtr.add_suppression("File '.*mysql-test.std_data.keysbad3\\.txt' not found"); # Start server with keys2.txt SET GLOBAL innodb_file_per_table = ON; diff --git a/mysql-test/suite/encryption/r/innodb-encryption-alter.result b/mysql-test/suite/encryption/r/innodb-encryption-alter.result index 1d5b88bc750..995360a5744 100644 --- a/mysql-test/suite/encryption/r/innodb-encryption-alter.result +++ b/mysql-test/suite/encryption/r/innodb-encryption-alter.result @@ -77,7 +77,6 @@ t2 CREATE TABLE `t2` ( `a` int(11) NOT NULL, PRIMARY KEY (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 -DROP TABLE t2; CREATE TABLE t3 (a int not null primary key) engine=innodb ENCRYPTION_KEY_ID=4; ERROR HY000: Can't create table `test`.`t3` (errno: 140 "Wrong create options") SHOW WARNINGS; @@ -85,3 +84,30 @@ Level Code Message Warning 140 InnoDB: innodb_encrypt_tables=OFF only allows ENCRYPTION_KEY_ID=1 Error 1005 Can't create table `test`.`t3` (errno: 140 "Wrong create options") Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB +FLUSH TABLES; +create table t1(f1 int not null, f2 int not null)engine=innodb encrypted=yes; +insert into t1 values(1, 2), (2, 3), (4, 5), (5, 6), (7, 8); +insert into t1 select * from t1; +BEGIN; +INSERT INTO t2 VALUES (1); +connect con1, localhost, root; +SET DEBUG_SYNC = 'row_log_table_apply2_before SIGNAL done WAIT_FOR ever'; +alter table t1 force; +connection default; +SET DEBUG_SYNC = 'now WAIT_FOR done'; +SET GLOBAL innodb_flush_log_at_trx_commit=1; +COMMIT; +disconnect con1; +select * from t1; +f1 f2 +1 2 +2 3 +4 5 +5 6 +7 8 +1 2 +2 3 +4 5 +5 6 +7 8 +drop table t1,t2; diff --git a/mysql-test/suite/encryption/r/innodb-encryption-disable.result b/mysql-test/suite/encryption/r/innodb-encryption-disable.result index d8d37ba7493..94b47103dd0 100644 --- a/mysql-test/suite/encryption/r/innodb-encryption-disable.result +++ b/mysql-test/suite/encryption/r/innodb-encryption-disable.result @@ -1,6 +1,7 @@ call mtr.add_suppression("InnoDB: Table `test`\\.`t[15]` (has an unreadable root page|is corrupted)"); call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[15]\\.ibd' cannot be decrypted\\."); call mtr.add_suppression("failed to read or decrypt \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\]"); +call mtr.add_suppression("InnoDB: Encrypted page \\[page id: space=[1-9][0-9]*, page number=3\\] in file .*test.t[15].ibd looks corrupted; key_version=1"); call mtr.add_suppression("Couldn't load plugins from 'file_key_management"); create table t5 ( `intcol1` int(32) DEFAULT NULL, diff --git a/mysql-test/suite/encryption/r/innodb-missing-key.result b/mysql-test/suite/encryption/r/innodb-missing-key.result index 32ae29ca76b..6f4a45d817a 100644 --- a/mysql-test/suite/encryption/r/innodb-missing-key.result +++ b/mysql-test/suite/encryption/r/innodb-missing-key.result @@ -1,6 +1,7 @@ call mtr.add_suppression("InnoDB: Table `test`\\.`t1` (has an unreadable root page|is corrupted)"); call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\."); call mtr.add_suppression("failed to read or decrypt \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\]"); +call mtr.add_suppression("InnoDB: Encrypted page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file .*test.t[12].ibd looks corrupted; key_version=1"); # Start server with keys2.txt CREATE TABLE t1(a int not null primary key auto_increment, b varchar(128)) engine=innodb ENCRYPTED=YES ENCRYPTION_KEY_ID=19; CREATE TABLE t2(a int not null primary key auto_increment, b varchar(128)) engine=innodb ENCRYPTED=YES ENCRYPTION_KEY_ID=1; diff --git a/mysql-test/suite/encryption/t/innodb-bad-key-change.test b/mysql-test/suite/encryption/t/innodb-bad-key-change.test index 5c424d8752b..a832880c494 100644 --- a/mysql-test/suite/encryption/t/innodb-bad-key-change.test +++ b/mysql-test/suite/encryption/t/innodb-bad-key-change.test @@ -13,6 +13,7 @@ call mtr.add_suppression("Plugin 'file_key_management' registration.*failed"); call mtr.add_suppression("InnoDB: Table `test`\\.`t[12]` (has an unreadable root page|is corrupted)"); call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[12]\\.ibd' cannot be decrypted\\."); call mtr.add_suppression("failed to read or decrypt \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\]"); +call mtr.add_suppression("InnoDB: Encrypted page \\[page id: space=[1-9][0-9]*, page number=3\\] in file .*test.t1.ibd looks corrupted; key_version=1"); call mtr.add_suppression("File '.*mysql-test.std_data.keysbad3\\.txt' not found"); --echo # Start server with keys2.txt diff --git a/mysql-test/suite/encryption/t/innodb-encryption-alter.test b/mysql-test/suite/encryption/t/innodb-encryption-alter.test index e8391d97d6c..a6a4dbaff9b 100644 --- a/mysql-test/suite/encryption/t/innodb-encryption-alter.test +++ b/mysql-test/suite/encryption/t/innodb-encryption-alter.test @@ -1,13 +1,12 @@ -- source include/have_innodb.inc +-- source include/have_debug.inc +-- source include/have_debug_sync.inc -- source include/have_file_key_management_plugin.inc # # MDEV-8817: Failing assertion: new_state->key_version != ENCRYPTION_KEY_VERSION_INVALID # -let $encrypt_tables = `SELECT @@innodb_encrypt_tables`; -let $threads = `SELECT @@innodb_encryption_threads`; - SET GLOBAL innodb_encrypt_tables = ON; SET GLOBAL innodb_encryption_threads = 4; @@ -99,14 +98,35 @@ ALTER TABLE t2 ENCRYPTION_KEY_ID=4, ALGORITHM=COPY; --replace_regex /#sql-[0-9a-f_]*`/#sql-temporary`/ SHOW WARNINGS; SHOW CREATE TABLE t2; -DROP TABLE t2; --error ER_CANT_CREATE_TABLE CREATE TABLE t3 (a int not null primary key) engine=innodb ENCRYPTION_KEY_ID=4; SHOW WARNINGS; -# reset system ---disable_query_log -EVAL SET GLOBAL innodb_encrypt_tables = $encrypt_tables; -EVAL SET GLOBAL innodb_encryption_threads = $threads; ---enable_query_log +FLUSH TABLES; + +create table t1(f1 int not null, f2 int not null)engine=innodb encrypted=yes; +insert into t1 values(1, 2), (2, 3), (4, 5), (5, 6), (7, 8); +insert into t1 select * from t1; +BEGIN; +INSERT INTO t2 VALUES (1); + +connect con1, localhost, root; +SET DEBUG_SYNC = 'row_log_table_apply2_before SIGNAL done WAIT_FOR ever'; +send alter table t1 force; + +connection default; +SET DEBUG_SYNC = 'now WAIT_FOR done'; +SET GLOBAL innodb_flush_log_at_trx_commit=1; +COMMIT; + +--let $shutdown_timeout= 0 +--source include/restart_mysqld.inc +disconnect con1; + +select * from t1; +drop table t1,t2; + +# Work around missing crash recovery at the SQL layer. +let $datadir= `select @@datadir`; +--remove_files_wildcard $datadir/test #sql-*.frm diff --git a/mysql-test/suite/encryption/t/innodb-encryption-disable.test b/mysql-test/suite/encryption/t/innodb-encryption-disable.test index 0994078788e..6d6f1c40d4c 100644 --- a/mysql-test/suite/encryption/t/innodb-encryption-disable.test +++ b/mysql-test/suite/encryption/t/innodb-encryption-disable.test @@ -10,6 +10,7 @@ call mtr.add_suppression("InnoDB: Table `test`\\.`t[15]` (has an unreadable root page|is corrupted)"); call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[15]\\.ibd' cannot be decrypted\\."); call mtr.add_suppression("failed to read or decrypt \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\]"); +call mtr.add_suppression("InnoDB: Encrypted page \\[page id: space=[1-9][0-9]*, page number=3\\] in file .*test.t[15].ibd looks corrupted; key_version=1"); # Suppression for builds where file_key_management plugin is linked statically call mtr.add_suppression("Couldn't load plugins from 'file_key_management"); diff --git a/mysql-test/suite/encryption/t/innodb-missing-key.test b/mysql-test/suite/encryption/t/innodb-missing-key.test index cf851a54def..c2a73d594b4 100644 --- a/mysql-test/suite/encryption/t/innodb-missing-key.test +++ b/mysql-test/suite/encryption/t/innodb-missing-key.test @@ -10,6 +10,7 @@ call mtr.add_suppression("InnoDB: Table `test`\\.`t1` (has an unreadable root page|is corrupted)"); call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file '.*test.t[123]\\.ibd' cannot be decrypted\\."); call mtr.add_suppression("failed to read or decrypt \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\]"); +call mtr.add_suppression("InnoDB: Encrypted page \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\] in file .*test.t[12].ibd looks corrupted; key_version=1"); --echo # Start server with keys2.txt -- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt diff --git a/mysql-test/suite/galera/disabled.def b/mysql-test/suite/galera/disabled.def index 03ddda7aa76..180f28401ee 100644 --- a/mysql-test/suite/galera/disabled.def +++ b/mysql-test/suite/galera/disabled.def @@ -20,9 +20,6 @@ galera_as_slave_preordered : wsrep-preordered feature not merged to MariaDB GAL-419 : MDEV-13549 Galera test failures galera_var_notify_cmd : MDEV-13549 Galera test failures galera_as_slave_replication_bundle : MDEV-13549 Galera test failures -galera_gcache_recover : MDEV-13549 Galera test failures -galera_gcache_recover_full_gcache : MDEV-13549 Galera test failures -galera_gcache_recover_manytrx : MDEV-13549 Galera test failures galera_ssl_upgrade : MDEV-13549 Galera test failures MW-329 : wsrep_local_replays not stable MW-416 : MDEV-13549 Galera test failures @@ -49,3 +46,5 @@ galera_pc_ignore_sb : MDEV-17357 Test failure on galera.galera_pc_ignore_sb MW-328A : MDEV-17847 Galera test failure on MW-328[A|B|C] MW-328B : MDEV-17847 Galera test failure on MW-328[A|B|C] MW-328C : MDEV-17847 Galera test failure on MW-328[A|B|C] +query_cache : MDEV-18137: Galera test failure on query_cache +galera_gcache_recover_manytrx : MDEV-15740 diff --git a/mysql-test/suite/galera/r/galera_FK_duplicate_client_insert.result b/mysql-test/suite/galera/r/galera_FK_duplicate_client_insert.result new file mode 100644 index 00000000000..3eb638ca49a --- /dev/null +++ b/mysql-test/suite/galera/r/galera_FK_duplicate_client_insert.result @@ -0,0 +1,380 @@ +CREATE TABLE user(id int primary key, j int) ENGINE=InnoDB; +CREATE TABLE user_session(id int primary key, fk1 int, fk2 int) ENGINE=InnoDB; +alter table user_session add foreign key (fk1) references user(id); +INSERT INTO user values (1,0), (2,0), (3,0), (4,0); +INSERT INTO user_session values (1,1,1); +connect node_1_u, 127.0.0.1, root, , test, $NODE_MYPORT_1; +connect node_1_i, 127.0.0.1, root, , test, $NODE_MYPORT_1; +connect node_2_i, 127.0.0.1, root, , test, $NODE_MYPORT_2; +"Phase 1: plain SQL statements" +connection node_1; +connection node_1_u; +begin; +update user set j = j + 1 WHERE id > 0; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +insert into user_session(id,fk1,fk2) values (2, 2, 2); +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +insert into user_session(id,fk1,fk2) values (2, 2, 3); +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +update user set j = j + 1 WHERE id > 0; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +insert into user_session(id,fk1,fk2) values (2, 2, 2); +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +insert into user_session(id,fk1,fk2) values (2, 2, 3); +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +update user set j = j + 1 WHERE id > 0; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +insert into user_session(id,fk1,fk2) values (2, 2, 2); +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +insert into user_session(id,fk1,fk2) values (2, 2, 3); +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +update user set j = j + 1 WHERE id > 0; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +insert into user_session(id,fk1,fk2) values (2, 2, 2); +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +insert into user_session(id,fk1,fk2) values (2, 2, 3); +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +update user set j = j + 1 WHERE id > 0; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +insert into user_session(id,fk1,fk2) values (2, 2, 2); +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +insert into user_session(id,fk1,fk2) values (2, 2, 3); +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +update user set j = j + 1 WHERE id > 0; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +insert into user_session(id,fk1,fk2) values (2, 2, 2); +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +insert into user_session(id,fk1,fk2) values (2, 2, 3); +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +update user set j = j + 1 WHERE id > 0; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +insert into user_session(id,fk1,fk2) values (2, 2, 2); +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +insert into user_session(id,fk1,fk2) values (2, 2, 3); +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +update user set j = j + 1 WHERE id > 0; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +insert into user_session(id,fk1,fk2) values (2, 2, 2); +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +insert into user_session(id,fk1,fk2) values (2, 2, 3); +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +update user set j = j + 1 WHERE id > 0; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +insert into user_session(id,fk1,fk2) values (2, 2, 2); +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +insert into user_session(id,fk1,fk2) values (2, 2, 3); +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +update user set j = j + 1 WHERE id > 0; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +insert into user_session(id,fk1,fk2) values (2, 2, 2); +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +insert into user_session(id,fk1,fk2) values (2, 2, 3); +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +"Phase 2: prepared statements" +connection node_1_u; +prepare upd from 'update user set j = j + 1 WHERE id > 0'; +connection node_1_i; +prepare ins1 from 'insert into user_session(id,fk1,fk2) values (2, 2, 2)'; +connection node_2_i; +prepare ins2 from 'insert into user_session(id,fk1,fk2) values (2, 2, 3)'; +connection node_1; +connection node_1_u; +begin; +execute upd; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +execute ins1; +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +execute ins2; +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +execute upd; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +execute ins1; +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +execute ins2; +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +execute upd; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +execute ins1; +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +execute ins2; +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +execute upd; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +execute ins1; +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +execute ins2; +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +execute upd; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +execute ins1; +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +execute ins2; +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +execute upd; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +execute ins1; +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +execute ins2; +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +execute upd; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +execute ins1; +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +execute ins2; +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +execute upd; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +execute ins1; +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +execute ins2; +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +execute upd; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +execute ins1; +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +execute ins2; +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1_u; +begin; +execute upd; +connection node_1_i; +set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; +execute ins1; +connection node_1; +set debug_sync='now WAIT_FOR ins_waiting'; +connection node_2_i; +execute ins2; +connection node_1; +set debug_sync='now SIGNAL cont_ins'; +connection node_1_i; +connection node_1_u; +commit; +connection node_1; +truncate user_session; +set debug_sync = reset; +connection node_1; +drop table user_session,user; diff --git a/mysql-test/suite/galera/r/galera_gcache_recover.result b/mysql-test/suite/galera/r/galera_gcache_recover.result index 127bcba39d8..d3ba06c1333 100644 --- a/mysql-test/suite/galera/r/galera_gcache_recover.result +++ b/mysql-test/suite/galera/r/galera_gcache_recover.result @@ -1,18 +1,25 @@ CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (1); SET SESSION wsrep_sync_wait = 0; +connection node_2; SET SESSION wsrep_sync_wait = 0; Killing server ... +connection node_1; INSERT INTO t1 VALUES (2); Killing server ... +connection node_1; Performing --wsrep-recover ... Using --wsrep-start-position when starting mysqld ... INSERT INTO t1 VALUES (3); +connection node_2; Performing --wsrep-recover ... Using --wsrep-start-position when starting mysqld ... +connection node_1; include/diff_servers.inc [servers=1 2] +connection node_1; CALL mtr.add_suppression("Skipped GCache ring buffer recovery"); include/assert_grep.inc [async IST sender starting to serve] +connection node_2; CALL mtr.add_suppression("Skipped GCache ring buffer recovery"); include/assert_grep.inc [Recovering GCache ring buffer: found gapless sequence] DROP TABLE t1; diff --git a/mysql-test/suite/galera/r/galera_gcache_recover_full_gcache.result b/mysql-test/suite/galera/r/galera_gcache_recover_full_gcache.result index 30ee5772411..588af5668bb 100644 --- a/mysql-test/suite/galera/r/galera_gcache_recover_full_gcache.result +++ b/mysql-test/suite/galera/r/galera_gcache_recover_full_gcache.result @@ -1,19 +1,26 @@ SET SESSION wsrep_sync_wait = 0; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY AUTO_INCREMENT, f2 LONGBLOB) ENGINE=InnoDB; +connection node_2; SET SESSION wsrep_sync_wait = 0; Killing server ... +connection node_1; INSERT INTO t1 (f2) VALUES (REPEAT('x', 1024 * 1024 * 10)); INSERT INTO t1 (f2) VALUES (REPEAT('x', 1024 * 1024 * 10)); INSERT INTO t1 (f2) VALUES (REPEAT('x', 1024 * 1024 * 10)); INSERT INTO t1 (f2) VALUES (REPEAT('x', 1024 * 1024 * 10)); INSERT INTO t1 (f2) VALUES (REPEAT('x', 1024 * 1024 * 10)); Killing server ... +connection node_1; Performing --wsrep-recover ... Using --wsrep-start-position when starting mysqld ... +connection node_2; Performing --wsrep-recover ... Using --wsrep-start-position when starting mysqld ... +connection node_1; include/diff_servers.inc [servers=1 2] +connection node_1; DROP TABLE t1; CALL mtr.add_suppression("Skipped GCache ring buffer recovery"); include/assert_grep.inc [IST first seqno 2 not found from cache, falling back to SST] +connection node_2; CALL mtr.add_suppression("Skipped GCache ring buffer recovery"); diff --git a/mysql-test/suite/galera/r/galera_gtid_slave_sst_rsync.result b/mysql-test/suite/galera/r/galera_gtid_slave_sst_rsync.result index cdf330643c2..380a0235ac2 100644 --- a/mysql-test/suite/galera/r/galera_gtid_slave_sst_rsync.result +++ b/mysql-test/suite/galera/r/galera_gtid_slave_sst_rsync.result @@ -150,6 +150,7 @@ connection node_3; connection node_2; STOP SLAVE; RESET SLAVE ALL; +set global gtid_slave_pos=""; reset master; #Connection 3 connection node_3; diff --git a/mysql-test/suite/galera/r/galera_ist_innodb_flush_logs,release.rdiff b/mysql-test/suite/galera/r/galera_ist_innodb_flush_logs,release.rdiff new file mode 100644 index 00000000000..bbd75f5230a --- /dev/null +++ b/mysql-test/suite/galera/r/galera_ist_innodb_flush_logs,release.rdiff @@ -0,0 +1,114 @@ +--- galera_ist_innodb_flush_logs.result ++++ galera_ist_innodb_flush_logs,release.result +@@ -94,111 +94,3 @@ + DROP TABLE t1; + COMMIT; + SET AUTOCOMMIT=ON; +-Performing State Transfer on a server that has been killed and restarted +-while a DDL was in progress on it +-connection node_1; +-CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB; +-SET AUTOCOMMIT=OFF; +-START TRANSACTION; +-INSERT INTO t1 VALUES ('node1_committed_before'); +-INSERT INTO t1 VALUES ('node1_committed_before'); +-INSERT INTO t1 VALUES ('node1_committed_before'); +-INSERT INTO t1 VALUES ('node1_committed_before'); +-INSERT INTO t1 VALUES ('node1_committed_before'); +-connection node_2; +-START TRANSACTION; +-INSERT INTO t1 VALUES ('node2_committed_before'); +-INSERT INTO t1 VALUES ('node2_committed_before'); +-INSERT INTO t1 VALUES ('node2_committed_before'); +-INSERT INTO t1 VALUES ('node2_committed_before'); +-INSERT INTO t1 VALUES ('node2_committed_before'); +-COMMIT; +-SET GLOBAL debug_dbug = 'd,sync.alter_opened_table'; +-connection node_1; +-ALTER TABLE t1 ADD COLUMN f2 INTEGER; +-connection node_2; +-SET wsrep_sync_wait = 0; +-Killing server ... +-connection node_1; +-SET AUTOCOMMIT=OFF; +-START TRANSACTION; +-INSERT INTO t1 (f1) VALUES ('node1_committed_during'); +-INSERT INTO t1 (f1) VALUES ('node1_committed_during'); +-INSERT INTO t1 (f1) VALUES ('node1_committed_during'); +-INSERT INTO t1 (f1) VALUES ('node1_committed_during'); +-INSERT INTO t1 (f1) VALUES ('node1_committed_during'); +-COMMIT; +-START TRANSACTION; +-INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +-INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +-INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +-INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +-INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +-connect node_1a_galera_st_kill_slave_ddl, 127.0.0.1, root, , test, $NODE_MYPORT_1; +-SET AUTOCOMMIT=OFF; +-START TRANSACTION; +-INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +-INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +-INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +-INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +-INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +-connection node_2; +-Performing --wsrep-recover ... +-connection node_2; +-Starting server ... +-Using --wsrep-start-position when starting mysqld ... +-SET AUTOCOMMIT=OFF; +-START TRANSACTION; +-INSERT INTO t1 (f1) VALUES ('node2_committed_after'); +-INSERT INTO t1 (f1) VALUES ('node2_committed_after'); +-INSERT INTO t1 (f1) VALUES ('node2_committed_after'); +-INSERT INTO t1 (f1) VALUES ('node2_committed_after'); +-INSERT INTO t1 (f1) VALUES ('node2_committed_after'); +-COMMIT; +-connection node_1; +-INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +-INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +-INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +-INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +-INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after'); +-COMMIT; +-SET AUTOCOMMIT=OFF; +-START TRANSACTION; +-INSERT INTO t1 (f1) VALUES ('node1_committed_after'); +-INSERT INTO t1 (f1) VALUES ('node1_committed_after'); +-INSERT INTO t1 (f1) VALUES ('node1_committed_after'); +-INSERT INTO t1 (f1) VALUES ('node1_committed_after'); +-INSERT INTO t1 (f1) VALUES ('node1_committed_after'); +-COMMIT; +-connection node_1a_galera_st_kill_slave_ddl; +-INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +-INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +-INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +-INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +-INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after'); +-ROLLBACK; +-SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; +-COUNT(*) = 2 +-1 +-SELECT COUNT(*) = 35 FROM t1; +-COUNT(*) = 35 +-1 +-SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +-COUNT(*) = 0 +-1 +-COMMIT; +-SET AUTOCOMMIT=ON; +-connection node_1; +-SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1'; +-COUNT(*) = 2 +-1 +-SELECT COUNT(*) = 35 FROM t1; +-COUNT(*) = 35 +-1 +-SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1; +-COUNT(*) = 0 +-1 +-DROP TABLE t1; +-COMMIT; +-SET AUTOCOMMIT=ON; +-SET GLOBAL debug_dbug = $debug_orig; diff --git a/mysql-test/suite/galera/t/galera_FK_duplicate_client_insert.test b/mysql-test/suite/galera/t/galera_FK_duplicate_client_insert.test new file mode 100644 index 00000000000..02322fc02ec --- /dev/null +++ b/mysql-test/suite/galera/t/galera_FK_duplicate_client_insert.test @@ -0,0 +1,161 @@ +--source include/have_innodb.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc +--source include/galera_cluster.inc +# +# This test will reproduce regressions of bugs +# https://github.com/codership/mysql-wsrep/issues/335 +# https://github.com/codership/mysql-wsrep/issues/336 +# +# The test will issue duplicate inserts into a table, which has foreign key +# constraint for a parent table. +# The inserts happen in separate nodes, and the +# The test outline is as follows: +# 1. in node 1, an update is done for the FK parent row, in a transaction, +# which is left open. The purpose of this is just to establish a X lock on +# the parent row. +# 2. in node 1, an insert for the child table is sent. The insert will have to wait +# for the parent row X lock, because it needs S lock on the same row. +# However, we have set an DBUG sync point just before the insert will call for +# innodb suspend +# 3. in node 2, a similar insert is issued. This will replicate to node 1 and try to +# abort the conflicting update and blocked insert +# 4. the inserts dbug sync point is relased, and insert should continue and abort +# gracefully +# 5. update is continued to commit, and it should also observe the deadlock +# +# This test is run in 3 phases: +# +# 1. with plain SQL statement +# 2. as SQL prepared statements +# 3. as SQl stored procedures +# +# The test phase 3 is for reproducing the issue in bug #336 specifically +# + +# +# create the test tables and foreign key constraint between them +# +CREATE TABLE user(id int primary key, j int) ENGINE=InnoDB; +CREATE TABLE user_session(id int primary key, fk1 int, fk2 int) ENGINE=InnoDB; +alter table user_session add foreign key (fk1) references user(id); + +# populate a few initial rows +INSERT INTO user values (1,0), (2,0), (3,0), (4,0); +INSERT INTO user_session values (1,1,1); + +# +# prepare test connections, for: +# update of parent row in node1 +# insert of child row in node1 +# insert of child row in node2 + +--connect node_1_u, 127.0.0.1, root, , test, $NODE_MYPORT_1 +--connect node_1_i, 127.0.0.1, root, , test, $NODE_MYPORT_1 +--connect node_2_i, 127.0.0.1, root, , test, $NODE_MYPORT_2 + + +# +# test phase 1: plain SQL statements +# +--echo "Phase 1: plain SQL statements" + + +--connection node_1 +let $counter=10; +let $sleep_period=1; + +while($counter > 0) +{ + --connection node_1_u + begin; + update user set j = j + 1 WHERE id > 0; + + --connection node_1_i + set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; + send insert into user_session(id,fk1,fk2) values (2, 2, 2); + + --connection node_1 + set debug_sync='now WAIT_FOR ins_waiting'; + + --connection node_2_i + insert into user_session(id,fk1,fk2) values (2, 2, 3); + + --connection node_1 + set debug_sync='now SIGNAL cont_ins'; + + --connection node_1_i + --error 0,ER_LOCK_DEADLOCK,ER_DUP_ENTRY + reap; + + --connection node_1_u + --error 0,ER_LOCK_DEADLOCK + commit; + + --connection node_1 + --error 0,ER_LOCK_DEADLOCK + truncate user_session; + set debug_sync = reset; + + dec $counter; +} + +# +# test phase 2: prepared statements +# +--echo "Phase 2: prepared statements" + +--connection node_1_u +prepare upd from 'update user set j = j + 1 WHERE id > 0'; + +--connection node_1_i +prepare ins1 from 'insert into user_session(id,fk1,fk2) values (2, 2, 2)'; + +--connection node_2_i +prepare ins2 from 'insert into user_session(id,fk1,fk2) values (2, 2, 3)'; + +--connection node_1 +let $counter=10; +let $sleep_period=1; + +while($counter > 0) +{ + --connection node_1_u + begin; + execute upd; + #update user set j = j + 1 WHERE id > 0; + + --connection node_1_i + set debug_sync='lock_wait_suspend_thread_enter SIGNAL ins_waiting WAIT_FOR cont_ins'; + send execute ins1; + + --connection node_1 + set debug_sync='now WAIT_FOR ins_waiting'; + + --connection node_2_i + execute ins2; + + --connection node_1 + set debug_sync='now SIGNAL cont_ins'; + + --connection node_1_i + --error 0,ER_LOCK_DEADLOCK,ER_DUP_ENTRY + reap; + + --connection node_1_u + --error 0,ER_LOCK_DEADLOCK + commit; + + --connection node_1 + + --error 0,ER_LOCK_DEADLOCK + truncate user_session; + set debug_sync = reset; + + dec $counter; +} + + +--connection node_1 + +drop table user_session,user; diff --git a/mysql-test/suite/galera/t/galera_gtid_slave_sst_rsync.test b/mysql-test/suite/galera/t/galera_gtid_slave_sst_rsync.test index 3fe94ad16b7..3ed7ec1d09e 100644 --- a/mysql-test/suite/galera/t/galera_gtid_slave_sst_rsync.test +++ b/mysql-test/suite/galera/t/galera_gtid_slave_sst_rsync.test @@ -196,6 +196,9 @@ DROP TABLE t2,t1; --connection node_2 STOP SLAVE; RESET SLAVE ALL; +--disable_warnings +set global gtid_slave_pos=""; +--enable_warnings reset master; --echo #Connection 3 diff --git a/mysql-test/suite/innodb/include/crc32.pl b/mysql-test/suite/innodb/include/crc32.pl new file mode 100644 index 00000000000..c2bce09dd36 --- /dev/null +++ b/mysql-test/suite/innodb/include/crc32.pl @@ -0,0 +1,33 @@ +# The following is Public Domain / Creative Commons CC0 from +# http://billauer.co.il/blog/2011/05/perl-crc32-crc-xs-module/ + +sub mycrc32 { + my ($input, $init_value, $polynomial) = @_; + + $init_value = 0 unless (defined $init_value); + $polynomial = 0xedb88320 unless (defined $polynomial); + + my @lookup_table; + + for (my $i=0; $i<256; $i++) { + my $x = $i; + for (my $j=0; $j<8; $j++) { + if ($x & 1) { + $x = ($x >> 1) ^ $polynomial; + } else { + $x = $x >> 1; + } + } + push @lookup_table, $x; + } + + my $crc = $init_value ^ 0xffffffff; + + foreach my $x (unpack ('C*', $input)) { + $crc = (($crc >> 8) & 0xffffff) ^ $lookup_table[ ($crc ^ $x) & 0xff ]; + } + + $crc = $crc ^ 0xffffffff; + + return $crc; +} diff --git a/mysql-test/suite/innodb/r/alter_inplace_perfschema.result b/mysql-test/suite/innodb/r/alter_inplace_perfschema.result index 68e25664031..440a1d0d6b3 100644 --- a/mysql-test/suite/innodb/r/alter_inplace_perfschema.result +++ b/mysql-test/suite/innodb/r/alter_inplace_perfschema.result @@ -1,3 +1,4 @@ +select count_star into @init_count from performance_schema.events_waits_summary_global_by_event_name WHERE event_name LIKE '%wait%io%file%innodb%innodb_temp_file%'; connect ddl, localhost, root,,; update performance_schema.setup_instruments set enabled='yes'; update performance_schema.setup_consumers set enabled='yes'; @@ -8,10 +9,10 @@ SET DEBUG_SYNC = 'row_log_apply_before SIGNAL go WAIT_FOR gone'; ALTER TABLE t1 ADD INDEX(b), ALGORITHM=INPLACE; connection default; SET DEBUG_SYNC = 'now WAIT_FOR go'; -SELECT DISTINCT object_name FROM performance_schema.events_waits_history_long -WHERE event_name LIKE '%wait%io%file%innodb%innodb_temp_file%'; -object_name -tmp/Innodb Merge Temp File +select count_star into @final_count from performance_schema.events_waits_summary_global_by_event_name WHERE event_name LIKE '%wait%io%file%innodb%innodb_temp_file%'; +SELECT @final_count - @init_count; +@final_count - @init_count +11 SET DEBUG_SYNC = 'now SIGNAL gone'; connection ddl; disconnect ddl; diff --git a/mysql-test/suite/innodb/r/data_types.result b/mysql-test/suite/innodb/r/data_types.result index 4e919e37cee..1394431b09d 100644 --- a/mysql-test/suite/innodb/r/data_types.result +++ b/mysql-test/suite/innodb/r/data_types.result @@ -77,7 +77,9 @@ t1_VARCHAR_500_BINARY VARCHAR(500) BINARY, t1_YEAR_2 YEAR(2), t1_YEAR_4 YEAR(4), t1_CHAR_0 CHAR(0), -t1_MYSQL_0 CHAR(0) CHARACTER SET utf8 +t1_MYSQL_0 CHAR(0) CHARACTER SET utf8, +t1_VARCHAR_0 VARCHAR(0), +t1_VARMYSQL_0 VARCHAR(0) CHARACTER SET utf8 ) ENGINE=InnoDB; Warnings: Note 1287 'YEAR(2)' is deprecated and will be removed in a future release. Please use YEAR(4) instead @@ -151,10 +153,12 @@ t1_TINYINT DATA_INT t1_TINYINT_UNSIGNED DATA_INT UNSIGNED t1_TINYTEXT DATA_BLOB t1_VARBINARY_100 DATA_BINARY +t1_VARCHAR_0 DATA_VARCHAR t1_VARCHAR_10 DATA_VARCHAR t1_VARCHAR_10_BINARY DATA_VARMYSQL t1_VARCHAR_500 DATA_VARCHAR t1_VARCHAR_500_BINARY DATA_VARMYSQL +t1_VARMYSQL_0 DATA_VARMYSQL t1_YEAR_2 DATA_INT UNSIGNED t1_YEAR_4 DATA_INT UNSIGNED DROP TABLE t1; @@ -164,3 +168,9 @@ DROP TABLE t1; CREATE TABLE t1 (c CHAR(0), KEY(c)) ENGINE=InnoDB; INSERT INTO t1 VALUES (''); DROP TABLE t1; +# +# MDEV-18039 Assertion failed in btr_node_ptr_max_size for VARCHAR(0) +# +CREATE TABLE t1 (c VARCHAR(0), KEY(c)) ENGINE=InnoDB; +INSERT INTO t1 VALUES (''); +DROP TABLE t1; diff --git a/mysql-test/suite/innodb/r/innodb-alter-debug.result b/mysql-test/suite/innodb/r/innodb-alter-debug.result index 73037247272..51ba58aa1ef 100644 --- a/mysql-test/suite/innodb/r/innodb-alter-debug.result +++ b/mysql-test/suite/innodb/r/innodb-alter-debug.result @@ -75,3 +75,26 @@ connection default; ERROR 23000: Duplicate entry '1' for key 'a' SET DEBUG_SYNC='RESET'; DROP TABLE t1; +# +# MDEV-17470 Orphan temporary files after interrupted ALTER +# cause InnoDB: Operating system error number 17 and eventual +# fatal error 71 +# +CREATE TABLE t1 (pk INT AUTO_INCREMENT PRIMARY KEY, i INT) ENGINE=InnoDB; +INSERT INTO t1 VALUES (NULL,1),(NULL,2),(NULL,3),(NULL,4),(NULL,5),(NULL,6),(NULL,7),(NULL,8); +INSERT INTO t1 SELECT NULL, i FROM t1; +INSERT INTO t1 SELECT NULL, i FROM t1; +INSERT INTO t1 SELECT NULL, i FROM t1; +INSERT INTO t1 SELECT NULL, i FROM t1; +INSERT INTO t1 SELECT NULL, i FROM t1; +LOCK TABLE t1 READ; +connect con1,localhost,root,,test; +ALTER TABLE t1 FORCE, ALGORITHM=COPY; +connection default; +kill query @id; +connection con1; +ERROR 70100: Query execution was interrupted +disconnect con1; +connection default; +UNLOCK TABLES; +DROP TABLE t1; diff --git a/mysql-test/suite/innodb/r/innodb-alter.result b/mysql-test/suite/innodb/r/innodb-alter.result index e9f827c004e..c596dbb497d 100644 --- a/mysql-test/suite/innodb/r/innodb-alter.result +++ b/mysql-test/suite/innodb/r/innodb-alter.result @@ -439,15 +439,15 @@ tt CREATE TABLE `tt` ( FULLTEXT KEY `ct` (`ct`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ALTER TABLE tt ADD COLUMN c CHAR(1) NOT NULL FIRST, LOCK=NONE; -ERROR 0A000: LOCK=NONE is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try LOCK=SHARED +ERROR 0A000: LOCK=NONE is not supported. Reason: Fulltext index creation requires a lock. Try LOCK=SHARED ALTER TABLE tt ADD COLUMN c CHAR(1) NOT NULL, LOCK=NONE; -ERROR 0A000: LOCK=NONE is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try LOCK=SHARED +ERROR 0A000: LOCK=NONE is not supported. Reason: Fulltext index creation requires a lock. Try LOCK=SHARED CREATE TABLE tu ( pk INT PRIMARY KEY, FTS_DOC_ID BIGINT UNSIGNED NOT NULL, t TEXT, FULLTEXT INDEX(t) ) ENGINE=InnoDB; ALTER TABLE tu ADD COLUMN c CHAR(1) NOT NULL FIRST, LOCK=NONE; -ERROR 0A000: LOCK=NONE is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try LOCK=SHARED +ERROR 0A000: LOCK=NONE is not supported. Reason: Fulltext index creation requires a lock. Try LOCK=SHARED ALTER TABLE tu ADD COLUMN c CHAR(1) NOT NULL, LOCK=NONE; DROP TABLE tu; CREATE TABLE tv ( @@ -456,7 +456,7 @@ UNIQUE INDEX FTS_DOC_ID_INDEX(FTS_DOC_ID), FULLTEXT INDEX(t) ) ENGINE=InnoDB; ALTER TABLE tv ADD COLUMN c CHAR(1) NOT NULL FIRST, LOCK=NONE; -ERROR 0A000: LOCK=NONE is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try LOCK=SHARED +ERROR 0A000: LOCK=NONE is not supported. Reason: Fulltext index creation requires a lock. Try LOCK=SHARED ALTER TABLE tv ADD COLUMN c CHAR(1) NOT NULL, LOCK=NONE; DROP TABLE tv; ALTER TABLE t1o CHANGE c1 dB_row_Id INT, ALGORITHM=COPY; @@ -498,8 +498,6 @@ ADD COLUMN FTS_DOC_ID BIGINT UNSIGNED NOT NULL, ALGORITHM=INPLACE; ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try ALGORITHM=COPY ALTER TABLE t1o ADD COLUMN FTS_DOC_ID BIGINT UNSIGNED NOT NULL, ALGORITHM=INPLACE; -ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try ALGORITHM=COPY -ALTER TABLE t1o ADD COLUMN FTS_DOC_ID BIGINT UNSIGNED NOT NULL; ALTER TABLE t1o DROP COLUMN FTS_DOC_ID, ALGORITHM=INPLACE; ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot drop or rename FTS_DOC_ID. Try ALGORITHM=COPY ALTER TABLE t1o DROP COLUMN FTS_DOC_ID; @@ -879,6 +877,27 @@ NAME a b DROP TABLE t1; +# and an MDEV-18041 regression related to indexes prefixes +create table `test` ( +`test_old` varchar(255) NOT NULL, +`other` varchar(255) NOT NULL, +PRIMARY KEY (`test_old`,`other`), +UNIQUE KEY uk (`test_old`(100), `other`) +) ENGINE=InnoDB; +select name, pos from information_schema.innodb_SYS_FIELDS where name in ('test_old', 'other', 'test_new'); +name pos +test_old 0 +other 1 +test_old 0 +other 1 +alter table `test` CHANGE COLUMN `test_old` `test_new` varchar(255) NOT NULL; +select name, pos from information_schema.innodb_SYS_FIELDS where name in ('test_old', 'other', 'test_new'); +name pos +test_new 0 +other 1 +test_new 0 +other 1 +drop table `test`; # # BUG 20029625 - HANDLE_FATAL_SIGNAL (SIG=11) IN # DICT_MEM_TABLE_COL_RENAME_LOW diff --git a/mysql-test/suite/innodb/r/innodb-index.result b/mysql-test/suite/innodb/r/innodb-index.result index 8d7dcb84486..734cc41a8ea 100644 --- a/mysql-test/suite/innodb/r/innodb-index.result +++ b/mysql-test/suite/innodb/r/innodb-index.result @@ -1892,3 +1892,19 @@ f1 SELECT * FROM t2; f1 DROP TABLE t1, t2; +# +# MDEV-18186 assertion failure on missing InnoDB index +# +CREATE TABLE t (a INT, INDEX i1 (a)) ENGINE=INNODB; +DROP TABLE t; +CREATE TABLE t (a INT) ENGINE=INNODB; +SHOW CREATE TABLE t; +Table Create Table +t CREATE TABLE `t` ( + `a` int(11) DEFAULT NULL, + KEY `i1` (`a`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +Warnings: +Warning 1082 InnoDB: Table test/t contains 0 indexes inside InnoDB, which is different from the number of indexes 1 defined in the MariaDB +Warning 1082 InnoDB: Table test/t contains 0 indexes inside InnoDB, which is different from the number of indexes 1 defined in the MariaDB +DROP TABLE t; diff --git a/mysql-test/suite/innodb/r/innodb-virtual-columns.result b/mysql-test/suite/innodb/r/innodb-virtual-columns.result index 6fbb7dcc58f..bf21e352681 100644 --- a/mysql-test/suite/innodb/r/innodb-virtual-columns.result +++ b/mysql-test/suite/innodb/r/innodb-virtual-columns.result @@ -330,3 +330,16 @@ term uw_id plan wdraw_rsn admit_term 1035 2 CSM ACAD 1009 drop table grad_degree; drop table gso_grad_supr; +CREATE TABLE t1 (a INT, b CHAR(12), c INT AS (a) VIRTUAL, FULLTEXT KEY(b)) ENGINE=InnoDB; +INSERT INTO t1 (a,b) VALUES (1,'foo'); +SELECT * FROM t1; +a b c +1 foo 1 +DROP TABLE t1; +CREATE TABLE t1 (a INT, b CHAR(12), c INT AS (a) VIRTUAL) ENGINE=InnoDB; +INSERT INTO t1 (a,b) VALUES (1,'foo'); +ALTER TABLE t1 ADD FULLTEXT KEY(b); +SELECT * FROM t1; +a b c +1 foo 1 +DROP TABLE t1; diff --git a/mysql-test/suite/innodb/r/instant_alter_bugs.result b/mysql-test/suite/innodb/r/instant_alter_bugs.result new file mode 100644 index 00000000000..14d88c64de8 --- /dev/null +++ b/mysql-test/suite/innodb/r/instant_alter_bugs.result @@ -0,0 +1,130 @@ +# +# MDEV-17821 Assertion `!page_rec_is_supremum(rec)' failed +# in btr_pcur_store_position +# +CREATE TABLE t1 (pk INT PRIMARY KEY, c INT) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1,2); +ALTER TABLE t1 ADD COLUMN f VARCHAR(255); +ALTER TABLE t1 DROP COLUMN f; +DELETE FROM t1; +HANDLER t1 OPEN; +HANDLER t1 READ `PRIMARY` <= (3); +pk c +DROP TABLE t1; +CREATE TABLE t1 ( +pk INT AUTO_INCREMENT, +f1 CHAR(32), +f2 CHAR(32), +f3 CHAR(32), +f4 INT, +f5 CHAR(32), +f6 INT, +f7 INT, +f8 INT, +PRIMARY KEY (pk), +UNIQUE (f6) +) ENGINE=InnoDB; +INSERT INTO t1 (f1,f2,f3,f4,f5,f6,f7,f8) VALUES +('reality', 'llt', 'within', -1996816384, 'j', 160, 7, -1822687232), +('h', 'j', 'j', 251, 'civilian', NULL, 211, NULL), +('ltq', 'b', 'mud', 111, 'v', 90, 0, NULL), +('toxic', 'breakfast', 'series', 2, 'x', NULL, 118, 2), +('h', 'n', 'vision', 84, 'n', NULL, 197, 103), +('h', 'tq', 'q', 6, 'bet', -1927151616, -446038016, 3), +('pocket', 'qjt', 'jtl', 0, 'blink', NULL, 12, 0), +('k', 'uv', 'exist', 37, 'g', 149, -1610219520, NULL), +('parent', 'motion', 'u', 70, 'promote', NULL, 178, NULL), +('get', 'convict', 'liquid', -780337152, 'd', NULL, 4, NULL), +('vp', 'px', 'xi', -631111680, 'support', NULL, 8, NULL), +('ck', 'z', 'minority', 8, 'k', NULL, 864878592, NULL), +('kxx', 'g', 'container', 1, 'cholesterol', NULL, 4, 1404436480), +('xxv', 'rail', 'j', 219, 'serious', NULL, -816119808, 62), +('x', 'v', 'vr', 146, 'm', 16, 170, -1765867520), +('age', 'm', 'q', -1251278848, 'rte', 6, 224, NULL), +('discrimination', 't', 'q', 31, 'exl', 0, 2, 244), +('water', 'x', 'ldb', 98, 'r', 235, 4, 63), +('d', 'db', 'p', 248, 'so-called', 102, -255524864, 198), +('last', 'bz', 'us', 0, 'experienced', 137, 240, 134), +('q', 'z', 'attract', 67, 'code', 67, 75, 1758920704), +('yellow', 'c', 'u', 6, 'v', 1731985408, 528154624, 2), +('cognitive', 'he', 'protective', 590020608, 'sentence', NULL, 4, 102), +('eih', 'l', 'ih', 1266024448, 'traditionally', NULL, 190, NULL), +('pine', 'i', 'y', 6, 'glimpse', 214, 7, -1486880768), +('jo', 'everyone', 'ol', 0, 'lj', NULL, 1, 0), +('blood', 'f', 'scientist', 54, 'j', 1341128704, 168, NULL), +('z', 'brief', 'ambassador', 115, 'ygp', 82, 129, NULL), +('gp', 'severe', 'consist', 7, 'p', -1829961728, 602669056, 154), +('admit', 'poetry', 'x', 116, 'enemy', 174, -2128543744, -407764992), +('s', 'norm', 'decide', 2055667712, 'rtz', NULL, 99, -1233715200), +('tzg', 'f', 'beg', 2016280576, 'w', NULL, -643825664, 137), +('zgg', 'x', 'f', 148, 'y', -987496448, -708116480, 8), +('attorney', 'perfectly', 's', 49, 'z', -1865285632, 56, -1518534656), +('concentrate', 's', 'k', -1028849664, 'tir', 83, -1592459264, 1820065792), +('t', 'sacrifice', 'ir', -2143879168, 'recipe', 156, 217, NULL), +('wdf', 'd', 'f', 137, 'empty', NULL, 188, NULL), +('o', 'customer', 'qd', -2135293952, 'z', 1527840768, 227, -1174929408), +('d', 'qow', 'o', 1472266240, 'whe', NULL, 7, 197), +('deny', 'reputation', 'dutch', 59, 'v', 124, 2, 191), +('m', 'liver', 'fv', 0, 'policy', 781582336, 198574080, 177), +('vk', 'kx', 'immigrant', -1452736512, 'x', 163, 76, 6) , +('j', 'ru', 'r', 67, 'joke', NULL, 3, NULL), +('o', 'u', 'a', -569442304, 'uz', NULL, 933298176, NULL), +('g', 'zb', 'c', -1694760960, 'fish', 18, -390463488, 1), +('bb', 'o', 'b', 6, 'z', 9, 12, NULL), +('compelling', 'xe', 'debut', 89, 'e', -734724096, 119, 175), +('md', 'r', 'object', 1046478848, 'frequently', 915537920, 0, 1506410496), +('dwn', 'wnz', 'x', 1767571456, 'nz', 241, -882180096, 9), +('zvf', 'vfo', 'g', -844824576, 'w', NULL, 1, 9), +('w', 'pose', 'r', 1029308416, 'a', -48627712, 1756168192, NULL), +('o', 'jwp', 'patient', 172, 'i', 297140224, 45809664, 3), +('w', 'p', 'american', 450297856, 'z', 20, 4, 186), +('ridiculous', 'helpful', 'vy', -2022899712, 'conspiracy', NULL, 162, -264634368), +('t', 'g', 'spite', 289931264, 'y', 4, 13, NULL), +('performer', 'i', 'tomato', -1519386624, 'mz', 8, 87, 106), +('m', 'z', 'hang', 3, 'crowded', -537919488, 1, 2), +('fu', 'uot', 'j', 1, 'o', 179, 220, -2084569088), +('ts', 'n', 'su', 1, 'o', 198, 9, 68), +('ball', 'halfway', 'uf', 40, 'l', 145948672, 9, 149), +('hunting', 'n', 'teenager', 0, 'neat', 209, 2044461056, 68), +('independent', 'along', 'fpn', 5, 'pn', 3, 1353252864, 217), +('p', 'presumably', 'n', -1977548800, 'balanced', 1909260288, 197, NULL), +('pink', 'h', 'tear', 8, 'n', 254, 8, 1006305280), +('tyy', 'n', 'yyr', 1107820544, 'yr', NULL, 0, 219), +('u', 'retirement', 'thread', -2083192832, 'rx', -678232064, 209, 1048969216), +('xk', 'kb', 'z', 9, 'ba', 218, 7, 8), +('a', 'plenty', 'forget', 36, 'c', 215, 2027094016, NULL), +('i', 'compromise', 'n', -1090256896, 'o', 10, 66, 1872887808), +('x', 'disappointment', 'cognitive', 753860608, 'ua', 77, 123, 10), +('e', 'added', 'aub', 2, 'u', NULL, 9, 92), +('bc', 'h', 'n', 146, 'master', NULL, 1003945984, NULL), +('execution', 'f', 'cgp', 574423040, 'gp', 2, -518782976, -1189085184), +('pv', 'bad', 'v', 132, 'r', 195, 6, 5), +('modify', 'participation', 'vol', 237, 'j', -842924032, 88, -747765760), +('substantially', 'i', 'congressional', 2, 'edit', NULL, 1003159552, NULL), +('tell', 'forty', 'v', -910098432, 'd', 43, 3, NULL), +('crawl', 'ad', 'respect', -1851195392, 'p', 72, -1709047808, 1343225856), +('w', 'reception', 'fiber', 56, 's', NULL, 2, -993787904), +('successful', 'instruct', 'dug', 2, 'u', 7, -411500544, NULL), +('appointment', 'pregnant', 'weird', 2, 'r', NULL, -897384448, 76), +('g', 'j', 'thin', 663617536, 'oan', 1, 7, NULL), +('secretary', 'a', 'o', 103, 'nj', 1977745408, -1291124736, -1314521088), +('g', 'jq', 'q', 1875116032, 'blame', NULL, 1, 4), +('oj', 'j', 'breast', 150, 'c', NULL, 3, NULL), +('rd', 'm', 'comprehensive', 1723334656, 't', NULL, 155, -312344576) , +('a', 'd', 'criminal', -1155137536, 'airplane', 242, -662896640, 1), +('fast', 'i', 'k', -386662400, 'zxe', NULL, 7, 119), +('xe', 'mouse', 'c', -205717504, 'ew', NULL, -729612288, 86), +('hang', 'j', 'o', 3, 'hungry', NULL, 200, 49), +('expense', 'z', 'sum', 2, 'gob', -472055808, -538181632, NULL), +('nest', 'o', 'k', 116, 'weak', NULL, 223, NULL); +INSERT INTO t1 (f1,f2,f3,f4,f5,f6,f7,f8) VALUES ('impact', 'b', 'h', 185, 'fj', 7, 7, 3); +ERROR 23000: Duplicate entry '7' for key 'f6' +ALTER TABLE t1 ADD COLUMN filler VARCHAR(255) DEFAULT ''; +SELECT * FROM t1 INTO OUTFILE 'load.data'; +UPDATE IGNORE t1 SET pk = 0; +LOAD DATA INFILE 'load.data' REPLACE INTO TABLE t1; +HANDLER t1 OPEN AS h; +HANDLER h READ `PRIMARY` PREV WHERE 0; +pk f1 f2 f3 f4 f5 f6 f7 f8 filler +HANDLER h CLOSE; +DROP TABLE t1; diff --git a/mysql-test/suite/innodb/t/alter_inplace_perfschema.test b/mysql-test/suite/innodb/t/alter_inplace_perfschema.test index b832596647f..e0451e121a6 100644 --- a/mysql-test/suite/innodb/t/alter_inplace_perfschema.test +++ b/mysql-test/suite/innodb/t/alter_inplace_perfschema.test @@ -4,6 +4,7 @@ --source include/have_debug_sync.inc --source include/not_embedded.inc +select count_star into @init_count from performance_schema.events_waits_summary_global_by_event_name WHERE event_name LIKE '%wait%io%file%innodb%innodb_temp_file%'; connect (ddl, localhost, root,,); update performance_schema.setup_instruments set enabled='yes'; update performance_schema.setup_consumers set enabled='yes'; @@ -24,9 +25,10 @@ send ALTER TABLE t1 ADD INDEX(b), ALGORITHM=INPLACE; connection default; SET DEBUG_SYNC = 'now WAIT_FOR go'; ---replace_regex /.*[\\\/]tmp/tmp/ -SELECT DISTINCT object_name FROM performance_schema.events_waits_history_long -WHERE event_name LIKE '%wait%io%file%innodb%innodb_temp_file%'; + +select count_star into @final_count from performance_schema.events_waits_summary_global_by_event_name WHERE event_name LIKE '%wait%io%file%innodb%innodb_temp_file%'; + +SELECT @final_count - @init_count; #--exec lsof -p `pidof mysqld` SET DEBUG_SYNC = 'now SIGNAL gone'; diff --git a/mysql-test/suite/innodb/t/data_types.test b/mysql-test/suite/innodb/t/data_types.test index c8e80c9db27..cfdd5201af2 100644 --- a/mysql-test/suite/innodb/t/data_types.test +++ b/mysql-test/suite/innodb/t/data_types.test @@ -90,7 +90,9 @@ CREATE TABLE t1 t1_YEAR_2 YEAR(2), t1_YEAR_4 YEAR(4), t1_CHAR_0 CHAR(0), - t1_MYSQL_0 CHAR(0) CHARACTER SET utf8 + t1_MYSQL_0 CHAR(0) CHARACTER SET utf8, + t1_VARCHAR_0 VARCHAR(0), + t1_VARMYSQL_0 VARCHAR(0) CHARACTER SET utf8 ) ENGINE=InnoDB; INSERT INTO t1 () VALUES (); @@ -127,3 +129,10 @@ DROP TABLE t1; CREATE TABLE t1 (c CHAR(0), KEY(c)) ENGINE=InnoDB; INSERT INTO t1 VALUES (''); DROP TABLE t1; + +--echo # +--echo # MDEV-18039 Assertion failed in btr_node_ptr_max_size for VARCHAR(0) +--echo # +CREATE TABLE t1 (c VARCHAR(0), KEY(c)) ENGINE=InnoDB; +INSERT INTO t1 VALUES (''); +DROP TABLE t1; diff --git a/mysql-test/suite/innodb/t/innodb-alter-debug.test b/mysql-test/suite/innodb/t/innodb-alter-debug.test index 5c8025265e5..00300bfdccc 100644 --- a/mysql-test/suite/innodb/t/innodb-alter-debug.test +++ b/mysql-test/suite/innodb/t/innodb-alter-debug.test @@ -98,5 +98,37 @@ SET DEBUG_SYNC='RESET'; DROP TABLE t1; +--echo # +--echo # MDEV-17470 Orphan temporary files after interrupted ALTER +--echo # cause InnoDB: Operating system error number 17 and eventual +--echo # fatal error 71 +--echo # +CREATE TABLE t1 (pk INT AUTO_INCREMENT PRIMARY KEY, i INT) ENGINE=InnoDB; +INSERT INTO t1 VALUES (NULL,1),(NULL,2),(NULL,3),(NULL,4),(NULL,5),(NULL,6),(NULL,7),(NULL,8); +INSERT INTO t1 SELECT NULL, i FROM t1; +INSERT INTO t1 SELECT NULL, i FROM t1; +INSERT INTO t1 SELECT NULL, i FROM t1; +INSERT INTO t1 SELECT NULL, i FROM t1; +INSERT INTO t1 SELECT NULL, i FROM t1; + +LOCK TABLE t1 READ; + +--connect (con1,localhost,root,,test) +let $ID= `SELECT @id := CONNECTION_ID()`; +send ALTER TABLE t1 FORCE, ALGORITHM=COPY; + +--connection default +let $wait_condition= select 1 from information_schema.processlist where state='Waiting for table metadata lock'; +source include/wait_condition.inc; +let $ignore= `SELECT @id := $ID`; +kill query @id; +--connection con1 +--error ER_QUERY_INTERRUPTED +reap; +--disconnect con1 +--connection default +UNLOCK TABLES; +DROP TABLE t1; + # Wait till all disconnects are completed --source include/wait_until_count_sessions.inc diff --git a/mysql-test/suite/innodb/t/innodb-alter.test b/mysql-test/suite/innodb/t/innodb-alter.test index 7c9eb47252d..14f90dec43c 100644 --- a/mysql-test/suite/innodb/t/innodb-alter.test +++ b/mysql-test/suite/innodb/t/innodb-alter.test @@ -272,13 +272,8 @@ ALTER TABLE t1o ADD FULLTEXT INDEX(cu), ADD COLUMN FTS_DOC_ID BIGINT UNSIGNED NOT NULL, ALGORITHM=INPLACE; # Replace the hidden FTS_DOC_ID column with a user-visible one. -# This used to work if there is at most one fulltext index. -# Currently, we disallow native ALTER TABLE if the table -# contains any FULLTEXT indexes. ---error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON ALTER TABLE t1o ADD COLUMN FTS_DOC_ID BIGINT UNSIGNED NOT NULL, ALGORITHM=INPLACE; -ALTER TABLE t1o ADD COLUMN FTS_DOC_ID BIGINT UNSIGNED NOT NULL; # Replace the user-visible FTS_DOC_ID column with a hidden one. # We do not support this in-place. --error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON @@ -545,6 +540,19 @@ SELECT C.NAME FROM INFORMATION_SCHEMA.INNODB_SYS_COLUMNS C INNER JOIN WHERE T.NAME='test/t1'; DROP TABLE t1; +--echo # and an MDEV-18041 regression related to indexes prefixes +create table `test` ( + `test_old` varchar(255) NOT NULL, + `other` varchar(255) NOT NULL, + PRIMARY KEY (`test_old`,`other`), + UNIQUE KEY uk (`test_old`(100), `other`) +) ENGINE=InnoDB; + +select name, pos from information_schema.innodb_SYS_FIELDS where name in ('test_old', 'other', 'test_new'); +alter table `test` CHANGE COLUMN `test_old` `test_new` varchar(255) NOT NULL; +select name, pos from information_schema.innodb_SYS_FIELDS where name in ('test_old', 'other', 'test_new'); +drop table `test`; + --echo # --echo # BUG 20029625 - HANDLE_FATAL_SIGNAL (SIG=11) IN diff --git a/mysql-test/suite/innodb/t/innodb-index.test b/mysql-test/suite/innodb/t/innodb-index.test index f199da54031..53f87cb78d5 100644 --- a/mysql-test/suite/innodb/t/innodb-index.test +++ b/mysql-test/suite/innodb/t/innodb-index.test @@ -1151,6 +1151,28 @@ SELECT * FROM t2; DROP TABLE t1, t2; +--echo # +--echo # MDEV-18186 assertion failure on missing InnoDB index +--echo # + +--disable_query_log +call mtr.add_suppression("Cannot find index i1 in InnoDB index dictionary"); +call mtr.add_suppression("InnoDB indexes are inconsistent with what defined"); +call mtr.add_suppression("Table test/t contains 0 indexes"); +call mtr.add_suppression("InnoDB could not find key no"); +--enable_query_log + +# Test an attempt to rename a nonexistent index inside InnoDB +-- let $MYSQL_DATA_DIR = `SELECT @@datadir` +CREATE TABLE t (a INT, INDEX i1 (a)) ENGINE=INNODB; +-- copy_file $MYSQL_DATA_DIR/test/t.frm $MYSQL_DATA_DIR/test/t.fr_ +DROP TABLE t; +CREATE TABLE t (a INT) ENGINE=INNODB; +-- remove_file $MYSQL_DATA_DIR/test/t.frm +-- move_file $MYSQL_DATA_DIR/test/t.fr_ $MYSQL_DATA_DIR/test/t.frm +SHOW CREATE TABLE t; +DROP TABLE t; + --disable_query_log call mtr.add_suppression("InnoDB: Tablespace .* was not found at .*t[12].ibd."); diff --git a/mysql-test/suite/innodb/t/innodb-virtual-columns.test b/mysql-test/suite/innodb/t/innodb-virtual-columns.test index 0e0d6dbb2f5..faf542645fb 100644 --- a/mysql-test/suite/innodb/t/innodb-virtual-columns.test +++ b/mysql-test/suite/innodb/t/innodb-virtual-columns.test @@ -306,3 +306,14 @@ select * from gso_grad_supr; drop table grad_degree; drop table gso_grad_supr; + +CREATE TABLE t1 (a INT, b CHAR(12), c INT AS (a) VIRTUAL, FULLTEXT KEY(b)) ENGINE=InnoDB; +INSERT INTO t1 (a,b) VALUES (1,'foo'); +SELECT * FROM t1; +DROP TABLE t1; + +CREATE TABLE t1 (a INT, b CHAR(12), c INT AS (a) VIRTUAL) ENGINE=InnoDB; +INSERT INTO t1 (a,b) VALUES (1,'foo'); +ALTER TABLE t1 ADD FULLTEXT KEY(b); +SELECT * FROM t1; +DROP TABLE t1; diff --git a/mysql-test/suite/innodb/t/instant_alter_bugs.test b/mysql-test/suite/innodb/t/instant_alter_bugs.test new file mode 100644 index 00000000000..9cc0037703b --- /dev/null +++ b/mysql-test/suite/innodb/t/instant_alter_bugs.test @@ -0,0 +1,138 @@ +--source include/have_innodb.inc + +--echo # +--echo # MDEV-17821 Assertion `!page_rec_is_supremum(rec)' failed +--echo # in btr_pcur_store_position +--echo # + +CREATE TABLE t1 (pk INT PRIMARY KEY, c INT) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1,2); +ALTER TABLE t1 ADD COLUMN f VARCHAR(255); +ALTER TABLE t1 DROP COLUMN f; +DELETE FROM t1; +HANDLER t1 OPEN; +HANDLER t1 READ `PRIMARY` <= (3); +DROP TABLE t1; + +CREATE TABLE t1 ( + pk INT AUTO_INCREMENT, + f1 CHAR(32), + f2 CHAR(32), + f3 CHAR(32), + f4 INT, + f5 CHAR(32), + f6 INT, + f7 INT, + f8 INT, + PRIMARY KEY (pk), + UNIQUE (f6) +) ENGINE=InnoDB; + +INSERT INTO t1 (f1,f2,f3,f4,f5,f6,f7,f8) VALUES + ('reality', 'llt', 'within', -1996816384, 'j', 160, 7, -1822687232), + ('h', 'j', 'j', 251, 'civilian', NULL, 211, NULL), + ('ltq', 'b', 'mud', 111, 'v', 90, 0, NULL), + ('toxic', 'breakfast', 'series', 2, 'x', NULL, 118, 2), + ('h', 'n', 'vision', 84, 'n', NULL, 197, 103), + ('h', 'tq', 'q', 6, 'bet', -1927151616, -446038016, 3), + ('pocket', 'qjt', 'jtl', 0, 'blink', NULL, 12, 0), + ('k', 'uv', 'exist', 37, 'g', 149, -1610219520, NULL), + ('parent', 'motion', 'u', 70, 'promote', NULL, 178, NULL), + ('get', 'convict', 'liquid', -780337152, 'd', NULL, 4, NULL), + ('vp', 'px', 'xi', -631111680, 'support', NULL, 8, NULL), + ('ck', 'z', 'minority', 8, 'k', NULL, 864878592, NULL), + ('kxx', 'g', 'container', 1, 'cholesterol', NULL, 4, 1404436480), + ('xxv', 'rail', 'j', 219, 'serious', NULL, -816119808, 62), + ('x', 'v', 'vr', 146, 'm', 16, 170, -1765867520), + ('age', 'm', 'q', -1251278848, 'rte', 6, 224, NULL), + ('discrimination', 't', 'q', 31, 'exl', 0, 2, 244), + ('water', 'x', 'ldb', 98, 'r', 235, 4, 63), + ('d', 'db', 'p', 248, 'so-called', 102, -255524864, 198), + ('last', 'bz', 'us', 0, 'experienced', 137, 240, 134), + ('q', 'z', 'attract', 67, 'code', 67, 75, 1758920704), + ('yellow', 'c', 'u', 6, 'v', 1731985408, 528154624, 2), + ('cognitive', 'he', 'protective', 590020608, 'sentence', NULL, 4, 102), + ('eih', 'l', 'ih', 1266024448, 'traditionally', NULL, 190, NULL), + ('pine', 'i', 'y', 6, 'glimpse', 214, 7, -1486880768), + ('jo', 'everyone', 'ol', 0, 'lj', NULL, 1, 0), + ('blood', 'f', 'scientist', 54, 'j', 1341128704, 168, NULL), + ('z', 'brief', 'ambassador', 115, 'ygp', 82, 129, NULL), + ('gp', 'severe', 'consist', 7, 'p', -1829961728, 602669056, 154), + ('admit', 'poetry', 'x', 116, 'enemy', 174, -2128543744, -407764992), + ('s', 'norm', 'decide', 2055667712, 'rtz', NULL, 99, -1233715200), + ('tzg', 'f', 'beg', 2016280576, 'w', NULL, -643825664, 137), + ('zgg', 'x', 'f', 148, 'y', -987496448, -708116480, 8), + ('attorney', 'perfectly', 's', 49, 'z', -1865285632, 56, -1518534656), + ('concentrate', 's', 'k', -1028849664, 'tir', 83, -1592459264, 1820065792), + ('t', 'sacrifice', 'ir', -2143879168, 'recipe', 156, 217, NULL), + ('wdf', 'd', 'f', 137, 'empty', NULL, 188, NULL), + ('o', 'customer', 'qd', -2135293952, 'z', 1527840768, 227, -1174929408), + ('d', 'qow', 'o', 1472266240, 'whe', NULL, 7, 197), + ('deny', 'reputation', 'dutch', 59, 'v', 124, 2, 191), + ('m', 'liver', 'fv', 0, 'policy', 781582336, 198574080, 177), + ('vk', 'kx', 'immigrant', -1452736512, 'x', 163, 76, 6) , + ('j', 'ru', 'r', 67, 'joke', NULL, 3, NULL), + ('o', 'u', 'a', -569442304, 'uz', NULL, 933298176, NULL), + ('g', 'zb', 'c', -1694760960, 'fish', 18, -390463488, 1), + ('bb', 'o', 'b', 6, 'z', 9, 12, NULL), + ('compelling', 'xe', 'debut', 89, 'e', -734724096, 119, 175), + ('md', 'r', 'object', 1046478848, 'frequently', 915537920, 0, 1506410496), + ('dwn', 'wnz', 'x', 1767571456, 'nz', 241, -882180096, 9), + ('zvf', 'vfo', 'g', -844824576, 'w', NULL, 1, 9), + ('w', 'pose', 'r', 1029308416, 'a', -48627712, 1756168192, NULL), + ('o', 'jwp', 'patient', 172, 'i', 297140224, 45809664, 3), + ('w', 'p', 'american', 450297856, 'z', 20, 4, 186), + ('ridiculous', 'helpful', 'vy', -2022899712, 'conspiracy', NULL, 162, -264634368), + ('t', 'g', 'spite', 289931264, 'y', 4, 13, NULL), + ('performer', 'i', 'tomato', -1519386624, 'mz', 8, 87, 106), + ('m', 'z', 'hang', 3, 'crowded', -537919488, 1, 2), + ('fu', 'uot', 'j', 1, 'o', 179, 220, -2084569088), + ('ts', 'n', 'su', 1, 'o', 198, 9, 68), + ('ball', 'halfway', 'uf', 40, 'l', 145948672, 9, 149), + ('hunting', 'n', 'teenager', 0, 'neat', 209, 2044461056, 68), + ('independent', 'along', 'fpn', 5, 'pn', 3, 1353252864, 217), + ('p', 'presumably', 'n', -1977548800, 'balanced', 1909260288, 197, NULL), + ('pink', 'h', 'tear', 8, 'n', 254, 8, 1006305280), + ('tyy', 'n', 'yyr', 1107820544, 'yr', NULL, 0, 219), + ('u', 'retirement', 'thread', -2083192832, 'rx', -678232064, 209, 1048969216), + ('xk', 'kb', 'z', 9, 'ba', 218, 7, 8), + ('a', 'plenty', 'forget', 36, 'c', 215, 2027094016, NULL), + ('i', 'compromise', 'n', -1090256896, 'o', 10, 66, 1872887808), + ('x', 'disappointment', 'cognitive', 753860608, 'ua', 77, 123, 10), + ('e', 'added', 'aub', 2, 'u', NULL, 9, 92), + ('bc', 'h', 'n', 146, 'master', NULL, 1003945984, NULL), + ('execution', 'f', 'cgp', 574423040, 'gp', 2, -518782976, -1189085184), + ('pv', 'bad', 'v', 132, 'r', 195, 6, 5), + ('modify', 'participation', 'vol', 237, 'j', -842924032, 88, -747765760), + ('substantially', 'i', 'congressional', 2, 'edit', NULL, 1003159552, NULL), + ('tell', 'forty', 'v', -910098432, 'd', 43, 3, NULL), + ('crawl', 'ad', 'respect', -1851195392, 'p', 72, -1709047808, 1343225856), + ('w', 'reception', 'fiber', 56, 's', NULL, 2, -993787904), + ('successful', 'instruct', 'dug', 2, 'u', 7, -411500544, NULL), + ('appointment', 'pregnant', 'weird', 2, 'r', NULL, -897384448, 76), + ('g', 'j', 'thin', 663617536, 'oan', 1, 7, NULL), + ('secretary', 'a', 'o', 103, 'nj', 1977745408, -1291124736, -1314521088), + ('g', 'jq', 'q', 1875116032, 'blame', NULL, 1, 4), + ('oj', 'j', 'breast', 150, 'c', NULL, 3, NULL), + ('rd', 'm', 'comprehensive', 1723334656, 't', NULL, 155, -312344576) , + ('a', 'd', 'criminal', -1155137536, 'airplane', 242, -662896640, 1), + ('fast', 'i', 'k', -386662400, 'zxe', NULL, 7, 119), + ('xe', 'mouse', 'c', -205717504, 'ew', NULL, -729612288, 86), + ('hang', 'j', 'o', 3, 'hungry', NULL, 200, 49), + ('expense', 'z', 'sum', 2, 'gob', -472055808, -538181632, NULL), + ('nest', 'o', 'k', 116, 'weak', NULL, 223, NULL); +--error ER_DUP_ENTRY +INSERT INTO t1 (f1,f2,f3,f4,f5,f6,f7,f8) VALUES ('impact', 'b', 'h', 185, 'fj', 7, 7, 3); + +ALTER TABLE t1 ADD COLUMN filler VARCHAR(255) DEFAULT ''; +SELECT * FROM t1 INTO OUTFILE 'load.data'; +UPDATE IGNORE t1 SET pk = 0; +LOAD DATA INFILE 'load.data' REPLACE INTO TABLE t1; +HANDLER t1 OPEN AS h; +HANDLER h READ `PRIMARY` PREV WHERE 0; + +# Cleanup +HANDLER h CLOSE; +DROP TABLE t1; +--let $datadir= `select @@datadir` +--remove_file $datadir/test/load.data diff --git a/mysql-test/suite/innodb/t/recovery_shutdown.test b/mysql-test/suite/innodb/t/recovery_shutdown.test index d796189c724..3bd01653065 100644 --- a/mysql-test/suite/innodb/t/recovery_shutdown.test +++ b/mysql-test/suite/innodb/t/recovery_shutdown.test @@ -51,6 +51,12 @@ FLUSH TABLES; --let $shutdown_timeout=60 --source include/restart_mysqld.inc +# Perform a slow shutdown in order to roll back all recovered transactions +# and to avoid locking conflicts with the DROP TABLE below. +--disable_query_log +SET GLOBAL innodb_fast_shutdown=0; +--source include/restart_mysqld.inc + --disable_query_log let $c = $trx; while ($c) diff --git a/mysql-test/suite/innodb_fts/r/innodb-fts-ddl.result b/mysql-test/suite/innodb_fts/r/innodb-fts-ddl.result index 6ee5f9f4322..1382457debf 100644 --- a/mysql-test/suite/innodb_fts/r/innodb-fts-ddl.result +++ b/mysql-test/suite/innodb_fts/r/innodb-fts-ddl.result @@ -79,7 +79,7 @@ CREATE FULLTEXT INDEX idx on fts_test (title, body) LOCK=NONE; ERROR 0A000: LOCK=NONE is not supported. Reason: Fulltext index creation requires a lock. Try LOCK=SHARED ALTER TABLE fts_test ADD FULLTEXT `idx` (title, body), ALGORITHM=NOCOPY; ALTER TABLE fts_test ROW_FORMAT=REDUNDANT, LOCK=NONE; -ERROR 0A000: LOCK=NONE is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try LOCK=SHARED +ERROR 0A000: LOCK=NONE is not supported. Reason: Fulltext index creation requires a lock. Try LOCK=SHARED ALTER TABLE fts_test ROW_FORMAT=REDUNDANT; SELECT * FROM fts_test WHERE MATCH (title, body) AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE); @@ -228,3 +228,12 @@ DROP TABLE articles; CREATE TABLE t1 (a VARCHAR(3)) ENGINE=InnoDB; ALTER TABLE t1 ADD FULLTEXT KEY(a), ADD COLUMN b VARCHAR(3), ADD FULLTEXT KEY(b); DROP TABLE t1; +# +# MDEV-18152 Assertion 'num_fts_index <= 1' failed +# in prepare_inplace_alter_table_dict +# +CREATE TABLE t1 +(a VARCHAR(128), b VARCHAR(128), FULLTEXT INDEX(a), FULLTEXT INDEX(b)) +ENGINE=InnoDB; +ALTER TABLE t1 ADD c SERIAL; +DROP TABLE t1; diff --git a/mysql-test/suite/innodb_fts/t/innodb-fts-ddl.test b/mysql-test/suite/innodb_fts/t/innodb-fts-ddl.test index ddd92556772..c81ec18a4e6 100644 --- a/mysql-test/suite/innodb_fts/t/innodb-fts-ddl.test +++ b/mysql-test/suite/innodb_fts/t/innodb-fts-ddl.test @@ -276,3 +276,13 @@ ALTER TABLE t1 ADD FULLTEXT KEY(a), ADD COLUMN b VARCHAR(3), ADD FULLTEXT KEY(b) # Cleanup DROP TABLE t1; + +--echo # +--echo # MDEV-18152 Assertion 'num_fts_index <= 1' failed +--echo # in prepare_inplace_alter_table_dict +--echo # +CREATE TABLE t1 +(a VARCHAR(128), b VARCHAR(128), FULLTEXT INDEX(a), FULLTEXT INDEX(b)) +ENGINE=InnoDB; +ALTER TABLE t1 ADD c SERIAL; +DROP TABLE t1; diff --git a/mysql-test/suite/mariabackup/drop_table_during_backup.result b/mysql-test/suite/mariabackup/drop_table_during_backup.result index 1472ddbddcf..8a77945e586 100644 --- a/mysql-test/suite/mariabackup/drop_table_during_backup.result +++ b/mysql-test/suite/mariabackup/drop_table_during_backup.result @@ -1,6 +1,8 @@ CREATE TABLE t1 (i int) ENGINE=INNODB; CREATE TABLE t2 (i int) ENGINE=INNODB; CREATE TABLE t3 (i int) ENGINE=INNODB; +CREATE TABLE t4 (i int) ENGINE=INNODB; +CREATE TABLE t5 (i int) ENGINE=INNODB; # xtrabackup prepare # shutdown server # remove datadir @@ -11,3 +13,6 @@ DROP TABLE t1; CREATE TABLE t2(i int); DROP TABLE t2; DROP TABLE t3; +CREATE TABLE t4(i int); +DROP TABLE t4; +DROP TABLE t5; diff --git a/mysql-test/suite/mariabackup/drop_table_during_backup.test b/mysql-test/suite/mariabackup/drop_table_during_backup.test index 02c7710145b..e3a81b77b71 100644 --- a/mysql-test/suite/mariabackup/drop_table_during_backup.test +++ b/mysql-test/suite/mariabackup/drop_table_during_backup.test @@ -3,8 +3,14 @@ let $targetdir=$MYSQLTEST_VARDIR/tmp/backup; CREATE TABLE t1 (i int) ENGINE=INNODB; CREATE TABLE t2 (i int) ENGINE=INNODB; CREATE TABLE t3 (i int) ENGINE=INNODB; +CREATE TABLE t4 (i int) ENGINE=INNODB; +CREATE TABLE t5 (i int) ENGINE=INNODB; + --let before_copy_test_t1=DROP TABLE test.t1 --let after_copy_test_t2=DROP TABLE test.t2; +# MDEV-18185, drop + rename combination +--let after_copy_test_t5=BEGIN NOT ATOMIC DROP TABLE test.t5; RENAME TABLE test.t4 TO test.t5; END + --disable_result_log exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$targetdir --dbug=+d,mariabackup_events; --enable_result_log @@ -21,4 +27,7 @@ DROP TABLE t1; CREATE TABLE t2(i int); DROP TABLE t2; DROP TABLE t3; +CREATE TABLE t4(i int); +DROP TABLE t4; +DROP TABLE t5; rmdir $targetdir; diff --git a/mysql-test/suite/mariabackup/encrypted_page_compressed.opt b/mysql-test/suite/mariabackup/encrypted_page_compressed.opt new file mode 100644 index 00000000000..e5a02a1a1c9 --- /dev/null +++ b/mysql-test/suite/mariabackup/encrypted_page_compressed.opt @@ -0,0 +1,6 @@ +--innodb-encryption-rotate-key-age=2 +--innodb-encryption-threads=4 +--innodb-tablespaces-encryption +--plugin-load-add=$FILE_KEY_MANAGEMENT_SO +--loose-file-key-management +--loose-file-key-management-filename=$MYSQL_TEST_DIR/std_data/logkey.txt diff --git a/mysql-test/suite/mariabackup/encrypted_page_compressed.result b/mysql-test/suite/mariabackup/encrypted_page_compressed.result new file mode 100644 index 00000000000..293addd2b03 --- /dev/null +++ b/mysql-test/suite/mariabackup/encrypted_page_compressed.result @@ -0,0 +1,7 @@ +call mtr.add_suppression("InnoDB: Table `test`.`t1` has an unreadable root page"); +CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT, c char(200)) ENGINE=InnoDB page_compressed=yes encrypted=yes; +insert into t1(b, c) values("mariadb", "mariabackup"); +# Corrupt the table +# xtrabackup backup +FOUND 1 /Database page corruption detected.*/ in backup.log +drop table t1; diff --git a/mysql-test/suite/mariabackup/encrypted_page_compressed.test b/mysql-test/suite/mariabackup/encrypted_page_compressed.test new file mode 100644 index 00000000000..b4ca7eded14 --- /dev/null +++ b/mysql-test/suite/mariabackup/encrypted_page_compressed.test @@ -0,0 +1,48 @@ +source include/have_file_key_management.inc; +call mtr.add_suppression("InnoDB: Table `test`.`t1` has an unreadable root page"); +CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT, c char(200)) ENGINE=InnoDB page_compressed=yes encrypted=yes; +insert into t1(b, c) values("mariadb", "mariabackup"); + +let $MYSQLD_DATADIR=`select @@datadir`; +let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd; +let INNODB_PAGE_SIZE=`select @@innodb_page_size`; + +--source include/shutdown_mysqld.inc + +--echo # Corrupt the table + +perl; +use strict; +use warnings; +use Fcntl qw(:DEFAULT :seek); + +my $ibd_file = $ENV{'t1_IBD'}; + +my $chunk; +my $page_size = $ENV{'INNODB_PAGE_SIZE'}; + +sysopen IBD_FILE, $ibd_file, O_RDWR || die "Unable to open $ibd_file"; +sysseek IBD_FILE, $page_size * 3 + 75, SEEK_CUR; +$chunk = '\xAA\xAA\xAA\xAA'; +syswrite IBD_FILE, $chunk, 4; + +close IBD_FILE; +EOF + +--source include/start_mysqld.inc + +echo # xtrabackup backup; +--disable_result_log +let $targetdir=$MYSQLTEST_VARDIR/tmp/backup; +let $backuplog=$MYSQLTEST_VARDIR/tmp/backup.log; +--error 1 +exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$targetdir > $backuplog; +--enable_result_log + +--let SEARCH_PATTERN=Database page corruption detected.* +--let SEARCH_FILE=$backuplog +--source include/search_pattern_in_file.inc +remove_file $backuplog; + +drop table t1; +rmdir $targetdir; diff --git a/mysql-test/suite/mariabackup/encrypted_page_corruption.result b/mysql-test/suite/mariabackup/encrypted_page_corruption.result index 8ae34b2a6f0..9a6202a5ea1 100644 --- a/mysql-test/suite/mariabackup/encrypted_page_corruption.result +++ b/mysql-test/suite/mariabackup/encrypted_page_corruption.result @@ -1,8 +1,8 @@ -call mtr.add_suppression("\\[ERROR\\] InnoDB: The page .* in file .* cannot be decrypted."); +call mtr.add_suppression("\\[ERROR\\] InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=3\\] in file '.*test.t1\\.ibd' cannot be decrypted."); call mtr.add_suppression("\\[ERROR\\] InnoDB: Table `test`\\.`t1` has an unreadable root page"); CREATE TABLE t1(c VARCHAR(128)) ENGINE INNODB, encrypted=yes; insert into t1 select repeat('a',100); # Corrupt the table # xtrabackup backup -FOUND 1 /Database page corruption detected/ in backup.log +FOUND 1 /Database page corruption detected.*/ in backup.log drop table t1; diff --git a/mysql-test/suite/mariabackup/encrypted_page_corruption.test b/mysql-test/suite/mariabackup/encrypted_page_corruption.test index 923875275e6..4491c235ac4 100644 --- a/mysql-test/suite/mariabackup/encrypted_page_corruption.test +++ b/mysql-test/suite/mariabackup/encrypted_page_corruption.test @@ -1,12 +1,13 @@ --source include/have_file_key_management.inc +--source include/innodb_page_size.inc -call mtr.add_suppression("\\[ERROR\\] InnoDB: The page .* in file .* cannot be decrypted."); +call mtr.add_suppression("\\[ERROR\\] InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=3\\] in file '.*test.t1\\.ibd' cannot be decrypted."); call mtr.add_suppression("\\[ERROR\\] InnoDB: Table `test`\\.`t1` has an unreadable root page"); CREATE TABLE t1(c VARCHAR(128)) ENGINE INNODB, encrypted=yes; insert into t1 select repeat('a',100); -let $MYSQLD_DATADIR=`select @@datadir`; -let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd; +let MYSQLD_DATADIR=`select @@datadir`; +let INNODB_PAGE_SIZE=`select @@innodb_page_size`; --source include/shutdown_mysqld.inc @@ -16,17 +17,29 @@ perl; use strict; use warnings; use Fcntl qw(:DEFAULT :seek); +do "$ENV{MTR_SUITE_DIR}/../innodb/include/crc32.pl"; -my $ibd_file = $ENV{'t1_IBD'}; +my $page_size = $ENV{INNODB_PAGE_SIZE}; -my $chunk; -my $len; +sysopen IBD_FILE, "$ENV{MYSQLD_DATADIR}/test/t1.ibd", O_RDWR +|| die "Cannot open t1.ibd\n"; +sysread(IBD_FILE, $_, 38) || die "Cannot read t1.ibd\n"; +my $space = unpack("x[34]N", $_); +sysseek(IBD_FILE, $page_size * 3, SEEK_SET) || die "Cannot seek t1.ibd\n"; -sysopen IBD_FILE, $ibd_file, O_RDWR || die "Unable to open $ibd_file"; -sysseek IBD_FILE, 16384 * 3, SEEK_CUR; -$chunk = '\xAA\xAA\xAA\xAA'; -syswrite IBD_FILE, $chunk, 4; +my $head = pack("Nx[18]", 3); # better to have a valid page number +my $body = chr(0) x ($page_size - 38 - 8); +# Calculate innodb_checksum_algorithm=crc32 for the unencrypted page. +# The following bytes are excluded: +# bytes 0..3 (the checksum is stored there) +# bytes 26..37 (encryption key version, post-encryption checksum, tablespace id) +# bytes $page_size-8..$page_size-1 (checksum, LSB of FIL_PAGE_LSN) +my $polynomial = 0x82f63b78; # CRC-32C +my $ck = mycrc32($head, 0, $polynomial) ^ mycrc32($body, 0, $polynomial); + +my $page= pack("N",$ck).$head.pack("NNN",1,$ck,$space).$body.pack("Nx[4]",$ck); +die unless syswrite(IBD_FILE, $page, $page_size) == $page_size; close IBD_FILE; EOF @@ -38,14 +51,20 @@ let $backuplog=$MYSQLTEST_VARDIR/tmp/backup.log; --disable_result_log --error 1 -exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$targetdir > $backuplog; +exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --extended-validation --target-dir=$targetdir > $backuplog; --enable_result_log ---let SEARCH_PATTERN=Database page corruption detected +--let SEARCH_PATTERN=Database page corruption detected.* --let SEARCH_FILE=$backuplog --source include/search_pattern_in_file.inc remove_file $backuplog; +rmdir $targetdir; + +# Due to very constructed nature of the "corruption" (faking checksums), the "corruption" won't be found without --extended-validation +--disable_result_log +exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$targetdir; +--enable_result_log drop table t1; rmdir $targetdir; diff --git a/mysql-test/suite/mariabackup/huge_lsn.opt b/mysql-test/suite/mariabackup/huge_lsn.opt index 74a6450a1ef..c65b76fb7d2 100644 --- a/mysql-test/suite/mariabackup/huge_lsn.opt +++ b/mysql-test/suite/mariabackup/huge_lsn.opt @@ -1,4 +1,8 @@ --innodb-encrypt-log=ON +--innodb-tablespaces-encryption +--innodb-encrypt-tables=ON +--innodb-encryption-rotate-key-age=1 +--innodb-encryption-threads=4 --plugin-load-add=$FILE_KEY_MANAGEMENT_SO --loose-file-key-management --loose-file-key-management-filekey=FILE:$MTR_SUITE_DIR/filekeys-data.key diff --git a/mysql-test/suite/mariabackup/partition_partial.opt b/mysql-test/suite/mariabackup/partition_partial.opt new file mode 100644 index 00000000000..508cf185695 --- /dev/null +++ b/mysql-test/suite/mariabackup/partition_partial.opt @@ -0,0 +1 @@ +--innodb --loose-partition diff --git a/mysql-test/suite/mariabackup/partition_partial.result b/mysql-test/suite/mariabackup/partition_partial.result new file mode 100644 index 00000000000..62b7adf75f8 --- /dev/null +++ b/mysql-test/suite/mariabackup/partition_partial.result @@ -0,0 +1,31 @@ +CREATE TABLE t1(i INT) ENGINE INNODB +PARTITION BY RANGE (i) +(PARTITION p1 VALUES LESS THAN (100), +PARTITION p2 VALUES LESS THAN (200), +PARTITION p3 VALUES LESS THAN (300), +PARTITION p4 VALUES LESS THAN (400)); +INSERT INTO t1 VALUES (1), (101), (201), (301); +# xtrabackup backup +INSERT INTO t1 VALUES (1), (101), (201), (301); +# xtrabackup prepare +CREATE TABLE t1_placeholder (i INT) ENGINE INNODB; +ALTER TABLE t1_placeholder DISCARD TABLESPACE; +ALTER TABLE t1_placeholder IMPORT TABLESPACE; +ALTER TABLE t1 EXCHANGE PARTITION p4 WITH TABLE t1_placeholder; +ALTER TABLE t1_placeholder DISCARD TABLESPACE; +ALTER TABLE t1_placeholder IMPORT TABLESPACE; +ALTER TABLE t1 EXCHANGE PARTITION p3 WITH TABLE t1_placeholder; +ALTER TABLE t1_placeholder DISCARD TABLESPACE; +ALTER TABLE t1_placeholder IMPORT TABLESPACE; +ALTER TABLE t1 EXCHANGE PARTITION p2 WITH TABLE t1_placeholder; +ALTER TABLE t1_placeholder DISCARD TABLESPACE; +ALTER TABLE t1_placeholder IMPORT TABLESPACE; +ALTER TABLE t1 EXCHANGE PARTITION p1 WITH TABLE t1_placeholder; +SELECT * FROM t1; +i +1 +101 +201 +301 +DROP TABLE t1; +DROP TABLE t1_placeholder; diff --git a/mysql-test/suite/mariabackup/partition_partial.test b/mysql-test/suite/mariabackup/partition_partial.test new file mode 100644 index 00000000000..8e288ec997f --- /dev/null +++ b/mysql-test/suite/mariabackup/partition_partial.test @@ -0,0 +1,44 @@ +#--source include/innodb_page_size.inc + +# import partitioned table from table from partial backup + +CREATE TABLE t1(i INT) ENGINE INNODB +PARTITION BY RANGE (i) +(PARTITION p1 VALUES LESS THAN (100), + PARTITION p2 VALUES LESS THAN (200), + PARTITION p3 VALUES LESS THAN (300), + PARTITION p4 VALUES LESS THAN (400)); + +INSERT INTO t1 VALUES (1), (101), (201), (301); + +echo # xtrabackup backup; + +let $targetdir=$MYSQLTEST_VARDIR/tmp/backup; +--disable_result_log +exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup "--tables=test.t1" --target-dir=$targetdir; +--enable_result_log +INSERT INTO t1 VALUES (1), (101), (201), (301); + + +echo # xtrabackup prepare; +--disable_result_log +exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --defaults-group-suffix=.1 --prepare --export --target-dir=$targetdir; +--enable_result_log + + +let $MYSQLD_DATADIR= `select @@datadir`; +CREATE TABLE t1_placeholder (i INT) ENGINE INNODB; +let $i=4; +while($i) +{ + eval ALTER TABLE t1_placeholder DISCARD TABLESPACE; + copy_file $targetdir/test/t1#P#p$i.cfg $MYSQLD_DATADIR/test/t1_placeholder.cfg; + copy_file $targetdir/test/t1#P#p$i.ibd $MYSQLD_DATADIR/test/t1_placeholder.ibd; + eval ALTER TABLE t1_placeholder IMPORT TABLESPACE; + eval ALTER TABLE t1 EXCHANGE PARTITION p$i WITH TABLE t1_placeholder; + dec $i; +} +SELECT * FROM t1; +DROP TABLE t1; +DROP TABLE t1_placeholder; +rmdir $targetdir; diff --git a/mysql-test/suite/mariabackup/rename_during_backup.result b/mysql-test/suite/mariabackup/rename_during_backup.result index 6e8f365f643..a4cf06b7633 100644 --- a/mysql-test/suite/mariabackup/rename_during_backup.result +++ b/mysql-test/suite/mariabackup/rename_during_backup.result @@ -4,6 +4,8 @@ CREATE TABLE t2(i int) ENGINE INNODB; INSERT INTO t2 values(2); CREATE TABLE t3(i int) ENGINE INNODB; CREATE TABLE t4(i int) ENGINE INNODB; +CREATE TABLE t5(i int) ENGINE INNODB; +INSERT INTO t5 VALUES(5); CREATE TABLE a(a int) ENGINE INNODB; INSERT INTO a values(1); CREATE TABLE b(b CHAR(1)) ENGINE INNODB; @@ -51,3 +53,10 @@ SELECT * FROM b1; a1 1 DROP TABLE a,b,a1,b1; +SELECT * from t5; +i +DROP TABLE t5; +SELECT * from t6; +i +5 +DROP TABLE t6; diff --git a/mysql-test/suite/mariabackup/rename_during_backup.test b/mysql-test/suite/mariabackup/rename_during_backup.test index f176af1451b..238a8b1985c 100644 --- a/mysql-test/suite/mariabackup/rename_during_backup.test +++ b/mysql-test/suite/mariabackup/rename_during_backup.test @@ -10,6 +10,8 @@ INSERT INTO t2 values(2); CREATE TABLE t3(i int) ENGINE INNODB; CREATE TABLE t4(i int) ENGINE INNODB; +CREATE TABLE t5(i int) ENGINE INNODB; +INSERT INTO t5 VALUES(5); CREATE TABLE a(a int) ENGINE INNODB; INSERT INTO a values(1); @@ -28,6 +30,7 @@ INSERT INTO b1 VALUES('b1'); --let after_copy_test_t3=BEGIN NOT ATOMIC RENAME TABLE test.t3 TO test.t3_tmp; INSERT INTO test.t3_tmp VALUES(3); RENAME TABLE test.t3_tmp TO test.t3; END --let before_copy_test_t4=RENAME TABLE test.t4 TO test.t4_tmp --let after_copy_test_t4=RENAME TABLE test.t4_tmp TO test.t4 +--let after_copy_test_t5=BEGIN NOT ATOMIC RENAME TABLE test.t5 TO test.t6; CREATE TABLE test.t5(i int) ENGINE INNODB; END # Test circular renames --let before_copy_test_b=RENAME TABLE test.a to test.tmp, test.b to test.a, test.tmp to test.b @@ -81,6 +84,10 @@ SELECT * FROM a1; SELECT * FROM b1; DROP TABLE a,b,a1,b1; +SELECT * from t5; +DROP TABLE t5; +SELECT * from t6; +DROP TABLE t6; rmdir $targetdir; diff --git a/mysql-test/suite/mariabackup/unencrypted_page_compressed.result b/mysql-test/suite/mariabackup/unencrypted_page_compressed.result new file mode 100644 index 00000000000..71eac085769 --- /dev/null +++ b/mysql-test/suite/mariabackup/unencrypted_page_compressed.result @@ -0,0 +1,11 @@ +call mtr.add_suppression("InnoDB: Table `test`.`t1` has an unreadable root page"); +SET GLOBAL innodb_purge_rseg_truncate_frequency = 1; +CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT, c char(200)) ENGINE=InnoDB page_compressed=yes; +insert into t1(b, c) values("mariadb", "mariabackup"); +InnoDB 0 transactions not purged +# Corrupt the table +# xtrabackup backup +FOUND 1 /Database page corruption detected.*/ in backup.log +drop table t1; +Warnings: +Warning 192 Table test/t1 in file ./test/t1.ibd is encrypted but encryption service or used key_id is not available. Can't continue reading table. diff --git a/mysql-test/suite/mariabackup/unencrypted_page_compressed.test b/mysql-test/suite/mariabackup/unencrypted_page_compressed.test new file mode 100644 index 00000000000..b41d177e572 --- /dev/null +++ b/mysql-test/suite/mariabackup/unencrypted_page_compressed.test @@ -0,0 +1,50 @@ +call mtr.add_suppression("InnoDB: Table `test`.`t1` has an unreadable root page"); +SET GLOBAL innodb_purge_rseg_truncate_frequency = 1; +CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT, c char(200)) ENGINE=InnoDB page_compressed=yes; +insert into t1(b, c) values("mariadb", "mariabackup"); +--source ../innodb/include/wait_all_purged.inc + +let $MYSQLD_DATADIR=`select @@datadir`; +let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd; +let INNODB_PAGE_SIZE=`select @@innodb_page_size`; + +--source include/shutdown_mysqld.inc + +--echo # Corrupt the table + +perl; +use strict; +use warnings; +use Fcntl qw(:DEFAULT :seek); + +my $ibd_file = $ENV{'t1_IBD'}; + +my $chunk; +my $page_size = $ENV{'INNODB_PAGE_SIZE'}; + +sysopen IBD_FILE, $ibd_file, O_RDWR || die "Unable to open $ibd_file"; +sysseek IBD_FILE, 16384 * 3 + 75, SEEK_CUR; +$chunk = '\xAA\xAA\xAA\xAA'; +syswrite IBD_FILE, $chunk, 4; + +close IBD_FILE; +EOF + +--let $restart_parameters= --skip-innodb-buffer-pool-load-at-startup +--source include/start_mysqld.inc + +echo # xtrabackup backup; +--disable_result_log +let $targetdir=$MYSQLTEST_VARDIR/tmp/backup; +let $backuplog=$MYSQLTEST_VARDIR/tmp/backup.log; +--error 1 +exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$targetdir > $backuplog; +--enable_result_log + +--let SEARCH_PATTERN=Database page corruption detected.* +--let SEARCH_FILE=$backuplog +--source include/search_pattern_in_file.inc +remove_file $backuplog; + +drop table t1; +rmdir $targetdir; diff --git a/mysql-test/suite/rpl/r/rpl_idempotency.result b/mysql-test/suite/rpl/r/rpl_idempotency.result index a9485ca8933..09e084ce448 100644 --- a/mysql-test/suite/rpl/r/rpl_idempotency.result +++ b/mysql-test/suite/rpl/r/rpl_idempotency.result @@ -79,8 +79,25 @@ a -3 1 include/check_slave_no_error.inc +connection slave; +drop table t1, t2; connection master; DROP TABLE t1, t2; connection slave; +include/check_slave_no_error.inc +create database d; +create database e; +connection master; +create database d; +create database if not exists e; +connection slave; +include/check_slave_no_error.inc +drop database d; +drop database e; +connection master; +drop database d; +drop database if exists e; +connection slave; +include/check_slave_no_error.inc SET @@global.slave_exec_mode= @old_slave_exec_mode; include/rpl_end.inc diff --git a/mysql-test/suite/rpl/r/rpl_user.result b/mysql-test/suite/rpl/r/rpl_user.result index 34f15d41209..2a8bf69501c 100644 --- a/mysql-test/suite/rpl/r/rpl_user.result +++ b/mysql-test/suite/rpl/r/rpl_user.result @@ -31,6 +31,13 @@ Host User fakehost barbar fakehost foofoo connection master; +alter user 'foofoo'@'fakehost' identified by 'foo'; +alter user 'non_exist_user1'@'fakehost' identified by 'foo', 'barbar'@'fakehost' identified by 'bar'; +ERROR HY000: Operation ALTER USER failed for 'non_exist_user1'@'fakehost' +alter user 'non_exist_user1'@'fakehost' identified by 'foo', 'non_exist_user2'@'fakehost' identified by 'bar'; +ERROR HY000: Operation ALTER USER failed for 'non_exist_user1'@'fakehost','non_exist_user2'@'fakehost' +connection slave; +connection master; drop user 'foofoo'@'fakehost'; drop user 'not_exist_user1'@'fakehost', 'barbar'@'fakehost'; ERROR HY000: Operation DROP USER failed for 'not_exist_user1'@'fakehost' @@ -51,6 +58,10 @@ master-bin.000001 # Query # # use `test`; rename user 'foo'@'fakehost' to 'foofo master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `test`; rename user 'not_exist_user1'@'fakehost' to 'foobar'@'fakehost', 'bar'@'fakehost' to 'barbar'@'fakehost' master-bin.000001 # Gtid # # GTID #-#-# +master-bin.000001 # Query # # use `test`; alter user 'foofoo'@'fakehost' identified by 'foo' +master-bin.000001 # Gtid # # GTID #-#-# +master-bin.000001 # Query # # use `test`; alter user 'non_exist_user1'@'fakehost' identified by 'foo', 'barbar'@'fakehost' identified by 'bar' +master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `test`; drop user 'foofoo'@'fakehost' master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `test`; drop user 'not_exist_user1'@'fakehost', 'barbar'@'fakehost' diff --git a/mysql-test/suite/rpl/t/rpl_idempotency.test b/mysql-test/suite/rpl/t/rpl_idempotency.test index fcfe6f65e6d..12dec236d45 100644 --- a/mysql-test/suite/rpl/t/rpl_idempotency.test +++ b/mysql-test/suite/rpl/t/rpl_idempotency.test @@ -77,9 +77,30 @@ SELECT * FROM t1 ORDER BY a; SELECT * FROM t2 ORDER BY a; --source include/check_slave_no_error.inc +connection slave; +drop table t1, t2; + connection master; DROP TABLE t1, t2; sync_slave_with_master; +--source include/check_slave_no_error.inc +create database d; +create database e; + +connection master; +create database d; +create database if not exists e; + +sync_slave_with_master; +--source include/check_slave_no_error.inc +drop database d; +drop database e; + +connection master; +drop database d; +drop database if exists e; +sync_slave_with_master; +--source include/check_slave_no_error.inc SET @@global.slave_exec_mode= @old_slave_exec_mode; diff --git a/mysql-test/suite/rpl/t/rpl_user.test b/mysql-test/suite/rpl/t/rpl_user.test index caa17b47733..079c2bf27d5 100644 --- a/mysql-test/suite/rpl/t/rpl_user.test +++ b/mysql-test/suite/rpl/t/rpl_user.test @@ -42,6 +42,17 @@ sync_slave_with_master; select Host,User from mysql.user where Host='fakehost'; # +# Test alter user +# +connection master; +alter user 'foofoo'@'fakehost' identified by 'foo'; +--error ER_CANNOT_USER +alter user 'non_exist_user1'@'fakehost' identified by 'foo', 'barbar'@'fakehost' identified by 'bar'; +--error ER_CANNOT_USER +alter user 'non_exist_user1'@'fakehost' identified by 'foo', 'non_exist_user2'@'fakehost' identified by 'bar'; +sync_slave_with_master; + +# # Test drop user # connection master; diff --git a/mysql-test/suite/storage_engine/type_bool.result b/mysql-test/suite/storage_engine/type_bool.result index 87308ed63fc..10cfc08102f 100644 --- a/mysql-test/suite/storage_engine/type_bool.result +++ b/mysql-test/suite/storage_engine/type_bool.result @@ -42,8 +42,8 @@ b1 b2 0 0 INSERT INTO t1 (b1,b2) VALUES ('a','b'); Warnings: -Warning 1366 Incorrect integer value: 'a' for column 'b1' at row 1 -Warning 1366 Incorrect integer value: 'b' for column 'b2' at row 1 +Warning 1366 Incorrect integer value: 'a' for column `test`.`t1`.`b1` at row 1 +Warning 1366 Incorrect integer value: 'b' for column `test`.`t1`.`b2` at row 1 SELECT b1,b2 FROM t1; b1 b2 -1 -2 diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result index efc380a396b..89e5fef60e6 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result @@ -4151,7 +4151,7 @@ VARIABLE_SCOPE GLOBAL VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT The number of cached table definitions NUMERIC_MIN_VALUE 400 -NUMERIC_MAX_VALUE 524288 +NUMERIC_MAX_VALUE 2097152 NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result index 47df962b7c4..ca875e7f644 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result @@ -5103,7 +5103,7 @@ VARIABLE_SCOPE GLOBAL VARIABLE_TYPE BIGINT UNSIGNED VARIABLE_COMMENT The number of cached table definitions NUMERIC_MIN_VALUE 400 -NUMERIC_MAX_VALUE 524288 +NUMERIC_MAX_VALUE 2097152 NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO diff --git a/mysql-test/suite/sys_vars/r/table_definition_cache_basic.result b/mysql-test/suite/sys_vars/r/table_definition_cache_basic.result index 54b50c5ff75..69f3d42d2fb 100644 --- a/mysql-test/suite/sys_vars/r/table_definition_cache_basic.result +++ b/mysql-test/suite/sys_vars/r/table_definition_cache_basic.result @@ -28,14 +28,14 @@ Warning 1292 Truncated incorrect table_definition_cache value: '2' SELECT @@global.table_definition_cache; @@global.table_definition_cache 400 -SET @@global.table_definition_cache = 524287; +SET @@global.table_definition_cache = 2097151; SELECT @@global.table_definition_cache; @@global.table_definition_cache -524287 -SET @@global.table_definition_cache = 524288; +2097151 +SET @@global.table_definition_cache = 2097152; SELECT @@global.table_definition_cache; @@global.table_definition_cache -524288 +2097152 '#--------------------FN_DYNVARS_019_04-------------------------#' SET @@global.table_definition_cache = 0; Warnings: @@ -49,18 +49,18 @@ Warning 1292 Truncated incorrect table_definition_cache value: '-1024' SELECT @@global.table_definition_cache; @@global.table_definition_cache 400 -SET @@global.table_definition_cache = 524289; +SET @@global.table_definition_cache = 2097153; Warnings: -Warning 1292 Truncated incorrect table_definition_cache value: '524289' +Warning 1292 Truncated incorrect table_definition_cache value: '2097153' SELECT @@global.table_definition_cache; @@global.table_definition_cache -524288 +2097152 SET @@global.table_definition_cache = 42949672950; Warnings: Warning 1292 Truncated incorrect table_definition_cache value: '42949672950' SELECT @@global.table_definition_cache; @@global.table_definition_cache -524288 +2097152 SET @@global.table_definition_cache = 21221204.10; ERROR 42000: Incorrect argument type to variable 'table_definition_cache' SET @@global.table_definition_cache = ON; diff --git a/mysql-test/suite/sys_vars/t/table_definition_cache_basic.test b/mysql-test/suite/sys_vars/t/table_definition_cache_basic.test index dc0903c5d40..d7a6ff25a0b 100644 --- a/mysql-test/suite/sys_vars/t/table_definition_cache_basic.test +++ b/mysql-test/suite/sys_vars/t/table_definition_cache_basic.test @@ -64,9 +64,9 @@ SET @@global.table_definition_cache = 1; SELECT @@global.table_definition_cache; SET @@global.table_definition_cache = 2; SELECT @@global.table_definition_cache; -SET @@global.table_definition_cache = 524287; +SET @@global.table_definition_cache = 2097151; SELECT @@global.table_definition_cache; -SET @@global.table_definition_cache = 524288; +SET @@global.table_definition_cache = 2097152; SELECT @@global.table_definition_cache; @@ -79,7 +79,7 @@ SET @@global.table_definition_cache = 0; SELECT @@global.table_definition_cache; SET @@global.table_definition_cache = -1024; SELECT @@global.table_definition_cache; -SET @@global.table_definition_cache = 524289; +SET @@global.table_definition_cache = 2097153; SELECT @@global.table_definition_cache; SET @@global.table_definition_cache = 42949672950; SELECT @@global.table_definition_cache; diff --git a/mysql-test/suite/vcol/r/upgrade.result b/mysql-test/suite/vcol/r/upgrade.result index 75684bf0e41..527bc5f3abf 100644 --- a/mysql-test/suite/vcol/r/upgrade.result +++ b/mysql-test/suite/vcol/r/upgrade.result @@ -16,3 +16,19 @@ select * from vcol_autoinc; pk v3 1 1 drop table vcol_autoinc; +check table t1 for upgrade; +Table Op Msg_type Msg_text +test.t1 check status OK +flush tables; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `Date` datetime(6) NOT NULL, + `Data` varbinary(2000) NOT NULL, + `a` varchar(100) GENERATED ALWAYS AS (column_get(`Data`,1 as char(100) charset latin1)) VIRTUAL, + PRIMARY KEY (`Date`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 + PARTITION BY RANGE (to_days(`Date`)) +(PARTITION `p20181029` VALUES LESS THAN (737361) ENGINE = MyISAM, + PARTITION `p20181128` VALUES LESS THAN (737391) ENGINE = MyISAM) +drop table t1; diff --git a/mysql-test/suite/vcol/t/upgrade.test b/mysql-test/suite/vcol/t/upgrade.test index 3e221747dfa..146495d8ed0 100644 --- a/mysql-test/suite/vcol/t/upgrade.test +++ b/mysql-test/suite/vcol/t/upgrade.test @@ -11,3 +11,18 @@ select * from vcol_autoinc; insert vcol_autoinc (pk) values (1); select * from vcol_autoinc; drop table vcol_autoinc; + +# +# MDEV-17909 Problem by MariaDB Update 10.1.32 -> 10.2.19 (Incorrect information in file: .frm) +# +source include/have_partition.inc; +copy_file std_data/mdev17909#P#p20181029.MYD $datadir/test/t1#P#p20181029.MYD; +copy_file std_data/mdev17909#P#p20181029.MYI $datadir/test/t1#P#p20181029.MYI; +copy_file std_data/mdev17909#P#p20181128.MYD $datadir/test/t1#P#p20181128.MYD; +copy_file std_data/mdev17909#P#p20181128.MYI $datadir/test/t1#P#p20181128.MYI; +copy_file std_data/mdev17909.frm $datadir/test/t1.frm; +copy_file std_data/mdev17909.par $datadir/test/t1.par; +check table t1 for upgrade; +flush tables; +show create table t1; +drop table t1; diff --git a/mysql-test/unstable-tests b/mysql-test/unstable-tests index 45b72f0fade..78863e991d8 100644 --- a/mysql-test/unstable-tests +++ b/mysql-test/unstable-tests @@ -23,7 +23,7 @@ # ############################################################################## -# Based on bb-10.3-release 49a91a6cf89871082fd0a6b7d4b8482c429e942c +# Based on 10.3 c902a033b98f2eb11bc1e61cca9d3cb908ecff20 #----------------------------------------------------------------------- @@ -51,6 +51,7 @@ binlog.load_data_stm_view : MDEV-16948 binlog_encryption.binlog_xa_recover : MDEV-12908 - Extra checkpoint binlog_encryption.encrypted_master : MDEV-14201 - Extra warnings binlog_encryption.encrypted_master_switch_to_unencrypted : MDEV-14190 - Can't init tc log +binlog_encryption.encrypted_slave : MDEV-18135 - SSL error: key too small binlog_encryption.encryption_combo : MDEV-14199 - Table is marked as crashed binlog_encryption.rpl_binlog_errors : MDEV-12742 - Crash binlog_encryption.rpl_checksum : MDEV-16951 - Wrong result @@ -75,13 +76,17 @@ compat/oracle.sp-cursor : Modified in compat/oracle.sp-cursor-rowtype : Modified in 10.3.11 compat/oracle.sp-package : Modified in 10.3.11 compat/oracle.sp-package-mysqldump : Modified in 10.3.11 -compat/oracle.table_value_constr : Modified in 10.3.10 #----------------------------------------------------------------------- +connect.alter : MDEV-18135 - SSL error: key too small +connect.drop-open-error : MDEV-18135 - SSL error: key too small +connect.json : MDEV-18135 - SSL error: key too small +connect.part_file : MDEV-18135 - SSL error: key too small +connect.part_table : MDEV-18135 - SSL error: key too small connect.pivot : MDEV-14803 - Failed to discover table +connect.secure_file_priv : MDEV-18135 - SSL error: key too small connect.vcol : MDEV-12374 - Fails on Windows -connect.xml2 : Modified in 10.3.10 connect.zip : MDEV-13884 - Wrong result #----------------------------------------------------------------------- @@ -90,12 +95,12 @@ encryption.create_or_replace : MDEV-12694 encryption.debug_key_management : MDEV-13841 - Timeout encryption.encrypt_and_grep : MDEV-13765 - Wrong result encryption.innochecksum : MDEV-13644 - Assertion failure -encryption.innodb-checksum-algorithm : MDEV-12898 - Deadlock of threads; MDEV-16896 - Server crash +encryption.innodb-checksum-algorithm : MDEV-12898 - Deadlock of threads; MDEV-16896 - Server crash; modified in 10.3.12 encryption.innodb-compressed-blob : MDEV-14728 - Unable to get certificate encryption.innodb-encryption-alter : MDEV-13566 - Lock wait timeout; modified in 10.3.11 encryption.innodb_encryption_tables : MDEV-17339 - Crash on restart encryption.innodb-first-page-read : MDEV-14356 - Timeout in wait condition -encryption.innodb-force-corrupt : MDEV-17286 - SSL error +encryption.innodb-force-corrupt : MDEV-17286 - SSL error; modified in 10.3.12 encryption.innodb-missing-key : MDEV-14728 - SSL error encryption.innodb-page_encryption : MDEV-10641 - mutex problem encryption.innodb-page_encryption_log_encryption : MDEV-17339 - Crash on restart @@ -133,7 +138,6 @@ federated.federatedx : MDEV-10617 #----------------------------------------------------------------------- -funcs_1.is_check_constraints : Added in 10.3.10 funcs_1.memory_views : MDEV-11773 - timeout funcs_1.processlist_val_no_prot : MDEV-11223 - Wrong result funcs_1.processlist_val_ps : MDEV-12175 - Wrong plan @@ -154,7 +158,7 @@ galera_3nodes.* : Suite is no gcol.gcol_partition_innodb : Modified in 10.3.11 gcol.gcol_rollback : MDEV-16954 - Unknown storage engine 'InnoDB' gcol.innodb_virtual_basic : MDEV-16950 - Failing assertion -gcol.innodb_virtual_debug_purge : MDEV-16952 - Wrong result; modified in 10.3.10 +gcol.innodb_virtual_debug_purge : MDEV-16952 - Wrong result gcol.innodb_virtual_fk_restart : MDEV-17466 - Assertion failure gcol.innodb_virtual_index : Modifed in 10.3.11 @@ -174,34 +178,29 @@ innodb.alter_not_null : Modified in innodb.auto_increment_dup : Modified in 10.3.11 innodb.autoinc_persist : MDEV-15282 - Assertion failure innodb.binlog_consistent : MDEV-10618 - Server fails to start +innodb.data_types : Modified in 10.3.12 +innodb.default_row_format_create : Modified in 10.3.12 innodb.ddl_purge : Combinations changed in 10.3.11 innodb.doublewrite : MDEV-12905 - Server crash -innodb.drop_table_background : Modified in 10.2.19 innodb.foreign_key : Modified in 10.3.11 -innodb.foreign-keys : Modified in 10.3.10 innodb.group_commit_crash : MDEV-14191 - InnoDB registration failed innodb.group_commit_crash_no_optimize_thread : MDEV-13830 - Assertion failure innodb.ibuf_not_empty : MDEV-17742 - Assertion failure innodb.innodb-32k-crash : MDEV-16953 - Corrupt log record found innodb.innodb-64k-crash : MDEV-13872 - Failure and crash on startup -innodb.innodb-alter : Modified in 10.3.11 -innodb.innodb-alter-debug : MDEV-13182 - InnoDB: adjusting FSP_SPACE_FLAGS; modified in 10.3.11 +innodb.innodb-alter : Modified in 10.3.12 +innodb.innodb-alter-debug : MDEV-13182 - InnoDB: adjusting FSP_SPACE_FLAGS; modified in 10.3.12 innodb.innodb-alter-table : MDEV-10619 - Testcase timeout innodb.innodb-alter-tempfile : MDEV-15285 - Table already exists innodb.innodb-blob : MDEV-12053 - Client crash innodb.innodb-fk : MDEV-13832 - Assertion failure on shutdown innodb.innodb-get-fk : MDEV-13276 - Server crash -innodb.innodb-index : Modified in 10.3.11 +innodb.innodb-index : Modified in 10.3.12 innodb.innodb-index-online : MDEV-14809 - Cannot save statistics -innodb.innodb-lock : Modified in 10.3.10 -innodb.innodb-page_compression_bzip2 : Modified in 10.3.10 innodb.innodb-page_compression_default : MDEV-13644 - Assertion failure -innodb.innodb-page_compression_lz4 : Modified in 10.3.10 -innodb.innodb-page_compression_lzma : MDEV-14353 - Wrong result; modified in 10.3.10 -innodb.innodb-page_compression_lzo : Modified in 10.3.10 +innodb.innodb-page_compression_lzma : MDEV-14353 - Wrong result innodb.innodb-page_compression_snappy : MDEV-13644 - Assertion failure -innodb.innodb-page_compression_tables : Modified in 10.3.10 -innodb.innodb-page_compression_zip : MDEV-10641 - mutex problem; modified in 10.3.10 +innodb.innodb-page_compression_zip : MDEV-10641 - mutex problem innodb.innodb-table-online : MDEV-13894 - Wrong result innodb.innodb-wl5522 : MDEV-13644 - Assertion failure innodb.innodb-wl5522-debug : MDEV-14200 - Wrong errno @@ -222,10 +221,7 @@ innodb.innodb_stats : MDEV-10682 innodb.innodb_stats_persistent : MDEV-17745 - Wrong result innodb.innodb_stats_persistent_debug : MDEV-14801 - Operation failed innodb.innodb_sys_semaphore_waits : MDEV-10331 - Semaphore wait -innodb.innodb_zip_innochecksum2 : MDEV-13882 - Extra warnings -innodb.innodb_zip_innochecksum3 : MDEV-14486 - Resource temporarily unavailable innodb.instant_alter : Modified in 10.3.11 -innodb.instant_alter_debug : Modified in 10.3.10 innodb.instant_alter_rollback : Modified in 10.3.11 innodb.log_corruption : MDEV-13251 - Wrong result innodb.log_data_file_size : MDEV-14204 - Server failed to start @@ -237,29 +233,21 @@ innodb.purge_secondary : MDEV-15681 innodb.purge_thread_shutdown : MDEV-13792 - Wrong result innodb.read_only_recovery : MDEV-13886 - Server crash innodb.recovery_shutdown : MDEV-15671 - Checksum mismatch in datafile -innodb.rename_table_debug : Added in 10.2.19 innodb.row_format_redundant : MDEV-15192 - Trying to access missing tablespace innodb.table_definition_cache_debug : MDEV-14206 - Extra warning -innodb.table_flags : MDEV-13572 - Wrong result; modified in 10.3.11 +innodb.table_flags : MDEV-13572 - Wrong result; modified in 10.3.12 innodb.temp_table_savepoint : MDEV-16182 - Wrong result innodb.temporary_table : MDEV-13265 - Wrong result -innodb.truncate : Added in 10.3.10 -innodb.truncate_crash : Added in 10.3.10 -innodb.truncate_debug : Opt file added in 10.2.19 -innodb.truncate_foreign : Added in 10.3.10 -innodb.truncate_inject : Opt file added in 10.2.19 -innodb.truncate_missing : Added in 10.3.10 -innodb.truncate_purge_debug : Opt file added in 10.2.19 -innodb.truncate_restart : Opt file added in 10.2.19 +innodb.truncate : Modified in 10.3.12 innodb.update_time : MDEV-14804 - Wrong result -innodb.undo_truncate : MDEV-17340 - Server hung; added in 10.3.10 -innodb.undo_truncate_recover : MDEV-13080 - Missing checkpoint; MDEV-17679 - Server has gone away; added in 10.3.10 +innodb.undo_truncate : MDEV-17340 - Server hung +innodb.undo_truncate_recover : MDEV-13080 - Missing checkpoint; MDEV-17679 - Server has gone away innodb.xa_recovery : MDEV-15279 - mysqld got exception #----------------------------------------------------------------------- innodb_fts.crash_recovery : Modified in 10.3.11 -innodb_fts.fts_kill_query : Modified in 10.0.37 +innodb_fts.create : Modified in 10.3.12 innodb_fts.innodb-fts-fic : MDEV-14154 - Assertion failure innodb_fts.innodb_fts_misc_debug : MDEV-14156 - Unexpected warning innodb_fts.innodb_fts_plugin : MDEV-13888 - Errors in server log @@ -280,35 +268,32 @@ innodb_gis.types : MDEV-15679 #----------------------------------------------------------------------- innodb_zip.cmp_per_index : MDEV-14490 - Table is marked as crashed +innodb_zip.innochecksum : Modified in 10.3.12 innodb_zip.innochecksum_3 : MDEV-13279 - Extra warnings -innodb_zip.restart : Opt file modified in 10.2.19 innodb_zip.wl5522_debug_zip : MDEV-11600 - Operating system error number 2 innodb_zip.wl6470_1 : MDEV-14240 - Assertion failure -innodb_zip.wl6501_1 : MDEV-10891 - Can't create UNIX socket; opt file added in 10.2.19 -innodb_zip.wl6501_crash_3 : Opt file added in 10.2.19 -innodb_zip.wl6501_crash_4 : Opt file added in 10.2.19 -innodb_zip.wl6501_crash_5 : Opt file added in 10.2.19 -innodb_zip.wl6501_scale_1 : Opt file added in 10.2.19 +innodb_zip.wl6501_1 : MDEV-10891 - Can't create UNIX socket innodb_zip.wl6501_scale_1 : MDEV-13254 - Timeout, MDEV-14104 - Error 192 #----------------------------------------------------------------------- -main.alter_table : Modified in 10.3.11 +main.alter_table : Modified in 10.3.12 +main.alter_table_errors : Modified in 10.3.12 main.alter_table_trans : MDEV-12084 - timeout main.analyze_stmt_slow_query_log : MDEV-12237 - Wrong result main.auth_named_pipe : MDEV-14724 - System error 2 main.auto_increment_ranges_innodb : Modified in 10.3.11 main.bigint : Modified in 10.3.11 main.case : Modified in 10.3.11 -main.connect : MDEV-16270, MDEV-17282 - Wrong result +main.check : Modified in 10.3.12 +main.connect : MDEV-17282 - Wrong result; modified in 10.3.12 main.connect2 : MDEV-13885 - Server crash -main.constraints : Modified in 10.3.10 main.count_distinct2 : MDEV-11768 - timeout main.create_delayed : MDEV-10605 - failed with timeout main.create_drop_event : MDEV-16271 - Wrong result main.create_or_replace : Modified in 10.3.11 main.cte_nonrecursive : Modified in 10.3.11 -main.cte_recursive : Modified in 10.3.11 +main.cte_recursive : Modified in 10.3.12 main.ctype_latin1 : Modified in 10.3.11 main.ctype_uca : Modified in 10.3.11 main.ctype_ucs : MDEV-17681 - Data too long for column @@ -329,21 +314,22 @@ main.events_slowlog : MDEV-12821 main.flush : Modified in 10.3.11 main.func_concat : Modified in 10.3.11 main.func_default : Modified in 10.3.11 -main.func_isnull : Modified in 10.3.10 +main.func_group_innodb : Modified in 10.3.12 +main.func_hybrid_type : Modified in 10.3.12 main.func_json : Modified in 10.3.11 main.func_like : Modified in 10.3.11 -main.func_time : Modified in 10.3.11 -main.gis : MDEV-13411 - wrong result on P8; modified in 10.3.10 -main.gis-precise : Modified in 10.3.10 -main.grant : Modified in 10.3.10 +main.func_math : Modified in 10.3.12 +main.func_time : Modified in 10.3.12 +main.gis : MDEV-13411 - wrong result on P8 +main.grant5 : Modified in 10.3.12 main.group_by : Modified in 10.3.11 -main.group_min_max : Modified in 10.3.10 main.host_cache_size_functionality : MDEV-10606 - sporadic failure on shutdown main.index_intersect_innodb : MDEV-10643 - failed with timeout main.index_merge_innodb : MDEV-7142 - Plan mismatch main.index_merge_myisam : Modified in 10.3.11 +main.information_schema : Modified in 10.3.12 main.innodb_mysql_lock : MDEV-7861 - Wrong result -main.join : Modified in 10.3.10 +main.invisible_field_debug : Modified in 10.3.12 main.join_cache : MDEV-17743 - Bad address from storage engine MyISAM main.join_outer : Modified in 10.3.11 main.kill-2 : MDEV-13257 - Wrong result @@ -356,12 +342,10 @@ main.lowercase_fs_off : Modified in main.mdev375 : MDEV-10607 - sporadic "can't connect" main.mdev-504 : MDEV-15171 - warning main.merge : MDEV-10607 - sporadic "can't connect" -main.mysql : Modified in 10.3.10 main.mysql_client_test_comp : MDEV-16641 - Error in exec main.mysql_client_test_nonblock : CONC-208 - Error on Power; MDEV-15096 - exec failed -main.mysql_not_windows : Modified in 10.3.10 main.mysqld_option_err : MDEV-12747 - Timeout -main.mysqldump : MDEV-14800 - Stack smashing detected; modified in 10.3.11 +main.mysqldump : MDEV-14800 - Stack smashing detected; modified in 10.3.12 main.mysqldump-max : Modified in 10.3.11 main.mysqldump-utf8mb4 : Added in 10.3.11 main.mysqlhotcopy_myisam : MDEV-10995 - Hang on debug @@ -375,27 +359,29 @@ main.opt_tvc : Modified in main.order_by_optimizer_innodb : MDEV-10683 - Wrong result main.order_by_zerolength-4285 : Modified in 10.3.11 main.parser : Modified in 10.3.11 +main.partition : Modified in 10.3.12 +main.partition_alter : Modified in 10.3.12 main.partition_debug_sync : MDEV-15669 - Deadlock found when trying to get lock -main.partition_error : Modified in 10.3.10 main.partition_explicit_prune : Modified in 10.3.11 -main.partition_innodb : Modified in 10.3.11 +main.partition_innodb : Modified in 10.3.12 main.partition_innodb_plugin : MDEV-12901 - Valgrind warnings main.partition_pruning : Modified in 10.3.11 -main.ps : MDEV-11017 - sporadic wrong Prepared_stmt_count; modified in 10.3.10 +main.pool_of_threads : MDEV-18135 - SSL error: key too small +main.ps : MDEV-11017 - sporadic wrong Prepared_stmt_count +main.ps_error : Added in 10.3.12 main.query_cache_debug : MDEV-15281 - Query cache is disabled main.query_cache : MDEV-16180 - Wrong result -main.range : Modified in 10.3.10 -main.range_debug : Added in 10.3.10 +main.range_innodb : Modified in 10.3.12 main.range_vs_index_merge_innodb : MDEV-15283 - Server has gone away -main.selectivity : Modified in 10.3.10 +main.read_only : Modified in 10.3.12 main.set_statement : MDEV-13183 - Wrong result main.shm : MDEV-12727 - Mismatch, ERROR 2013 main.show_explain : MDEV-10674 - Wrong result code -main.sp : MDEV-7866 - Mismatch; modified in 10.3.10 +main.sp : MDEV-7866 - Mismatch; modified in 10.3.12 main.sp-cursor : Modified in 10.3.11 main.sp-for-loop : Modified in 10.3.11 main.sp_notembedded : MDEV-10607 - internal error -main.sp-security : MDEV-10607 - sporadic "can't connect"; modified in 10.3.10 +main.sp-security : MDEV-10607 - sporadic "can't connect" main.sql_safe_updates : Added in 10.3.11 main.ssl : MDEV-17184 - Failures with OpenSSL 1.1.1 main.ssl_ca : MDEV-10895 - SSL connection error on Power @@ -403,24 +389,20 @@ main.ssl_cert_verify : MDEV-13735 main.ssl_cipher : MDEV-17184 - Failures with OpenSSL 1.1.1 main.ssl_connect : MDEV-13492 - Unknown SSL error main.ssl_timeout : MDEV-11244 - Crash -main.stat_tables : Modified in 10.3.10 +main.stat_tables : Modified in 10.3.12 main.stat_tables_par_innodb : MDEV-14155 - Wrong rounding main.stat_tables_par : MDEV-13266 - Wrong result main.status : MDEV-13255 - Wrong result -main.subselect_extra_no_semijoin : Modified in 10.3.10 main.subselect_innodb : MDEV-10614 - Wrong result -main.table_value_constr : Modified in 10.3.10 main.tc_heuristic_recover : MDEV-14189 - Wrong result -main.temp_table : Modified in 10.3.10 main.type_blob : MDEV-15195 - Wrong result main.type_datetime : Modified in 10.3.11 main.type_datetime_hires : MDEV-10687 - Timeout -main.type_float : Modified in 10.3.10 -main.type_newdecimal : Modified in 10.3.11 +main.type_newdecimal : Modified in 10.3.12 main.type_year : Modified in 10.3.11 +main.udf : Modified in 10.3.12 main.userstat : MDEV-12904 - SSL errors -main.win : Modified in 10.3.11 -main.win_lead_lag : Modified in 10.3.10 +main.win : Modified in 10.3.12 main.win_percent_cume : Modified in 10.3.11 main.win_percentile : Modified in 10.3.11 main.win_rank : Modified in 10.3.11 @@ -429,44 +411,38 @@ main.xa : MDEV-11769 #----------------------------------------------------------------------- -maria.concurrent : Added in 10.3.10 -maria.create : Added in 10.3.10 maria.fulltext2 : Added in 10.3.11 maria.insert_select : MDEV-12757 - Timeout maria.insert_select-7314 : MDEV-16492 - Timeout -maria.maria : MDEV-14430 - Extra warning; modified in 10.3.10 +maria.maria : MDEV-14430 - Extra warning #----------------------------------------------------------------------- -mariabackup.absolute_ibdata_paths : MDEV-16571 - Wrong result; opt file modified in 10.3.10 +mariabackup.absolute_ibdata_paths : MDEV-16571 - Wrong result mariabackup.apply-log-only : MDEV-14192 - Assertion failure mariabackup.apply-log-only-incr : MDEV-14192 - Assertion failure +mariabackup.backup_grants : Added in 10.3.12 mariabackup.backup_ssl : MDEV-14192 - Assertion failure -mariabackup.create_during_backup : Added in 10.3.10 -mariabackup.create_with_data_directory_during_backup : Added in 10.3.10 mariabackup.data_directory : MDEV-15270 - Error on exec -mariabackup.drop_table_during_backup : Added in 10.3.10 +mariabackup.encrypted_page_compressed : Added in 10.3.12 +mariabackup.encrypted_page_corruption : Added in 10.3.12 mariabackup.full_backup : MDEV-16571 - Wrong result -mariabackup.huge_lsn : MDEV-15662 - Sequence number is in the future +mariabackup.huge_lsn : MDEV-15662 - Sequence number is in the future; opt file modified in 10.3.12 mariabackup.incremental_backup : MDEV-14192 - Assertion failure -mariabackup.incremental_ddl_during_backup : Added in 10.3.10 mariabackup.incremental_encrypted : MDEV-15667 - timeout +mariabackup.innodb_log_optimize_ddl : MDEV-14192 - Assertion failure mariabackup.log_checksum_mismatch : MDEV-16571 - Wrong result mariabackup.mdev-14447 : MDEV-15201 - Timeout -mariabackup.mlog_index_load : MDEV-14192 - Assertion failure; added in 10.3.10 -mariabackup.nolock_ddl_during_backup_end : Added in 10.3.10 +mariabackup.mlog_index_load : MDEV-14192 - Assertion failure mariabackup.partial_exclude : MDEV-15270 - Error on exec -mariabackup.recreate_table_during_backup : Added in 10.3.10 -mariabackup.rename_during_backup : Added in 10.3.10 -mariabackup.rename_during_mdl_lock : MDEV-14192 - Assertion failure; modified in 10.3.10 -mariabackup.skip_innodb : Added in 10.3.10 -mariabackup.truncate_during_backup : Added in 10.3.10 -mariabackup.undo_space_id : Opt file modified in 10.3.10 -mariabackup.unsupported_redo : MDEV-14192 - Crash; modified in 10.3.10 -mariabackup.xb_aws_key_management : MDEV-17341 - Missing warning +mariabackup.partition_partial : Added in 10.3.12 +mariabackup.rename_during_backup : MDEV-14192 - Assertion failure +mariabackup.rename_during_mdl_lock : MDEV-14192 - Assertion failure +mariabackup.system_versioning : MDEV-14192 - Assertion failure +mariabackup.unencrypted_page_compressed : Added in 10.3.12 +mariabackup.unsupported_redo : MDEV-14192 - Crash mariabackup.xb_compressed_encrypted : MDEV-14812 - Segmentation fault mariabackup.xb_file_key_management : MDEV-16571 - Wrong result -mariabackup.xb_history : MDEV-16268 - Error on exec mariabackup.xb_page_compress : MDEV-14810 - status: 1, errno: 11 mariabackup.xb_partition : MDEV-14192 - Crash; MDEV-17584 - Crash upon shutdown mariabackup.xb_rocksdb : MDEV-17338 - Server hung on shutdown @@ -503,8 +479,6 @@ parts.partition_debug_innodb : MDEV-10891 parts.partition_exch_qa_10 : MDEV-11765 - wrong result parts.partition_innodb_status_file : MDEV-12901 - Valgrind parts.partition_special_innodb : MDEV-16942 - Timeout -parts.show_create : Modified in 10.3.10 -parts.update_and_cache : Added in 10.3.10 #----------------------------------------------------------------------- @@ -525,8 +499,9 @@ perfschema.hostcache_ipv6_addrinfo_again_allow : MDEV-12752 perfschema.hostcache_ipv6_addrinfo_bad_allow : MDEV-13260 - Crash perfschema.hostcache_ipv6_ssl : MDEV-10696 - Crash perfschema.privilege_table_io : MDEV-13184 - Extra lines +perfschema.relaylog : MDEV-18134 - Wrong result perfschema.rpl_gtid_func : MDEV-16897 - Wrong result -perfschema.socket_connect : MDEV-15677 - Wrong result +perfschema.socket_connect : Modified in 10.3.12 perfschema.socket_summary_by_event_name_func : MDEV-10622 - Wrong result perfschema.stage_mdl_global : MDEV-11803 - wrong result on slow builders perfschema.stage_mdl_procedure : MDEV-11545 - Missing row @@ -548,6 +523,32 @@ plugins.thread_pool_server_audit : MDEV-14295 rocksdb.* : Too many crashes in various tests +rocksdb.2pc_group_commit : MDEV-14455 - Wrong result +rocksdb.allow_no_primary_key_with_sk : MDEV-16639 - Server crash +rocksdb.autoinc_crash_safe_partition : MDEV-16639, MDEV-16637 - Server crash +rocksdb.autoinc_vars_thread : MDEV-16573 - Debug sync timed out +rocksdb.bloomfilter2 : MDEV-16564 - Wrong result +rocksdb.deadlock : MDEV-16033 - Timeout +rocksdb.drop_index_inplace : MDEV-14162 - Crash on shutdown +rocksdb.drop_table : MDEV-14308 - Timeout +rocksdb.drop_table3 : MDEV-16949 - Server crash +rocksdb.dup_key_update : MDEV-17284 - Wrong result +rocksdb.locking_issues : MDEV-14464 - Wrong result +rocksdb.mariadb_ignore_dirs : MDEV-16639 - Server crash +rocksdb.mariadb_port_fixes : MDEV-16387 - Wrong plan +rocksdb.max_open_files : MDEV-16639 - Server crash +rocksdb.perf_context : MDEV-17285 - Wrong results +rocksdb.rocksdb_cf_options : MDEV-16639 - Server crash +rocksdb.rocksdb_cf_per_partition : MDEV-16636 - Wrong result +rocksdb.rocksdb_parts : MDEV-13843 - Wrong result +rocksdb.ttl_primary_read_filtering : MDEV-16560 - Wrong result +rocksdb.ttl_secondary : MDEV-16943 - Timeout +rocksdb.ttl_secondary_read_filtering : MDEV-16560 - Wrong result +rocksdb.unique_check : MDEV-16576 - Wrong errno +rocksdb.use_direct_reads_writes : MDEV-16646 - Server crash +rocksdb.write_sync : MDEV-16965 - WRong result +rocksdb.xa : Added in 10.3.12 + #----------------------------------------------------------------------- rocksdb_rpl.mdev12179 : MDEV-16632 - Crash @@ -562,6 +563,7 @@ rocksdb_sys_vars.rocksdb_update_cf_options : MDEV-16955 #----------------------------------------------------------------------- roles.create_and_grant_role : MDEV-11772 - wrong result +roles.flush_roles-17898 : Added in 10.3.12 #----------------------------------------------------------------------- @@ -585,15 +587,15 @@ rpl.rpl_drop_db : Modified in rpl.rpl_drop_db_fail : MDEV-16898 - Slave fails to start rpl.rpl_extra_col_master_innodb : MDEV-16570 - Extra warning rpl.rpl_extra_col_master_myisam : MDEV-14203 - Extra warning -rpl.rpl_foreign_key_innodb : Modified in 10.3.10 rpl.rpl_gtid_basic : MDEV-10681 - server startup problem -rpl.rpl_gtid_crash : MDEV-9501 - Failed registering on master, MDEV-13643 - Lost connection +rpl.rpl_gtid_crash : MDEV-9501 - Failed registering on master, MDEV-13643 - Lost connection; modified in 10.3.12 rpl.rpl_gtid_delete_domain : MDEV-14463 - Timeout rpl.rpl_gtid_errorhandling : MDEV-13261 - Crash rpl.rpl_gtid_mdev9033 : MDEV-10680 - warnings rpl.rpl_gtid_reconnect : MDEV-14497 - Crash rpl.rpl_gtid_stop_start : MDEV-10629 - Crash on shutdown, MDEV-12629 - Valgrind warnings rpl.rpl_gtid_until : MDEV-10625 - warnings in error log +rpl.rpl_idempotency : Modified in 10.3.12 rpl.rpl_innodb_bug30888 : MDEV-10417 - Fails on Mips rpl.rpl_insert : MDEV-9329 - Fails on Ubuntu/s390x rpl.rpl_insert_delayed : MDEV-9329 - Fails on Ubuntu/s390x @@ -631,7 +633,6 @@ rpl.rpl_row_img_eng_noblob : MDEV-13875 rpl.rpl_row_index_choice : MDEV-15196 - Slave crash rpl.rpl_row_lcase_tblnames : Added in 10.3.11 rpl.rpl_row_sp001 : MDEV-9329 - Fails on Ubuntu/s390x -rpl.rpl_row_spatial : Added in 10.3.10 rpl.rpl_row_until : MDEV-14052 - Master will not send events with checksum rpl.rpl_semi_sync : MDEV-11220 - Wrong result rpl.rpl_semi_sync_after_sync : MDEV-14366 - Wrong result @@ -648,16 +649,15 @@ rpl.rpl_slave_load_tmpdir_not_exist : MDEV-14203 rpl.rpl_slow_query_log : MDEV-13250 - Test abort rpl.rpl_sp_effects : MDEV-13249 - Crash rpl.rpl_start_stop_slave : MDEV-13567 - Sync slave timeout -rpl.rpl_stm_000001 : MDEV-16274 - Connection attributes were truncated rpl.rpl_stm_lcase_tblnames : Added in 10.3.11 rpl.rpl_stm_mixing_engines : MDEV-14489 - Sync slave with master failed rpl.rpl_stm_multi_query : MDEV-9501 - Failed registering on master rpl.rpl_stm_relay_ign_space : MDEV-14360 - Test assertion -rpl.rpl_stm_reset_slave : MDEV-16274 - Connection attributes were truncated rpl.rpl_stm_stop_middle_group : MDEV-13791 - Server crash rpl.rpl_sync : MDEV-13830 - Assertion failure rpl.rpl_temporal_mysql56_to_mariadb53 : MDEV-9501 - Failed registering on master rpl.rpl_temporary_error2 : MDEV-10634 - Wrong number of retries +rpl.rpl_trigger : MDEV-18055 - Wrong result rpl.rpl_typeconv : Include file modified in 10.3.11 rpl.sec_behind_master-5114 : MDEV-13878 - Wrong result rpl.show_status_stop_slave_race-7126 : MDEV-17438 - Timeout @@ -689,10 +689,8 @@ spider/handler.* : MDEV-10987, #----------------------------------------------------------------------- -sql_sequence.auto_increment : Added in 10.3.10 sql_sequence.concurrent_create : MDEV-16635 - Server crash sql_sequence.create : Modified in 10.3.11 -sql_sequence.next : Modified in 10.3.10 #----------------------------------------------------------------------- @@ -705,6 +703,7 @@ stress.ddl_innodb : MDEV-10635 #----------------------------------------------------------------------- +sys_vars.aria_used_for_temp_tables_basic : Modified in 10.3.12 sys_vars.autocommit_func2 : MDEV-9329 - Fails on Ubuntu/s390x sys_vars.delayed_insert_limit_func : MDEV-17683 - Wrong result; modified in 10.3.11 sys_vars.innodb_buffer_pool_dump_at_shutdown_basic : MDEV-14280 - Unexpected error @@ -716,14 +715,14 @@ sys_vars.log_slow_admin_statements_func : MDEV-12235 sys_vars.rpl_init_slave_func : MDEV-10149 - Test assertion sys_vars.sql_low_priority_updates_func : Modified in 10.3.11 sys_vars.slow_query_log_func : MDEV-14273 - Wrong result +sys_vars.sysvars_aria : Modified in 10.3.12 sys_vars.thread_cache_size_func : MDEV-11775 - Wrong result +sys_vars.tmp_disk_table_size_func : Modified in 10.3.12 sys_vars.wait_timeout_func : MDEV-12896 - Wrong result -sys_vars.wsrep_start_position_basic : Modified in 10.3.10 +sys_vars.wsrep_sst_method_basic : Modified in 10.3.12 #----------------------------------------------------------------------- -tokudb.* : suite.pm and massive modifications in 10.3.10 - tokudb.change_column_all_1000_10 : MDEV-12640 - Lost connection tokudb.change_column_bin : MDEV-12640 - Lost connection tokudb.change_column_char : MDEV-12822 - Lost connection @@ -756,8 +755,6 @@ tokudb_backup.* : MDEV-11001 #----------------------------------------------------------------------- -tokudb_bugs.PS-3773 : Added in 10.0.37 -tokudb_bugs.alter_table_comment_rebuild_data : Added in 10.0.37 tokudb_bugs.checkpoint_lock : MDEV-10637 - Wrong processlist output tokudb_bugs.checkpoint_lock_3 : MDEV-10637 - Wrong processlist output tokudb_bugs.frm_store : MDEV-12823 - Valgrind @@ -783,22 +780,20 @@ tokudb_sys_vars.* : MDEV-11001 unit.conc_basic-t : MDEV-15286 - not ok 7 - test_reconnect_maxpackage unit.conc_misc : MDEV-14811 - not ok 12 - test_conc49 unit.conc_ps_bugs : MDEV-13252 - not ok 44 test_bug4236 -unit.lf : MDEV-12897 - Signal 11 thrown unit.ma_test_loghandler : MDEV-10638 - record read not ok unit.my_atomic : MDEV-15670 - Signal 11 thrown #----------------------------------------------------------------------- -vcol.index : Modified in 10.3.10 vcol.not_supported : MDEV-10639 - Testcase timeout vcol.races : Added in 10.3.11 +vcol.upgrade : Modified in 10.3.12 vcol.vcol_keys_innodb : MDEV-10639 - Testcase timeout vcol.vcol_misc : MDEV-16651 - Wrong error message #----------------------------------------------------------------------- versioning.online : Modified in 10.3.11 -versioning.truncate : Modified in 10.3.10 versioning.trx_id : Modified in 10.3.11 versioning.trx_id_versioning_attribute_persistence : Modified in 10.3.11 |