-- source include/have_innodb.inc -- source include/have_file_key_management_plugin.inc # # MDEV-8817: Failing assertion: new_state->key_version != ENCRYPTION_KEY_VERSION_INVALID # let $encrypt_tables = `SELECT @@innodb_encrypt_tables`; let $threads = `SELECT @@innodb_encryption_threads`; SET GLOBAL innodb_encrypt_tables = ON; SET GLOBAL innodb_encryption_threads = 4; CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB ENCRYPTED=NO ENCRYPTION_KEY_ID=4; DROP TABLE t1; set innodb_default_encryption_key_id = 99; --error 1005 CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB; SHOW WARNINGS; --error 1005 CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB ENCRYPTED=YES; SHOW WARNINGS; set innodb_default_encryption_key_id = 4; CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB ENCRYPTED=YES; SHOW CREATE TABLE t1; DROP TABLE t1; CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB; SHOW CREATE TABLE t1; CREATE TABLE t2 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB ENCRYPTED=NO ENCRYPTION_KEY_ID=1; --error ER_ILLEGAL_HA_CREATE_OPTION ALTER TABLE t1 ENCRYPTION_KEY_ID=99; SHOW WARNINGS; set innodb_default_encryption_key_id = 1; --disable_warnings --disable_query_log let $i = 400; while ($i) { INSERT INTO t1 values(NULL, substring(MD5(RAND()), -128)); dec $i; } commit; INSERT INTO t2 select * from t1; --disable_abort_on_error --connect (con1,localhost,root,,test) --connect (con2,localhost,root,,test) let $i = 50; while ($i) { connection con1; send ALTER TABLE t1 ENCRYPTED=NO ENCRYPTION_KEY_ID=1; connection con2; send ALTER TABLE t1 ENCRYPTED=YES ENCRYPTION_KEY_ID=4; connection default; send ALTER TABLE t2 ENCRYPTED=NO ENCRYPTION_KEY_ID=1; connection con1; --reap; ALTER TABLE t1 ENCRYPTED=NO ENCRYPTION_KEY_ID=1; connection con2; --reap ALTER TABLE t1 ENCRYPTED=YES ENCRYPTION_KEY_ID=4; connection default; --reap ALTER TABLE t2 ENCRYPTED=YES ENCRYPTION_KEY_ID=1; ALTER TABLE t1 ENCRYPTED=NO ENCRYPTION_KEY_ID=1; dec $i; } connection default; --disconnect con1 --disconnect con2 --enable_abort_on_error --enable_warnings --enable_query_log drop table t1,t2; # # MDEV-17230: encryption_key_id from alter is ignored by encryption threads # SET GLOBAL innodb_encrypt_tables=OFF; CREATE TABLE t1 (a int not null primary key) engine=innodb; --error ER_ILLEGAL_HA_CREATE_OPTION ALTER TABLE t1 ENCRYPTION_KEY_ID=4; SHOW WARNINGS; SHOW CREATE TABLE t1; DROP TABLE t1; CREATE TABLE t2 (a int not null primary key) engine=innodb; --replace_regex /#sql-[0-9a-f_]*`/#sql-temporary`/ --error ER_CANT_CREATE_TABLE ALTER TABLE t2 ENCRYPTION_KEY_ID=4, ALGORITHM=COPY; --replace_regex /#sql-[0-9a-f_]*`/#sql-temporary`/ SHOW WARNINGS; SHOW CREATE TABLE t2; DROP TABLE t2; --error ER_CANT_CREATE_TABLE CREATE TABLE t3 (a int not null primary key) engine=innodb ENCRYPTION_KEY_ID=4; SHOW WARNINGS; # reset system --disable_query_log EVAL SET GLOBAL innodb_encrypt_tables = $encrypt_tables; EVAL SET GLOBAL innodb_encryption_threads = $threads; --enable_query_log