summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2019-06-14 07:36:47 +0200
committerOleksandr Byelkin <sanja@mariadb.com>2019-06-14 07:36:47 +0200
commit4a3d51c76c131e7b5348d7c714a619f82de32d39 (patch)
tree4fb180861c733e364af930529565a7b799c4833a /mysql-test
parentd9fe615ef6862c85c5aada96d4f5b62b7093177c (diff)
parent50653e021f1678c3c28c6b5886fadb9fcf8d87ff (diff)
downloadmariadb-git-4a3d51c76c131e7b5348d7c714a619f82de32d39.tar.gz
Merge branch '10.2' into 10.3
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/main/ctype_utf8_def_upgrade.opt1
-rw-r--r--mysql-test/main/ctype_utf8_def_upgrade.result99
-rw-r--r--mysql-test/main/ctype_utf8_def_upgrade.test61
-rw-r--r--mysql-test/main/derived.result1
-rw-r--r--mysql-test/main/derived.test3
-rw-r--r--mysql-test/main/derived_view.result20
-rw-r--r--mysql-test/main/derived_view.test2
-rw-r--r--mysql-test/main/join.result2
-rw-r--r--mysql-test/main/join_nested.result33
-rw-r--r--mysql-test/main/join_nested.test34
-rw-r--r--mysql-test/main/join_nested_jcl6.result33
-rw-r--r--mysql-test/main/mdev13607.result30
-rw-r--r--mysql-test/main/multi_update.result30
-rw-r--r--mysql-test/main/multi_update.test38
-rw-r--r--mysql-test/main/multi_update_debug.result16
-rw-r--r--mysql-test/main/multi_update_debug.test27
-rw-r--r--mysql-test/main/multi_update_innodb.result17
-rw-r--r--mysql-test/main/multi_update_innodb.test22
-rw-r--r--mysql-test/main/subselect.result2
-rw-r--r--mysql-test/main/subselect_mat.result89
-rw-r--r--mysql-test/main/subselect_no_exists_to_in.result2
-rw-r--r--mysql-test/main/subselect_no_mat.result2
-rw-r--r--mysql-test/main/subselect_no_opts.result2
-rw-r--r--mysql-test/main/subselect_no_scache.result2
-rw-r--r--mysql-test/main/subselect_no_semijoin.result2
-rw-r--r--mysql-test/main/subselect_sj_mat.result89
-rw-r--r--mysql-test/main/subselect_sj_mat.test75
-rw-r--r--mysql-test/suite/encryption/r/innodb_lotoftables.result1221
-rw-r--r--mysql-test/suite/encryption/t/innodb_lotoftables.opt3
-rw-r--r--mysql-test/suite/encryption/t/innodb_lotoftables.test231
-rw-r--r--mysql-test/suite/galera/disabled.def2
-rw-r--r--mysql-test/suite/galera/r/galera_sync_wait_show.result2
-rw-r--r--mysql-test/suite/innodb/r/innodb-64k-crash.result324
-rw-r--r--mysql-test/suite/innodb/t/innodb-64k-crash.test83
-rw-r--r--mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test3
-rw-r--r--mysql-test/suite/rpl/disabled.def1
-rw-r--r--mysql-test/suite/rpl/include/rpl_blackhole.test2
-rw-r--r--mysql-test/suite/rpl/include/rpl_blackhole_basic.test97
-rw-r--r--mysql-test/suite/rpl/r/rpl_blackhole.result9
-rw-r--r--mysql-test/suite/rpl/r/rpl_blackhole_row_annotate.result457
-rw-r--r--mysql-test/suite/rpl/t/rpl_blackhole.test77
-rw-r--r--mysql-test/suite/rpl/t/rpl_blackhole_row_annotate-master.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_blackhole_row_annotate-slave.opt1
-rw-r--r--mysql-test/suite/rpl/t/rpl_blackhole_row_annotate.test49
-rw-r--r--mysql-test/suite/wsrep/disabled.def14
-rw-r--r--mysql-test/unstable-tests1
46 files changed, 1327 insertions, 1985 deletions
diff --git a/mysql-test/main/ctype_utf8_def_upgrade.opt b/mysql-test/main/ctype_utf8_def_upgrade.opt
new file mode 100644
index 00000000000..61a472b45c5
--- /dev/null
+++ b/mysql-test/main/ctype_utf8_def_upgrade.opt
@@ -0,0 +1 @@
+--character-set-server=utf8
diff --git a/mysql-test/main/ctype_utf8_def_upgrade.result b/mysql-test/main/ctype_utf8_def_upgrade.result
new file mode 100644
index 00000000000..921b5200aca
--- /dev/null
+++ b/mysql-test/main/ctype_utf8_def_upgrade.result
@@ -0,0 +1,99 @@
+#
+# Start of 10.1 tests
+#
+#
+# MDEV-19675 Wrong charset is chosen when opening a pre-4.1 table
+#
+# Test with a saved table from 3.23
+SELECT @@character_set_database;
+@@character_set_database
+latin1
+SET @@character_set_database="latin1";
+SELECT COUNT(*) FROM t1;
+ERROR HY000: Got error 190 "Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine. You have to dump an" from storage engine MyISAM
+CHECK TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 check Error Got error 190 "Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine. You have to dump an" from storage engine MyISAM
+test.t1 check error Corrupt
+REPAIR TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 repair Error Got error 190 "Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine. You have to dump an" from storage engine MyISAM
+test.t1 repair error Corrupt
+REPAIR TABLE t1 USE_FRM;
+Table Op Msg_type Msg_text
+test.t1 repair status OK
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+0
+CHECK TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `Host` char(60) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `Db` char(64) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `Select_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `Insert_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `Update_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `Delete_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `Create_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `Drop_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `Grant_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `References_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `Index_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `Alter_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ PRIMARY KEY (`Host`,`Db`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Host privileges; Merged with database privileges'
+DROP TABLE t1;
+SET @@character_set_database=DEFAULT;
+# Now do the same, but doing 'ALTER DATABASE' to create the db.opt file,
+# instead of setting variables directly.
+# Emulate a pre-4.1 database without db.opt
+SHOW CREATE DATABASE db1;
+Database Create Database
+db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */
+USE db1;
+SELECT @@character_set_database, 'taken from defaults' AS comment;
+@@character_set_database comment
+utf8 taken from defaults
+USE test;
+ALTER DATABASE db1 DEFAULT CHARACTER SET latin1;
+USE db1;
+SELECT @@character_set_database, 'taken from db.opt' AS comment;
+@@character_set_database comment
+latin1 taken from db.opt
+SELECT COUNT(*) FROM t1;
+ERROR HY000: Got error 190 "Incompatible key or row definition between the MariaDB .frm file and the information in the storage engine. You have to dump an" from storage engine MyISAM
+REPAIR TABLE t1 USE_FRM;
+Table Op Msg_type Msg_text
+db1.t1 repair status OK
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+0
+CHECK TABLE t1;
+Table Op Msg_type Msg_text
+db1.t1 check status OK
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `Host` char(60) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `Db` char(64) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `Select_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `Insert_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `Update_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `Delete_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `Create_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `Drop_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `Grant_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `References_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `Index_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ `Alter_priv` enum('N','Y') NOT NULL DEFAULT 'N',
+ PRIMARY KEY (`Host`,`Db`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Host privileges; Merged with database privileges'
+DROP TABLE t1;
+DROP DATABASE db1;
+USE test;
+#
+# End of 10.1 tests
+#
diff --git a/mysql-test/main/ctype_utf8_def_upgrade.test b/mysql-test/main/ctype_utf8_def_upgrade.test
new file mode 100644
index 00000000000..4751faa0622
--- /dev/null
+++ b/mysql-test/main/ctype_utf8_def_upgrade.test
@@ -0,0 +1,61 @@
+let $MYSQLD_DATADIR= `select @@datadir`;
+
+--echo #
+--echo # Start of 10.1 tests
+--echo #
+
+--echo #
+--echo # MDEV-19675 Wrong charset is chosen when opening a pre-4.1 table
+--echo #
+
+--echo # Test with a saved table from 3.23
+
+SELECT @@character_set_database;
+SET @@character_set_database="latin1";
+--copy_file std_data/host_old.frm $MYSQLD_DATADIR/test/t1.frm
+--copy_file std_data/host_old.MYD $MYSQLD_DATADIR/test/t1.MYD
+--copy_file std_data/host_old.MYI $MYSQLD_DATADIR/test/t1.MYI
+
+--error ER_GET_ERRNO
+SELECT COUNT(*) FROM t1;
+CHECK TABLE t1;
+REPAIR TABLE t1;
+REPAIR TABLE t1 USE_FRM;
+SELECT COUNT(*) FROM t1;
+CHECK TABLE t1;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+SET @@character_set_database=DEFAULT;
+
+
+--echo # Now do the same, but doing 'ALTER DATABASE' to create the db.opt file,
+--echo # instead of setting variables directly.
+
+--echo # Emulate a pre-4.1 database without db.opt
+--mkdir $MYSQLD_DATADIR/db1
+SHOW CREATE DATABASE db1;
+USE db1;
+SELECT @@character_set_database, 'taken from defaults' AS comment;
+USE test;
+ALTER DATABASE db1 DEFAULT CHARACTER SET latin1;
+USE db1;
+SELECT @@character_set_database, 'taken from db.opt' AS comment;
+
+--copy_file std_data/host_old.frm $MYSQLD_DATADIR/db1/t1.frm
+--copy_file std_data/host_old.MYD $MYSQLD_DATADIR/db1/t1.MYD
+--copy_file std_data/host_old.MYI $MYSQLD_DATADIR/db1/t1.MYI
+
+--error ER_GET_ERRNO
+SELECT COUNT(*) FROM t1;
+REPAIR TABLE t1 USE_FRM;
+SELECT COUNT(*) FROM t1;
+CHECK TABLE t1;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+DROP DATABASE db1;
+USE test;
+
+--echo #
+--echo # End of 10.1 tests
+--echo #
diff --git a/mysql-test/main/derived.result b/mysql-test/main/derived.result
index 857246d68b4..7bbbad35116 100644
--- a/mysql-test/main/derived.result
+++ b/mysql-test/main/derived.result
@@ -1,4 +1,3 @@
-drop table if exists t1,t2,t3;
set @save_derived_optimizer_switch=@@optimizer_switch;
set optimizer_switch='derived_merge=off,derived_with_keys=off';
select * from (select 2 from DUAL) b;
diff --git a/mysql-test/main/derived.test b/mysql-test/main/derived.test
index 990f955450a..8f3f265178c 100644
--- a/mysql-test/main/derived.test
+++ b/mysql-test/main/derived.test
@@ -1,7 +1,4 @@
# Initialize
---disable_warnings
-drop table if exists t1,t2,t3;
---enable_warnings
set @save_derived_optimizer_switch=@@optimizer_switch;
set optimizer_switch='derived_merge=off,derived_with_keys=off';
diff --git a/mysql-test/main/derived_view.result b/mysql-test/main/derived_view.result
index 1bb48e47d8c..a60789c4808 100644
--- a/mysql-test/main/derived_view.result
+++ b/mysql-test/main/derived_view.result
@@ -3020,7 +3020,7 @@ DROP TABLE t1;
set optimizer_switch=@exit_optimizer_switch;
set join_cache_level=@exit_join_cache_level;
#
-# Bug mdev-12812: EXPLAIN for query with many expensive derived
+# Bug mdev-18479: EXPLAIN for query with many expensive derived
#
CREATE TABLE t1
(id int auto_increment primary key,
@@ -3321,15 +3321,15 @@ id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY p10 ALL NULL NULL NULL NULL 550 Using where; Using join buffer (incremental, BNL join)
1 PRIMARY <derived17> ALL NULL NULL NULL NULL 50328437500000 Using where; Using join buffer (incremental, BNL join)
1 PRIMARY <derived14> ALL NULL NULL NULL NULL 27680640625000000 Using where; Using join buffer (incremental, BNL join)
-1 PRIMARY <derived7> ALL NULL NULL NULL NULL 7798774269472204800 Using where; Using join buffer (incremental, BNL join)
-1 PRIMARY <derived8> ALL NULL NULL NULL NULL 7798774269472204800 Using where; Using join buffer (incremental, BNL join)
-1 PRIMARY <derived9> ALL NULL NULL NULL NULL -3222391729959550976 Using where; Using join buffer (incremental, BNL join)
-1 PRIMARY <derived10> ALL NULL NULL NULL NULL -3222391729959550976 Using where; Using join buffer (incremental, BNL join)
-1 PRIMARY <derived11> ALL NULL NULL NULL NULL -3222391729959550976 Using where; Using join buffer (incremental, BNL join)
-1 PRIMARY <derived12> ALL NULL NULL NULL NULL -3222391729959550976 Using where; Using join buffer (incremental, BNL join)
-1 PRIMARY <derived13> ALL NULL NULL NULL NULL -3222391729959550976 Using where; Using join buffer (incremental, BNL join)
-1 PRIMARY <derived15> ALL NULL NULL NULL NULL -3222391729959550976 Using where; Using join buffer (incremental, BNL join)
-1 PRIMARY <derived16> ALL NULL NULL NULL NULL -3222391729959550976 Using where; Using join buffer (incremental, BNL join)
+1 PRIMARY <derived9> ALL NULL NULL NULL NULL 15224352343750000640 Using where; Using join buffer (incremental, BNL join)
+1 PRIMARY <derived10> ALL NULL NULL NULL NULL 15224352343750000640 Using where; Using join buffer (incremental, BNL join)
+1 PRIMARY <derived11> ALL NULL NULL NULL NULL 15224352343750000640 Using where; Using join buffer (incremental, BNL join)
+1 PRIMARY <derived12> ALL NULL NULL NULL NULL 15224352343750000640 Using where; Using join buffer (incremental, BNL join)
+1 PRIMARY <derived13> ALL NULL NULL NULL NULL 15224352343750000640 Using where; Using join buffer (incremental, BNL join)
+1 PRIMARY <derived15> ALL NULL NULL NULL NULL 15224352343750000640 Using where; Using join buffer (incremental, BNL join)
+1 PRIMARY <derived16> ALL NULL NULL NULL NULL 15224352343750000640 Using where; Using join buffer (incremental, BNL join)
+1 PRIMARY <derived7> ALL NULL NULL NULL NULL 18446744073709551615 Using where; Using join buffer (incremental, BNL join)
+1 PRIMARY <derived8> ALL NULL NULL NULL NULL 18446744073709551615 Using where; Using join buffer (incremental, BNL join)
17 DERIVED t2 system NULL NULL NULL NULL 1
17 DERIVED p4 ALL NULL NULL NULL NULL 550 Using where
17 DERIVED p5 ALL NULL NULL NULL NULL 550 Using where; Using join buffer (flat, BNL join)
diff --git a/mysql-test/main/derived_view.test b/mysql-test/main/derived_view.test
index 2b89d3e4be6..d303391204f 100644
--- a/mysql-test/main/derived_view.test
+++ b/mysql-test/main/derived_view.test
@@ -1978,7 +1978,7 @@ set optimizer_switch=@exit_optimizer_switch;
set join_cache_level=@exit_join_cache_level;
--echo #
---echo # Bug mdev-12812: EXPLAIN for query with many expensive derived
+--echo # Bug mdev-18479: EXPLAIN for query with many expensive derived
--echo #
CREATE TABLE t1
diff --git a/mysql-test/main/join.result b/mysql-test/main/join.result
index 8ca82002855..4808a2f09bf 100644
--- a/mysql-test/main/join.result
+++ b/mysql-test/main/join.result
@@ -1140,7 +1140,7 @@ SELECT 1 FROM v1 right join v1 AS v2 ON RAND();
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 100.00 Using where
-1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00
+1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
1 SIMPLE t2 ALL NULL NULL NULL NULL 2 100.00 Using where
Warnings:
Note 1003 select 1 AS `1` from `test`.`t1` left join `test`.`t1` `t2` on(1 = 1) left join (`test`.`t1` left join `test`.`t1` `t2` on(1 = 1)) on(rand()) where 1
diff --git a/mysql-test/main/join_nested.result b/mysql-test/main/join_nested.result
index 708c72fffb5..5ab94a6b568 100644
--- a/mysql-test/main/join_nested.result
+++ b/mysql-test/main/join_nested.result
@@ -1966,3 +1966,36 @@ Note 1003 select 1 AS `K1`,'T1Row1' AS `Name`,`t2a`.`K2` AS `K2`,`t2a`.`K1r` AS
DROP VIEW v1;
DROP TABLE t1,t2;
set optimizer_search_depth= @tmp_mdev621;
+#
+# MDEV-19588: Nested left joins using optimized join cache
+#
+set optimizer_switch='optimize_join_buffer_size=on';
+set @save_join_cache_level= @@join_cache_level;
+set join_cache_level=2;
+CREATE TABLE t1 (i1 int, c1 varchar(20), pk int) engine=myisam;
+CREATE TABLE t2 (pk int, c1 varchar(20), i1 int) engine=myisam;
+INSERT INTO t2 VALUES (7,'a',-912),(8,'a',5);
+CREATE TABLE t3 (pk int, c1 varchar(20), i1 int) engine=myisam;
+INSERT INTO t3 VALUES
+(1,'a',-145),(2,'a',6),(3,'a',1),(7,'a',NULL),(8,'a',889),(9,'a',146),
+(10,'a',177),(16,'a',-433),(17,'a',NULL),(18,'a',2),(19,'a',3),(20,'a',5),
+(21,'a',-484),(22,'a',369),(23,'a',-192),(24,'a',-163),(25,'a',5),(26,'a',NULL);
+SELECT t3.*
+FROM t3 LEFT JOIN t1 LEFT JOIN t2 ON t1.i1 = t2.i1 ON t3.i1 = t1.i1
+WHERE t2.pk < 13 OR t3.i1 IS NULL;
+pk c1 i1
+7 a NULL
+17 a NULL
+26 a NULL
+explain extended SELECT t3.*
+FROM t3 LEFT JOIN t1 LEFT JOIN t2 ON t1.i1 = t2.i1 ON t3.i1 = t1.i1
+WHERE t2.pk < 13 OR t3.i1 IS NULL;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t3 ALL NULL NULL NULL NULL 18 100.00
+1 SIMPLE t1 ALL NULL NULL NULL NULL 0 0.00 Using where; Using join buffer (flat, BNL join)
+1 SIMPLE t2 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
+Warnings:
+Note 1003 select `test`.`t3`.`pk` AS `pk`,`test`.`t3`.`c1` AS `c1`,`test`.`t3`.`i1` AS `i1` from `test`.`t3` left join (`test`.`t1` left join `test`.`t2` on(`test`.`t2`.`i1` = `test`.`t3`.`i1`)) on(`test`.`t1`.`i1` = `test`.`t3`.`i1`) where `test`.`t2`.`pk` < 13 or `test`.`t3`.`i1` is null
+DROP TABLE t1,t2,t3;
+set join_cache_level= @save_join_cache_level;
+set optimizer_switch=@save_optimizer_switch;
diff --git a/mysql-test/main/join_nested.test b/mysql-test/main/join_nested.test
index e60b7827f75..cfb24a63304 100644
--- a/mysql-test/main/join_nested.test
+++ b/mysql-test/main/join_nested.test
@@ -1380,3 +1380,37 @@ DROP VIEW v1;
DROP TABLE t1,t2;
set optimizer_search_depth= @tmp_mdev621;
+
+--echo #
+--echo # MDEV-19588: Nested left joins using optimized join cache
+--echo #
+
+set optimizer_switch='optimize_join_buffer_size=on';
+
+set @save_join_cache_level= @@join_cache_level;
+set join_cache_level=2;
+
+CREATE TABLE t1 (i1 int, c1 varchar(20), pk int) engine=myisam;
+
+CREATE TABLE t2 (pk int, c1 varchar(20), i1 int) engine=myisam;
+INSERT INTO t2 VALUES (7,'a',-912),(8,'a',5);
+
+CREATE TABLE t3 (pk int, c1 varchar(20), i1 int) engine=myisam;
+INSERT INTO t3 VALUES
+(1,'a',-145),(2,'a',6),(3,'a',1),(7,'a',NULL),(8,'a',889),(9,'a',146),
+(10,'a',177),(16,'a',-433),(17,'a',NULL),(18,'a',2),(19,'a',3),(20,'a',5),
+(21,'a',-484),(22,'a',369),(23,'a',-192),(24,'a',-163),(25,'a',5),(26,'a',NULL);
+
+let $q=
+SELECT t3.*
+FROM t3 LEFT JOIN t1 LEFT JOIN t2 ON t1.i1 = t2.i1 ON t3.i1 = t1.i1
+WHERE t2.pk < 13 OR t3.i1 IS NULL;
+
+eval $q;
+eval explain extended $q;
+
+DROP TABLE t1,t2,t3;
+
+set join_cache_level= @save_join_cache_level;
+
+set optimizer_switch=@save_optimizer_switch;
diff --git a/mysql-test/main/join_nested_jcl6.result b/mysql-test/main/join_nested_jcl6.result
index 822bc064857..516107aeacb 100644
--- a/mysql-test/main/join_nested_jcl6.result
+++ b/mysql-test/main/join_nested_jcl6.result
@@ -1977,6 +1977,39 @@ Note 1003 select 1 AS `K1`,'T1Row1' AS `Name`,`t2a`.`K2` AS `K2`,`t2a`.`K1r` AS
DROP VIEW v1;
DROP TABLE t1,t2;
set optimizer_search_depth= @tmp_mdev621;
+#
+# MDEV-19588: Nested left joins using optimized join cache
+#
+set optimizer_switch='optimize_join_buffer_size=on';
+set @save_join_cache_level= @@join_cache_level;
+set join_cache_level=2;
+CREATE TABLE t1 (i1 int, c1 varchar(20), pk int) engine=myisam;
+CREATE TABLE t2 (pk int, c1 varchar(20), i1 int) engine=myisam;
+INSERT INTO t2 VALUES (7,'a',-912),(8,'a',5);
+CREATE TABLE t3 (pk int, c1 varchar(20), i1 int) engine=myisam;
+INSERT INTO t3 VALUES
+(1,'a',-145),(2,'a',6),(3,'a',1),(7,'a',NULL),(8,'a',889),(9,'a',146),
+(10,'a',177),(16,'a',-433),(17,'a',NULL),(18,'a',2),(19,'a',3),(20,'a',5),
+(21,'a',-484),(22,'a',369),(23,'a',-192),(24,'a',-163),(25,'a',5),(26,'a',NULL);
+SELECT t3.*
+FROM t3 LEFT JOIN t1 LEFT JOIN t2 ON t1.i1 = t2.i1 ON t3.i1 = t1.i1
+WHERE t2.pk < 13 OR t3.i1 IS NULL;
+pk c1 i1
+7 a NULL
+17 a NULL
+26 a NULL
+explain extended SELECT t3.*
+FROM t3 LEFT JOIN t1 LEFT JOIN t2 ON t1.i1 = t2.i1 ON t3.i1 = t1.i1
+WHERE t2.pk < 13 OR t3.i1 IS NULL;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t3 ALL NULL NULL NULL NULL 18 100.00
+1 SIMPLE t1 ALL NULL NULL NULL NULL 0 0.00 Using where; Using join buffer (flat, BNL join)
+1 SIMPLE t2 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
+Warnings:
+Note 1003 select `test`.`t3`.`pk` AS `pk`,`test`.`t3`.`c1` AS `c1`,`test`.`t3`.`i1` AS `i1` from `test`.`t3` left join (`test`.`t1` left join `test`.`t2` on(`test`.`t2`.`i1` = `test`.`t3`.`i1`)) on(`test`.`t1`.`i1` = `test`.`t3`.`i1`) where `test`.`t2`.`pk` < 13 or `test`.`t3`.`i1` is null
+DROP TABLE t1,t2,t3;
+set join_cache_level= @save_join_cache_level;
+set optimizer_switch=@save_optimizer_switch;
CREATE TABLE t5 (a int, b int, c int, PRIMARY KEY(a), KEY b_i (b));
CREATE TABLE t6 (a int, b int, c int, PRIMARY KEY(a), KEY b_i (b));
CREATE TABLE t7 (a int, b int, c int, PRIMARY KEY(a), KEY b_i (b));
diff --git a/mysql-test/main/mdev13607.result b/mysql-test/main/mdev13607.result
index 08848bc645b..f5edfa6a8d6 100644
--- a/mysql-test/main/mdev13607.result
+++ b/mysql-test/main/mdev13607.result
@@ -76,21 +76,21 @@ id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY p7 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join)
1 PRIMARY p8 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join)
1 PRIMARY p9 ALL NULL NULL NULL NULL 50 Using where; Using join buffer (incremental, BNL join)
-1 PRIMARY <derived3> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived4> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived5> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived6> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived7> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived8> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived9> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived10> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived11> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived12> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived13> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived14> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived15> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived16> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived17> ALL NULL NULL NULL NULL -1127208515966861312 Using join buffer (incremental, BNL join)
+1 PRIMARY <derived3> ALL NULL NULL NULL NULL 18446744073709551615 Using join buffer (incremental, BNL join)
+1 PRIMARY <derived4> ALL NULL NULL NULL NULL 18446744073709551615 Using join buffer (incremental, BNL join)
+1 PRIMARY <derived5> ALL NULL NULL NULL NULL 18446744073709551615 Using join buffer (incremental, BNL join)
+1 PRIMARY <derived6> ALL NULL NULL NULL NULL 18446744073709551615 Using join buffer (incremental, BNL join)
+1 PRIMARY <derived7> ALL NULL NULL NULL NULL 18446744073709551615 Using join buffer (incremental, BNL join)
+1 PRIMARY <derived8> ALL NULL NULL NULL NULL 18446744073709551615 Using join buffer (incremental, BNL join)
+1 PRIMARY <derived9> ALL NULL NULL NULL NULL 18446744073709551615 Using join buffer (incremental, BNL join)
+1 PRIMARY <derived10> ALL NULL NULL NULL NULL 18446744073709551615 Using join buffer (incremental, BNL join)
+1 PRIMARY <derived11> ALL NULL NULL NULL NULL 18446744073709551615 Using join buffer (incremental, BNL join)
+1 PRIMARY <derived12> ALL NULL NULL NULL NULL 18446744073709551615 Using join buffer (incremental, BNL join)
+1 PRIMARY <derived13> ALL NULL NULL NULL NULL 18446744073709551615 Using join buffer (incremental, BNL join)
+1 PRIMARY <derived14> ALL NULL NULL NULL NULL 18446744073709551615 Using join buffer (incremental, BNL join)
+1 PRIMARY <derived15> ALL NULL NULL NULL NULL 18446744073709551615 Using join buffer (incremental, BNL join)
+1 PRIMARY <derived16> ALL NULL NULL NULL NULL 18446744073709551615 Using join buffer (incremental, BNL join)
+1 PRIMARY <derived17> ALL NULL NULL NULL NULL 18446744073709551615 Using join buffer (incremental, BNL join)
17 DERIVED r1 ALL NULL NULL NULL NULL 2
17 DERIVED d1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
17 DERIVED r2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join)
diff --git a/mysql-test/main/multi_update.result b/mysql-test/main/multi_update.result
index 2cc85039e3a..9d59244dd8b 100644
--- a/mysql-test/main/multi_update.result
+++ b/mysql-test/main/multi_update.result
@@ -412,7 +412,6 @@ c2_id c2_p_id c2_note c2_active
1 1 A Note 1
drop table t1, t2;
connect root,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK;
-connection root;
create database mysqltest;
create table mysqltest.t1 (a int, b int, primary key (a));
create table mysqltest.t2 (a int, b int, primary key (a));
@@ -421,7 +420,6 @@ create user mysqltest_1@localhost;
grant select on mysqltest.* to mysqltest_1@localhost;
grant update on mysqltest.t1 to mysqltest_1@localhost;
connect user1,localhost,mysqltest_1,,mysqltest,$MASTER_MYPORT,$MASTER_MYSOCK;
-connection user1;
update t1, t2 set t1.b=1 where t1.a=t2.a;
update t1, t2 set t1.b=(select t3.b from t3 where t1.a=t3.a) where t1.a=t2.a;
connection root;
@@ -456,13 +454,10 @@ create table t2 (a int);
insert into t2 values (10), (20), (30);
create view v1 as select a as b, a/10 as a from t2;
connect locker,localhost,root,,test;
-connection locker;
lock table t1 write;
connect changer,localhost,root,,test;
-connection changer;
alter table t1 add column c int default 100 after a;
connect updater,localhost,root,,test;
-connection updater;
update t1, v1 set t1.b=t1.a+t1.b+v1.b where t1.a=v1.a;
connection locker;
unlock tables;
@@ -963,7 +958,30 @@ triggered
triggered
drop table t1,t2, t3;
drop user foo;
-end of 5.5 tests
+create table t1 (a int, b int);
+create table t2 (c int, d int);
+insert t1 values (1,2),(3,4);
+insert t2 values (5,6),(7,8);
+create table t0 (x int);
+insert t0 values (11), (22);
+create trigger tr1 before update on t2 for each row insert t0 values (new.c);
+connect con1, localhost, root;
+lock table t0 write;
+connection default;
+update t1 join t2 on (a=c+4) set b=d;
+disconnect con1;
+drop table t1, t2, t0;
+create table t1 (a int, b varchar(50), c varchar(50));
+insert t1 (a,b) values (1,'1'), (2,'2'), (3,'3');
+create function f1() returns varchar(50) return 'result';
+create trigger tr before update on t1 for each row set new.c = (select f1());
+create table t2 select a, b from t1;
+update t1 join t2 using (a) set t1.b = t2.b;
+drop table t1, t2;
+drop function f1;
+#
+# end of 5.5 tests
+#
create table t1 (c1 int, c3 int);
insert t1(c3) values (1), (2), (3), (4), (5), (6), (7), (8);
create table t2 select * from t1;
diff --git a/mysql-test/main/multi_update.test b/mysql-test/main/multi_update.test
index b6ad8bfcf52..49799a45255 100644
--- a/mysql-test/main/multi_update.test
+++ b/mysql-test/main/multi_update.test
@@ -354,7 +354,6 @@ drop table t1, t2;
#
connect (root,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK);
-connection root;
create database mysqltest;
create table mysqltest.t1 (a int, b int, primary key (a));
create table mysqltest.t2 (a int, b int, primary key (a));
@@ -363,7 +362,6 @@ create user mysqltest_1@localhost;
grant select on mysqltest.* to mysqltest_1@localhost;
grant update on mysqltest.t1 to mysqltest_1@localhost;
connect (user1,localhost,mysqltest_1,,mysqltest,$MASTER_MYPORT,$MASTER_MYSOCK);
-connection user1;
update t1, t2 set t1.b=1 where t1.a=t2.a;
update t1, t2 set t1.b=(select t3.b from t3 where t1.a=t3.a) where t1.a=t2.a;
connection root;
@@ -419,15 +417,12 @@ insert into t2 values (10), (20), (30);
create view v1 as select a as b, a/10 as a from t2;
connect (locker,localhost,root,,test);
-connection locker;
lock table t1 write;
connect (changer,localhost,root,,test);
-connection changer;
send alter table t1 add column c int default 100 after a;
connect (updater,localhost,root,,test);
-connection updater;
# Wait till "alter table t1 ..." of session changer is in work.
# = There is one session waiting.
let $wait_condition= select count(*)= 1 from information_schema.processlist
@@ -930,7 +925,38 @@ select * from t2;
drop table t1,t2, t3;
drop user foo;
---echo end of 5.5 tests
+#
+# Another test on not-opening tables unnecessary
+#
+create table t1 (a int, b int);
+create table t2 (c int, d int);
+insert t1 values (1,2),(3,4);
+insert t2 values (5,6),(7,8);
+create table t0 (x int);
+insert t0 values (11), (22);
+create trigger tr1 before update on t2 for each row insert t0 values (new.c);
+connect con1, localhost, root;
+lock table t0 write;
+connection default;
+update t1 join t2 on (a=c+4) set b=d;
+disconnect con1;
+drop table t1, t2, t0;
+
+#
+# MDEV-19521 Update Table Fails with Trigger and Stored Function
+#
+create table t1 (a int, b varchar(50), c varchar(50));
+insert t1 (a,b) values (1,'1'), (2,'2'), (3,'3');
+create function f1() returns varchar(50) return 'result';
+create trigger tr before update on t1 for each row set new.c = (select f1());
+create table t2 select a, b from t1;
+update t1 join t2 using (a) set t1.b = t2.b;
+drop table t1, t2;
+drop function f1;
+
+--echo #
+--echo # end of 5.5 tests
+--echo #
#
# MDEV-13911 Support ORDER BY and LIMIT in multi-table update
diff --git a/mysql-test/main/multi_update_debug.result b/mysql-test/main/multi_update_debug.result
new file mode 100644
index 00000000000..799b6821e48
--- /dev/null
+++ b/mysql-test/main/multi_update_debug.result
@@ -0,0 +1,16 @@
+create table t1 (a int, b int);
+create table t2 (c int, d int);
+insert t1 values (1,2),(3,4);
+insert t2 values (5,6),(7,8);
+create table t0 (x int);
+insert t0 values (11), (22);
+create trigger tr1 before update on t1 for each row insert t0 values (new.b);
+set debug_sync='open_tables_after_open_and_process_table WAIT_FOR cont';
+update t1 join t2 on (a=c+4) set b=d;
+connect con1, localhost, root;
+set debug_sync='mdl_acquire_lock_wait SIGNAL cont';
+lock table t1 write, t0 write;
+disconnect con1;
+connection default;
+drop table t1, t2, t0;
+set debug_sync='reset';
diff --git a/mysql-test/main/multi_update_debug.test b/mysql-test/main/multi_update_debug.test
new file mode 100644
index 00000000000..2da376e1b87
--- /dev/null
+++ b/mysql-test/main/multi_update_debug.test
@@ -0,0 +1,27 @@
+#
+# test MDL backoff-and-retry during multi-update
+#
+source include/have_debug_sync.inc;
+create table t1 (a int, b int);
+create table t2 (c int, d int);
+insert t1 values (1,2),(3,4);
+insert t2 values (5,6),(7,8);
+create table t0 (x int);
+insert t0 values (11), (22);
+create trigger tr1 before update on t1 for each row insert t0 values (new.b);
+
+set debug_sync='open_tables_after_open_and_process_table WAIT_FOR cont';
+send update t1 join t2 on (a=c+4) set b=d;
+
+connect con1, localhost, root;
+let $wait_condition= select count(*) from information_schema.processlist where state = ' debug sync point: open_tables_after_open_and_process_table'
+source include/wait_condition.inc;
+set debug_sync='mdl_acquire_lock_wait SIGNAL cont';
+lock table t1 write, t0 write;
+let $wait_condition= select count(*) from information_schema.processlist where state = 'Waiting for table metadata lock'
+source include/wait_condition.inc;
+disconnect con1;
+connection default;
+reap;
+drop table t1, t2, t0;
+set debug_sync='reset';
diff --git a/mysql-test/main/multi_update_innodb.result b/mysql-test/main/multi_update_innodb.result
index 294ebfcebdf..2ec7eb3065e 100644
--- a/mysql-test/main/multi_update_innodb.result
+++ b/mysql-test/main/multi_update_innodb.result
@@ -67,6 +67,23 @@ SELECT * FROM t2;
col_int_key pk_1 pk_2 col_int
1 2 3 4
DROP TABLE t1,t2;
+create table t1 (id serial, size int(11)) engine=innodb;
+create table t2 (id serial, size int, account_id int) engine=innodb;
+create table t3 (id serial, size int, article_id int) engine=innodb;
+create table t4 (id serial, file_id int, article_id int) engine=innodb;
+insert t1 values(null, 400);
+insert t2 values(null, 0, 1), (null, 1, 1);
+insert t3 values(null, 100, 1);
+insert t4 values(null, 1, 2);
+create trigger file_update_article before update on t3 for each row
+update t2 set t2.size = new.size where t2.id = new.article_id;
+create trigger article_update_account before update on t2 for each row
+update t1 set t1.size = t1.size + new.size where t1.id = new.account_id;
+update t3 join t4 on t4.file_id =t3.id and t4.article_id=2 set t3.size=t3.size + 2;
+drop table t1, t2, t3, t4;
+#
+# end of 5.5 tests
+#
# Bug mdev-5970
# Bug#13256831 - ERROR 1032 (HY000): CAN'T FIND RECORD
diff --git a/mysql-test/main/multi_update_innodb.test b/mysql-test/main/multi_update_innodb.test
index 2e46ee06d4d..04736482011 100644
--- a/mysql-test/main/multi_update_innodb.test
+++ b/mysql-test/main/multi_update_innodb.test
@@ -76,6 +76,28 @@ SELECT * FROM t2;
DROP TABLE t1,t2;
+#
+# MDEV-19491 update query stopped working after mariadb upgrade 10.2.23 -> 10.2.24
+#
+create table t1 (id serial, size int(11)) engine=innodb;
+create table t2 (id serial, size int, account_id int) engine=innodb;
+create table t3 (id serial, size int, article_id int) engine=innodb;
+create table t4 (id serial, file_id int, article_id int) engine=innodb;
+insert t1 values(null, 400);
+insert t2 values(null, 0, 1), (null, 1, 1);
+insert t3 values(null, 100, 1);
+insert t4 values(null, 1, 2);
+create trigger file_update_article before update on t3 for each row
+ update t2 set t2.size = new.size where t2.id = new.article_id;
+create trigger article_update_account before update on t2 for each row
+ update t1 set t1.size = t1.size + new.size where t1.id = new.account_id;
+update t3 join t4 on t4.file_id =t3.id and t4.article_id=2 set t3.size=t3.size + 2;
+drop table t1, t2, t3, t4;
+
+--echo #
+--echo # end of 5.5 tests
+--echo #
+
--echo
--echo # Bug mdev-5970
--echo # Bug#13256831 - ERROR 1032 (HY000): CAN'T FIND RECORD
diff --git a/mysql-test/main/subselect.result b/mysql-test/main/subselect.result
index 2f7c5039c67..5b5193d6775 100644
--- a/mysql-test/main/subselect.result
+++ b/mysql-test/main/subselect.result
@@ -6973,7 +6973,7 @@ WHERE SLEEP(0.1) OR c < 'p' OR b = ( SELECT MIN(b) FROM t2 );
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 system NULL NULL NULL NULL 1
1 PRIMARY t2 ALL b NULL NULL NULL 2 Using where
-1 PRIMARY t3 ref d d 5 test.t2.b 2 Using where; Using index
+1 PRIMARY t3 ref d d 5 test.t2.b 2 Using index
3 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
set @tmp_mdev410=@@global.userstat;
set global userstat=on;
diff --git a/mysql-test/main/subselect_mat.result b/mysql-test/main/subselect_mat.result
index 3ee904b8d9f..358bec24e1d 100644
--- a/mysql-test/main/subselect_mat.result
+++ b/mysql-test/main/subselect_mat.result
@@ -2484,6 +2484,95 @@ SELECT 1 FROM t1 where t1.id IN (SELECT v1.i1 from v1);
1
drop table t1,t2;
drop view v1;
+#
+# MDEV-19580: function invocation in the left part of IN subquery
+#
+create table t1 (id int, a varchar(50), b int);
+insert into t1 values
+(1,'mrs',2), (2,'joe',2), (3,'paul',1), (4,'art',1);
+create table t2 (id int, a varchar(50), x int);
+insert into t2 values
+(1,'grand',1),(2,'average',1),(3,'serf',0);
+create table t3 (d1 date, d2 date, t1_id int, t2_id int );
+insert into t3 values
+('1972-01-01','1988-12-31',3,1), ('1972-01-01','1988-12-31',4,1),
+('1972-01-01','1988-12-31',1,2), ('1972-01-01','1988-12-31',2,3);
+create table t4 ( id int, a varchar(50) );
+insert into t4 values
+(1,'songwriter'),(2,'song character');
+create function f1(who int, dt date) returns int
+deterministic
+begin
+declare result int;
+select t2_id into result from t3 where dt>=d1 and dt<=d2 and t1_id=who;
+return result;
+end$$
+create function f2(who int, dt date) returns int
+begin
+declare result int;
+select t2_id into result from t3 where dt>=d1 and dt<=d2 and t1_id=who;
+return result;
+end$$
+# Deterministic function in left part of IN subquery: semi-join is OK
+select * from t1
+left join t4 on t1.b = t4.id
+where f1(t1.id, '1980-01-01') in (select id from t2 where x=1);
+id a b id a
+3 paul 1 1 songwriter
+4 art 1 1 songwriter
+1 mrs 2 2 song character
+explain extended select * from t1
+left join t4 on t1.b = t4.id
+where f1(t1.id, '1980-01-01') in (select id from t2 where x=1);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 4 100.00
+1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00 Using where
+1 PRIMARY t4 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (flat, BNL join)
+2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 100.00 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t4`.`id` AS `id`,`test`.`t4`.`a` AS `a` from `test`.`t1` semi join (`test`.`t2`) left join `test`.`t4` on(`test`.`t4`.`id` = `test`.`t1`.`b`) where `test`.`t2`.`x` = 1 and `f1`(`test`.`t1`.`id`,'1980-01-01') = `test`.`t2`.`id`
+# Non-deterministic function in left part of IN subq: semi-join is OK
+select * from t1
+left join t4 on t1.b = t4.id
+where f2(t1.id, '1980-01-01') in (select id from t2 where x=1);
+id a b id a
+3 paul 1 1 songwriter
+4 art 1 1 songwriter
+1 mrs 2 2 song character
+explain extended select * from t1
+left join t4 on t1.b = t4.id
+where f2(t1.id, '1980-01-01') in (select id from t2 where x=1);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 4 100.00
+1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00 Using where
+1 PRIMARY t4 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (flat, BNL join)
+2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 100.00 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t4`.`id` AS `id`,`test`.`t4`.`a` AS `a` from `test`.`t1` semi join (`test`.`t2`) left join `test`.`t4` on(`test`.`t4`.`id` = `test`.`t1`.`b`) where `test`.`t2`.`x` = 1 and `f2`(`test`.`t1`.`id`,'1980-01-01') = `test`.`t2`.`id`
+select t1.*, t4.*,
+(select max(t4.id) from t4 where t4.id=t1.b and sleep(0) = 0) as s
+from t1 left join t4 on t1.b = t4.id
+where f2(t1.id, '1980-01-01') in (select id from t2 where x=1);
+id a b id a s
+3 paul 1 1 songwriter 1
+4 art 1 1 songwriter 1
+1 mrs 2 2 song character 2
+explain extended select t1.*, t4.*,
+(select max(t4.id) from t4 where t4.id=t1.b and sleep(0) = 0) as s
+from t1 left join t4 on t1.b = t4.id
+where f2(t1.id, '1980-01-01') in (select id from t2 where x=1);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 4 100.00
+1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 func 1 100.00 Using where
+1 PRIMARY t4 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (flat, BNL join)
+3 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 100.00 Using where
+2 DEPENDENT SUBQUERY t4 ALL NULL NULL NULL NULL 2 100.00 Using where
+Warnings:
+Note 1276 Field or reference 'test.t1.b' of SELECT #2 was resolved in SELECT #1
+Note 1003 /* select#1 */ select `test`.`t1`.`id` AS `id`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t4`.`id` AS `id`,`test`.`t4`.`a` AS `a`,(/* select#2 */ select max(`test`.`t4`.`id`) from `test`.`t4` where `test`.`t4`.`id` = `test`.`t1`.`b` and sleep(0) = 0) AS `s` from `test`.`t1` semi join (`test`.`t2`) left join `test`.`t4` on(`test`.`t4`.`id` = `test`.`t1`.`b`) where `test`.`t2`.`x` = 1 and `f2`(`test`.`t1`.`id`,'1980-01-01') = `test`.`t2`.`id`
+drop function f1;
+drop function f2;
+drop table t1,t2,t3,t4;
# End of 5.5 tests
#
# MDEV-7220: Materialization strategy is not used for REPLACE ... SELECT
diff --git a/mysql-test/main/subselect_no_exists_to_in.result b/mysql-test/main/subselect_no_exists_to_in.result
index f8fd29aced9..5fef695724d 100644
--- a/mysql-test/main/subselect_no_exists_to_in.result
+++ b/mysql-test/main/subselect_no_exists_to_in.result
@@ -6973,7 +6973,7 @@ WHERE SLEEP(0.1) OR c < 'p' OR b = ( SELECT MIN(b) FROM t2 );
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 system NULL NULL NULL NULL 1
1 PRIMARY t2 ALL b NULL NULL NULL 2 Using where
-1 PRIMARY t3 ref d d 5 test.t2.b 2 Using where; Using index
+1 PRIMARY t3 ref d d 5 test.t2.b 2 Using index
3 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
set @tmp_mdev410=@@global.userstat;
set global userstat=on;
diff --git a/mysql-test/main/subselect_no_mat.result b/mysql-test/main/subselect_no_mat.result
index 89f236a5a60..e8efbc036a2 100644
--- a/mysql-test/main/subselect_no_mat.result
+++ b/mysql-test/main/subselect_no_mat.result
@@ -6967,7 +6967,7 @@ WHERE SLEEP(0.1) OR c < 'p' OR b = ( SELECT MIN(b) FROM t2 );
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 system NULL NULL NULL NULL 1
1 PRIMARY t2 ALL b NULL NULL NULL 2 Using where
-1 PRIMARY t3 ref d d 5 test.t2.b 2 Using where; Using index
+1 PRIMARY t3 ref d d 5 test.t2.b 2 Using index
3 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
set @tmp_mdev410=@@global.userstat;
set global userstat=on;
diff --git a/mysql-test/main/subselect_no_opts.result b/mysql-test/main/subselect_no_opts.result
index 348cffb9c53..1387ef41c00 100644
--- a/mysql-test/main/subselect_no_opts.result
+++ b/mysql-test/main/subselect_no_opts.result
@@ -6964,7 +6964,7 @@ WHERE SLEEP(0.1) OR c < 'p' OR b = ( SELECT MIN(b) FROM t2 );
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 system NULL NULL NULL NULL 1
1 PRIMARY t2 ALL b NULL NULL NULL 2 Using where
-1 PRIMARY t3 ref d d 5 test.t2.b 2 Using where; Using index
+1 PRIMARY t3 ref d d 5 test.t2.b 2 Using index
3 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
set @tmp_mdev410=@@global.userstat;
set global userstat=on;
diff --git a/mysql-test/main/subselect_no_scache.result b/mysql-test/main/subselect_no_scache.result
index 230c645b261..8192e778c1b 100644
--- a/mysql-test/main/subselect_no_scache.result
+++ b/mysql-test/main/subselect_no_scache.result
@@ -6979,7 +6979,7 @@ WHERE SLEEP(0.1) OR c < 'p' OR b = ( SELECT MIN(b) FROM t2 );
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 system NULL NULL NULL NULL 1
1 PRIMARY t2 ALL b NULL NULL NULL 2 Using where
-1 PRIMARY t3 ref d d 5 test.t2.b 2 Using where; Using index
+1 PRIMARY t3 ref d d 5 test.t2.b 2 Using index
3 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
set @tmp_mdev410=@@global.userstat;
set global userstat=on;
diff --git a/mysql-test/main/subselect_no_semijoin.result b/mysql-test/main/subselect_no_semijoin.result
index 505d4a712e2..674e8a30f75 100644
--- a/mysql-test/main/subselect_no_semijoin.result
+++ b/mysql-test/main/subselect_no_semijoin.result
@@ -6964,7 +6964,7 @@ WHERE SLEEP(0.1) OR c < 'p' OR b = ( SELECT MIN(b) FROM t2 );
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 system NULL NULL NULL NULL 1
1 PRIMARY t2 ALL b NULL NULL NULL 2 Using where
-1 PRIMARY t3 ref d d 5 test.t2.b 2 Using where; Using index
+1 PRIMARY t3 ref d d 5 test.t2.b 2 Using index
3 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
set @tmp_mdev410=@@global.userstat;
set global userstat=on;
diff --git a/mysql-test/main/subselect_sj_mat.result b/mysql-test/main/subselect_sj_mat.result
index 85c314e5fde..6f5544f348b 100644
--- a/mysql-test/main/subselect_sj_mat.result
+++ b/mysql-test/main/subselect_sj_mat.result
@@ -2524,6 +2524,95 @@ SELECT 1 FROM t1 where t1.id IN (SELECT v1.i1 from v1);
1
drop table t1,t2;
drop view v1;
+#
+# MDEV-19580: function invocation in the left part of IN subquery
+#
+create table t1 (id int, a varchar(50), b int);
+insert into t1 values
+(1,'mrs',2), (2,'joe',2), (3,'paul',1), (4,'art',1);
+create table t2 (id int, a varchar(50), x int);
+insert into t2 values
+(1,'grand',1),(2,'average',1),(3,'serf',0);
+create table t3 (d1 date, d2 date, t1_id int, t2_id int );
+insert into t3 values
+('1972-01-01','1988-12-31',3,1), ('1972-01-01','1988-12-31',4,1),
+('1972-01-01','1988-12-31',1,2), ('1972-01-01','1988-12-31',2,3);
+create table t4 ( id int, a varchar(50) );
+insert into t4 values
+(1,'songwriter'),(2,'song character');
+create function f1(who int, dt date) returns int
+deterministic
+begin
+declare result int;
+select t2_id into result from t3 where dt>=d1 and dt<=d2 and t1_id=who;
+return result;
+end$$
+create function f2(who int, dt date) returns int
+begin
+declare result int;
+select t2_id into result from t3 where dt>=d1 and dt<=d2 and t1_id=who;
+return result;
+end$$
+# Deterministic function in left part of IN subquery: semi-join is OK
+select * from t1
+left join t4 on t1.b = t4.id
+where f1(t1.id, '1980-01-01') in (select id from t2 where x=1);
+id a b id a
+3 paul 1 1 songwriter
+4 art 1 1 songwriter
+1 mrs 2 2 song character
+explain extended select * from t1
+left join t4 on t1.b = t4.id
+where f1(t1.id, '1980-01-01') in (select id from t2 where x=1);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 4 100.00
+1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00 Using where
+1 PRIMARY t4 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (flat, BNL join)
+2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 100.00 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t4`.`id` AS `id`,`test`.`t4`.`a` AS `a` from `test`.`t1` semi join (`test`.`t2`) left join `test`.`t4` on(`test`.`t4`.`id` = `test`.`t1`.`b`) where `test`.`t2`.`x` = 1 and `f1`(`test`.`t1`.`id`,'1980-01-01') = `test`.`t2`.`id`
+# Non-deterministic function in left part of IN subq: semi-join is OK
+select * from t1
+left join t4 on t1.b = t4.id
+where f2(t1.id, '1980-01-01') in (select id from t2 where x=1);
+id a b id a
+3 paul 1 1 songwriter
+4 art 1 1 songwriter
+1 mrs 2 2 song character
+explain extended select * from t1
+left join t4 on t1.b = t4.id
+where f2(t1.id, '1980-01-01') in (select id from t2 where x=1);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 4 100.00
+1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00 Using where
+1 PRIMARY t4 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (flat, BNL join)
+2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 100.00 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t4`.`id` AS `id`,`test`.`t4`.`a` AS `a` from `test`.`t1` semi join (`test`.`t2`) left join `test`.`t4` on(`test`.`t4`.`id` = `test`.`t1`.`b`) where `test`.`t2`.`x` = 1 and `f2`(`test`.`t1`.`id`,'1980-01-01') = `test`.`t2`.`id`
+select t1.*, t4.*,
+(select max(t4.id) from t4 where t4.id=t1.b and sleep(0) = 0) as s
+from t1 left join t4 on t1.b = t4.id
+where f2(t1.id, '1980-01-01') in (select id from t2 where x=1);
+id a b id a s
+3 paul 1 1 songwriter 1
+4 art 1 1 songwriter 1
+1 mrs 2 2 song character 2
+explain extended select t1.*, t4.*,
+(select max(t4.id) from t4 where t4.id=t1.b and sleep(0) = 0) as s
+from t1 left join t4 on t1.b = t4.id
+where f2(t1.id, '1980-01-01') in (select id from t2 where x=1);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 4 100.00
+1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 func 1 100.00 Using where
+1 PRIMARY t4 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (flat, BNL join)
+3 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 100.00 Using where
+2 DEPENDENT SUBQUERY t4 ALL NULL NULL NULL NULL 2 100.00 Using where
+Warnings:
+Note 1276 Field or reference 'test.t1.b' of SELECT #2 was resolved in SELECT #1
+Note 1003 /* select#1 */ select `test`.`t1`.`id` AS `id`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t4`.`id` AS `id`,`test`.`t4`.`a` AS `a`,(/* select#2 */ select max(`test`.`t4`.`id`) from `test`.`t4` where `test`.`t4`.`id` = `test`.`t1`.`b` and sleep(0) = 0) AS `s` from `test`.`t1` semi join (`test`.`t2`) left join `test`.`t4` on(`test`.`t4`.`id` = `test`.`t1`.`b`) where `test`.`t2`.`x` = 1 and `f2`(`test`.`t1`.`id`,'1980-01-01') = `test`.`t2`.`id`
+drop function f1;
+drop function f2;
+drop table t1,t2,t3,t4;
# End of 5.5 tests
#
# MDEV-7220: Materialization strategy is not used for REPLACE ... SELECT
diff --git a/mysql-test/main/subselect_sj_mat.test b/mysql-test/main/subselect_sj_mat.test
index 4bd8dfdf058..12c32b53aa6 100644
--- a/mysql-test/main/subselect_sj_mat.test
+++ b/mysql-test/main/subselect_sj_mat.test
@@ -2238,6 +2238,81 @@ explain SELECT 1 FROM t1 where t1.id IN (SELECT v1.i1 from v1);
SELECT 1 FROM t1 where t1.id IN (SELECT v1.i1 from v1);
drop table t1,t2;
drop view v1;
+
+
+--echo #
+--echo # MDEV-19580: function invocation in the left part of IN subquery
+--echo #
+
+create table t1 (id int, a varchar(50), b int);
+insert into t1 values
+(1,'mrs',2), (2,'joe',2), (3,'paul',1), (4,'art',1);
+
+create table t2 (id int, a varchar(50), x int);
+insert into t2 values
+(1,'grand',1),(2,'average',1),(3,'serf',0);
+
+create table t3 (d1 date, d2 date, t1_id int, t2_id int );
+insert into t3 values
+('1972-01-01','1988-12-31',3,1), ('1972-01-01','1988-12-31',4,1),
+('1972-01-01','1988-12-31',1,2), ('1972-01-01','1988-12-31',2,3);
+
+create table t4 ( id int, a varchar(50) );
+insert into t4 values
+(1,'songwriter'),(2,'song character');
+
+delimiter $$;
+
+create function f1(who int, dt date) returns int
+deterministic
+begin
+ declare result int;
+ select t2_id into result from t3 where dt>=d1 and dt<=d2 and t1_id=who;
+ return result;
+end$$
+
+create function f2(who int, dt date) returns int
+begin
+ declare result int;
+ select t2_id into result from t3 where dt>=d1 and dt<=d2 and t1_id=who;
+ return result;
+end$$
+
+delimiter ;$$
+
+--echo # Deterministic function in left part of IN subquery: semi-join is OK
+
+let $q1=
+select * from t1
+ left join t4 on t1.b = t4.id
+ where f1(t1.id, '1980-01-01') in (select id from t2 where x=1);
+
+eval $q1;
+eval explain extended $q1;
+
+--echo # Non-deterministic function in left part of IN subq: semi-join is OK
+
+let $q2=
+select * from t1
+ left join t4 on t1.b = t4.id
+ where f2(t1.id, '1980-01-01') in (select id from t2 where x=1);
+
+eval $q2;
+eval explain extended $q2;
+
+let $q3=
+select t1.*, t4.*,
+ (select max(t4.id) from t4 where t4.id=t1.b and sleep(0) = 0) as s
+ from t1 left join t4 on t1.b = t4.id
+ where f2(t1.id, '1980-01-01') in (select id from t2 where x=1);
+
+eval $q3;
+eval explain extended $q3;
+
+drop function f1;
+drop function f2;
+drop table t1,t2,t3,t4;
+
--echo # End of 5.5 tests
--echo #
--echo # MDEV-7220: Materialization strategy is not used for REPLACE ... SELECT
diff --git a/mysql-test/suite/encryption/r/innodb_lotoftables.result b/mysql-test/suite/encryption/r/innodb_lotoftables.result
deleted file mode 100644
index 45800c8cd0b..00000000000
--- a/mysql-test/suite/encryption/r/innodb_lotoftables.result
+++ /dev/null
@@ -1,1221 +0,0 @@
-SET GLOBAL innodb_fast_shutdown=0;
-SHOW VARIABLES LIKE 'innodb_encrypt%';
-Variable_name Value
-innodb_encrypt_log OFF
-innodb_encrypt_tables OFF
-innodb_encryption_rotate_key_age 1
-innodb_encryption_rotation_iops 100
-innodb_encryption_threads 0
-create database innodb_encrypted_1;
-use innodb_encrypted_1;
-show status like 'innodb_pages0_read%';
-Variable_name Value
-Innodb_pages0_read 4
-set autocommit=0;
-set autocommit=1;
-commit work;
-show status like 'innodb_pages0_read%';
-Variable_name Value
-Innodb_pages0_read 4
-# should be empty
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE NAME LIKE 'innodb_encrypted%';
-NAME
-create database innodb_encrypted_2;
-use innodb_encrypted_2;
-show status like 'innodb_pages0_read%';
-Variable_name Value
-Innodb_pages0_read 4
-set autocommit=0;
-commit work;
-set autocommit=1;
-show status like 'innodb_pages0_read%';
-Variable_name Value
-Innodb_pages0_read 4
-# should contain 100 tables
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-NAME
-innodb_encrypted_2/t_1
-innodb_encrypted_2/t_10
-innodb_encrypted_2/t_100
-innodb_encrypted_2/t_11
-innodb_encrypted_2/t_12
-innodb_encrypted_2/t_13
-innodb_encrypted_2/t_14
-innodb_encrypted_2/t_15
-innodb_encrypted_2/t_16
-innodb_encrypted_2/t_17
-innodb_encrypted_2/t_18
-innodb_encrypted_2/t_19
-innodb_encrypted_2/t_2
-innodb_encrypted_2/t_20
-innodb_encrypted_2/t_21
-innodb_encrypted_2/t_22
-innodb_encrypted_2/t_23
-innodb_encrypted_2/t_24
-innodb_encrypted_2/t_25
-innodb_encrypted_2/t_26
-innodb_encrypted_2/t_27
-innodb_encrypted_2/t_28
-innodb_encrypted_2/t_29
-innodb_encrypted_2/t_3
-innodb_encrypted_2/t_30
-innodb_encrypted_2/t_31
-innodb_encrypted_2/t_32
-innodb_encrypted_2/t_33
-innodb_encrypted_2/t_34
-innodb_encrypted_2/t_35
-innodb_encrypted_2/t_36
-innodb_encrypted_2/t_37
-innodb_encrypted_2/t_38
-innodb_encrypted_2/t_39
-innodb_encrypted_2/t_4
-innodb_encrypted_2/t_40
-innodb_encrypted_2/t_41
-innodb_encrypted_2/t_42
-innodb_encrypted_2/t_43
-innodb_encrypted_2/t_44
-innodb_encrypted_2/t_45
-innodb_encrypted_2/t_46
-innodb_encrypted_2/t_47
-innodb_encrypted_2/t_48
-innodb_encrypted_2/t_49
-innodb_encrypted_2/t_5
-innodb_encrypted_2/t_50
-innodb_encrypted_2/t_51
-innodb_encrypted_2/t_52
-innodb_encrypted_2/t_53
-innodb_encrypted_2/t_54
-innodb_encrypted_2/t_55
-innodb_encrypted_2/t_56
-innodb_encrypted_2/t_57
-innodb_encrypted_2/t_58
-innodb_encrypted_2/t_59
-innodb_encrypted_2/t_6
-innodb_encrypted_2/t_60
-innodb_encrypted_2/t_61
-innodb_encrypted_2/t_62
-innodb_encrypted_2/t_63
-innodb_encrypted_2/t_64
-innodb_encrypted_2/t_65
-innodb_encrypted_2/t_66
-innodb_encrypted_2/t_67
-innodb_encrypted_2/t_68
-innodb_encrypted_2/t_69
-innodb_encrypted_2/t_7
-innodb_encrypted_2/t_70
-innodb_encrypted_2/t_71
-innodb_encrypted_2/t_72
-innodb_encrypted_2/t_73
-innodb_encrypted_2/t_74
-innodb_encrypted_2/t_75
-innodb_encrypted_2/t_76
-innodb_encrypted_2/t_77
-innodb_encrypted_2/t_78
-innodb_encrypted_2/t_79
-innodb_encrypted_2/t_8
-innodb_encrypted_2/t_80
-innodb_encrypted_2/t_81
-innodb_encrypted_2/t_82
-innodb_encrypted_2/t_83
-innodb_encrypted_2/t_84
-innodb_encrypted_2/t_85
-innodb_encrypted_2/t_86
-innodb_encrypted_2/t_87
-innodb_encrypted_2/t_88
-innodb_encrypted_2/t_89
-innodb_encrypted_2/t_9
-innodb_encrypted_2/t_90
-innodb_encrypted_2/t_91
-innodb_encrypted_2/t_92
-innodb_encrypted_2/t_93
-innodb_encrypted_2/t_94
-innodb_encrypted_2/t_95
-innodb_encrypted_2/t_96
-innodb_encrypted_2/t_97
-innodb_encrypted_2/t_98
-innodb_encrypted_2/t_99
-# should contain 0 tables
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-NAME
-create database innodb_encrypted_3;
-use innodb_encrypted_3;
-show status like 'innodb_pages0_read%';
-Variable_name Value
-Innodb_pages0_read 4
-set autocommit=0;
-commit work;
-set autocommit=1;
-show status like 'innodb_pages0_read%';
-Variable_name Value
-Innodb_pages0_read 4
-# should contain 100 tables
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-NAME
-innodb_encrypted_2/t_1
-innodb_encrypted_2/t_10
-innodb_encrypted_2/t_100
-innodb_encrypted_2/t_11
-innodb_encrypted_2/t_12
-innodb_encrypted_2/t_13
-innodb_encrypted_2/t_14
-innodb_encrypted_2/t_15
-innodb_encrypted_2/t_16
-innodb_encrypted_2/t_17
-innodb_encrypted_2/t_18
-innodb_encrypted_2/t_19
-innodb_encrypted_2/t_2
-innodb_encrypted_2/t_20
-innodb_encrypted_2/t_21
-innodb_encrypted_2/t_22
-innodb_encrypted_2/t_23
-innodb_encrypted_2/t_24
-innodb_encrypted_2/t_25
-innodb_encrypted_2/t_26
-innodb_encrypted_2/t_27
-innodb_encrypted_2/t_28
-innodb_encrypted_2/t_29
-innodb_encrypted_2/t_3
-innodb_encrypted_2/t_30
-innodb_encrypted_2/t_31
-innodb_encrypted_2/t_32
-innodb_encrypted_2/t_33
-innodb_encrypted_2/t_34
-innodb_encrypted_2/t_35
-innodb_encrypted_2/t_36
-innodb_encrypted_2/t_37
-innodb_encrypted_2/t_38
-innodb_encrypted_2/t_39
-innodb_encrypted_2/t_4
-innodb_encrypted_2/t_40
-innodb_encrypted_2/t_41
-innodb_encrypted_2/t_42
-innodb_encrypted_2/t_43
-innodb_encrypted_2/t_44
-innodb_encrypted_2/t_45
-innodb_encrypted_2/t_46
-innodb_encrypted_2/t_47
-innodb_encrypted_2/t_48
-innodb_encrypted_2/t_49
-innodb_encrypted_2/t_5
-innodb_encrypted_2/t_50
-innodb_encrypted_2/t_51
-innodb_encrypted_2/t_52
-innodb_encrypted_2/t_53
-innodb_encrypted_2/t_54
-innodb_encrypted_2/t_55
-innodb_encrypted_2/t_56
-innodb_encrypted_2/t_57
-innodb_encrypted_2/t_58
-innodb_encrypted_2/t_59
-innodb_encrypted_2/t_6
-innodb_encrypted_2/t_60
-innodb_encrypted_2/t_61
-innodb_encrypted_2/t_62
-innodb_encrypted_2/t_63
-innodb_encrypted_2/t_64
-innodb_encrypted_2/t_65
-innodb_encrypted_2/t_66
-innodb_encrypted_2/t_67
-innodb_encrypted_2/t_68
-innodb_encrypted_2/t_69
-innodb_encrypted_2/t_7
-innodb_encrypted_2/t_70
-innodb_encrypted_2/t_71
-innodb_encrypted_2/t_72
-innodb_encrypted_2/t_73
-innodb_encrypted_2/t_74
-innodb_encrypted_2/t_75
-innodb_encrypted_2/t_76
-innodb_encrypted_2/t_77
-innodb_encrypted_2/t_78
-innodb_encrypted_2/t_79
-innodb_encrypted_2/t_8
-innodb_encrypted_2/t_80
-innodb_encrypted_2/t_81
-innodb_encrypted_2/t_82
-innodb_encrypted_2/t_83
-innodb_encrypted_2/t_84
-innodb_encrypted_2/t_85
-innodb_encrypted_2/t_86
-innodb_encrypted_2/t_87
-innodb_encrypted_2/t_88
-innodb_encrypted_2/t_89
-innodb_encrypted_2/t_9
-innodb_encrypted_2/t_90
-innodb_encrypted_2/t_91
-innodb_encrypted_2/t_92
-innodb_encrypted_2/t_93
-innodb_encrypted_2/t_94
-innodb_encrypted_2/t_95
-innodb_encrypted_2/t_96
-innodb_encrypted_2/t_97
-innodb_encrypted_2/t_98
-innodb_encrypted_2/t_99
-# should contain 100 tables
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-NAME
-innodb_encrypted_3/t_1
-innodb_encrypted_3/t_10
-innodb_encrypted_3/t_100
-innodb_encrypted_3/t_11
-innodb_encrypted_3/t_12
-innodb_encrypted_3/t_13
-innodb_encrypted_3/t_14
-innodb_encrypted_3/t_15
-innodb_encrypted_3/t_16
-innodb_encrypted_3/t_17
-innodb_encrypted_3/t_18
-innodb_encrypted_3/t_19
-innodb_encrypted_3/t_2
-innodb_encrypted_3/t_20
-innodb_encrypted_3/t_21
-innodb_encrypted_3/t_22
-innodb_encrypted_3/t_23
-innodb_encrypted_3/t_24
-innodb_encrypted_3/t_25
-innodb_encrypted_3/t_26
-innodb_encrypted_3/t_27
-innodb_encrypted_3/t_28
-innodb_encrypted_3/t_29
-innodb_encrypted_3/t_3
-innodb_encrypted_3/t_30
-innodb_encrypted_3/t_31
-innodb_encrypted_3/t_32
-innodb_encrypted_3/t_33
-innodb_encrypted_3/t_34
-innodb_encrypted_3/t_35
-innodb_encrypted_3/t_36
-innodb_encrypted_3/t_37
-innodb_encrypted_3/t_38
-innodb_encrypted_3/t_39
-innodb_encrypted_3/t_4
-innodb_encrypted_3/t_40
-innodb_encrypted_3/t_41
-innodb_encrypted_3/t_42
-innodb_encrypted_3/t_43
-innodb_encrypted_3/t_44
-innodb_encrypted_3/t_45
-innodb_encrypted_3/t_46
-innodb_encrypted_3/t_47
-innodb_encrypted_3/t_48
-innodb_encrypted_3/t_49
-innodb_encrypted_3/t_5
-innodb_encrypted_3/t_50
-innodb_encrypted_3/t_51
-innodb_encrypted_3/t_52
-innodb_encrypted_3/t_53
-innodb_encrypted_3/t_54
-innodb_encrypted_3/t_55
-innodb_encrypted_3/t_56
-innodb_encrypted_3/t_57
-innodb_encrypted_3/t_58
-innodb_encrypted_3/t_59
-innodb_encrypted_3/t_6
-innodb_encrypted_3/t_60
-innodb_encrypted_3/t_61
-innodb_encrypted_3/t_62
-innodb_encrypted_3/t_63
-innodb_encrypted_3/t_64
-innodb_encrypted_3/t_65
-innodb_encrypted_3/t_66
-innodb_encrypted_3/t_67
-innodb_encrypted_3/t_68
-innodb_encrypted_3/t_69
-innodb_encrypted_3/t_7
-innodb_encrypted_3/t_70
-innodb_encrypted_3/t_71
-innodb_encrypted_3/t_72
-innodb_encrypted_3/t_73
-innodb_encrypted_3/t_74
-innodb_encrypted_3/t_75
-innodb_encrypted_3/t_76
-innodb_encrypted_3/t_77
-innodb_encrypted_3/t_78
-innodb_encrypted_3/t_79
-innodb_encrypted_3/t_8
-innodb_encrypted_3/t_80
-innodb_encrypted_3/t_81
-innodb_encrypted_3/t_82
-innodb_encrypted_3/t_83
-innodb_encrypted_3/t_84
-innodb_encrypted_3/t_85
-innodb_encrypted_3/t_86
-innodb_encrypted_3/t_87
-innodb_encrypted_3/t_88
-innodb_encrypted_3/t_89
-innodb_encrypted_3/t_9
-innodb_encrypted_3/t_90
-innodb_encrypted_3/t_91
-innodb_encrypted_3/t_92
-innodb_encrypted_3/t_93
-innodb_encrypted_3/t_94
-innodb_encrypted_3/t_95
-innodb_encrypted_3/t_96
-innodb_encrypted_3/t_97
-innodb_encrypted_3/t_98
-innodb_encrypted_3/t_99
-use test;
-show status like 'innodb_pages0_read%';
-Variable_name Value
-Innodb_pages0_read 4
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-NAME
-innodb_encrypted_2/t_1
-innodb_encrypted_2/t_10
-innodb_encrypted_2/t_100
-innodb_encrypted_2/t_11
-innodb_encrypted_2/t_12
-innodb_encrypted_2/t_13
-innodb_encrypted_2/t_14
-innodb_encrypted_2/t_15
-innodb_encrypted_2/t_16
-innodb_encrypted_2/t_17
-innodb_encrypted_2/t_18
-innodb_encrypted_2/t_19
-innodb_encrypted_2/t_2
-innodb_encrypted_2/t_20
-innodb_encrypted_2/t_21
-innodb_encrypted_2/t_22
-innodb_encrypted_2/t_23
-innodb_encrypted_2/t_24
-innodb_encrypted_2/t_25
-innodb_encrypted_2/t_26
-innodb_encrypted_2/t_27
-innodb_encrypted_2/t_28
-innodb_encrypted_2/t_29
-innodb_encrypted_2/t_3
-innodb_encrypted_2/t_30
-innodb_encrypted_2/t_31
-innodb_encrypted_2/t_32
-innodb_encrypted_2/t_33
-innodb_encrypted_2/t_34
-innodb_encrypted_2/t_35
-innodb_encrypted_2/t_36
-innodb_encrypted_2/t_37
-innodb_encrypted_2/t_38
-innodb_encrypted_2/t_39
-innodb_encrypted_2/t_4
-innodb_encrypted_2/t_40
-innodb_encrypted_2/t_41
-innodb_encrypted_2/t_42
-innodb_encrypted_2/t_43
-innodb_encrypted_2/t_44
-innodb_encrypted_2/t_45
-innodb_encrypted_2/t_46
-innodb_encrypted_2/t_47
-innodb_encrypted_2/t_48
-innodb_encrypted_2/t_49
-innodb_encrypted_2/t_5
-innodb_encrypted_2/t_50
-innodb_encrypted_2/t_51
-innodb_encrypted_2/t_52
-innodb_encrypted_2/t_53
-innodb_encrypted_2/t_54
-innodb_encrypted_2/t_55
-innodb_encrypted_2/t_56
-innodb_encrypted_2/t_57
-innodb_encrypted_2/t_58
-innodb_encrypted_2/t_59
-innodb_encrypted_2/t_6
-innodb_encrypted_2/t_60
-innodb_encrypted_2/t_61
-innodb_encrypted_2/t_62
-innodb_encrypted_2/t_63
-innodb_encrypted_2/t_64
-innodb_encrypted_2/t_65
-innodb_encrypted_2/t_66
-innodb_encrypted_2/t_67
-innodb_encrypted_2/t_68
-innodb_encrypted_2/t_69
-innodb_encrypted_2/t_7
-innodb_encrypted_2/t_70
-innodb_encrypted_2/t_71
-innodb_encrypted_2/t_72
-innodb_encrypted_2/t_73
-innodb_encrypted_2/t_74
-innodb_encrypted_2/t_75
-innodb_encrypted_2/t_76
-innodb_encrypted_2/t_77
-innodb_encrypted_2/t_78
-innodb_encrypted_2/t_79
-innodb_encrypted_2/t_8
-innodb_encrypted_2/t_80
-innodb_encrypted_2/t_81
-innodb_encrypted_2/t_82
-innodb_encrypted_2/t_83
-innodb_encrypted_2/t_84
-innodb_encrypted_2/t_85
-innodb_encrypted_2/t_86
-innodb_encrypted_2/t_87
-innodb_encrypted_2/t_88
-innodb_encrypted_2/t_89
-innodb_encrypted_2/t_9
-innodb_encrypted_2/t_90
-innodb_encrypted_2/t_91
-innodb_encrypted_2/t_92
-innodb_encrypted_2/t_93
-innodb_encrypted_2/t_94
-innodb_encrypted_2/t_95
-innodb_encrypted_2/t_96
-innodb_encrypted_2/t_97
-innodb_encrypted_2/t_98
-innodb_encrypted_2/t_99
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-NAME
-innodb_encrypted_3/t_1
-innodb_encrypted_3/t_10
-innodb_encrypted_3/t_100
-innodb_encrypted_3/t_11
-innodb_encrypted_3/t_12
-innodb_encrypted_3/t_13
-innodb_encrypted_3/t_14
-innodb_encrypted_3/t_15
-innodb_encrypted_3/t_16
-innodb_encrypted_3/t_17
-innodb_encrypted_3/t_18
-innodb_encrypted_3/t_19
-innodb_encrypted_3/t_2
-innodb_encrypted_3/t_20
-innodb_encrypted_3/t_21
-innodb_encrypted_3/t_22
-innodb_encrypted_3/t_23
-innodb_encrypted_3/t_24
-innodb_encrypted_3/t_25
-innodb_encrypted_3/t_26
-innodb_encrypted_3/t_27
-innodb_encrypted_3/t_28
-innodb_encrypted_3/t_29
-innodb_encrypted_3/t_3
-innodb_encrypted_3/t_30
-innodb_encrypted_3/t_31
-innodb_encrypted_3/t_32
-innodb_encrypted_3/t_33
-innodb_encrypted_3/t_34
-innodb_encrypted_3/t_35
-innodb_encrypted_3/t_36
-innodb_encrypted_3/t_37
-innodb_encrypted_3/t_38
-innodb_encrypted_3/t_39
-innodb_encrypted_3/t_4
-innodb_encrypted_3/t_40
-innodb_encrypted_3/t_41
-innodb_encrypted_3/t_42
-innodb_encrypted_3/t_43
-innodb_encrypted_3/t_44
-innodb_encrypted_3/t_45
-innodb_encrypted_3/t_46
-innodb_encrypted_3/t_47
-innodb_encrypted_3/t_48
-innodb_encrypted_3/t_49
-innodb_encrypted_3/t_5
-innodb_encrypted_3/t_50
-innodb_encrypted_3/t_51
-innodb_encrypted_3/t_52
-innodb_encrypted_3/t_53
-innodb_encrypted_3/t_54
-innodb_encrypted_3/t_55
-innodb_encrypted_3/t_56
-innodb_encrypted_3/t_57
-innodb_encrypted_3/t_58
-innodb_encrypted_3/t_59
-innodb_encrypted_3/t_6
-innodb_encrypted_3/t_60
-innodb_encrypted_3/t_61
-innodb_encrypted_3/t_62
-innodb_encrypted_3/t_63
-innodb_encrypted_3/t_64
-innodb_encrypted_3/t_65
-innodb_encrypted_3/t_66
-innodb_encrypted_3/t_67
-innodb_encrypted_3/t_68
-innodb_encrypted_3/t_69
-innodb_encrypted_3/t_7
-innodb_encrypted_3/t_70
-innodb_encrypted_3/t_71
-innodb_encrypted_3/t_72
-innodb_encrypted_3/t_73
-innodb_encrypted_3/t_74
-innodb_encrypted_3/t_75
-innodb_encrypted_3/t_76
-innodb_encrypted_3/t_77
-innodb_encrypted_3/t_78
-innodb_encrypted_3/t_79
-innodb_encrypted_3/t_8
-innodb_encrypted_3/t_80
-innodb_encrypted_3/t_81
-innodb_encrypted_3/t_82
-innodb_encrypted_3/t_83
-innodb_encrypted_3/t_84
-innodb_encrypted_3/t_85
-innodb_encrypted_3/t_86
-innodb_encrypted_3/t_87
-innodb_encrypted_3/t_88
-innodb_encrypted_3/t_89
-innodb_encrypted_3/t_9
-innodb_encrypted_3/t_90
-innodb_encrypted_3/t_91
-innodb_encrypted_3/t_92
-innodb_encrypted_3/t_93
-innodb_encrypted_3/t_94
-innodb_encrypted_3/t_95
-innodb_encrypted_3/t_96
-innodb_encrypted_3/t_97
-innodb_encrypted_3/t_98
-innodb_encrypted_3/t_99
-SET GLOBAL innodb_encrypt_tables = on;
-SET GLOBAL innodb_encryption_threads=4;
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-NAME
-innodb_encrypted_2/t_1
-innodb_encrypted_2/t_10
-innodb_encrypted_2/t_100
-innodb_encrypted_2/t_11
-innodb_encrypted_2/t_12
-innodb_encrypted_2/t_13
-innodb_encrypted_2/t_14
-innodb_encrypted_2/t_15
-innodb_encrypted_2/t_16
-innodb_encrypted_2/t_17
-innodb_encrypted_2/t_18
-innodb_encrypted_2/t_19
-innodb_encrypted_2/t_2
-innodb_encrypted_2/t_20
-innodb_encrypted_2/t_21
-innodb_encrypted_2/t_22
-innodb_encrypted_2/t_23
-innodb_encrypted_2/t_24
-innodb_encrypted_2/t_25
-innodb_encrypted_2/t_26
-innodb_encrypted_2/t_27
-innodb_encrypted_2/t_28
-innodb_encrypted_2/t_29
-innodb_encrypted_2/t_3
-innodb_encrypted_2/t_30
-innodb_encrypted_2/t_31
-innodb_encrypted_2/t_32
-innodb_encrypted_2/t_33
-innodb_encrypted_2/t_34
-innodb_encrypted_2/t_35
-innodb_encrypted_2/t_36
-innodb_encrypted_2/t_37
-innodb_encrypted_2/t_38
-innodb_encrypted_2/t_39
-innodb_encrypted_2/t_4
-innodb_encrypted_2/t_40
-innodb_encrypted_2/t_41
-innodb_encrypted_2/t_42
-innodb_encrypted_2/t_43
-innodb_encrypted_2/t_44
-innodb_encrypted_2/t_45
-innodb_encrypted_2/t_46
-innodb_encrypted_2/t_47
-innodb_encrypted_2/t_48
-innodb_encrypted_2/t_49
-innodb_encrypted_2/t_5
-innodb_encrypted_2/t_50
-innodb_encrypted_2/t_51
-innodb_encrypted_2/t_52
-innodb_encrypted_2/t_53
-innodb_encrypted_2/t_54
-innodb_encrypted_2/t_55
-innodb_encrypted_2/t_56
-innodb_encrypted_2/t_57
-innodb_encrypted_2/t_58
-innodb_encrypted_2/t_59
-innodb_encrypted_2/t_6
-innodb_encrypted_2/t_60
-innodb_encrypted_2/t_61
-innodb_encrypted_2/t_62
-innodb_encrypted_2/t_63
-innodb_encrypted_2/t_64
-innodb_encrypted_2/t_65
-innodb_encrypted_2/t_66
-innodb_encrypted_2/t_67
-innodb_encrypted_2/t_68
-innodb_encrypted_2/t_69
-innodb_encrypted_2/t_7
-innodb_encrypted_2/t_70
-innodb_encrypted_2/t_71
-innodb_encrypted_2/t_72
-innodb_encrypted_2/t_73
-innodb_encrypted_2/t_74
-innodb_encrypted_2/t_75
-innodb_encrypted_2/t_76
-innodb_encrypted_2/t_77
-innodb_encrypted_2/t_78
-innodb_encrypted_2/t_79
-innodb_encrypted_2/t_8
-innodb_encrypted_2/t_80
-innodb_encrypted_2/t_81
-innodb_encrypted_2/t_82
-innodb_encrypted_2/t_83
-innodb_encrypted_2/t_84
-innodb_encrypted_2/t_85
-innodb_encrypted_2/t_86
-innodb_encrypted_2/t_87
-innodb_encrypted_2/t_88
-innodb_encrypted_2/t_89
-innodb_encrypted_2/t_9
-innodb_encrypted_2/t_90
-innodb_encrypted_2/t_91
-innodb_encrypted_2/t_92
-innodb_encrypted_2/t_93
-innodb_encrypted_2/t_94
-innodb_encrypted_2/t_95
-innodb_encrypted_2/t_96
-innodb_encrypted_2/t_97
-innodb_encrypted_2/t_98
-innodb_encrypted_2/t_99
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-NAME
-innodb_encrypted_3/t_1
-innodb_encrypted_3/t_10
-innodb_encrypted_3/t_100
-innodb_encrypted_3/t_11
-innodb_encrypted_3/t_12
-innodb_encrypted_3/t_13
-innodb_encrypted_3/t_14
-innodb_encrypted_3/t_15
-innodb_encrypted_3/t_16
-innodb_encrypted_3/t_17
-innodb_encrypted_3/t_18
-innodb_encrypted_3/t_19
-innodb_encrypted_3/t_2
-innodb_encrypted_3/t_20
-innodb_encrypted_3/t_21
-innodb_encrypted_3/t_22
-innodb_encrypted_3/t_23
-innodb_encrypted_3/t_24
-innodb_encrypted_3/t_25
-innodb_encrypted_3/t_26
-innodb_encrypted_3/t_27
-innodb_encrypted_3/t_28
-innodb_encrypted_3/t_29
-innodb_encrypted_3/t_3
-innodb_encrypted_3/t_30
-innodb_encrypted_3/t_31
-innodb_encrypted_3/t_32
-innodb_encrypted_3/t_33
-innodb_encrypted_3/t_34
-innodb_encrypted_3/t_35
-innodb_encrypted_3/t_36
-innodb_encrypted_3/t_37
-innodb_encrypted_3/t_38
-innodb_encrypted_3/t_39
-innodb_encrypted_3/t_4
-innodb_encrypted_3/t_40
-innodb_encrypted_3/t_41
-innodb_encrypted_3/t_42
-innodb_encrypted_3/t_43
-innodb_encrypted_3/t_44
-innodb_encrypted_3/t_45
-innodb_encrypted_3/t_46
-innodb_encrypted_3/t_47
-innodb_encrypted_3/t_48
-innodb_encrypted_3/t_49
-innodb_encrypted_3/t_5
-innodb_encrypted_3/t_50
-innodb_encrypted_3/t_51
-innodb_encrypted_3/t_52
-innodb_encrypted_3/t_53
-innodb_encrypted_3/t_54
-innodb_encrypted_3/t_55
-innodb_encrypted_3/t_56
-innodb_encrypted_3/t_57
-innodb_encrypted_3/t_58
-innodb_encrypted_3/t_59
-innodb_encrypted_3/t_6
-innodb_encrypted_3/t_60
-innodb_encrypted_3/t_61
-innodb_encrypted_3/t_62
-innodb_encrypted_3/t_63
-innodb_encrypted_3/t_64
-innodb_encrypted_3/t_65
-innodb_encrypted_3/t_66
-innodb_encrypted_3/t_67
-innodb_encrypted_3/t_68
-innodb_encrypted_3/t_69
-innodb_encrypted_3/t_7
-innodb_encrypted_3/t_70
-innodb_encrypted_3/t_71
-innodb_encrypted_3/t_72
-innodb_encrypted_3/t_73
-innodb_encrypted_3/t_74
-innodb_encrypted_3/t_75
-innodb_encrypted_3/t_76
-innodb_encrypted_3/t_77
-innodb_encrypted_3/t_78
-innodb_encrypted_3/t_79
-innodb_encrypted_3/t_8
-innodb_encrypted_3/t_80
-innodb_encrypted_3/t_81
-innodb_encrypted_3/t_82
-innodb_encrypted_3/t_83
-innodb_encrypted_3/t_84
-innodb_encrypted_3/t_85
-innodb_encrypted_3/t_86
-innodb_encrypted_3/t_87
-innodb_encrypted_3/t_88
-innodb_encrypted_3/t_89
-innodb_encrypted_3/t_9
-innodb_encrypted_3/t_90
-innodb_encrypted_3/t_91
-innodb_encrypted_3/t_92
-innodb_encrypted_3/t_93
-innodb_encrypted_3/t_94
-innodb_encrypted_3/t_95
-innodb_encrypted_3/t_96
-innodb_encrypted_3/t_97
-innodb_encrypted_3/t_98
-innodb_encrypted_3/t_99
-show status like 'innodb_pages0_read%';
-Variable_name Value
-Innodb_pages0_read 4
-# Success!
-# Restart mysqld --innodb_encrypt_tables=0 --innodb_encryption_threads=0
-# Restart Success!
-SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read';
-variable_value <= 303
-1
-use test;
-SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read';
-variable_value <= 303
-1
-use innodb_encrypted_1;
-SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read';
-variable_value <= 303
-1
-use innodb_encrypted_2;
-SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read';
-variable_value <= 303
-1
-use innodb_encrypted_3;
-SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read';
-variable_value <= 303
-1
-use innodb_encrypted_1;
-SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read';
-variable_value <= 303
-1
-use innodb_encrypted_2;
-SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read';
-variable_value <= 303
-1
-use innodb_encrypted_3;
-SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read';
-variable_value <= 303
-1
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-NAME
-innodb_encrypted_3/t_1
-innodb_encrypted_3/t_10
-innodb_encrypted_3/t_100
-innodb_encrypted_3/t_11
-innodb_encrypted_3/t_12
-innodb_encrypted_3/t_13
-innodb_encrypted_3/t_14
-innodb_encrypted_3/t_15
-innodb_encrypted_3/t_16
-innodb_encrypted_3/t_17
-innodb_encrypted_3/t_18
-innodb_encrypted_3/t_19
-innodb_encrypted_3/t_2
-innodb_encrypted_3/t_20
-innodb_encrypted_3/t_21
-innodb_encrypted_3/t_22
-innodb_encrypted_3/t_23
-innodb_encrypted_3/t_24
-innodb_encrypted_3/t_25
-innodb_encrypted_3/t_26
-innodb_encrypted_3/t_27
-innodb_encrypted_3/t_28
-innodb_encrypted_3/t_29
-innodb_encrypted_3/t_3
-innodb_encrypted_3/t_30
-innodb_encrypted_3/t_31
-innodb_encrypted_3/t_32
-innodb_encrypted_3/t_33
-innodb_encrypted_3/t_34
-innodb_encrypted_3/t_35
-innodb_encrypted_3/t_36
-innodb_encrypted_3/t_37
-innodb_encrypted_3/t_38
-innodb_encrypted_3/t_39
-innodb_encrypted_3/t_4
-innodb_encrypted_3/t_40
-innodb_encrypted_3/t_41
-innodb_encrypted_3/t_42
-innodb_encrypted_3/t_43
-innodb_encrypted_3/t_44
-innodb_encrypted_3/t_45
-innodb_encrypted_3/t_46
-innodb_encrypted_3/t_47
-innodb_encrypted_3/t_48
-innodb_encrypted_3/t_49
-innodb_encrypted_3/t_5
-innodb_encrypted_3/t_50
-innodb_encrypted_3/t_51
-innodb_encrypted_3/t_52
-innodb_encrypted_3/t_53
-innodb_encrypted_3/t_54
-innodb_encrypted_3/t_55
-innodb_encrypted_3/t_56
-innodb_encrypted_3/t_57
-innodb_encrypted_3/t_58
-innodb_encrypted_3/t_59
-innodb_encrypted_3/t_6
-innodb_encrypted_3/t_60
-innodb_encrypted_3/t_61
-innodb_encrypted_3/t_62
-innodb_encrypted_3/t_63
-innodb_encrypted_3/t_64
-innodb_encrypted_3/t_65
-innodb_encrypted_3/t_66
-innodb_encrypted_3/t_67
-innodb_encrypted_3/t_68
-innodb_encrypted_3/t_69
-innodb_encrypted_3/t_7
-innodb_encrypted_3/t_70
-innodb_encrypted_3/t_71
-innodb_encrypted_3/t_72
-innodb_encrypted_3/t_73
-innodb_encrypted_3/t_74
-innodb_encrypted_3/t_75
-innodb_encrypted_3/t_76
-innodb_encrypted_3/t_77
-innodb_encrypted_3/t_78
-innodb_encrypted_3/t_79
-innodb_encrypted_3/t_8
-innodb_encrypted_3/t_80
-innodb_encrypted_3/t_81
-innodb_encrypted_3/t_82
-innodb_encrypted_3/t_83
-innodb_encrypted_3/t_84
-innodb_encrypted_3/t_85
-innodb_encrypted_3/t_86
-innodb_encrypted_3/t_87
-innodb_encrypted_3/t_88
-innodb_encrypted_3/t_89
-innodb_encrypted_3/t_9
-innodb_encrypted_3/t_90
-innodb_encrypted_3/t_91
-innodb_encrypted_3/t_92
-innodb_encrypted_3/t_93
-innodb_encrypted_3/t_94
-innodb_encrypted_3/t_95
-innodb_encrypted_3/t_96
-innodb_encrypted_3/t_97
-innodb_encrypted_3/t_98
-innodb_encrypted_3/t_99
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-NAME
-innodb_encrypted_2/t_1
-innodb_encrypted_2/t_10
-innodb_encrypted_2/t_100
-innodb_encrypted_2/t_11
-innodb_encrypted_2/t_12
-innodb_encrypted_2/t_13
-innodb_encrypted_2/t_14
-innodb_encrypted_2/t_15
-innodb_encrypted_2/t_16
-innodb_encrypted_2/t_17
-innodb_encrypted_2/t_18
-innodb_encrypted_2/t_19
-innodb_encrypted_2/t_2
-innodb_encrypted_2/t_20
-innodb_encrypted_2/t_21
-innodb_encrypted_2/t_22
-innodb_encrypted_2/t_23
-innodb_encrypted_2/t_24
-innodb_encrypted_2/t_25
-innodb_encrypted_2/t_26
-innodb_encrypted_2/t_27
-innodb_encrypted_2/t_28
-innodb_encrypted_2/t_29
-innodb_encrypted_2/t_3
-innodb_encrypted_2/t_30
-innodb_encrypted_2/t_31
-innodb_encrypted_2/t_32
-innodb_encrypted_2/t_33
-innodb_encrypted_2/t_34
-innodb_encrypted_2/t_35
-innodb_encrypted_2/t_36
-innodb_encrypted_2/t_37
-innodb_encrypted_2/t_38
-innodb_encrypted_2/t_39
-innodb_encrypted_2/t_4
-innodb_encrypted_2/t_40
-innodb_encrypted_2/t_41
-innodb_encrypted_2/t_42
-innodb_encrypted_2/t_43
-innodb_encrypted_2/t_44
-innodb_encrypted_2/t_45
-innodb_encrypted_2/t_46
-innodb_encrypted_2/t_47
-innodb_encrypted_2/t_48
-innodb_encrypted_2/t_49
-innodb_encrypted_2/t_5
-innodb_encrypted_2/t_50
-innodb_encrypted_2/t_51
-innodb_encrypted_2/t_52
-innodb_encrypted_2/t_53
-innodb_encrypted_2/t_54
-innodb_encrypted_2/t_55
-innodb_encrypted_2/t_56
-innodb_encrypted_2/t_57
-innodb_encrypted_2/t_58
-innodb_encrypted_2/t_59
-innodb_encrypted_2/t_6
-innodb_encrypted_2/t_60
-innodb_encrypted_2/t_61
-innodb_encrypted_2/t_62
-innodb_encrypted_2/t_63
-innodb_encrypted_2/t_64
-innodb_encrypted_2/t_65
-innodb_encrypted_2/t_66
-innodb_encrypted_2/t_67
-innodb_encrypted_2/t_68
-innodb_encrypted_2/t_69
-innodb_encrypted_2/t_7
-innodb_encrypted_2/t_70
-innodb_encrypted_2/t_71
-innodb_encrypted_2/t_72
-innodb_encrypted_2/t_73
-innodb_encrypted_2/t_74
-innodb_encrypted_2/t_75
-innodb_encrypted_2/t_76
-innodb_encrypted_2/t_77
-innodb_encrypted_2/t_78
-innodb_encrypted_2/t_79
-innodb_encrypted_2/t_8
-innodb_encrypted_2/t_80
-innodb_encrypted_2/t_81
-innodb_encrypted_2/t_82
-innodb_encrypted_2/t_83
-innodb_encrypted_2/t_84
-innodb_encrypted_2/t_85
-innodb_encrypted_2/t_86
-innodb_encrypted_2/t_87
-innodb_encrypted_2/t_88
-innodb_encrypted_2/t_89
-innodb_encrypted_2/t_9
-innodb_encrypted_2/t_90
-innodb_encrypted_2/t_91
-innodb_encrypted_2/t_92
-innodb_encrypted_2/t_93
-innodb_encrypted_2/t_94
-innodb_encrypted_2/t_95
-innodb_encrypted_2/t_96
-innodb_encrypted_2/t_97
-innodb_encrypted_2/t_98
-innodb_encrypted_2/t_99
-SET GLOBAL innodb_encrypt_tables = off;
-SET GLOBAL innodb_encryption_threads=4;
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-NAME
-innodb_encrypted_2/t_1
-innodb_encrypted_2/t_10
-innodb_encrypted_2/t_100
-innodb_encrypted_2/t_11
-innodb_encrypted_2/t_12
-innodb_encrypted_2/t_13
-innodb_encrypted_2/t_14
-innodb_encrypted_2/t_15
-innodb_encrypted_2/t_16
-innodb_encrypted_2/t_17
-innodb_encrypted_2/t_18
-innodb_encrypted_2/t_19
-innodb_encrypted_2/t_2
-innodb_encrypted_2/t_20
-innodb_encrypted_2/t_21
-innodb_encrypted_2/t_22
-innodb_encrypted_2/t_23
-innodb_encrypted_2/t_24
-innodb_encrypted_2/t_25
-innodb_encrypted_2/t_26
-innodb_encrypted_2/t_27
-innodb_encrypted_2/t_28
-innodb_encrypted_2/t_29
-innodb_encrypted_2/t_3
-innodb_encrypted_2/t_30
-innodb_encrypted_2/t_31
-innodb_encrypted_2/t_32
-innodb_encrypted_2/t_33
-innodb_encrypted_2/t_34
-innodb_encrypted_2/t_35
-innodb_encrypted_2/t_36
-innodb_encrypted_2/t_37
-innodb_encrypted_2/t_38
-innodb_encrypted_2/t_39
-innodb_encrypted_2/t_4
-innodb_encrypted_2/t_40
-innodb_encrypted_2/t_41
-innodb_encrypted_2/t_42
-innodb_encrypted_2/t_43
-innodb_encrypted_2/t_44
-innodb_encrypted_2/t_45
-innodb_encrypted_2/t_46
-innodb_encrypted_2/t_47
-innodb_encrypted_2/t_48
-innodb_encrypted_2/t_49
-innodb_encrypted_2/t_5
-innodb_encrypted_2/t_50
-innodb_encrypted_2/t_51
-innodb_encrypted_2/t_52
-innodb_encrypted_2/t_53
-innodb_encrypted_2/t_54
-innodb_encrypted_2/t_55
-innodb_encrypted_2/t_56
-innodb_encrypted_2/t_57
-innodb_encrypted_2/t_58
-innodb_encrypted_2/t_59
-innodb_encrypted_2/t_6
-innodb_encrypted_2/t_60
-innodb_encrypted_2/t_61
-innodb_encrypted_2/t_62
-innodb_encrypted_2/t_63
-innodb_encrypted_2/t_64
-innodb_encrypted_2/t_65
-innodb_encrypted_2/t_66
-innodb_encrypted_2/t_67
-innodb_encrypted_2/t_68
-innodb_encrypted_2/t_69
-innodb_encrypted_2/t_7
-innodb_encrypted_2/t_70
-innodb_encrypted_2/t_71
-innodb_encrypted_2/t_72
-innodb_encrypted_2/t_73
-innodb_encrypted_2/t_74
-innodb_encrypted_2/t_75
-innodb_encrypted_2/t_76
-innodb_encrypted_2/t_77
-innodb_encrypted_2/t_78
-innodb_encrypted_2/t_79
-innodb_encrypted_2/t_8
-innodb_encrypted_2/t_80
-innodb_encrypted_2/t_81
-innodb_encrypted_2/t_82
-innodb_encrypted_2/t_83
-innodb_encrypted_2/t_84
-innodb_encrypted_2/t_85
-innodb_encrypted_2/t_86
-innodb_encrypted_2/t_87
-innodb_encrypted_2/t_88
-innodb_encrypted_2/t_89
-innodb_encrypted_2/t_9
-innodb_encrypted_2/t_90
-innodb_encrypted_2/t_91
-innodb_encrypted_2/t_92
-innodb_encrypted_2/t_93
-innodb_encrypted_2/t_94
-innodb_encrypted_2/t_95
-innodb_encrypted_2/t_96
-innodb_encrypted_2/t_97
-innodb_encrypted_2/t_98
-innodb_encrypted_2/t_99
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-NAME
-innodb_encrypted_3/t_1
-innodb_encrypted_3/t_10
-innodb_encrypted_3/t_100
-innodb_encrypted_3/t_11
-innodb_encrypted_3/t_12
-innodb_encrypted_3/t_13
-innodb_encrypted_3/t_14
-innodb_encrypted_3/t_15
-innodb_encrypted_3/t_16
-innodb_encrypted_3/t_17
-innodb_encrypted_3/t_18
-innodb_encrypted_3/t_19
-innodb_encrypted_3/t_2
-innodb_encrypted_3/t_20
-innodb_encrypted_3/t_21
-innodb_encrypted_3/t_22
-innodb_encrypted_3/t_23
-innodb_encrypted_3/t_24
-innodb_encrypted_3/t_25
-innodb_encrypted_3/t_26
-innodb_encrypted_3/t_27
-innodb_encrypted_3/t_28
-innodb_encrypted_3/t_29
-innodb_encrypted_3/t_3
-innodb_encrypted_3/t_30
-innodb_encrypted_3/t_31
-innodb_encrypted_3/t_32
-innodb_encrypted_3/t_33
-innodb_encrypted_3/t_34
-innodb_encrypted_3/t_35
-innodb_encrypted_3/t_36
-innodb_encrypted_3/t_37
-innodb_encrypted_3/t_38
-innodb_encrypted_3/t_39
-innodb_encrypted_3/t_4
-innodb_encrypted_3/t_40
-innodb_encrypted_3/t_41
-innodb_encrypted_3/t_42
-innodb_encrypted_3/t_43
-innodb_encrypted_3/t_44
-innodb_encrypted_3/t_45
-innodb_encrypted_3/t_46
-innodb_encrypted_3/t_47
-innodb_encrypted_3/t_48
-innodb_encrypted_3/t_49
-innodb_encrypted_3/t_5
-innodb_encrypted_3/t_50
-innodb_encrypted_3/t_51
-innodb_encrypted_3/t_52
-innodb_encrypted_3/t_53
-innodb_encrypted_3/t_54
-innodb_encrypted_3/t_55
-innodb_encrypted_3/t_56
-innodb_encrypted_3/t_57
-innodb_encrypted_3/t_58
-innodb_encrypted_3/t_59
-innodb_encrypted_3/t_6
-innodb_encrypted_3/t_60
-innodb_encrypted_3/t_61
-innodb_encrypted_3/t_62
-innodb_encrypted_3/t_63
-innodb_encrypted_3/t_64
-innodb_encrypted_3/t_65
-innodb_encrypted_3/t_66
-innodb_encrypted_3/t_67
-innodb_encrypted_3/t_68
-innodb_encrypted_3/t_69
-innodb_encrypted_3/t_7
-innodb_encrypted_3/t_70
-innodb_encrypted_3/t_71
-innodb_encrypted_3/t_72
-innodb_encrypted_3/t_73
-innodb_encrypted_3/t_74
-innodb_encrypted_3/t_75
-innodb_encrypted_3/t_76
-innodb_encrypted_3/t_77
-innodb_encrypted_3/t_78
-innodb_encrypted_3/t_79
-innodb_encrypted_3/t_8
-innodb_encrypted_3/t_80
-innodb_encrypted_3/t_81
-innodb_encrypted_3/t_82
-innodb_encrypted_3/t_83
-innodb_encrypted_3/t_84
-innodb_encrypted_3/t_85
-innodb_encrypted_3/t_86
-innodb_encrypted_3/t_87
-innodb_encrypted_3/t_88
-innodb_encrypted_3/t_89
-innodb_encrypted_3/t_9
-innodb_encrypted_3/t_90
-innodb_encrypted_3/t_91
-innodb_encrypted_3/t_92
-innodb_encrypted_3/t_93
-innodb_encrypted_3/t_94
-innodb_encrypted_3/t_95
-innodb_encrypted_3/t_96
-innodb_encrypted_3/t_97
-innodb_encrypted_3/t_98
-innodb_encrypted_3/t_99
-use test;
-drop database innodb_encrypted_1;
-drop database innodb_encrypted_2;
-drop database innodb_encrypted_3;
diff --git a/mysql-test/suite/encryption/t/innodb_lotoftables.opt b/mysql-test/suite/encryption/t/innodb_lotoftables.opt
deleted file mode 100644
index ffb5a2957f8..00000000000
--- a/mysql-test/suite/encryption/t/innodb_lotoftables.opt
+++ /dev/null
@@ -1,3 +0,0 @@
---innodb-tablespaces-encryption
---innodb-encrypt-tables=off
---innodb-encryption-threads=0
diff --git a/mysql-test/suite/encryption/t/innodb_lotoftables.test b/mysql-test/suite/encryption/t/innodb_lotoftables.test
deleted file mode 100644
index 4ccdc7d5c49..00000000000
--- a/mysql-test/suite/encryption/t/innodb_lotoftables.test
+++ /dev/null
@@ -1,231 +0,0 @@
--- source include/have_innodb.inc
--- source include/have_example_key_management_plugin.inc
--- source include/big_test.inc
-
-# embedded does not support restart
--- source include/not_embedded.inc
-
---disable_query_log
-let $innodb_encryption_threads_orig = `SELECT @@global.innodb_encryption_threads`;
---enable_query_log
-
-# empty the change buffer and the undo logs to avoid extra reads
-SET GLOBAL innodb_fast_shutdown=0;
---source include/restart_mysqld.inc
-
-SHOW VARIABLES LIKE 'innodb_encrypt%';
-
-#
-# This will create 100 tables where that could be
-# encrypted an unencrypt
-#
-create database innodb_encrypted_1;
-use innodb_encrypted_1;
-show status like 'innodb_pages0_read%';
-set autocommit=0;
-let $tables = 100;
-
---disable_query_log
-while ($tables)
-{
- eval create table t_$tables (a int not null primary key, b varchar(200)) engine=innodb
- stats_persistent=0;
- commit;
- let $rows = 100;
- while($rows)
- {
- eval insert into t_$tables values ($rows, substring(MD5(RAND()), -64));
- dec $rows;
- }
- commit;
- dec $tables;
-}
---enable_query_log
-
-set autocommit=1;
-commit work;
-show status like 'innodb_pages0_read%';
-#
-# Verify
-#
---echo # should be empty
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE NAME LIKE 'innodb_encrypted%';
-
-#
-# This will create 100 tables that are encrypted always
-#
-create database innodb_encrypted_2;
-use innodb_encrypted_2;
-show status like 'innodb_pages0_read%';
-set autocommit=0;
-
---disable_query_log
-let $tables = 100;
-while ($tables)
-{
- eval create table t_$tables (a int not null primary key, b varchar(200)) engine=innodb
- stats_persistent=0 encrypted=yes;
- commit;
- let $rows = 100;
- while($rows)
- {
- eval insert into t_$tables values ($rows, substring(MD5(RAND()), -64));
- dec $rows;
- }
- commit;
- dec $tables;
-}
---enable_query_log
-
-commit work;
-set autocommit=1;
-show status like 'innodb_pages0_read%';
-#
-# Verify
-#
---echo # should contain 100 tables
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
---echo # should contain 0 tables
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-
-#
-# This will create 100 tables that are not encrypted
-#
-create database innodb_encrypted_3;
-use innodb_encrypted_3;
-show status like 'innodb_pages0_read%';
-set autocommit=0;
-
---disable_query_log
-let $tables = 100;
-while ($tables)
-{
- eval create table t_$tables (a int not null primary key, b varchar(200)) engine=innodb
- stats_persistent=0 encrypted=no;
- commit;
- let $rows = 100;
- while($rows)
- {
- eval insert into t_$tables values ($rows, substring(MD5(RAND()), -64));
- dec $rows;
- }
- commit;
- dec $tables;
-}
---enable_query_log
-
-commit work;
-set autocommit=1;
-show status like 'innodb_pages0_read%';
-#
-# Verify
-#
---echo # should contain 100 tables
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
---echo # should contain 100 tables
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-
-use test;
-show status like 'innodb_pages0_read%';
-
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-
-SET GLOBAL innodb_encrypt_tables = on;
-SET GLOBAL innodb_encryption_threads=4;
-
---let $wait_timeout= 600
---let $wait_condition=SELECT COUNT(*) = 100 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
---source include/wait_condition.inc
-
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-show status like 'innodb_pages0_read%';
-
---echo # Success!
---echo # Restart mysqld --innodb_encrypt_tables=0 --innodb_encryption_threads=0
--- let $restart_parameters=--innodb_encrypt_tables=0 --innodb_encryption_threads=0
--- source include/restart_mysqld.inc
-
---echo # Restart Success!
-
-SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read';
-use test;
-SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read';
-use innodb_encrypted_1;
-SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read';
-use innodb_encrypted_2;
-SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read';
-use innodb_encrypted_3;
-SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read';
-
-use innodb_encrypted_1;
-
---disable_result_log
---disable_query_log
-let $tables = 100;
-while ($tables)
-{
- eval select * from t_$tables;
- dec $tables;
-}
---enable_query_log
---enable_result_log
-
-SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read';
-
-use innodb_encrypted_2;
-
---disable_result_log
---disable_query_log
-let $tables = 100;
-while ($tables)
-{
- eval select * from t_$tables;
- dec $tables;
-}
---enable_query_log
---enable_result_log
-
-SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read';
-
-use innodb_encrypted_3;
-
---disable_result_log
---disable_query_log
-let $tables = 100;
-while ($tables)
-{
- eval select * from t_$tables;
- dec $tables;
-}
---enable_query_log
---enable_result_log
-
-SELECT variable_value <= 303 FROM information_schema.global_status WHERE variable_name = 'innodb_pages0_read';
-
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-
-SET GLOBAL innodb_encrypt_tables = off;
-SET GLOBAL innodb_encryption_threads=4;
-
---let $wait_timeout= 600
---let $wait_condition=SELECT COUNT(*) = 100 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0;
---source include/wait_condition.inc
-
-
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION <> 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-SELECT NAME FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0 AND NAME LIKE 'innodb_encrypted%' ORDER BY NAME;
-
-#
-# Cleanup
-#
-use test;
-drop database innodb_encrypted_1;
-drop database innodb_encrypted_2;
-drop database innodb_encrypted_3;
-
---disable_query_log
-EVAL SET GLOBAL innodb_encryption_threads = $innodb_encryption_threads_orig;
---enable_query_log
diff --git a/mysql-test/suite/galera/disabled.def b/mysql-test/suite/galera/disabled.def
index 5908ed2121b..a89109f6291 100644
--- a/mysql-test/suite/galera/disabled.def
+++ b/mysql-test/suite/galera/disabled.def
@@ -15,6 +15,7 @@ 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]
MW-329 : wsrep_local_replays not stable
+MW-336 : MDEV-19746 Galera test failures because of wsrep_slave_threads identification
MW-416 : MDEV-13549 Galera test failures
MW-44 : MDEV-15809 Test failure on galera.MW-44
galera_account_management : MariaDB 10.0 does not support ALTER USER
@@ -35,6 +36,7 @@ galera_ssl_upgrade : MDEV-13549 Galera test failures
galera_sst_mysqldump_with_key : MDEV-16890 Galera test failure
galera_var_node_address : MDEV-17151 Galera test failure
galera_var_notify_cmd : MDEV-13549 Galera test failures
+galera_var_slave_threads : MDEV-19746 Galera test failures because of wsrep_slave_threads identification
galera_wan : MDEV-17259: Test failure on galera.galera_wan
partition : MDEV-13549 regularly showing auto_increment mismatch
pxc-421: Lock timeout exceeded
diff --git a/mysql-test/suite/galera/r/galera_sync_wait_show.result b/mysql-test/suite/galera/r/galera_sync_wait_show.result
index def771ff88d..f07ba817f8f 100644
--- a/mysql-test/suite/galera/r/galera_sync_wait_show.result
+++ b/mysql-test/suite/galera/r/galera_sync_wait_show.result
@@ -47,6 +47,8 @@ tr1 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE
DROP TABLE t1;
connection node_1;
CREATE EVENT event1 ON SCHEDULE AT '2038-01-01 23:59:59' DO SELECT 1;
+Warnings:
+Warning 1105 Event scheduler is switched off, use SET GLOBAL event_scheduler=ON to enable it.
connection node_2;
SHOW CREATE EVENT event1;
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
diff --git a/mysql-test/suite/innodb/r/innodb-64k-crash.result b/mysql-test/suite/innodb/r/innodb-64k-crash.result
index 138ad5345ed..80beef92162 100644
--- a/mysql-test/suite/innodb/r/innodb-64k-crash.result
+++ b/mysql-test/suite/innodb/r/innodb-64k-crash.result
@@ -271,319 +271,13 @@ vb=@c,wb=@c,xb=@c,yb=@c,zb=@c,
ac=@c,bc=@c,cc=@c,dc=@c,ec=@c,fc=@c,gc=@c,hc=@c,ic=@c,jc=@c,
kc=@c,lc=@c,mc=@c,nc=@c,oc=@c,pc=@c,qc=@c,rc=@c,sc=@c,tc=@c,uc=@c,
vc=@c,wc=@c,xc=@c,yc=@c,zc=@c;
-UPDATE t1 SET a=@e,b=@e,c=@e,d=@e,e=@e,f=@e,g=@e,h=@e,i=@e,j=@e,
-k=@e,l=@e,m=@e,n=@e,o=@e,p=@e,q=@e,r=@e,s=@e,t=@e,u=@e,
-v=@e,w=@e,x=@e,y=@e,z=@e,
-aa=@e,ba=@e,ca=@e,da=@e,ea=@e,fa=@e,ga=@e,ha=@e,ia=@e,ja=@e,
-ka=@e,la=@e,ma=@e,na=@e,oa=@e,pa=@e,qa=@e,ra=@e,sa=@e,ta=@e,ua=@e,
-va=@e,wa=@e,xa=@e,ya=@e,za=@e,
-ab=@e,bb=@e,cb=@e,db=@e,eb=@e,fb=@e,gb=@e,hb=@e,ib=@e,jb=@e,
-kb=@e,lb=@e,mb=@e,nb=@e,ob=@e,pb=@e,qb=@e,rb=@e,sb=@e,tb=@e,ub=@e,
-vb=@e,wb=@e,xb=@e,yb=@e,zb=@e,
-ac=@e,bc=@e,cc=@e,dc=@e,ec=@e,fc=@e,gc=@e,hc=@e,ic=@e,jc=@e,
-kc=@e,lc=@e,mc=@e,nc=@e,oc=@e,pc=@e,qc=@e,rc=@e,sc=@e,tc=@e,uc=@e,
-vc=@e,wc=@e,xc=@e,yc=@e,zc=@e;
-UPDATE t2 SET a=@l,b=@l,c=@l,d=@l,e=@l,f=@l,g=@l,h=@l,i=@l,j=@l,
-k=@l,l=@l,m=@l,n=@l,o=@l,p=@l,q=@l,r=@l,s=@l,t=@l,u=@l,
-v=@l,w=@l,x=@l,y=@l,z=@l,
-aa=@l,ba=@l,ca=@l,da=@l,ea=@l,fa=@l,ga=@l,ha=@l,ia=@l,ja=@l,
-ka=@l,la=@l,ma=@l,na=@l,oa=@l,pa=@l,qa=@l,ra=@l,sa=@l,ta=@l,ua=@l,
-va=@l,wa=@l,xa=@l,ya=@l,za=@l,
-ab=@l,bb=@l,cb=@l,db=@l,eb=@l,fb=@l,gb=@l,hb=@l,ib=@l,jb=@l,
-kb=@l,lb=@l,mb=@l,nb=@l,ob=@l,pb=@l,qb=@l,rb=@l,sb=@l,tb=@l,ub=@l,
-vb=@l,wb=@l,xb=@l,yb=@l,zb=@l,
-ac=@l,bc=@l,cc=@l,dc=@l,ec=@l,fc=@l,gc=@l,hc=@l,ic=@l,jc=@l,
-kc=@l,lc=@l,mc=@l,nc=@l,oc=@l,pc=@l,qc=@l,rc=@l,sc=@l,tc=@l,uc=@l,
-vc=@l,wc=@l,xc=@l,yc=@l,zc=@l;
-COMMIT;
-BEGIN;
-UPDATE t1 SET a=@f,b=@f,c=@f,d=@f,e=@f;
-UPDATE t1 SET f=@f,g=@f,h=@f,i=@f,j=@f;
-UPDATE t1 SET k=@f,l=@f,m=@f,n=@f,o=@f;
-UPDATE t1 SET p=@f,q=@f,r=@f,s=@f,t=@f,u=@f;
-UPDATE t1 SET v=@f,w=@f,x=@f,y=@f,z=@f;
-UPDATE t1 SET aa=@f,ba=@f,ca=@f,da=@f;
-UPDATE t1 SET ea=@f,fa=@f,ga=@f,ha=@f,ia=@f,ja=@f;
-UPDATE t1 SET ka=@f,la=@f,ma=@f,na=@f,oa=@f,pa=@f;
-UPDATE t1 SET qa=@f,ra=@f,sa=@f,ta=@f,ua=@f;
-UPDATE t1 SET va=@f,wa=@f,xa=@f,ya=@f,za=@f;
-UPDATE t1 SET ab=@f,bb=@f,cb=@f,db=@f;
-UPDATE t1 SET eb=@f,fb=@f,gb=@f,hb=@f,ib=@f,ja=@f;
-UPDATE t1 SET kb=@f,lb=@f,mb=@f,nb=@f,ob=@f,pa=@f;
-UPDATE t1 SET qb=@f,rb=@f,sb=@f,tb=@f,ub=@f;
-UPDATE t1 SET vb=@f,wb=@f,xb=@f,yb=@f,zb=@f;
-UPDATE t1 SET ac=@f,bc=@f,cc=@f,dc=@f;
-UPDATE t1 SET ec=@f,fc=@f,gc=@f,hc=@f,ic=@f,jc=@f;
-UPDATE t1 SET kc=@f,lc=@f,mc=@f,nc=@f,oc=@f,pc=@f;
-UPDATE t1 SET qc=@f,rc=@f,sc=@f,tc=@f,uc=@f;
-UPDATE t1 SET vc=@f,wc=@f,xc=@f,yc=@f,zc=@f;
-COMMIT;
-BEGIN;
-UPDATE t2 SET a=@f,b=@f,c=@f,d=@f,e=@f;
-UPDATE t2 SET f=@f,g=@f,h=@f,i=@f,j=@f;
-UPDATE t2 SET k=@f,l=@f,m=@f,n=@f,o=@f;
-UPDATE t2 SET p=@f,q=@f,r=@f,s=@f,t=@f,u=@f;
-UPDATE t2 SET v=@f,w=@f,x=@f,y=@f,z=@f;
-UPDATE t2 SET aa=@f,ba=@f,ca=@f,da=@f;
-UPDATE t2 SET ea=@f,fa=@f,ga=@f,ha=@f,ia=@f,ja=@f;
-UPDATE t2 SET ka=@f,la=@f,ma=@f,na=@f,oa=@f,pa=@f;
-UPDATE t2 SET qa=@f,ra=@f,sa=@f,ta=@f,ua=@f;
-UPDATE t2 SET va=@f,wa=@f,xa=@f,ya=@f,za=@f;
-UPDATE t2 SET ab=@f,bb=@f,cb=@f,db=@f;
-UPDATE t2 SET eb=@f,fb=@f,gb=@f,hb=@f,ib=@f,ja=@f;
-UPDATE t2 SET kb=@f,lb=@f,mb=@f,nb=@f,ob=@f,pa=@f;
-UPDATE t2 SET qb=@f,rb=@f,sb=@f,tb=@f,ub=@f;
-UPDATE t2 SET vb=@f,wb=@f,xb=@f,yb=@f,zb=@f;
-UPDATE t2 SET ac=@f,bc=@f,cc=@f,dc=@f;
-UPDATE t2 SET ec=@f,fc=@f,gc=@f,hc=@f,ic=@f,jc=@f;
-UPDATE t2 SET kc=@f,lc=@f,mc=@f,nc=@f,oc=@f,pc=@f;
-UPDATE t2 SET qc=@f,rc=@f,sc=@f,tc=@f,uc=@f;
-UPDATE t2 SET vc=@f,wc=@f,xc=@f,yc=@f,zc=@f;
-COMMIT;
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` blob DEFAULT NULL,
- `b` blob DEFAULT NULL,
- `c` blob DEFAULT NULL,
- `d` blob DEFAULT NULL,
- `e` blob DEFAULT NULL,
- `f` blob DEFAULT NULL,
- `g` blob DEFAULT NULL,
- `h` blob DEFAULT NULL,
- `i` blob DEFAULT NULL,
- `j` blob DEFAULT NULL,
- `k` blob DEFAULT NULL,
- `l` blob DEFAULT NULL,
- `m` blob DEFAULT NULL,
- `n` blob DEFAULT NULL,
- `o` blob DEFAULT NULL,
- `p` blob DEFAULT NULL,
- `q` blob DEFAULT NULL,
- `r` blob DEFAULT NULL,
- `s` blob DEFAULT NULL,
- `t` blob DEFAULT NULL,
- `u` blob DEFAULT NULL,
- `v` blob DEFAULT NULL,
- `w` blob DEFAULT NULL,
- `x` blob DEFAULT NULL,
- `y` blob DEFAULT NULL,
- `z` blob DEFAULT NULL,
- `aa` blob DEFAULT NULL,
- `ba` blob DEFAULT NULL,
- `ca` blob DEFAULT NULL,
- `da` blob DEFAULT NULL,
- `ea` blob DEFAULT NULL,
- `fa` blob DEFAULT NULL,
- `ga` blob DEFAULT NULL,
- `ha` blob DEFAULT NULL,
- `ia` blob DEFAULT NULL,
- `ja` blob DEFAULT NULL,
- `ka` blob DEFAULT NULL,
- `la` blob DEFAULT NULL,
- `ma` blob DEFAULT NULL,
- `na` blob DEFAULT NULL,
- `oa` blob DEFAULT NULL,
- `pa` blob DEFAULT NULL,
- `qa` blob DEFAULT NULL,
- `ra` blob DEFAULT NULL,
- `sa` blob DEFAULT NULL,
- `ta` blob DEFAULT NULL,
- `ua` blob DEFAULT NULL,
- `va` blob DEFAULT NULL,
- `wa` blob DEFAULT NULL,
- `xa` blob DEFAULT NULL,
- `ya` blob DEFAULT NULL,
- `za` blob DEFAULT NULL,
- `ab` blob DEFAULT NULL,
- `bb` blob DEFAULT NULL,
- `cb` blob DEFAULT NULL,
- `db` blob DEFAULT NULL,
- `eb` blob DEFAULT NULL,
- `fb` blob DEFAULT NULL,
- `gb` blob DEFAULT NULL,
- `hb` blob DEFAULT NULL,
- `ib` blob DEFAULT NULL,
- `jb` blob DEFAULT NULL,
- `kb` blob DEFAULT NULL,
- `lb` blob DEFAULT NULL,
- `mb` blob DEFAULT NULL,
- `nb` blob DEFAULT NULL,
- `ob` blob DEFAULT NULL,
- `pb` blob DEFAULT NULL,
- `qb` blob DEFAULT NULL,
- `rb` blob DEFAULT NULL,
- `sb` blob DEFAULT NULL,
- `tb` blob DEFAULT NULL,
- `ub` blob DEFAULT NULL,
- `vb` blob DEFAULT NULL,
- `wb` blob DEFAULT NULL,
- `xb` blob DEFAULT NULL,
- `yb` blob DEFAULT NULL,
- `zb` blob DEFAULT NULL,
- `ac` blob DEFAULT NULL,
- `bc` blob DEFAULT NULL,
- `cc` blob DEFAULT NULL,
- `dc` blob DEFAULT NULL,
- `ec` blob DEFAULT NULL,
- `fc` blob DEFAULT NULL,
- `gc` blob DEFAULT NULL,
- `hc` blob DEFAULT NULL,
- `ic` blob DEFAULT NULL,
- `jc` blob DEFAULT NULL,
- `kc` blob DEFAULT NULL,
- `lc` blob DEFAULT NULL,
- `mc` blob DEFAULT NULL,
- `nc` blob DEFAULT NULL,
- `oc` blob DEFAULT NULL,
- `pc` blob DEFAULT NULL,
- `qc` blob DEFAULT NULL,
- `rc` blob DEFAULT NULL,
- `sc` blob DEFAULT NULL,
- `tc` blob DEFAULT NULL,
- `uc` blob DEFAULT NULL,
- `vc` blob DEFAULT NULL,
- `wc` blob DEFAULT NULL,
- `xc` blob DEFAULT NULL,
- `yc` blob DEFAULT NULL,
- `zc` blob DEFAULT NULL,
- KEY `t1a` (`a`(767),`b`(767)),
- KEY `t1c` (`c`(767),`d`(767)),
- KEY `t1e` (`e`(767),`f`(767)),
- KEY `t1f2` (`g`(767),`h`(767)),
- KEY `t1f4` (`i`(767),`j`(767)),
- KEY `t1k` (`k`(767),`m`(767)),
- KEY `t1f8` (`n`(767),`o`(767)),
- KEY `t1f11` (`p`(767),`q`(767)),
- KEY `t1f13` (`r`(767),`s`(767)),
- KEY `t1f15` (`t`(767),`u`(767)),
- KEY `t1f18` (`w`(767),`x`(767)),
- KEY `t1f20` (`y`(767),`z`(767)),
- KEY `ta1a6` (`aa`(767),`ba`(767)),
- KEY `tc1c6` (`ca`(767),`da`(767)),
- KEY `te1e6` (`ea`(767),`fa`(767))
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
-show create table t2;
-Table Create Table
-t2 CREATE TABLE `t2` (
- `a` blob DEFAULT NULL,
- `b` blob DEFAULT NULL,
- `c` blob DEFAULT NULL,
- `d` blob DEFAULT NULL,
- `e` blob DEFAULT NULL,
- `f` blob DEFAULT NULL,
- `g` blob DEFAULT NULL,
- `h` blob DEFAULT NULL,
- `i` blob DEFAULT NULL,
- `j` blob DEFAULT NULL,
- `k` blob DEFAULT NULL,
- `l` blob DEFAULT NULL,
- `m` blob DEFAULT NULL,
- `n` blob DEFAULT NULL,
- `o` blob DEFAULT NULL,
- `p` blob DEFAULT NULL,
- `q` blob DEFAULT NULL,
- `r` blob DEFAULT NULL,
- `s` blob DEFAULT NULL,
- `t` blob DEFAULT NULL,
- `u` blob DEFAULT NULL,
- `v` blob DEFAULT NULL,
- `w` blob DEFAULT NULL,
- `x` blob DEFAULT NULL,
- `y` blob DEFAULT NULL,
- `z` blob DEFAULT NULL,
- `aa` blob DEFAULT NULL,
- `ba` blob DEFAULT NULL,
- `ca` blob DEFAULT NULL,
- `da` blob DEFAULT NULL,
- `ea` blob DEFAULT NULL,
- `fa` blob DEFAULT NULL,
- `ga` blob DEFAULT NULL,
- `ha` blob DEFAULT NULL,
- `ia` blob DEFAULT NULL,
- `ja` blob DEFAULT NULL,
- `ka` blob DEFAULT NULL,
- `la` blob DEFAULT NULL,
- `ma` blob DEFAULT NULL,
- `na` blob DEFAULT NULL,
- `oa` blob DEFAULT NULL,
- `pa` blob DEFAULT NULL,
- `qa` blob DEFAULT NULL,
- `ra` blob DEFAULT NULL,
- `sa` blob DEFAULT NULL,
- `ta` blob DEFAULT NULL,
- `ua` blob DEFAULT NULL,
- `va` blob DEFAULT NULL,
- `wa` blob DEFAULT NULL,
- `xa` blob DEFAULT NULL,
- `ya` blob DEFAULT NULL,
- `za` blob DEFAULT NULL,
- `ab` blob DEFAULT NULL,
- `bb` blob DEFAULT NULL,
- `cb` blob DEFAULT NULL,
- `db` blob DEFAULT NULL,
- `eb` blob DEFAULT NULL,
- `fb` blob DEFAULT NULL,
- `gb` blob DEFAULT NULL,
- `hb` blob DEFAULT NULL,
- `ib` blob DEFAULT NULL,
- `jb` blob DEFAULT NULL,
- `kb` blob DEFAULT NULL,
- `lb` blob DEFAULT NULL,
- `mb` blob DEFAULT NULL,
- `nb` blob DEFAULT NULL,
- `ob` blob DEFAULT NULL,
- `pb` blob DEFAULT NULL,
- `qb` blob DEFAULT NULL,
- `rb` blob DEFAULT NULL,
- `sb` blob DEFAULT NULL,
- `tb` blob DEFAULT NULL,
- `ub` blob DEFAULT NULL,
- `vb` blob DEFAULT NULL,
- `wb` blob DEFAULT NULL,
- `xb` blob DEFAULT NULL,
- `yb` blob DEFAULT NULL,
- `zb` blob DEFAULT NULL,
- `ac` blob DEFAULT NULL,
- `bc` blob DEFAULT NULL,
- `cc` blob DEFAULT NULL,
- `dc` blob DEFAULT NULL,
- `ec` blob DEFAULT NULL,
- `fc` blob DEFAULT NULL,
- `gc` blob DEFAULT NULL,
- `hc` blob DEFAULT NULL,
- `ic` blob DEFAULT NULL,
- `jc` blob DEFAULT NULL,
- `kc` blob DEFAULT NULL,
- `lc` blob DEFAULT NULL,
- `mc` blob DEFAULT NULL,
- `nc` blob DEFAULT NULL,
- `oc` blob DEFAULT NULL,
- `pc` blob DEFAULT NULL,
- `qc` blob DEFAULT NULL,
- `rc` blob DEFAULT NULL,
- `sc` blob DEFAULT NULL,
- `tc` blob DEFAULT NULL,
- `uc` blob DEFAULT NULL,
- `vc` blob DEFAULT NULL,
- `wc` blob DEFAULT NULL,
- `xc` blob DEFAULT NULL,
- `yc` blob DEFAULT NULL,
- `zc` blob DEFAULT NULL,
- KEY `t2a` (`a`(767),`b`(767)),
- KEY `t2c` (`c`(767),`d`(767)),
- KEY `t2e` (`e`(767),`f`(767)),
- KEY `t2f2` (`g`(767),`h`(767)),
- KEY `t2f4` (`i`(767),`j`(767)),
- KEY `t2k` (`k`(767),`m`(767)),
- KEY `t2f8` (`n`(767),`o`(767)),
- KEY `t2f11` (`p`(767),`q`(767)),
- KEY `t2f13` (`r`(767),`s`(767)),
- KEY `t2f15` (`t`(767),`u`(767)),
- KEY `t2f18` (`w`(767),`x`(767)),
- KEY `t2f20` (`y`(767),`z`(767)),
- KEY `ta2a6` (`aa`(767),`ba`(767)),
- KEY `tc2c6` (`ca`(767),`da`(767)),
- KEY `te2e6` (`ea`(767),`fa`(767))
-) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
+connect con1,localhost,root,,;
+SET GLOBAL innodb_flush_log_at_trx_commit=1;
+DELETE FROM t2 LIMIT 1;
+disconnect con1;
+connection default;
+check table t1,t2;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+test.t2 check status OK
drop table t1,t2;
diff --git a/mysql-test/suite/innodb/t/innodb-64k-crash.test b/mysql-test/suite/innodb/t/innodb-64k-crash.test
index 8139b7ce4e4..950c1752ccd 100644
--- a/mysql-test/suite/innodb/t/innodb-64k-crash.test
+++ b/mysql-test/suite/innodb/t/innodb-64k-crash.test
@@ -300,84 +300,15 @@ UPDATE t1 SET a=@c,b=@c,c=@c,d=@c,e=@c,f=@c,g=@c,h=@c,i=@c,j=@c,
kc=@c,lc=@c,mc=@c,nc=@c,oc=@c,pc=@c,qc=@c,rc=@c,sc=@c,tc=@c,uc=@c,
vc=@c,wc=@c,xc=@c,yc=@c,zc=@c;
+connect (con1,localhost,root,,);
+SET GLOBAL innodb_flush_log_at_trx_commit=1;
+DELETE FROM t2 LIMIT 1;
+disconnect con1;
+connection default;
+
--let $shutdown_timeout=0
--source include/restart_mysqld.inc
--let $shutdown_timeout=
-UPDATE t1 SET a=@e,b=@e,c=@e,d=@e,e=@e,f=@e,g=@e,h=@e,i=@e,j=@e,
- k=@e,l=@e,m=@e,n=@e,o=@e,p=@e,q=@e,r=@e,s=@e,t=@e,u=@e,
- v=@e,w=@e,x=@e,y=@e,z=@e,
- aa=@e,ba=@e,ca=@e,da=@e,ea=@e,fa=@e,ga=@e,ha=@e,ia=@e,ja=@e,
- ka=@e,la=@e,ma=@e,na=@e,oa=@e,pa=@e,qa=@e,ra=@e,sa=@e,ta=@e,ua=@e,
- va=@e,wa=@e,xa=@e,ya=@e,za=@e,
- ab=@e,bb=@e,cb=@e,db=@e,eb=@e,fb=@e,gb=@e,hb=@e,ib=@e,jb=@e,
- kb=@e,lb=@e,mb=@e,nb=@e,ob=@e,pb=@e,qb=@e,rb=@e,sb=@e,tb=@e,ub=@e,
- vb=@e,wb=@e,xb=@e,yb=@e,zb=@e,
- ac=@e,bc=@e,cc=@e,dc=@e,ec=@e,fc=@e,gc=@e,hc=@e,ic=@e,jc=@e,
- kc=@e,lc=@e,mc=@e,nc=@e,oc=@e,pc=@e,qc=@e,rc=@e,sc=@e,tc=@e,uc=@e,
- vc=@e,wc=@e,xc=@e,yc=@e,zc=@e;
-
-UPDATE t2 SET a=@l,b=@l,c=@l,d=@l,e=@l,f=@l,g=@l,h=@l,i=@l,j=@l,
- k=@l,l=@l,m=@l,n=@l,o=@l,p=@l,q=@l,r=@l,s=@l,t=@l,u=@l,
- v=@l,w=@l,x=@l,y=@l,z=@l,
- aa=@l,ba=@l,ca=@l,da=@l,ea=@l,fa=@l,ga=@l,ha=@l,ia=@l,ja=@l,
- ka=@l,la=@l,ma=@l,na=@l,oa=@l,pa=@l,qa=@l,ra=@l,sa=@l,ta=@l,ua=@l,
- va=@l,wa=@l,xa=@l,ya=@l,za=@l,
- ab=@l,bb=@l,cb=@l,db=@l,eb=@l,fb=@l,gb=@l,hb=@l,ib=@l,jb=@l,
- kb=@l,lb=@l,mb=@l,nb=@l,ob=@l,pb=@l,qb=@l,rb=@l,sb=@l,tb=@l,ub=@l,
- vb=@l,wb=@l,xb=@l,yb=@l,zb=@l,
- ac=@l,bc=@l,cc=@l,dc=@l,ec=@l,fc=@l,gc=@l,hc=@l,ic=@l,jc=@l,
- kc=@l,lc=@l,mc=@l,nc=@l,oc=@l,pc=@l,qc=@l,rc=@l,sc=@l,tc=@l,uc=@l,
- vc=@l,wc=@l,xc=@l,yc=@l,zc=@l;
-
-COMMIT;
-
-BEGIN;
-UPDATE t1 SET a=@f,b=@f,c=@f,d=@f,e=@f;
-UPDATE t1 SET f=@f,g=@f,h=@f,i=@f,j=@f;
-UPDATE t1 SET k=@f,l=@f,m=@f,n=@f,o=@f;
-UPDATE t1 SET p=@f,q=@f,r=@f,s=@f,t=@f,u=@f;
-UPDATE t1 SET v=@f,w=@f,x=@f,y=@f,z=@f;
-UPDATE t1 SET aa=@f,ba=@f,ca=@f,da=@f;
-UPDATE t1 SET ea=@f,fa=@f,ga=@f,ha=@f,ia=@f,ja=@f;
-UPDATE t1 SET ka=@f,la=@f,ma=@f,na=@f,oa=@f,pa=@f;
-UPDATE t1 SET qa=@f,ra=@f,sa=@f,ta=@f,ua=@f;
-UPDATE t1 SET va=@f,wa=@f,xa=@f,ya=@f,za=@f;
-UPDATE t1 SET ab=@f,bb=@f,cb=@f,db=@f;
-UPDATE t1 SET eb=@f,fb=@f,gb=@f,hb=@f,ib=@f,ja=@f;
-UPDATE t1 SET kb=@f,lb=@f,mb=@f,nb=@f,ob=@f,pa=@f;
-UPDATE t1 SET qb=@f,rb=@f,sb=@f,tb=@f,ub=@f;
-UPDATE t1 SET vb=@f,wb=@f,xb=@f,yb=@f,zb=@f;
-UPDATE t1 SET ac=@f,bc=@f,cc=@f,dc=@f;
-UPDATE t1 SET ec=@f,fc=@f,gc=@f,hc=@f,ic=@f,jc=@f;
-UPDATE t1 SET kc=@f,lc=@f,mc=@f,nc=@f,oc=@f,pc=@f;
-UPDATE t1 SET qc=@f,rc=@f,sc=@f,tc=@f,uc=@f;
-UPDATE t1 SET vc=@f,wc=@f,xc=@f,yc=@f,zc=@f;
-COMMIT;
-
-BEGIN;
-UPDATE t2 SET a=@f,b=@f,c=@f,d=@f,e=@f;
-UPDATE t2 SET f=@f,g=@f,h=@f,i=@f,j=@f;
-UPDATE t2 SET k=@f,l=@f,m=@f,n=@f,o=@f;
-UPDATE t2 SET p=@f,q=@f,r=@f,s=@f,t=@f,u=@f;
-UPDATE t2 SET v=@f,w=@f,x=@f,y=@f,z=@f;
-UPDATE t2 SET aa=@f,ba=@f,ca=@f,da=@f;
-UPDATE t2 SET ea=@f,fa=@f,ga=@f,ha=@f,ia=@f,ja=@f;
-UPDATE t2 SET ka=@f,la=@f,ma=@f,na=@f,oa=@f,pa=@f;
-UPDATE t2 SET qa=@f,ra=@f,sa=@f,ta=@f,ua=@f;
-UPDATE t2 SET va=@f,wa=@f,xa=@f,ya=@f,za=@f;
-UPDATE t2 SET ab=@f,bb=@f,cb=@f,db=@f;
-UPDATE t2 SET eb=@f,fb=@f,gb=@f,hb=@f,ib=@f,ja=@f;
-UPDATE t2 SET kb=@f,lb=@f,mb=@f,nb=@f,ob=@f,pa=@f;
-UPDATE t2 SET qb=@f,rb=@f,sb=@f,tb=@f,ub=@f;
-UPDATE t2 SET vb=@f,wb=@f,xb=@f,yb=@f,zb=@f;
-UPDATE t2 SET ac=@f,bc=@f,cc=@f,dc=@f;
-UPDATE t2 SET ec=@f,fc=@f,gc=@f,hc=@f,ic=@f,jc=@f;
-UPDATE t2 SET kc=@f,lc=@f,mc=@f,nc=@f,oc=@f,pc=@f;
-UPDATE t2 SET qc=@f,rc=@f,sc=@f,tc=@f,uc=@f;
-UPDATE t2 SET vc=@f,wc=@f,xc=@f,yc=@f,zc=@f;
-COMMIT;
-
-show create table t1;
-show create table t2;
+check table t1,t2;
drop table t1,t2;
diff --git a/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test b/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test
index f9f2b11471a..2d8e7f2ff5e 100644
--- a/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test
+++ b/mysql-test/suite/innodb/t/leaf_page_corrupted_during_recovery.test
@@ -9,6 +9,7 @@ call mtr.add_suppression("\\[ERROR\\] InnoDB: Plugin initialization aborted at s
call mtr.add_suppression("\\[ERROR\\] Plugin 'InnoDB' (init function|registration)");
call mtr.add_suppression("\\[ERROR\\] InnoDB: We detected index corruption");
call mtr.add_suppression("\\[ERROR\\] mysqld.*: Index for table 't1' is corrupt; try to repair it");
+call mtr.add_suppression("InnoDB: Error code: [0-9][0-9][0-9]* btr_pcur_open_low level: 0 called from file: ");
--enable_query_log
CREATE TABLE t1 (pk INT PRIMARY KEY, c CHAR(255))ENGINE=InnoDB STATS_PERSISTENT=0;
@@ -46,8 +47,6 @@ EOF
SELECT * FROM t1 WHERE PK = 1;
let $restart_parameters=--innodb-force-recovery=1;
-# Work around MDEV-19435 to avoid crash in row_purge_reset_trx_id()
-let $restart_parameters=--innodb-force-recovery=2;
--source include/restart_mysqld.inc
SELECT * FROM t1 WHERE PK = 1;
--error ER_NOT_KEYFILE
diff --git a/mysql-test/suite/rpl/disabled.def b/mysql-test/suite/rpl/disabled.def
index 772713aeb4e..1c0624a31ab 100644
--- a/mysql-test/suite/rpl/disabled.def
+++ b/mysql-test/suite/rpl/disabled.def
@@ -14,7 +14,6 @@ rpl_spec_variables : BUG#11755836 2009-10-27 jasonh rpl_spec_variables fa
rpl_get_master_version_and_clock : Bug#11766137 Jan 05 2011 joro Valgrind warnings rpl_get_master_version_and_clock
rpl_partition_archive : MDEV-5077 2013-09-27 svoj Cannot exchange partition with archive table
rpl_row_binlog_max_cache_size : MDEV-11092
-rpl_blackhole : MDEV-11094
rpl_row_index_choice : MDEV-11666
rpl_parallel2 : fails after MDEV-16172
rpl_semi_sync_after_sync : fails after MDEV-16172
diff --git a/mysql-test/suite/rpl/include/rpl_blackhole.test b/mysql-test/suite/rpl/include/rpl_blackhole.test
index a37d24b4cd6..6e7102b4203 100644
--- a/mysql-test/suite/rpl/include/rpl_blackhole.test
+++ b/mysql-test/suite/rpl/include/rpl_blackhole.test
@@ -11,7 +11,7 @@
# executing statement. If difference is >0, then something was
# written to the binary log on the slave.
-connection slave;
+# On Connection Slave
let $before = query_get_value("SHOW MASTER STATUS", Position, 1);
connection master;
diff --git a/mysql-test/suite/rpl/include/rpl_blackhole_basic.test b/mysql-test/suite/rpl/include/rpl_blackhole_basic.test
new file mode 100644
index 00000000000..c315906d47b
--- /dev/null
+++ b/mysql-test/suite/rpl/include/rpl_blackhole_basic.test
@@ -0,0 +1,97 @@
+# PURPOSE. Test that blackhole works with replication in all three
+# modes: STATEMENT, MIXED, and ROW.
+#
+# METHOD. We start by creating a table on the master and then change
+# the engine to use blackhole on the slave.
+#
+# After insert/update/delete of one or more rows, the test the
+# proceeds to check that replication is running after replicating an
+# change, that the blackhole engine does not contain anything (which
+# is just a check that the correct engine is used), and that something
+# is written to the binary log.
+#
+# Whe check INSERT, UPDATE, and DELETE statement for tables with no
+# key (forcing a range search on the slave), primary keys (using a
+# primary key lookup), and index/key with multiple matches (forcing an
+# index search).
+
+# We start with no primary key
+CREATE TABLE t1 (a INT, b INT, c INT);
+CREATE TABLE t2 (a INT, b INT, c INT);
+
+sync_slave_with_master;
+ALTER TABLE t1 ENGINE=BLACKHOLE;
+
+connection master;
+INSERT INTO t2 VALUES (1,9,1), (2,9,2), (3,9,3), (4,9,4);
+sync_slave_with_master;
+
+# Test insert, no primary key
+let $statement = INSERT INTO t1 VALUES (1,1,1),(2,1,2),(3,1,3),(4,1,4);
+source include/rpl_blackhole.test;
+
+# Test update, no primary key
+let $statement = UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 1;
+source include/rpl_blackhole.test;
+
+# Test delete, no primary key
+let $statement = DELETE FROM t1 WHERE a % 2 = 0 AND b = 1;
+source include/rpl_blackhole.test;
+
+# Test INSERT-SELECT into Blackhole, no primary key
+let $statement = INSERT INTO t1 SELECT * FROM t2;
+source include/rpl_blackhole.test;
+
+#
+# The MASTER has MyISAM as the engine for both tables. The SLAVE has Blackhole
+# on t1 (transactional engine) and MyISAM on t2 (non-transactional engine).
+#
+# In MIXED mode, the command "INSERT INTO t2 SELECT * FROM t1" is logged as
+# statement on the master. On the slave, it is tagged as unsafe because the
+# statement mixes both transactional and non-transactional engines and as such
+# its changes are logged as rows. However, due to the nature of the blackhole
+# engine, no rows are returned and thus any chain replication would make the
+# next master on the chain diverge.
+#
+# Fo this reason, we have disabled the statement.
+#
+# Test INSERT-SELECT from Blackhole, no primary key
+# let $statement = INSERT INTO t2 SELECT * FROM t1;
+# source include/rpl_blackhole.test;
+#
+
+connection master;
+ALTER TABLE t1 ADD PRIMARY KEY pk_t1 (a,b);
+sync_slave_with_master;
+
+# Test insert, primary key
+let $statement = INSERT INTO t1 VALUES (1,2,1),(2,2,2),(3,2,3),(4,2,4);
+source include/rpl_blackhole.test;
+
+# Test update, primary key
+let $statement = UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 2;
+source include/rpl_blackhole.test;
+
+# Test delete, primary key
+let $statement = DELETE FROM t1 WHERE a % 2 = 0 AND b = 2;
+source include/rpl_blackhole.test;
+
+connection master;
+ALTER TABLE t1 DROP PRIMARY KEY, ADD KEY key_t1 (a);
+sync_slave_with_master;
+
+# Test insert, key
+let $statement = INSERT INTO t1 VALUES (1,3,1),(2,3,2),(3,3,3),(4,3,4);
+source include/rpl_blackhole.test;
+
+# Test update, key
+let $statement = UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 3;
+source include/rpl_blackhole.test;
+
+# Test delete, key
+let $statement = DELETE FROM t1 WHERE a % 2 = 0 AND b = 3;
+source include/rpl_blackhole.test;
+
+connection master;
+DROP TABLE t1,t2;
+sync_slave_with_master;
diff --git a/mysql-test/suite/rpl/r/rpl_blackhole.result b/mysql-test/suite/rpl/r/rpl_blackhole.result
index b61e857fd3f..178c23b9f98 100644
--- a/mysql-test/suite/rpl/r/rpl_blackhole.result
+++ b/mysql-test/suite/rpl/r/rpl_blackhole.result
@@ -8,7 +8,6 @@ ALTER TABLE t1 ENGINE=BLACKHOLE;
connection master;
INSERT INTO t2 VALUES (1,9,1), (2,9,2), (3,9,3), (4,9,4);
connection slave;
-connection slave;
connection master;
INSERT INTO t1 VALUES (1,1,1),(2,1,2),(3,1,3),(4,1,4);
connection slave;
@@ -17,7 +16,6 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
>>> Something was written to binary log <<<
-connection slave;
connection master;
UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 1;
connection slave;
@@ -26,7 +24,6 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
>>> Something was written to binary log <<<
-connection slave;
connection master;
DELETE FROM t1 WHERE a % 2 = 0 AND b = 1;
connection slave;
@@ -35,7 +32,6 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
>>> Something was written to binary log <<<
-connection slave;
connection master;
INSERT INTO t1 SELECT * FROM t2;
connection slave;
@@ -55,7 +51,6 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
>>> Something was written to binary log <<<
-connection slave;
connection master;
UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 2;
connection slave;
@@ -64,7 +59,6 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
>>> Something was written to binary log <<<
-connection slave;
connection master;
DELETE FROM t1 WHERE a % 2 = 0 AND b = 2;
connection slave;
@@ -84,7 +78,6 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
>>> Something was written to binary log <<<
-connection slave;
connection master;
UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 3;
connection slave;
@@ -93,7 +86,6 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
>>> Something was written to binary log <<<
-connection slave;
connection master;
DELETE FROM t1 WHERE a % 2 = 0 AND b = 3;
connection slave;
@@ -104,4 +96,5 @@ COUNT(*)
>>> Something was written to binary log <<<
connection master;
DROP TABLE t1,t2;
+connection slave;
include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/r/rpl_blackhole_row_annotate.result b/mysql-test/suite/rpl/r/rpl_blackhole_row_annotate.result
new file mode 100644
index 00000000000..d92c3dce55b
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_blackhole_row_annotate.result
@@ -0,0 +1,457 @@
+include/master-slave.inc
+[connection master]
+SET timestamp=1000000000;
+RESET MASTER;
+connection slave;
+SET timestamp=1000000000;
+RESET MASTER;
+connection master;
+CREATE TABLE t1 (a INT, b INT, c INT);
+CREATE TABLE t2 (a INT, b INT, c INT);
+connection slave;
+ALTER TABLE t1 ENGINE=BLACKHOLE;
+connection master;
+INSERT INTO t2 VALUES (1,9,1), (2,9,2), (3,9,3), (4,9,4);
+connection slave;
+connection master;
+INSERT INTO t1 VALUES (1,1,1),(2,1,2),(3,1,3),(4,1,4);
+connection slave;
+# Expect 0
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+0
+>>> Something was written to binary log <<<
+connection master;
+UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 1;
+connection slave;
+# Expect 0
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+0
+>>> Something was written to binary log <<<
+connection master;
+DELETE FROM t1 WHERE a % 2 = 0 AND b = 1;
+connection slave;
+# Expect 0
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+0
+>>> Something was written to binary log <<<
+connection master;
+INSERT INTO t1 SELECT * FROM t2;
+connection slave;
+# Expect 0
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+0
+>>> Something was written to binary log <<<
+connection master;
+ALTER TABLE t1 ADD PRIMARY KEY pk_t1 (a,b);
+connection slave;
+connection master;
+INSERT INTO t1 VALUES (1,2,1),(2,2,2),(3,2,3),(4,2,4);
+connection slave;
+# Expect 0
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+0
+>>> Something was written to binary log <<<
+connection master;
+UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 2;
+connection slave;
+# Expect 0
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+0
+>>> Something was written to binary log <<<
+connection master;
+DELETE FROM t1 WHERE a % 2 = 0 AND b = 2;
+connection slave;
+# Expect 0
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+0
+>>> Something was written to binary log <<<
+connection master;
+ALTER TABLE t1 DROP PRIMARY KEY, ADD KEY key_t1 (a);
+connection slave;
+connection master;
+INSERT INTO t1 VALUES (1,3,1),(2,3,2),(3,3,3),(4,3,4);
+connection slave;
+# Expect 0
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+0
+>>> Something was written to binary log <<<
+connection master;
+UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 3;
+connection slave;
+# Expect 0
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+0
+>>> Something was written to binary log <<<
+connection master;
+DELETE FROM t1 WHERE a % 2 = 0 AND b = 3;
+connection slave;
+# Expect 0
+SELECT COUNT(*) FROM t1;
+COUNT(*)
+0
+>>> Something was written to binary log <<<
+connection master;
+DROP TABLE t1,t2;
+connection slave;
+connection slave;
+FLUSH LOGS;
+show binlog events in 'slave-bin.000001' from <start_pos>;
+Log_name Pos Event_type Server_id End_log_pos Info
+slave-bin.000001 # Gtid_list 2 # []
+slave-bin.000001 # Binlog_checkpoint 2 # slave-bin.000001
+slave-bin.000001 # Gtid 1 # GTID 0-1-1
+slave-bin.000001 # Query 1 # use `test`; CREATE TABLE t1 (a INT, b INT, c INT)
+slave-bin.000001 # Gtid 1 # GTID 0-1-2
+slave-bin.000001 # Query 1 # use `test`; CREATE TABLE t2 (a INT, b INT, c INT)
+slave-bin.000001 # Gtid 2 # GTID 0-2-3
+slave-bin.000001 # Query 2 # use `test`; ALTER TABLE t1 ENGINE=BLACKHOLE
+slave-bin.000001 # Gtid 1 # BEGIN GTID 0-1-3
+slave-bin.000001 # Annotate_rows 1 # INSERT INTO t2 VALUES (1,9,1), (2,9,2), (3,9,3), (4,9,4)
+slave-bin.000001 # Table_map 1 # table_id: # (test.t2)
+slave-bin.000001 # Write_rows_v1 1 # table_id: # flags: STMT_END_F
+slave-bin.000001 # Query 1 # COMMIT
+slave-bin.000001 # Gtid 1 # BEGIN GTID 0-1-4
+slave-bin.000001 # Annotate_rows 1 # INSERT INTO t1 VALUES (1,1,1),(2,1,2),(3,1,3),(4,1,4)
+slave-bin.000001 # Table_map 1 # table_id: # (test.t1)
+slave-bin.000001 # Write_rows_v1 1 # table_id: # flags: STMT_END_F
+slave-bin.000001 # Query 1 # COMMIT
+slave-bin.000001 # Gtid 1 # BEGIN GTID 0-1-5
+slave-bin.000001 # Annotate_rows 1 # UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 1
+slave-bin.000001 # Table_map 1 # table_id: # (test.t1)
+slave-bin.000001 # Update_rows_v1 1 # table_id: # flags: STMT_END_F
+slave-bin.000001 # Query 1 # COMMIT
+slave-bin.000001 # Gtid 1 # BEGIN GTID 0-1-6
+slave-bin.000001 # Annotate_rows 1 # DELETE FROM t1 WHERE a % 2 = 0 AND b = 1
+slave-bin.000001 # Table_map 1 # table_id: # (test.t1)
+slave-bin.000001 # Delete_rows_v1 1 # table_id: # flags: STMT_END_F
+slave-bin.000001 # Query 1 # COMMIT
+slave-bin.000001 # Gtid 1 # BEGIN GTID 0-1-7
+slave-bin.000001 # Annotate_rows 1 # INSERT INTO t1 SELECT * FROM t2
+slave-bin.000001 # Table_map 1 # table_id: # (test.t1)
+slave-bin.000001 # Write_rows_v1 1 # table_id: # flags: STMT_END_F
+slave-bin.000001 # Query 1 # COMMIT
+slave-bin.000001 # Gtid 1 # GTID 0-1-8
+slave-bin.000001 # Query 1 # use `test`; ALTER TABLE t1 ADD PRIMARY KEY pk_t1 (a,b)
+slave-bin.000001 # Gtid 1 # BEGIN GTID 0-1-9
+slave-bin.000001 # Annotate_rows 1 # INSERT INTO t1 VALUES (1,2,1),(2,2,2),(3,2,3),(4,2,4)
+slave-bin.000001 # Table_map 1 # table_id: # (test.t1)
+slave-bin.000001 # Write_rows_v1 1 # table_id: # flags: STMT_END_F
+slave-bin.000001 # Query 1 # COMMIT
+slave-bin.000001 # Gtid 1 # BEGIN GTID 0-1-10
+slave-bin.000001 # Annotate_rows 1 # UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 2
+slave-bin.000001 # Table_map 1 # table_id: # (test.t1)
+slave-bin.000001 # Update_rows_v1 1 # table_id: # flags: STMT_END_F
+slave-bin.000001 # Query 1 # COMMIT
+slave-bin.000001 # Gtid 1 # BEGIN GTID 0-1-11
+slave-bin.000001 # Annotate_rows 1 # DELETE FROM t1 WHERE a % 2 = 0 AND b = 2
+slave-bin.000001 # Table_map 1 # table_id: # (test.t1)
+slave-bin.000001 # Delete_rows_v1 1 # table_id: # flags: STMT_END_F
+slave-bin.000001 # Query 1 # COMMIT
+slave-bin.000001 # Gtid 1 # GTID 0-1-12
+slave-bin.000001 # Query 1 # use `test`; ALTER TABLE t1 DROP PRIMARY KEY, ADD KEY key_t1 (a)
+slave-bin.000001 # Gtid 1 # BEGIN GTID 0-1-13
+slave-bin.000001 # Annotate_rows 1 # INSERT INTO t1 VALUES (1,3,1),(2,3,2),(3,3,3),(4,3,4)
+slave-bin.000001 # Table_map 1 # table_id: # (test.t1)
+slave-bin.000001 # Write_rows_v1 1 # table_id: # flags: STMT_END_F
+slave-bin.000001 # Query 1 # COMMIT
+slave-bin.000001 # Gtid 1 # BEGIN GTID 0-1-14
+slave-bin.000001 # Annotate_rows 1 # UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 3
+slave-bin.000001 # Table_map 1 # table_id: # (test.t1)
+slave-bin.000001 # Update_rows_v1 1 # table_id: # flags: STMT_END_F
+slave-bin.000001 # Query 1 # COMMIT
+slave-bin.000001 # Gtid 1 # BEGIN GTID 0-1-15
+slave-bin.000001 # Annotate_rows 1 # DELETE FROM t1 WHERE a % 2 = 0 AND b = 3
+slave-bin.000001 # Table_map 1 # table_id: # (test.t1)
+slave-bin.000001 # Delete_rows_v1 1 # table_id: # flags: STMT_END_F
+slave-bin.000001 # Query 1 # COMMIT
+slave-bin.000001 # Gtid 1 # GTID 0-1-16
+slave-bin.000001 # Query 1 # use `test`; DROP TABLE IF EXISTS `t1`,`t2` /* generated by server */
+slave-bin.000001 # Rotate 2 # slave-bin.000002;pos=4
+/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
+/*!40019 SET @@session.max_insert_delayed_threads=0*/;
+/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
+DELIMITER /*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Start: binlog v 4, server v #.##.## created 010909 4:46:40 at startup
+ROLLBACK/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Gtid list []
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Binlog checkpoint slave-bin.000001
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX GTID 0-1-1 ddl
+/*!100101 SET @@session.skip_parallel_replication=0*//*!*/;
+/*!100001 SET @@session.gtid_domain_id=0*//*!*/;
+/*!100001 SET @@session.server_id=1*//*!*/;
+/*!100001 SET @@session.gtid_seq_no=1*//*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0
+use `test`/*!*/;
+SET TIMESTAMP=1000000000/*!*/;
+SET @@session.pseudo_thread_id=#/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1/*!*/;
+SET @@session.sql_mode=1411383296/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
+/*!\C latin1 *//*!*/;
+SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
+CREATE TABLE t1 (a INT, b INT, c INT)
+/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX GTID 0-1-2 ddl
+/*!100001 SET @@session.gtid_seq_no=2*//*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+CREATE TABLE t2 (a INT, b INT, c INT)
+/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX GTID 0-2-3 ddl
+/*!100001 SET @@session.server_id=2*//*!*/;
+/*!100001 SET @@session.gtid_seq_no=3*//*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+ALTER TABLE t1 ENGINE=BLACKHOLE
+/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX GTID 0-1-3 trans
+/*!100001 SET @@session.server_id=1*//*!*/;
+/*!100001 SET @@session.gtid_seq_no=3*//*!*/;
+BEGIN
+/*!*/;
+# at #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Annotate_rows:
+#Q> INSERT INTO t2 VALUES (1,9,1), (2,9,2), (3,9,3), (4,9,4)
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Table_map: `test`.`t2` mapped to number #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Write_rows: table id # flags: STMT_END_F
+# Number of rows: 4
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX GTID 0-1-4 trans
+/*!100001 SET @@session.gtid_seq_no=4*//*!*/;
+BEGIN
+/*!*/;
+# at #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Annotate_rows:
+#Q> INSERT INTO t1 VALUES (1,1,1),(2,1,2),(3,1,3),(4,1,4)
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Table_map: `test`.`t1` mapped to number #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Write_rows: table id # flags: STMT_END_F
+# Number of rows: 4
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX GTID 0-1-5 trans
+/*!100001 SET @@session.gtid_seq_no=5*//*!*/;
+BEGIN
+/*!*/;
+# at #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Annotate_rows:
+#Q> UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 1
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Table_map: `test`.`t1` mapped to number #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Update_rows: table id # flags: STMT_END_F
+# Number of rows: 2
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX GTID 0-1-6 trans
+/*!100001 SET @@session.gtid_seq_no=6*//*!*/;
+BEGIN
+/*!*/;
+# at #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Annotate_rows:
+#Q> DELETE FROM t1 WHERE a % 2 = 0 AND b = 1
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Table_map: `test`.`t1` mapped to number #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Delete_rows: table id # flags: STMT_END_F
+# Number of rows: 2
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX GTID 0-1-7 trans
+/*!100001 SET @@session.gtid_seq_no=7*//*!*/;
+BEGIN
+/*!*/;
+# at #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Annotate_rows:
+#Q> INSERT INTO t1 SELECT * FROM t2
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Table_map: `test`.`t1` mapped to number #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Write_rows: table id # flags: STMT_END_F
+# Number of rows: 4
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX GTID 0-1-8 ddl
+/*!100001 SET @@session.gtid_seq_no=8*//*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+ALTER TABLE t1 ADD PRIMARY KEY pk_t1 (a,b)
+/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX GTID 0-1-9 trans
+/*!100001 SET @@session.gtid_seq_no=9*//*!*/;
+BEGIN
+/*!*/;
+# at #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Annotate_rows:
+#Q> INSERT INTO t1 VALUES (1,2,1),(2,2,2),(3,2,3),(4,2,4)
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Table_map: `test`.`t1` mapped to number #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Write_rows: table id # flags: STMT_END_F
+# Number of rows: 4
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX GTID 0-1-10 trans
+/*!100001 SET @@session.gtid_seq_no=10*//*!*/;
+BEGIN
+/*!*/;
+# at #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Annotate_rows:
+#Q> UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 2
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Table_map: `test`.`t1` mapped to number #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Update_rows: table id # flags: STMT_END_F
+# Number of rows: 2
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX GTID 0-1-11 trans
+/*!100001 SET @@session.gtid_seq_no=11*//*!*/;
+BEGIN
+/*!*/;
+# at #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Annotate_rows:
+#Q> DELETE FROM t1 WHERE a % 2 = 0 AND b = 2
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Table_map: `test`.`t1` mapped to number #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Delete_rows: table id # flags: STMT_END_F
+# Number of rows: 2
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX GTID 0-1-12 ddl
+/*!100001 SET @@session.gtid_seq_no=12*//*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+ALTER TABLE t1 DROP PRIMARY KEY, ADD KEY key_t1 (a)
+/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX GTID 0-1-13 trans
+/*!100001 SET @@session.gtid_seq_no=13*//*!*/;
+BEGIN
+/*!*/;
+# at #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Annotate_rows:
+#Q> INSERT INTO t1 VALUES (1,3,1),(2,3,2),(3,3,3),(4,3,4)
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Table_map: `test`.`t1` mapped to number #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Write_rows: table id # flags: STMT_END_F
+# Number of rows: 4
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX GTID 0-1-14 trans
+/*!100001 SET @@session.gtid_seq_no=14*//*!*/;
+BEGIN
+/*!*/;
+# at #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Annotate_rows:
+#Q> UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 3
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Table_map: `test`.`t1` mapped to number #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Update_rows: table id # flags: STMT_END_F
+# Number of rows: 2
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX GTID 0-1-15 trans
+/*!100001 SET @@session.gtid_seq_no=15*//*!*/;
+BEGIN
+/*!*/;
+# at #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Annotate_rows:
+#Q> DELETE FROM t1 WHERE a % 2 = 0 AND b = 3
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Table_map: `test`.`t1` mapped to number #
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Delete_rows: table id # flags: STMT_END_F
+# Number of rows: 2
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+COMMIT
+/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX GTID 0-1-16 ddl
+/*!100001 SET @@session.gtid_seq_no=16*//*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0
+SET TIMESTAMP=1000000000/*!*/;
+DROP TABLE IF EXISTS `t1`,`t2` /* generated by server */
+/*!*/;
+# at #
+#010909 4:46:40 server id # end_log_pos # CRC32 XXX Rotate to slave-bin.000002 pos: 4
+DELIMITER ;
+# End of log file
+ROLLBACK /* added by mysqlbinlog */;
+/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
+/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
+include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/t/rpl_blackhole.test b/mysql-test/suite/rpl/t/rpl_blackhole.test
index 120f11f58ea..927f0d80778 100644
--- a/mysql-test/suite/rpl/t/rpl_blackhole.test
+++ b/mysql-test/suite/rpl/t/rpl_blackhole.test
@@ -20,81 +20,6 @@ source include/master-slave.inc;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
-# We start with no primary key
-CREATE TABLE t1 (a INT, b INT, c INT);
-CREATE TABLE t2 (a INT, b INT, c INT);
+source include/rpl_blackhole_basic.test;
-sync_slave_with_master;
-ALTER TABLE t1 ENGINE=BLACKHOLE;
-
-connection master;
-INSERT INTO t2 VALUES (1,9,1), (2,9,2), (3,9,3), (4,9,4);
-sync_slave_with_master;
-
-# Test insert, no primary key
-let $statement = INSERT INTO t1 VALUES (1,1,1),(2,1,2),(3,1,3),(4,1,4);
-source include/rpl_blackhole.test;
-
-# Test update, no primary key
-let $statement = UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 1;
-source include/rpl_blackhole.test;
-
-# Test delete, no primary key
-let $statement = DELETE FROM t1 WHERE a % 2 = 0 AND b = 1;
-source include/rpl_blackhole.test;
-
-# Test INSERT-SELECT into Blackhole, no primary key
-let $statement = INSERT INTO t1 SELECT * FROM t2;
-source include/rpl_blackhole.test;
-
-#
-# The MASTER has MyISAM as the engine for both tables. The SLAVE has Blackhole
-# on t1 (transactional engine) and MyISAM on t2 (non-transactional engine).
-#
-# In MIXED mode, the command "INSERT INTO t2 SELECT * FROM t1" is logged as
-# statement on the master. On the slave, it is tagged as unsafe because the
-# statement mixes both transactional and non-transactional engines and as such
-# its changes are logged as rows. However, due to the nature of the blackhole
-# engine, no rows are returned and thus any chain replication would make the
-# next master on the chain diverge.
-#
-# Fo this reason, we have disabled the statement.
-#
-# Test INSERT-SELECT from Blackhole, no primary key
-# let $statement = INSERT INTO t2 SELECT * FROM t1;
-# source include/rpl_blackhole.test;
-#
-
-connection master;
-ALTER TABLE t1 ADD PRIMARY KEY pk_t1 (a,b);
-
-# Test insert, primary key
-let $statement = INSERT INTO t1 VALUES (1,2,1),(2,2,2),(3,2,3),(4,2,4);
-source include/rpl_blackhole.test;
-
-# Test update, primary key
-let $statement = UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 2;
-source include/rpl_blackhole.test;
-
-# Test delete, primary key
-let $statement = DELETE FROM t1 WHERE a % 2 = 0 AND b = 2;
-source include/rpl_blackhole.test;
-
-connection master;
-ALTER TABLE t1 DROP PRIMARY KEY, ADD KEY key_t1 (a);
-
-# Test insert, key
-let $statement = INSERT INTO t1 VALUES (1,3,1),(2,3,2),(3,3,3),(4,3,4);
-source include/rpl_blackhole.test;
-
-# Test update, key
-let $statement = UPDATE t1 SET c = 2*c WHERE a % 2 = 0 AND b = 3;
-source include/rpl_blackhole.test;
-
-# Test delete, key
-let $statement = DELETE FROM t1 WHERE a % 2 = 0 AND b = 3;
-source include/rpl_blackhole.test;
-
-connection master;
-DROP TABLE t1,t2;
--source include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/t/rpl_blackhole_row_annotate-master.opt b/mysql-test/suite/rpl/t/rpl_blackhole_row_annotate-master.opt
new file mode 100644
index 00000000000..91302791099
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_blackhole_row_annotate-master.opt
@@ -0,0 +1 @@
+--binlog_annotate_row_events --timezone=GMT-3
diff --git a/mysql-test/suite/rpl/t/rpl_blackhole_row_annotate-slave.opt b/mysql-test/suite/rpl/t/rpl_blackhole_row_annotate-slave.opt
new file mode 100644
index 00000000000..7ac6a84faa7
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_blackhole_row_annotate-slave.opt
@@ -0,0 +1 @@
+--binlog_annotate_row_events --replicate_annotate_row_events
diff --git a/mysql-test/suite/rpl/t/rpl_blackhole_row_annotate.test b/mysql-test/suite/rpl/t/rpl_blackhole_row_annotate.test
new file mode 100644
index 00000000000..afc8e25766a
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_blackhole_row_annotate.test
@@ -0,0 +1,49 @@
+# ==== Purpose ====
+#
+# Test verifies that when "replicate_annotate_row_events" are enabled on slave
+# the DML operations on blackhole engine will be successful. It also ensures
+# that Annotate events are logged into slave's binary log.
+#
+# ==== Implementation ====
+#
+# Steps:
+# 0 - Enable "replicate_annotate_row_events" on slave and do DML operations
+# on master.
+# 1 - Slave server will successfully apply the DML operations and it is in
+# sync with master.
+# 2 - Verify that the "show binlog events" prints all annotate events.
+# 3 - Stream the slave's binary log using "mysqlbinlog" tool and verify
+# that the Annotate events are being displayed.
+#
+# ==== References ====
+#
+# MDEV-11094: Blackhole table updates on slave fail when row annotation is
+# enabled
+
+source include/have_blackhole.inc;
+source include/have_binlog_format_row.inc;
+source include/binlog_start_pos.inc;
+source include/master-slave.inc;
+
+SET timestamp=1000000000;
+RESET MASTER;
+connection slave;
+SET timestamp=1000000000;
+RESET MASTER;
+
+connection master;
+source include/rpl_blackhole_basic.test;
+
+# Verify on slave.
+connection slave;
+FLUSH LOGS;
+--replace_column 2 # 5 #
+--replace_result $binlog_start_pos <start_pos>
+--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
+--eval show binlog events in 'slave-bin.000001' from $binlog_start_pos
+
+let $MYSQLD_DATADIR= `select @@datadir`;
+--replace_regex /server id [0-9]*/server id #/ /server v [^ ]*/server v #.##.##/ /exec_time=[0-9]*/exec_time=#/ /thread_id=[0-9]*/thread_id=#/ /table id [0-9]*/table id #/ /mapped to number [0-9]*/mapped to number #/ /end_log_pos [0-9]*/end_log_pos #/ /# at [0-9]*/# at #/ /CRC32 0x[0-9a-f]*/CRC32 XXX/
+--exec $MYSQL_BINLOG --base64-output=decode-rows $MYSQLD_DATADIR/slave-bin.000001
+
+source include/rpl_end.inc;
diff --git a/mysql-test/suite/wsrep/disabled.def b/mysql-test/suite/wsrep/disabled.def
index c7c8f2c6216..27f3f9287b6 100644
--- a/mysql-test/suite/wsrep/disabled.def
+++ b/mysql-test/suite/wsrep/disabled.def
@@ -1,2 +1,14 @@
-wsrep.foreign_key : Sporadic failure "WSREP has not yet prepared node for application use"
+##############################################################################
+#
+# List the test cases that are to be disabled temporarily.
+#
+# Separate the test case name and the comment with ':'.
+#
+# <testcasename> : MDEV-<xxxx> <comment>
+#
+# Do not use any TAB characters for whitespace.
+#
+##############################################################################
+foreign_key : Sporadic failure "WSREP has not yet prepared node for application use"
+variables : MDEV-19746 Galera test failures because of wsrep_slave_threads identification
diff --git a/mysql-test/unstable-tests b/mysql-test/unstable-tests
index 4cb62fd0989..b707ffbb416 100644
--- a/mysql-test/unstable-tests
+++ b/mysql-test/unstable-tests
@@ -112,7 +112,6 @@ encryption.innodb_encryption_discard_import : MDEV-16116
encryption.innodb_encryption_filekeys : MDEV-15673 - Timeout
encryption.innodb_encryption_row_compressed : MDEV-16113 - Crash
encryption.innodb_first_page : MDEV-10689 - Crash
-encryption.innodb_lotoftables : MDEV-16111 - Wrong result
encryption.innodb_onlinealter_encryption : MDEV-17287 - SIGABRT on server restart
encryption.innodb_scrub : MDEV-8139 - scrubbing tests need fixing
encryption.innodb_scrub_background : MDEV-8139 - scrubbing tests need fixing