summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/suite/encryption/r/create_or_replace.result21
-rw-r--r--mysql-test/suite/encryption/t/create_or_replace.test80
2 files changed, 101 insertions, 0 deletions
diff --git a/mysql-test/suite/encryption/r/create_or_replace.result b/mysql-test/suite/encryption/r/create_or_replace.result
new file mode 100644
index 00000000000..62dac4ccc43
--- /dev/null
+++ b/mysql-test/suite/encryption/r/create_or_replace.result
@@ -0,0 +1,21 @@
+SET @save_threads = @@GLOBAL.innodb_encryption_threads;
+SET @save_tables = @@GLOBAL.innodb_encrypt_tables;
+SET default_storage_engine = InnoDB;
+SET GLOBAL innodb_encryption_threads = 4;
+CREATE TABLE `table10_int_autoinc` (`col_int_key` int, pk int auto_increment, `col_int` int, key (`col_int_key` ),primary key (pk)) engine=innodb;
+INSERT /*! IGNORE */ INTO table10_int_autoinc VALUES (NULL, NULL, -474021888) , (1, NULL, NULL) , (1141047296, NULL, NULL) , (NULL, NULL, NULL) , (NULL, NULL, 1) , (NULL, NULL, 9) , (0, NULL, 1225785344) , (NULL, NULL, 1574174720) , (2, NULL, NULL) , (6, NULL, 3);
+CREATE TABLE `table1_int_autoinc` (`col_int_key` int, pk int auto_increment, `col_int` int,key (`col_int_key` ), primary key (pk)) engine=innodb;
+CREATE TABLE `table0_int_autoinc` (`col_int_key` int, pk int auto_increment, `col_int` int, key (`col_int_key` ),primary key (pk)) engine=innodb;
+INSERT /*! IGNORE */ INTO table1_int_autoinc VALUES (4, NULL, NULL);
+INSERT IGNORE INTO `table0_int_autoinc` ( `col_int_key` ) VALUES ( 1 ), ( 3 ), ( 4 ), ( 1 );
+INSERT IGNORE INTO `table1_int_autoinc` ( `col_int` ) VALUES ( 1 ), ( 0 ), ( 7 ), ( 9 );
+INSERT IGNORE INTO `table10_int_autoinc` ( `col_int` ) VALUES ( 6 ), ( 2 ), ( 3 ), ( 6 );
+connect con1,localhost,root,,test;
+connect con2,localhost,root,,test;
+disconnect con1;
+disconnect con2;
+connection default;
+drop table create_or_replace_t, table1_int_autoinc, table0_int_autoinc,
+table10_int_autoinc;
+SET GLOBAL innodb_encryption_threads = @save_threads;
+SET GLOBAL innodb_encrypt_tables = @save_tables;
diff --git a/mysql-test/suite/encryption/t/create_or_replace.test b/mysql-test/suite/encryption/t/create_or_replace.test
new file mode 100644
index 00000000000..8d571794713
--- /dev/null
+++ b/mysql-test/suite/encryption/t/create_or_replace.test
@@ -0,0 +1,80 @@
+--source include/have_innodb.inc
+--source include/have_file_key_management_plugin.inc
+--source include/count_sessions.inc
+
+SET @save_threads = @@GLOBAL.innodb_encryption_threads;
+SET @save_tables = @@GLOBAL.innodb_encrypt_tables;
+
+SET default_storage_engine = InnoDB;
+
+#
+# MDEV-8173: InnoDB; Failing assertion: crypt_data->type == 1
+#
+
+SET GLOBAL innodb_encryption_threads = 4;
+
+CREATE TABLE `table10_int_autoinc` (`col_int_key` int, pk int auto_increment, `col_int` int, key (`col_int_key` ),primary key (pk)) engine=innodb;
+INSERT /*! IGNORE */ INTO table10_int_autoinc VALUES (NULL, NULL, -474021888) , (1, NULL, NULL) , (1141047296, NULL, NULL) , (NULL, NULL, NULL) , (NULL, NULL, 1) , (NULL, NULL, 9) , (0, NULL, 1225785344) , (NULL, NULL, 1574174720) , (2, NULL, NULL) , (6, NULL, 3);
+
+CREATE TABLE `table1_int_autoinc` (`col_int_key` int, pk int auto_increment, `col_int` int,key (`col_int_key` ), primary key (pk)) engine=innodb;
+
+CREATE TABLE `table0_int_autoinc` (`col_int_key` int, pk int auto_increment, `col_int` int, key (`col_int_key` ),primary key (pk)) engine=innodb;
+
+INSERT /*! IGNORE */ INTO table1_int_autoinc VALUES (4, NULL, NULL);
+INSERT IGNORE INTO `table0_int_autoinc` ( `col_int_key` ) VALUES ( 1 ), ( 3 ), ( 4 ), ( 1 );
+INSERT IGNORE INTO `table1_int_autoinc` ( `col_int` ) VALUES ( 1 ), ( 0 ), ( 7 ), ( 9 );
+INSERT IGNORE INTO `table10_int_autoinc` ( `col_int` ) VALUES ( 6 ), ( 2 ), ( 3 ), ( 6 );
+
+--connect (con1,localhost,root,,test)
+--connect (con2,localhost,root,,test)
+
+--disable_query_log
+
+let $i = 100;
+while ($i)
+{
+connection con1;
+send SET GLOBAL innodb_encrypt_tables = ON;
+connection default;
+CREATE OR REPLACE TABLE `create_or_replace_t` AS SELECT * FROM `table1_int_autoinc`;
+connection con2;
+send CREATE OR REPLACE TABLE `create_or_replace_t` AS SELECT * FROM `table10_int_autoinc`;
+connection default;
+send CREATE OR REPLACE TABLE `create_or_replace_t` AS SELECT * FROM `table0_int_autoinc`;
+connection con1;
+--reap;
+send SET GLOBAL innodb_encrypt_tables = OFF;
+connection con2;
+--reap;
+connection default;
+--reap;
+send CREATE OR REPLACE TABLE `create_or_replace_t` AS SELECT * FROM `table1_int_autoinc`;
+connection con2;
+send CREATE OR REPLACE TABLE `create_or_replace_t` AS SELECT * FROM `table10_int_autoinc`;
+connection con1;
+--reap;
+send SET GLOBAL innodb_encrypt_tables = ON;
+connection default;
+--reap;
+send CREATE OR REPLACE TABLE `create_or_replace_t` AS SELECT * FROM `table1_int_autoinc`;
+connection con2;
+--reap;
+CREATE OR REPLACE TABLE `create_or_replace_t` AS SELECT * FROM `table10_int_autoinc`;
+CREATE OR REPLACE TABLE `create_or_replace_t` AS SELECT * FROM `table0_int_autoinc`;
+connection con1;
+--reap;
+connection default;
+--reap;
+dec $i;
+}
+
+--enable_query_log
+disconnect con1;
+disconnect con2;
+connection default;
+drop table create_or_replace_t, table1_int_autoinc, table0_int_autoinc,
+table10_int_autoinc;
+
+SET GLOBAL innodb_encryption_threads = @save_threads;
+SET GLOBAL innodb_encrypt_tables = @save_tables;
+--source include/wait_until_count_sessions.inc