Commit 2dc5d8bb authored by Marko Mäkelä's avatar Marko Mäkelä

Improve an MDEV-9011 test of innodb_encrypt_log.

Test crash recovery from an encrypted redo log with innodb_encrypt_log=0.
Previously, we did a clean shutdown, so only the log checkpoint
information would have been read from the redo log. With this change,
we will be reading and applying encrypted redo log records.

include/start_mysqld.inc: Observe $restart_parameters.

encryption.innodb-log-encrypt: Remove some unnecessary statements,
and instead of restarting the server and concurrently accessing
the files while the server is running, kill the server, check the
files, and finally start up the server.

innodb.log_data_file_size: Use start_mysqld.inc with $restart_parameters.
parent 4507f1e5
# Include this script only after using shutdown_mysqld.inc # Include this script only after using shutdown_mysqld.inc
# where $_expect_file_name was initialized. # where $_expect_file_name was initialized.
# Write file to make mysql-test-run.pl start up the server again # Write file to make mysql-test-run.pl start up the server again
--exec echo "restart" > $_expect_file_name if ($restart_parameters)
{
--exec echo "restart: $restart_parameters" > $_expect_file_name
}
if (!$restart_parameters)
{
--exec echo "restart" > $_expect_file_name
}
# Turn on reconnect # Turn on reconnect
--enable_reconnect --enable_reconnect
......
...@@ -13,14 +13,14 @@ set current_num = current_num + 1; ...@@ -13,14 +13,14 @@ set current_num = current_num + 1;
end while; end while;
end// end//
commit; commit;
set autocommit=0; begin;
call innodb_insert_proc(2000); call innodb_insert_proc(2000);
commit; commit;
set autocommit=1;
update t1 set c1 = c1 +1; update t1 set c1 = c1 +1;
select count(*) from t1; select count(*) from t1;
count(*) count(*)
2000 2000
# Kill the server
# ibdata1 yes on expecting NOT FOUND # ibdata1 yes on expecting NOT FOUND
NOT FOUND /privatejanprivate/ in ibdata1 NOT FOUND /privatejanprivate/ in ibdata1
# t1 yes on expecting NOT FOUND # t1 yes on expecting NOT FOUND
......
...@@ -6,16 +6,6 @@ ...@@ -6,16 +6,6 @@
# MDEV-9011: Redo log encryption does not work # MDEV-9011: Redo log encryption does not work
# #
--disable_query_log
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
--enable_query_log
--disable_query_log
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
--enable_query_log
SET GLOBAL innodb_file_format = `Barracuda`; SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_per_table = ON; SET GLOBAL innodb_file_per_table = ON;
...@@ -35,16 +25,13 @@ end// ...@@ -35,16 +25,13 @@ end//
delimiter ;// delimiter ;//
commit; commit;
set autocommit=0; begin;
call innodb_insert_proc(2000); call innodb_insert_proc(2000);
commit; commit;
set autocommit=1;
update t1 set c1 = c1 +1; update t1 set c1 = c1 +1;
select count(*) from t1; select count(*) from t1;
-- source include/restart_mysqld.inc
--let $MYSQLD_DATADIR=`select @@datadir` --let $MYSQLD_DATADIR=`select @@datadir`
--let ib1_IBD = $MYSQLD_DATADIR/ibdata1 --let ib1_IBD = $MYSQLD_DATADIR/ibdata1
--let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd --let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd
...@@ -53,6 +40,8 @@ select count(*) from t1; ...@@ -53,6 +40,8 @@ select count(*) from t1;
--let SEARCH_RANGE = 10000000 --let SEARCH_RANGE = 10000000
--let SEARCH_PATTERN=privatejanprivate --let SEARCH_PATTERN=privatejanprivate
-- source include/kill_mysqld.inc
--echo # ibdata1 yes on expecting NOT FOUND --echo # ibdata1 yes on expecting NOT FOUND
-- let SEARCH_FILE=$ib1_IBD -- let SEARCH_FILE=$ib1_IBD
-- source include/search_pattern_in_file.inc -- source include/search_pattern_in_file.inc
...@@ -68,7 +57,7 @@ select count(*) from t1; ...@@ -68,7 +57,7 @@ select count(*) from t1;
--echo # Restart mysqld --innodb_encrypt_log=0 --echo # Restart mysqld --innodb_encrypt_log=0
-- let $restart_parameters=--innodb_encrypt_log=0 -- let $restart_parameters=--innodb_encrypt_log=0
-- source include/restart_mysqld.inc -- source include/start_mysqld.inc
insert into t1 values(5000, substring(MD5(RAND()), -64), REPEAT('publicmessage',10)); insert into t1 values(5000, substring(MD5(RAND()), -64), REPEAT('publicmessage',10));
insert into t1 values(5001, substring(MD5(RAND()), -64), REPEAT('publicmessage',10)); insert into t1 values(5001, substring(MD5(RAND()), -64), REPEAT('publicmessage',10));
...@@ -106,9 +95,3 @@ insert into t1 values(5004, substring(MD5(RAND()), -64), REPEAT('publicmessage', ...@@ -106,9 +95,3 @@ insert into t1 values(5004, substring(MD5(RAND()), -64), REPEAT('publicmessage',
drop procedure innodb_insert_proc; drop procedure innodb_insert_proc;
drop table t1; drop table t1;
# reset system
--disable_query_log
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
--enable_query_log
...@@ -23,7 +23,7 @@ perl; ...@@ -23,7 +23,7 @@ perl;
use Fcntl 'SEEK_CUR', 'SEEK_END'; use Fcntl 'SEEK_CUR', 'SEEK_END';
my $page_size = $ENV{'INNODB_PAGE_SIZE'}; my $page_size = $ENV{'INNODB_PAGE_SIZE'};
my $restart = 'restart'; my $restart;
if ($ENV{'MYSQLD_IS_DEBUG'}) if ($ENV{'MYSQLD_IS_DEBUG'})
{ {
# It is impractical to ensure that CREATE TABLE t will extend ibdata1. # It is impractical to ensure that CREATE TABLE t will extend ibdata1.
...@@ -37,17 +37,14 @@ if ($ENV{'MYSQLD_IS_DEBUG'}) ...@@ -37,17 +37,14 @@ if ($ENV{'MYSQLD_IS_DEBUG'})
while(<FILE>) { unless (/\0*/gso) { $empty_tail= 0; last } } while(<FILE>) { unless (/\0*/gso) { $empty_tail= 0; last } }
if ($empty_tail) if ($empty_tail)
{ {
$restart = 'restart: --innodb-data-file-size-debug=' . $size; $restart = "--innodb-data-file-size-debug=$size";
truncate(FILE, $page_size * $root); truncate(FILE, $page_size * $root);
} }
close FILE; close FILE;
} }
open(FILE, ">$ENV{MYSQLTEST_VARDIR}/log/start_mysqld.txt") || die; open(FILE, ">$ENV{MYSQLTEST_VARDIR}/log/start_mysqld.txt") || die;
print FILE '--exec echo "', $restart, '" > $_expect_file_name print FILE "--let \$restart_parameters=$restart\n" if $restart;
--enable_reconnect print FILE "--source include/start_mysqld.inc\n";
--source include/wait_until_connected_again.inc
--disable_reconnect
';
close FILE; close FILE;
open(FILE, "+<", "$ENV{'MYSQLD_DATADIR'}test/ibd4.ibd") or die; open(FILE, "+<", "$ENV{'MYSQLD_DATADIR'}test/ibd4.ibd") or die;
truncate(FILE, $page_size * 4); truncate(FILE, $page_size * 4);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment