mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
ac590d9ce9
possibility, if requested in the test, to do byte-for-byte comparison of data files after recovery. This makes sense only when testing REDOs, as UNDO phase generates new log records thus data pages get new LSNs. First test of maria-recovery.test is changed to test only REDOs and do byte-for-byte comparison. mysql-test/include/maria_make_snapshot.inc: possibility to compare physically the data files (makes sense only if testing REDO phase). mysql-test/include/maria_verify_recovery.inc: allow physical comparison of data files after recovery if requested mysql-test/r/maria-recovery.result: result update (first test tests REDO only now) mysql-test/t/maria-recovery.test: first test tests REDO only now, and thus can do byte-for-byte comparison of data files.
48 lines
2.5 KiB
PHP
48 lines
2.5 KiB
PHP
# Maria helper script
|
|
# Copies table' data and index file to other directory, or back, or compares.
|
|
# The other directory looks like a database directory, so that we can
|
|
# read copies from inside mysqld, that's also why we copy the frm.
|
|
|
|
# "mms" is a namespace for Maria_Make_Snapshot
|
|
|
|
# API:
|
|
# 1) set one of
|
|
# $mms_copy : to copy table from database to spare directory
|
|
# $mms_reverse : to copy it back
|
|
# $mms_compare_physically : to compare both byte-for-byte
|
|
# 2) set $mms_table_to_use to a number N: table will be mysqltest.tN
|
|
# 3) set $mms_purpose to say what this copy is for (influences the naming
|
|
# of the spare directory).
|
|
|
|
if ($mms_copy)
|
|
{
|
|
--echo * copied t$mms_table_to_use for $mms_purpose
|
|
copy_file $MYSQLTEST_VARDIR/master-data/mysqltest/t$mms_table_to_use.MAD $MYSQLTEST_VARDIR/master-data/mysqltest_for_$mms_purpose/t$mms_table_to_use.MAD;
|
|
copy_file $MYSQLTEST_VARDIR/master-data/mysqltest/t$mms_table_to_use.MAI $MYSQLTEST_VARDIR/master-data/mysqltest_for_$mms_purpose/t$mms_table_to_use.MAI;
|
|
copy_file $MYSQLTEST_VARDIR/master-data/mysqltest/t$mms_table_to_use.frm $MYSQLTEST_VARDIR/master-data/mysqltest_for_$mms_purpose/t$mms_table_to_use.frm;
|
|
}
|
|
|
|
if ($mms_reverse_copy)
|
|
{
|
|
# do not call this without flushing target table first!
|
|
--echo * copied t$mms_table_to_use back for $mms_purpose
|
|
-- error 0,1
|
|
remove_file $MYSQLTEST_VARDIR/master-data/mysqltest/t$mms_table_to_use.MAD;
|
|
copy_file $MYSQLTEST_VARDIR/master-data/mysqltest_for_$mms_purpose/t$mms_table_to_use.MAD $MYSQLTEST_VARDIR/master-data/mysqltest/t$mms_table_to_use.MAD;
|
|
-- error 0,1
|
|
remove_file $MYSQLTEST_VARDIR/master-data/mysqltest/t$mms_table_to_use.MAI;
|
|
copy_file $MYSQLTEST_VARDIR/master-data/mysqltest_for_$mms_purpose/t$mms_table_to_use.MAI $MYSQLTEST_VARDIR/master-data/mysqltest/t$mms_table_to_use.MAI;
|
|
}
|
|
|
|
if ($mms_compare_physically)
|
|
{
|
|
# After the UNDO phase this is normally impossible
|
|
# (UNDO execution has created new log records => pages have new LSNs).
|
|
# So, do this only when testing REDO phase.
|
|
# If UNDO phase, we nevertheless compare checksums
|
|
# (see maria_verify_recovery.inc).
|
|
--echo * compared t$mms_table_to_use to old version
|
|
diff_files $MYSQLTEST_VARDIR/master-data/mysqltest/t$mms_table_to_use.MAD $MYSQLTEST_VARDIR/master-data/mysqltest_for_$mms_purpose/t$mms_table_to_use.MAD;
|
|
# index file not yet recovered
|
|
# diff_files $MYSQLTEST_VARDIR/master-data/mysqltest/t$mms_table_to_use.MAI $MYSQLTEST_VARDIR/master-data/mysqltest_for_$mms_purpose/t$mms_table_to_use.MAI;
|
|
}
|