mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			93 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
-- source include/have_innodb.inc
 | 
						|
-- source include/have_file_key_management_plugin.inc
 | 
						|
# embedded does not support restart
 | 
						|
-- source include/not_embedded.inc
 | 
						|
 | 
						|
call mtr.add_suppression("Plugin 'file_key_management'");
 | 
						|
call mtr.add_suppression("Plugin 'InnoDB' init function returned error.");
 | 
						|
call mtr.add_suppression("InnoDB: The page \\[page id: space=[1-9][0-9]*, page number=[0-9]+\\] in file '.*test/t[1-4]\\.ibd' cannot be decrypted");
 | 
						|
call mtr.add_suppression("failed to read or decrypt \\[page id: space=[1-9][0-9]*, page number=[1-9][0-9]*\\]");
 | 
						|
call mtr.add_suppression("InnoDB: Unable to decompress .*.test.t[12]\\.ibd\\[page id: space=[1-9][0-9]*, page number=[0-9]+\\]");
 | 
						|
call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t[12] page \\[page id: space=[1-9][0-9]*, page number=[0-9]*\\]");
 | 
						|
call mtr.add_suppression("InnoDB: Failed to read file '.*' at offset .*");
 | 
						|
call mtr.add_suppression("InnoDB: Plugin initialization aborted");
 | 
						|
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed");
 | 
						|
 | 
						|
--echo # Restart mysqld --file-key-management-filename=keys2.txt
 | 
						|
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
 | 
						|
-- source include/restart_mysqld.inc
 | 
						|
 | 
						|
--echo # Wait max 10 min for key encryption threads to encrypt all spaces
 | 
						|
--let $wait_timeout= 600
 | 
						|
--let $wait_condition=SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_ENCRYPTION WHERE MIN_KEY_VERSION = 0
 | 
						|
--source include/wait_condition.inc
 | 
						|
 | 
						|
SET GLOBAL innodb_file_per_table = ON;
 | 
						|
 | 
						|
create table t1(a int not null primary key auto_increment, c char(250), b blob, index(b(10))) engine=innodb row_format=compressed encrypted=yes encryption_key_id=4;
 | 
						|
create table t2(a int not null primary key auto_increment, c char(250), b blob, index(b(10))) engine=innodb row_format=compressed;
 | 
						|
create table t3(a int not null primary key auto_increment, c char(250), b blob, index(b(10))) engine=innodb encrypted=yes encryption_key_id=4;
 | 
						|
create table t4(a int not null primary key auto_increment, c char(250), b blob, index(b(10))) engine=innodb;
 | 
						|
 | 
						|
begin;
 | 
						|
--disable_query_log
 | 
						|
--let $i = 20
 | 
						|
begin;
 | 
						|
while ($i)
 | 
						|
{
 | 
						|
  insert into t1(c,b) values (repeat('secret1',20), repeat('secret2',6000));
 | 
						|
  dec $i;
 | 
						|
}
 | 
						|
--enable_query_log
 | 
						|
 | 
						|
insert into t2 select * from t1;
 | 
						|
insert into t3 select * from t1;
 | 
						|
insert into t4 select * from t1;
 | 
						|
commit;
 | 
						|
 | 
						|
--source ../../suite/innodb/include/no_checkpoint_start.inc
 | 
						|
 | 
						|
#
 | 
						|
# We test redo log page read at recv_read_page using
 | 
						|
# incorrect keys from std_data/keys.txt. If checkpoint
 | 
						|
# happens we will skip this test. If no checkpoint
 | 
						|
# happens, InnoDB refuses to start as used
 | 
						|
# encryption key is incorrect.
 | 
						|
#
 | 
						|
SET GLOBAL innodb_flush_log_at_trx_commit=1;
 | 
						|
begin;
 | 
						|
update t1 set c = repeat('secret3', 20);
 | 
						|
update t2 set c = repeat('secret4', 20);
 | 
						|
update t3 set c = repeat('secret4', 20);
 | 
						|
update t4 set c = repeat('secret4', 20);
 | 
						|
insert into t1 (c,b) values (repeat('secret5',20), repeat('secret6',6000));
 | 
						|
insert into t2 (c,b) values (repeat('secret7',20), repeat('secret8',6000));
 | 
						|
insert into t3 (c,b) values (repeat('secret9',20), repeat('secre10',6000));
 | 
						|
insert into t4 (c,b) values (repeat('secre11',20), repeat('secre12',6000));
 | 
						|
COMMIT;
 | 
						|
let $cleanup= drop table t1,t2,t3,t4;
 | 
						|
--let CLEANUP_IF_CHECKPOINT= $cleanup;
 | 
						|
--source ../../suite/innodb/include/no_checkpoint_end.inc
 | 
						|
 | 
						|
--echo # restart
 | 
						|
--error 1
 | 
						|
-- source include/start_mysqld.inc
 | 
						|
--source include/kill_mysqld.inc
 | 
						|
 | 
						|
#
 | 
						|
# Now test with innodb-force-recovery=1 i.e. ignore corrupt pages
 | 
						|
#
 | 
						|
 | 
						|
--echo # Restart mysqld --innodb-force-recovery=1
 | 
						|
-- let $restart_parameters=--innodb-force-recovery=1
 | 
						|
--error 1
 | 
						|
-- source include/start_mysqld.inc
 | 
						|
 | 
						|
--source include/kill_mysqld.inc
 | 
						|
 | 
						|
--echo # Restart mysqld --file-key-management-filename=keys2.txt
 | 
						|
-- let $restart_parameters=--file-key-management-filename=$MYSQL_TEST_DIR/std_data/keys2.txt
 | 
						|
-- source include/start_mysqld.inc
 | 
						|
 | 
						|
drop table t1, t2,t3,t4;
 |