summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2019-06-18 11:30:06 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2019-06-18 11:30:06 +0300
commit3c88ce4cd112f696002d5f7461db68a3dafeb838 (patch)
tree8860f823877b8d816fbca45d9e6926bcbc8f012d /mysql-test
parent44d06cd39df2bdde6f7ac31d5340f1f683683c99 (diff)
parente85e4814eeca9123b23c23b40dd776416bfba2ca (diff)
downloadmariadb-git-3c88ce4cd112f696002d5f7461db68a3dafeb838.tar.gz
Merge 10.4 into 10.5
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.result6
-rw-r--r--mysql-test/main/derived_view.test2
-rw-r--r--mysql-test/main/grant5.result25
-rw-r--r--mysql-test/main/grant5.test38
-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/mysqld--help.result2
-rw-r--r--mysql-test/main/mysqld--help.test2
-rw-r--r--mysql-test/main/openssl_6975.test24
-rw-r--r--mysql-test/main/plugin_auth_qa_1.result3
-rw-r--r--mysql-test/main/plugin_auth_qa_1.test4
-rw-r--r--mysql-test/main/range_innodb.result18
-rw-r--r--mysql-test/main/range_innodb.test19
-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/main/tls_version.opt1
-rw-r--r--mysql-test/main/tls_version.result14
-rw-r--r--mysql-test/main/tls_version.test24
-rw-r--r--mysql-test/suite/encryption/r/innodb_lotoftables.result1171
-rw-r--r--mysql-test/suite/encryption/t/innodb_lotoftables.opt3
-rw-r--r--mysql-test/suite/encryption/t/innodb_lotoftables.test207
-rw-r--r--mysql-test/suite/galera/disabled.def2
-rw-r--r--mysql-test/suite/heap/heap.result21
-rw-r--r--mysql-test/suite/heap/heap.test1
-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/plugins/r/server_audit.result2
-rw-r--r--mysql-test/suite/plugins/r/thread_pool_server_audit.result2
-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/sys_vars/inc/sysvars_server.inc2
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_server_embedded.result12
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result12
-rw-r--r--mysql-test/suite/versioning/r/create.result4
-rw-r--r--mysql-test/suite/versioning/r/simple.result127
-rw-r--r--mysql-test/suite/versioning/t/simple.test16
-rw-r--r--mysql-test/suite/wsrep/disabled.def15
-rw-r--r--mysql-test/unstable-tests1
67 files changed, 1663 insertions, 1933 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..4f8a2b27db2
--- /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 may have retry " 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 may have retry " 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 may have retry " 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 may have retry " 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 abf087f891c..792a859d849 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 b488cbe09e4..67b9cb025b1 100644
--- a/mysql-test/main/derived_view.result
+++ b/mysql-test/main/derived_view.result
@@ -3022,7 +3022,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,
@@ -3323,8 +3323,6 @@ 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 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)
@@ -3332,6 +3330,8 @@ id select_type table type possible_keys key key_len ref rows Extra
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/grant5.result b/mysql-test/main/grant5.result
index c35e8201582..086ae7011e4 100644
--- a/mysql-test/main/grant5.result
+++ b/mysql-test/main/grant5.result
@@ -102,3 +102,28 @@ u6 Y mysql_old_password 78a302dd267f6044
u7 Y mysql_old_password 78a302dd267f6044
u8 Y nonexistent 78a302dd267f6044
drop user u1@h, u2@h, u3@h, u4@h, u5@h, u6@h, u7@h, u8@h;
+create database mysqltest_1;
+create user twg@'%' identified by 'test';
+create table mysqltest_1.t1(id int);
+grant create, drop on `mysqltest_1%`.* to twg@'%';
+grant all privileges on `mysqltest_1`.* to twg@'%';
+connect conn1,localhost,twg,test,mysqltest_1;
+insert into t1 values(1);
+disconnect conn1;
+connection default;
+revoke all privileges, grant option from twg@'%';
+grant create, drop on `mysqlt%`.* to twg@'%';
+grant all privileges on `mysqlt%1`.* to twg@'%';
+connect conn1,localhost,twg,test,mysqltest_1;
+insert into t1 values(1);
+disconnect conn1;
+connection default;
+revoke all privileges, grant option from twg@'%';
+grant create, drop on `mysqlt%`.* to twg@'%';
+grant all privileges on `%mysqltest_1`.* to twg@'%';
+connect conn1,localhost,twg,test,mysqltest_1;
+insert into t1 values(1);
+disconnect conn1;
+connection default;
+drop database mysqltest_1;
+drop user twg@'%';
diff --git a/mysql-test/main/grant5.test b/mysql-test/main/grant5.test
index cc673754461..4db262c25c1 100644
--- a/mysql-test/main/grant5.test
+++ b/mysql-test/main/grant5.test
@@ -86,3 +86,41 @@ select user,select_priv,plugin,authentication_string from mysql.user where user
# but they still can be dropped
drop user u1@h, u2@h, u3@h, u4@h, u5@h, u6@h, u7@h, u8@h;
+
+#
+# MDEV-14735 better matching order for grants
+# MDEV-14732 mysql.db privileges evaluated on order of grants rather than hierarchically
+# MDEV-8269 Correct fix for Bug #20181776 :- ACCESS CONTROL DOESN'T MATCH MOST SPECIFIC HOST WHEN IT CONTAINS WILDCARD
+#
+create database mysqltest_1;
+create user twg@'%' identified by 'test';
+create table mysqltest_1.t1(id int);
+
+# MDEV-14732 test case
+grant create, drop on `mysqltest_1%`.* to twg@'%';
+grant all privileges on `mysqltest_1`.* to twg@'%';
+connect conn1,localhost,twg,test,mysqltest_1;
+insert into t1 values(1);
+disconnect conn1;
+connection default;
+
+# prefix%suffix
+revoke all privileges, grant option from twg@'%';
+grant create, drop on `mysqlt%`.* to twg@'%';
+grant all privileges on `mysqlt%1`.* to twg@'%';
+connect conn1,localhost,twg,test,mysqltest_1;
+insert into t1 values(1);
+disconnect conn1;
+connection default;
+
+# more specific can even have a shorter prefix
+revoke all privileges, grant option from twg@'%';
+grant create, drop on `mysqlt%`.* to twg@'%';
+grant all privileges on `%mysqltest_1`.* to twg@'%';
+connect conn1,localhost,twg,test,mysqltest_1;
+insert into t1 values(1);
+disconnect conn1;
+connection default;
+
+drop database mysqltest_1;
+drop user twg@'%';
diff --git a/mysql-test/main/join.result b/mysql-test/main/join.result
index 5c7f24b8d62..1e880e1e442 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 4db32c3fad3..4f6583b6fbc 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 77d0e4154c1..864218371f4 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 6ac34a8728d..d39bf7f373f 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 43fc473c84d..dcb7365644a 100644
--- a/mysql-test/main/mdev13607.result
+++ b/mysql-test/main/mdev13607.result
@@ -79,21 +79,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 17319535557742690304 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived4> ALL NULL NULL NULL NULL 17319535557742690304 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived5> ALL NULL NULL NULL NULL 17319535557742690304 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived6> ALL NULL NULL NULL NULL 17319535557742690304 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived7> ALL NULL NULL NULL NULL 17319535557742690304 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived8> ALL NULL NULL NULL NULL 17319535557742690304 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived9> ALL NULL NULL NULL NULL 17319535557742690304 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived10> ALL NULL NULL NULL NULL 17319535557742690304 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived11> ALL NULL NULL NULL NULL 17319535557742690304 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived12> ALL NULL NULL NULL NULL 17319535557742690304 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived13> ALL NULL NULL NULL NULL 17319535557742690304 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived14> ALL NULL NULL NULL NULL 17319535557742690304 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived15> ALL NULL NULL NULL NULL 17319535557742690304 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived16> ALL NULL NULL NULL NULL 17319535557742690304 Using join buffer (incremental, BNL join)
-1 PRIMARY <derived17> ALL NULL NULL NULL NULL 17319535557742690304 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 4a16a7af3f6..4ba5c360538 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/mysqld--help.result b/mysql-test/main/mysqld--help.result
index 3eccd39eac2..070c3e43c18 100644
--- a/mysql-test/main/mysqld--help.result
+++ b/mysql-test/main/mysqld--help.result
@@ -1357,6 +1357,8 @@ The following specify which files/extra groups are read (specified before remain
--time-format=name The TIME format (ignored)
--timed-mutexes Specify whether to time mutexes. Deprecated, has no
effect.
+ --tls-version=name TLS protocol version for secure connections.. Any
+ combination of: TLSv1.0, TLSv1.1, TLSv1.2, TLSv1.3
--tmp-disk-table-size=#
Max size for data for an internal temporary on-disk
MyISAM or Aria table.
diff --git a/mysql-test/main/mysqld--help.test b/mysql-test/main/mysqld--help.test
index f0603e4e59d..0205fa4c3de 100644
--- a/mysql-test/main/mysqld--help.test
+++ b/mysql-test/main/mysqld--help.test
@@ -23,7 +23,7 @@ perl;
log-slow-queries pid-file slow-query-log-file log-basename
datadir slave-load-tmpdir tmpdir socket thread-pool-size
large-files-support lower-case-file-system system-time-zone
- collation-server character-set-server log-tc-size version.*/;
+ collation-server character-set-server log-tc-size tls-version version.*/;
# Plugins which may or may not be there:
@plugins=qw/innodb archive blackhole federated partition s3
diff --git a/mysql-test/main/openssl_6975.test b/mysql-test/main/openssl_6975.test
index 6a82d013fb6..bfcb0d56681 100644
--- a/mysql-test/main/openssl_6975.test
+++ b/mysql-test/main/openssl_6975.test
@@ -18,25 +18,25 @@ let $mysql=$MYSQL --ssl-key=$MYSQL_TEST_DIR/std_data/client-key.pem --ssl-cert=$
disable_abort_on_error;
echo TLS1.2 ciphers: user is ok with any cipher;
-exec $mysql --ssl-cipher=AES128-SHA256;
+exec $mysql --tls-version=TLSv1.2 --ssl-cipher=AES128-SHA256;
--replace_result DHE-RSA-CHACHA20-POLY1305 DHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES256-GCM-SHA384
-exec $mysql --ssl-cipher=TLSv1.2;
+exec $mysql --tls-version=TLSv1.2 --ssl-cipher=TLSv1.2;
echo TLS1.2 ciphers: user requires SSLv3 cipher AES128-SHA;
-exec $mysql --user ssl_sslv3 --ssl-cipher=AES128-SHA256;
-exec $mysql --user ssl_sslv3 --ssl-cipher=TLSv1.2;
+exec $mysql --user ssl_sslv3 --tls-version=TLSv1.2 --ssl-cipher=AES128-SHA256;
+exec $mysql --user ssl_sslv3 --tls-version=TLSv1.2 --ssl-cipher=TLSv1.2;
echo TLS1.2 ciphers: user requires TLSv1.2 cipher AES128-SHA256;
-exec $mysql --user ssl_tls12 --ssl-cipher=AES128-SHA256;
-exec $mysql --user ssl_tls12 --ssl-cipher=TLSv1.2;
+exec $mysql --user ssl_tls12 --tls-version=TLSv1.2 --ssl-cipher=AES128-SHA256;
+exec $mysql --user ssl_tls12 --tls-version=TLSv1.2 --ssl-cipher=TLSv1.2;
echo SSLv3 ciphers: user is ok with any cipher;
-exec $mysql --ssl-cipher=AES256-SHA;
-exec $mysql --ssl-cipher=SSLv3;
+exec $mysql --tls-version=TLSv1.0,TLSv1.1,TLSv1.2 --ssl-cipher=AES256-SHA;
+exec $mysql --tls-version=TLSv1.0,TLSv1.1,TLSv1.2 --ssl-cipher=SSLv3;
echo SSLv3 ciphers: user requires SSLv3 cipher AES128-SHA;
-exec $mysql --user ssl_sslv3 --ssl-cipher=AES128-SHA;
-exec $mysql --user ssl_sslv3 --ssl-cipher=SSLv3;
+exec $mysql --user ssl_sslv3 --tls-version=TLSv1.0,TLSv1.1,TLSv1.2 --ssl-cipher=AES128-SHA;
+exec $mysql --user ssl_sslv3 --tls-version=TLSv1.0,TLSv1.1,TLSv1.2 --ssl-cipher=SSLv3;
echo SSLv3 ciphers: user requires TLSv1.2 cipher AES128-SHA256;
-exec $mysql --user ssl_tls12 --ssl-cipher=AES128-SHA;
-exec $mysql --user ssl_tls12 --ssl-cipher=SSLv3;
+exec $mysql --user ssl_tls12 --tls-version=TLSv1.0,TLSv1.1,TLSv1.2 --ssl-cipher=AES128-SHA;
+exec $mysql --user ssl_tls12 --tls-version=TLSv1.0,TLSv1.1,TLSv1.2 --ssl-cipher=SSLv3;
drop user ssl_sslv3@localhost;
drop user ssl_tls12@localhost;
diff --git a/mysql-test/main/plugin_auth_qa_1.result b/mysql-test/main/plugin_auth_qa_1.result
index d2d902cb6a6..261767d4cd2 100644
--- a/mysql-test/main/plugin_auth_qa_1.result
+++ b/mysql-test/main/plugin_auth_qa_1.result
@@ -4,6 +4,9 @@ User plugin authentication_string
========== test 1.1.3.2 ====================================
CREATE USER plug_user IDENTIFIED WITH test_plugin_server AS 'plug_dest';
CREATE USER plug_dest IDENTIFIED BY 'plug_dest_passwd';
+GRANT PROXY ON `plug%dest` TO plug_user;
+ERROR 1045 (28000): Access denied for user 'plug_user'@'localhost' (using password: YES)
+REVOKE PROXY ON `plug%dest` FROM plug_user;
GRANT PROXY ON plug_dest TO plug_user;
current_user()
plug_dest@%
diff --git a/mysql-test/main/plugin_auth_qa_1.test b/mysql-test/main/plugin_auth_qa_1.test
index fb577fc178f..17fbf2ca25e 100644
--- a/mysql-test/main/plugin_auth_qa_1.test
+++ b/mysql-test/main/plugin_auth_qa_1.test
@@ -13,6 +13,10 @@ SELECT user,plugin,authentication_string FROM mysql.user WHERE user != 'root';
# CREATE...WITH/CREATE...BY/GRANT
CREATE USER plug_user IDENTIFIED WITH test_plugin_server AS 'plug_dest';
CREATE USER plug_dest IDENTIFIED BY 'plug_dest_passwd';
+GRANT PROXY ON `plug%dest` TO plug_user;
+--error 1
+--exec $MYSQL -S $MASTER_MYSOCK -u plug_user --password=plug_dest -e "SELECT current_user();SELECT user();USE test_user_db;CREATE TABLE t1(a int);SHOW TABLES;DROP TABLE t1;" 2>&1
+REVOKE PROXY ON `plug%dest` FROM plug_user;
GRANT PROXY ON plug_dest TO plug_user;
--replace_result $MASTER_MYSOCK MASTER_MYSOCK
--exec $MYSQL -S $MASTER_MYSOCK -u plug_user --password=plug_dest -e "SELECT current_user();SELECT user();USE test_user_db;CREATE TABLE t1(a int);SHOW TABLES;DROP TABLE t1;" 2>&1
diff --git a/mysql-test/main/range_innodb.result b/mysql-test/main/range_innodb.result
index 30161a2711d..8774a623826 100644
--- a/mysql-test/main/range_innodb.result
+++ b/mysql-test/main/range_innodb.result
@@ -80,3 +80,21 @@ ERROR HY000: Table definition has changed, please retry transaction
DROP TABLE t0,t1;
set @@global.debug_dbug="-d";
set @@optimizer_switch= @optimizer_switch_save;
+#
+# MDEV-19634: Assertion `0' failed in row_sel_convert_mysql_key_to_innobase,
+# [Warning] InnoDB: Using a partial-field key prefix in search
+#
+CREATE TABLE t1 (
+pk INT,
+a VARCHAR(1),
+b INT,
+PRIMARY KEY (pk),
+KEY (a,b)
+) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,'a',1),(2,'b',2);
+explain SELECT a FROM t1 WHERE pk < 0 AND a <= 'w' and b > 0;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index PRIMARY,a a 9 NULL 2 Using where; Using index
+SELECT a FROM t1 WHERE pk < 0 AND a <= 'w' and b > 0;
+a
+drop table t1;
diff --git a/mysql-test/main/range_innodb.test b/mysql-test/main/range_innodb.test
index a17ef3f1146..2c225df27fe 100644
--- a/mysql-test/main/range_innodb.test
+++ b/mysql-test/main/range_innodb.test
@@ -87,3 +87,22 @@ select * from t1 where a=10 and b=10;
DROP TABLE t0,t1;
set @@global.debug_dbug="-d";
set @@optimizer_switch= @optimizer_switch_save;
+
+--echo #
+--echo # MDEV-19634: Assertion `0' failed in row_sel_convert_mysql_key_to_innobase,
+--echo # [Warning] InnoDB: Using a partial-field key prefix in search
+--echo #
+
+CREATE TABLE t1 (
+ pk INT,
+ a VARCHAR(1),
+ b INT,
+ PRIMARY KEY (pk),
+ KEY (a,b)
+) ENGINE=InnoDB;
+
+INSERT INTO t1 VALUES (1,'a',1),(2,'b',2);
+
+explain SELECT a FROM t1 WHERE pk < 0 AND a <= 'w' and b > 0;
+SELECT a FROM t1 WHERE pk < 0 AND a <= 'w' and b > 0;
+drop table t1;
diff --git a/mysql-test/main/subselect.result b/mysql-test/main/subselect.result
index 8c8c034c7cc..1fdf8d19ba6 100644
--- a/mysql-test/main/subselect.result
+++ b/mysql-test/main/subselect.result
@@ -6988,7 +6988,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 8ffe6643670..64bdfb499b4 100644
--- a/mysql-test/main/subselect_mat.result
+++ b/mysql-test/main/subselect_mat.result
@@ -2517,6 +2517,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 1bcc1a5ecb3..613a0d8dd6c 100644
--- a/mysql-test/main/subselect_no_exists_to_in.result
+++ b/mysql-test/main/subselect_no_exists_to_in.result
@@ -6988,7 +6988,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 2876e190e68..982e701231d 100644
--- a/mysql-test/main/subselect_no_mat.result
+++ b/mysql-test/main/subselect_no_mat.result
@@ -6982,7 +6982,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 47f554a78ef..1937f2af8f6 100644
--- a/mysql-test/main/subselect_no_opts.result
+++ b/mysql-test/main/subselect_no_opts.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_scache.result b/mysql-test/main/subselect_no_scache.result
index 70968786fd0..929af9b4b1f 100644
--- a/mysql-test/main/subselect_no_scache.result
+++ b/mysql-test/main/subselect_no_scache.result
@@ -6994,7 +6994,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 c9a52512614..52c81e58a49 100644
--- a/mysql-test/main/subselect_no_semijoin.result
+++ b/mysql-test/main/subselect_no_semijoin.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_sj_mat.result b/mysql-test/main/subselect_sj_mat.result
index 670489c17da..61caa0f1fbe 100644
--- a/mysql-test/main/subselect_sj_mat.result
+++ b/mysql-test/main/subselect_sj_mat.result
@@ -2553,6 +2553,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 8ba65c4454d..91a67faba57 100644
--- a/mysql-test/main/subselect_sj_mat.test
+++ b/mysql-test/main/subselect_sj_mat.test
@@ -2248,6 +2248,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/main/tls_version.opt b/mysql-test/main/tls_version.opt
new file mode 100644
index 00000000000..5f30e3749a4
--- /dev/null
+++ b/mysql-test/main/tls_version.opt
@@ -0,0 +1 @@
+--tls_version=TLSv1.1,TLSv1.2
diff --git a/mysql-test/main/tls_version.result b/mysql-test/main/tls_version.result
new file mode 100644
index 00000000000..d1b20a121fe
--- /dev/null
+++ b/mysql-test/main/tls_version.result
@@ -0,0 +1,14 @@
+Variable_name Value
+Ssl_version TLSv1.2
+Variable_name Value
+Ssl_version TLSv1.2
+Variable_name Value
+Ssl_version TLSv1.1
+Variable_name Value
+Ssl_version TLSv1.1
+Variable_name Value
+Ssl_version TLSv1.2
+Variable_name Value
+Ssl_version TLSv1.2
+@@tls_version
+TLSv1.1,TLSv1.2
diff --git a/mysql-test/main/tls_version.test b/mysql-test/main/tls_version.test
new file mode 100644
index 00000000000..875fed19821
--- /dev/null
+++ b/mysql-test/main/tls_version.test
@@ -0,0 +1,24 @@
+# Tests for SSL connections, only run if mysqld is compiled
+# with support for SSL.
+
+-- source include/have_ssl_communication.inc
+#default is highest available version: TLSv1.2
+--exec $MYSQL --host=localhost --ssl -e "show status like 'ssl_version';"
+# TLSv1.2
+--exec $MYSQL --host=localhost --ssl --tls_version=TLSv1.2 -e "show status like 'ssl_version';"
+# TLSv1.1
+--exec $MYSQL --host=localhost --ssl --tls_version=TLSv1.1 -e "show status like 'ssl_version';"
+# if a gap is between TLS versions, lowest version number should be used (TLS1.1)
+--exec $MYSQL --host=localhost --ssl --tls_version=TLSv1.1,TLSv1.3 -e "show status like 'ssl_version';"
+# TLSv1.3 is not enabled, so TLSv1.2 should be used
+--exec $MYSQL --host=localhost --ssl --tls_version=TLSv1.2,TLSv1.3 -e "show status like 'ssl_version';"
+# Highest TLS version number should be used (TLSv1.2)
+--exec $MYSQL --host=localhost --ssl --tls_version=TLSv1.1,TLSv1.2 -e "show status like 'ssl_version';"
+# Errors:
+# TLS v1.0 is disabled on server, so we should get an error
+--replace_regex /2026 SSL connection error.*/2026 SSL connection error: xxxx/
+--error 1
+--exec $MYSQL --host=localhost --ssl --tls_version=TLSv1.0 -e "show status like 'ssl_version';"
+# finally list available protocols
+--exec $MYSQL --host=localhost --ssl -e "select @@tls_version;"
+
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 e651ee01487..00000000000
--- a/mysql-test/suite/encryption/r/innodb_lotoftables.result
+++ /dev/null
@@ -1,1171 +0,0 @@
-SET GLOBAL innodb_fast_shutdown=0;
-# restart
-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;
-set autocommit=0;
-set autocommit=1;
-commit work;
-# 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;
-set autocommit=0;
-commit work;
-set autocommit=1;
-# 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;
-set autocommit=0;
-commit work;
-set autocommit=1;
-# 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;
-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
-# Success!
-# Restart mysqld --innodb_encrypt_tables=0 --innodb_encryption_threads=0
-# restart: --innodb_encrypt_tables=0 --innodb_encryption_threads=0
-# Restart Success!
-use innodb_encrypted_1;
-use innodb_encrypted_2;
-use innodb_encrypted_3;
-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 413fc8685f2..00000000000
--- a/mysql-test/suite/encryption/t/innodb_lotoftables.test
+++ /dev/null
@@ -1,207 +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;
-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;
-#
-# 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;
-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;
-#
-# 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;
-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;
-#
-# 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;
-
-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;
-
---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!
-
-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
-
-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
-
-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 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 9a9524f9a82..8b3e5500709 100644
--- a/mysql-test/suite/galera/disabled.def
+++ b/mysql-test/suite/galera/disabled.def
@@ -18,6 +18,7 @@ MW-328C : MDEV-17847 Galera test failure on MW-328[A|B|C]
MW-329 : wsrep_local_replays not stable
MW-336 : MDEV-13549 incorrect wait_condition for wsrep_slave_threads changes
MW-360 : needs rewrite to be MariaDB gtid compatible
+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
@@ -49,6 +50,7 @@ galera_var_node_address : MDEV-17151 Galera test failure
galera_var_notify_cmd : MDEV-13549 Galera test failures
galera_var_reject_queries : assertion in inline_mysql_socket_send
galera_var_retry_autocommit: MDEV-18181 Galera test failure on galera.galera_var_retry_autocommit
+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
mysql-wsrep#198 : MDEV-18935 Galera test mysql-wsrep#198 sporaric assertion transaction.cpp:362: int wsrep::transaction::before_commit(): Assertion `state() == s_executing || state() == s_committing || state() == s_must_abort || state() == s_replaying' failed.
partition : MDEV-13549 regularly showing auto_increment mismatch
diff --git a/mysql-test/suite/heap/heap.result b/mysql-test/suite/heap/heap.result
index 326142a71a4..e8d1341aa9b 100644
--- a/mysql-test/suite/heap/heap.result
+++ b/mysql-test/suite/heap/heap.result
@@ -563,32 +563,32 @@ t1 CREATE TABLE `t1` (
) ENGINE=MEMORY DEFAULT CHARSET=latin1
select count(*) from t1;
count(*)
-270
+267
insert into t1 values(concat('a',char(1)),concat('a',char(1)),concat('a',char(1)));
select count(*) from t1 where v='a';
count(*)
-10
+7
select count(*) from t1 where c='a';
count(*)
-10
+7
select count(*) from t1 where t='a';
count(*)
-10
+7
select count(*) from t1 where v='a ';
count(*)
-10
+7
select count(*) from t1 where c='a ';
count(*)
-10
+7
select count(*) from t1 where t='a ';
count(*)
-10
+7
select count(*) from t1 where v between 'a' and 'a ';
count(*)
-10
+7
select count(*) from t1 where v between 'a' and 'a ' and v between 'a ' and 'b\n';
count(*)
-10
+7
explain select count(*) from t1 where v='a ';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v v 13 const # Using where
@@ -618,9 +618,6 @@ qq
*a *a*a *
*a *a*a *
*a *a*a *
-*a *a*a *
-*a *a*a *
-*a *a*a *
explain select * from t1 where v='a';
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref v v 13 const # Using where
diff --git a/mysql-test/suite/heap/heap.test b/mysql-test/suite/heap/heap.test
index ea07d020e4d..237685a6423 100644
--- a/mysql-test/suite/heap/heap.test
+++ b/mysql-test/suite/heap/heap.test
@@ -337,6 +337,7 @@ while ($1)
}
dec $1;
}
+delete from t1 where v like 'a%' and length(v) > 7;
commit;
--enable_query_log
select count(*) from t1;
diff --git a/mysql-test/suite/innodb/r/innodb-64k-crash.result b/mysql-test/suite/innodb/r/innodb-64k-crash.result
index 0ff5c81f3a2..765abbc2cd4 100644
--- a/mysql-test/suite/innodb/r/innodb-64k-crash.result
+++ b/mysql-test/suite/innodb/r/innodb-64k-crash.result
@@ -271,320 +271,14 @@ 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;
+connect con1,localhost,root,,;
+SET GLOBAL innodb_flush_log_at_trx_commit=1;
+DELETE FROM t2 LIMIT 1;
+disconnect con1;
+connection default;
# restart
-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
+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 d81d613e7f1..bd8784236b6 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;
@@ -47,8 +48,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/plugins/r/server_audit.result b/mysql-test/suite/plugins/r/server_audit.result
index 39614b4505c..215625c4500 100644
--- a/mysql-test/suite/plugins/r/server_audit.result
+++ b/mysql-test/suite/plugins/r/server_audit.result
@@ -293,10 +293,10 @@ TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'insert into t2 values (1), (2)',0
TIME,HOSTNAME,root,localhost,ID,ID,READ,test,t2,
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select * from t2',0
TIME,HOSTNAME,root,localhost,ID,ID,ALTER,test,t1,
+TIME,HOSTNAME,root,localhost,ID,ID,RENAME,test,t1|test.renamed_t1,
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,table_stats,
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,column_stats,
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,index_stats,
-TIME,HOSTNAME,root,localhost,ID,ID,RENAME,test,t1|test.renamed_t1,
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'alter table t1 rename renamed_t1',0
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'set global server_audit_events=\'connect,query\'',0
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select 1,\n2,\n# comment\n3',0
diff --git a/mysql-test/suite/plugins/r/thread_pool_server_audit.result b/mysql-test/suite/plugins/r/thread_pool_server_audit.result
index 1a3a7d4c5bf..8c6ece53227 100644
--- a/mysql-test/suite/plugins/r/thread_pool_server_audit.result
+++ b/mysql-test/suite/plugins/r/thread_pool_server_audit.result
@@ -266,10 +266,10 @@ TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'insert into t2 values (1), (2)',0
TIME,HOSTNAME,root,localhost,ID,ID,READ,test,t2,
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select * from t2',0
TIME,HOSTNAME,root,localhost,ID,ID,ALTER,test,t1,
+TIME,HOSTNAME,root,localhost,ID,ID,RENAME,test,t1|test.renamed_t1,
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,table_stats,
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,column_stats,
TIME,HOSTNAME,root,localhost,ID,ID,WRITE,mysql,index_stats,
-TIME,HOSTNAME,root,localhost,ID,ID,RENAME,test,t1|test.renamed_t1,
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'alter table t1 rename renamed_t1',0
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'set global server_audit_events=\'connect,query\'',0
TIME,HOSTNAME,root,localhost,ID,ID,QUERY,test,'select 1,\n2,\n# comment\n3',0
diff --git a/mysql-test/suite/rpl/disabled.def b/mysql-test/suite/rpl/disabled.def
index e5f708051ed..3ac023c9f4f 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/sys_vars/inc/sysvars_server.inc b/mysql-test/suite/sys_vars/inc/sysvars_server.inc
index af1b0ce4563..56053449bae 100644
--- a/mysql-test/suite/sys_vars/inc/sysvars_server.inc
+++ b/mysql-test/suite/sys_vars/inc/sysvars_server.inc
@@ -31,6 +31,7 @@ select * from information_schema.system_variables
'rand_seed1',
'rand_seed2',
'system_time_zone',
+ 'tls_version',
'version_comment',
'version_source_revision',
'version_compile_machine', 'version_compile_os',
@@ -55,6 +56,7 @@ select VARIABLE_NAME, VARIABLE_SCOPE, VARIABLE_TYPE, VARIABLE_COMMENT,
'rand_seed1',
'rand_seed2',
'system_time_zone',
+ 'tls_version',
'version_comment',
'version_source_revision',
'version_compile_machine', 'version_compile_os',
diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result
index 509e098498d..0b587ab82c2 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result
@@ -20,6 +20,7 @@ variable_name not in (
'rand_seed1',
'rand_seed2',
'system_time_zone',
+'tls_version',
'version_comment',
'version_source_revision',
'version_compile_machine', 'version_compile_os',
@@ -4661,6 +4662,7 @@ where variable_name in (
'rand_seed1',
'rand_seed2',
'system_time_zone',
+'tls_version',
'version_comment',
'version_source_revision',
'version_compile_machine', 'version_compile_os',
@@ -4767,6 +4769,16 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST NULL
READ_ONLY YES
COMMAND_LINE_ARGUMENT NULL
+VARIABLE_NAME TLS_VERSION
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE SET
+VARIABLE_COMMENT TLS protocol version for secure connections.
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST TLSv1.0,TLSv1.1,TLSv1.2,TLSv1.3
+READ_ONLY YES
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME VERSION
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE VARCHAR
diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
index 043cd983734..cd39a9e9882 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
@@ -20,6 +20,7 @@ variable_name not in (
'rand_seed1',
'rand_seed2',
'system_time_zone',
+'tls_version',
'version_comment',
'version_source_revision',
'version_compile_machine', 'version_compile_os',
@@ -5753,6 +5754,7 @@ where variable_name in (
'rand_seed1',
'rand_seed2',
'system_time_zone',
+'tls_version',
'version_comment',
'version_source_revision',
'version_compile_machine', 'version_compile_os',
@@ -5859,6 +5861,16 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST NULL
READ_ONLY YES
COMMAND_LINE_ARGUMENT NULL
+VARIABLE_NAME TLS_VERSION
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE SET
+VARIABLE_COMMENT TLS protocol version for secure connections.
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST TLSv1.0,TLSv1.1,TLSv1.2,TLSv1.3
+READ_ONLY YES
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME VERSION
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE VARCHAR
diff --git a/mysql-test/suite/versioning/r/create.result b/mysql-test/suite/versioning/r/create.result
index ce19d83fcda..4b4354e169d 100644
--- a/mysql-test/suite/versioning/r/create.result
+++ b/mysql-test/suite/versioning/r/create.result
@@ -54,7 +54,7 @@ character_octet_length NULL
character_set_name NULL
collation_name NULL
column_key
-extra INVISIBLE
+extra STORED GENERATED, INVISIBLE
column_comment start
is_generated ALWAYS
generation_expression ROW START
@@ -69,7 +69,7 @@ character_octet_length NULL
character_set_name NULL
collation_name NULL
column_key
-extra INVISIBLE
+extra STORED GENERATED, INVISIBLE
column_comment end
is_generated ALWAYS
generation_expression ROW END
diff --git a/mysql-test/suite/versioning/r/simple.result b/mysql-test/suite/versioning/r/simple.result
index 7b42fed45c5..df47f80c9e9 100644
--- a/mysql-test/suite/versioning/r/simple.result
+++ b/mysql-test/suite/versioning/r/simple.result
@@ -71,3 +71,130 @@ and d.dept_id = e.dept_id;
emp_id dept_id name salary dept_id name
1 10 bill 2000 10 accounting
drop table emp, dept;
+create table t1 (
+a timestamp(6),
+b timestamp(6) generated always as (a + interval 1 day),
+c timestamp(6) generated always as (a + interval 1 month) stored,
+d timestamp(6) generated always as row start,
+e timestamp(6) generated always as row end,
+period for system_time(d,e)
+) with system versioning;
+show columns from t1;
+Field Type Null Key Default Extra
+a timestamp(6) NO current_timestamp(6) on update current_timestamp(6)
+b timestamp(6) YES NULL VIRTUAL GENERATED
+c timestamp(6) YES NULL STORED GENERATED
+d timestamp(6) NO NULL STORED GENERATED
+e timestamp(6) NO NULL STORED GENERATED
+select table_catalog,table_schema,table_name,column_name,ordinal_position,column_default,is_nullable,data_type,character_maximum_length,character_octet_length,numeric_precision,numeric_scale,datetime_precision,character_set_name,collation_name,column_type,column_key,extra,column_comment,is_generated,generation_expression,'---' from information_schema.columns where table_name='t1';
+table_catalog def
+table_schema test
+table_name t1
+column_name a
+ordinal_position 1
+column_default current_timestamp(6)
+is_nullable NO
+data_type timestamp
+character_maximum_length NULL
+character_octet_length NULL
+numeric_precision NULL
+numeric_scale NULL
+datetime_precision 6
+character_set_name NULL
+collation_name NULL
+column_type timestamp(6)
+column_key
+extra on update current_timestamp(6)
+column_comment
+is_generated NEVER
+generation_expression NULL
+--- ---
+table_catalog def
+table_schema test
+table_name t1
+column_name b
+ordinal_position 2
+column_default NULL
+is_nullable YES
+data_type timestamp
+character_maximum_length NULL
+character_octet_length NULL
+numeric_precision NULL
+numeric_scale NULL
+datetime_precision 6
+character_set_name NULL
+collation_name NULL
+column_type timestamp(6)
+column_key
+extra VIRTUAL GENERATED
+column_comment
+is_generated ALWAYS
+generation_expression `a` + interval 1 day
+--- ---
+table_catalog def
+table_schema test
+table_name t1
+column_name c
+ordinal_position 3
+column_default NULL
+is_nullable YES
+data_type timestamp
+character_maximum_length NULL
+character_octet_length NULL
+numeric_precision NULL
+numeric_scale NULL
+datetime_precision 6
+character_set_name NULL
+collation_name NULL
+column_type timestamp(6)
+column_key
+extra STORED GENERATED
+column_comment
+is_generated ALWAYS
+generation_expression `a` + interval 1 month
+--- ---
+table_catalog def
+table_schema test
+table_name t1
+column_name d
+ordinal_position 4
+column_default NULL
+is_nullable NO
+data_type timestamp
+character_maximum_length NULL
+character_octet_length NULL
+numeric_precision NULL
+numeric_scale NULL
+datetime_precision 6
+character_set_name NULL
+collation_name NULL
+column_type timestamp(6)
+column_key
+extra STORED GENERATED
+column_comment
+is_generated ALWAYS
+generation_expression ROW START
+--- ---
+table_catalog def
+table_schema test
+table_name t1
+column_name e
+ordinal_position 5
+column_default NULL
+is_nullable NO
+data_type timestamp
+character_maximum_length NULL
+character_octet_length NULL
+numeric_precision NULL
+numeric_scale NULL
+datetime_precision 6
+character_set_name NULL
+collation_name NULL
+column_type timestamp(6)
+column_key
+extra STORED GENERATED
+column_comment
+is_generated ALWAYS
+generation_expression ROW END
+--- ---
+drop table t1;
diff --git a/mysql-test/suite/versioning/t/simple.test b/mysql-test/suite/versioning/t/simple.test
index d61e9ffd47c..b550b3967d9 100644
--- a/mysql-test/suite/versioning/t/simple.test
+++ b/mysql-test/suite/versioning/t/simple.test
@@ -71,3 +71,19 @@ where d.dept_id = 10
and d.dept_id = e.dept_id;
drop table emp, dept;
+
+#
+# MDEV-16804 SYSTEM VERSIONING columns not showing as GENERATED
+#
+create table t1 (
+ a timestamp(6),
+ b timestamp(6) generated always as (a + interval 1 day),
+ c timestamp(6) generated always as (a + interval 1 month) stored,
+ d timestamp(6) generated always as row start,
+ e timestamp(6) generated always as row end,
+ period for system_time(d,e)
+) with system versioning;
+show columns from t1;
+query_vertical select table_catalog,table_schema,table_name,column_name,ordinal_position,column_default,is_nullable,data_type,character_maximum_length,character_octet_length,numeric_precision,numeric_scale,datetime_precision,character_set_name,collation_name,column_type,column_key,extra,column_comment,is_generated,generation_expression,'---' from information_schema.columns where table_name='t1';
+drop table t1;
+
diff --git a/mysql-test/suite/wsrep/disabled.def b/mysql-test/suite/wsrep/disabled.def
index 61142398372..276ed34f747 100644
--- a/mysql-test/suite/wsrep/disabled.def
+++ b/mysql-test/suite/wsrep/disabled.def
@@ -1,3 +1,16 @@
-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
wsrep.pool_of_threads : Sporadic failure "WSREP has not yet prepared node for application use"
wsrep.variables : Global wsrep_on manipulation causes debug asserts
diff --git a/mysql-test/unstable-tests b/mysql-test/unstable-tests
index 045e220ac55..7246d2cc73e 100644
--- a/mysql-test/unstable-tests
+++ b/mysql-test/unstable-tests
@@ -102,7 +102,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