mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
73 lines
1.9 KiB
Text
73 lines
1.9 KiB
Text
|
#
|
||
|
# WL#6965: Truncate UNDO logs.
|
||
|
#
|
||
|
|
||
|
--source include/have_innodb.inc
|
||
|
--source include/have_innodb_max_16k.inc
|
||
|
--source include/have_undo_tablespaces.inc
|
||
|
|
||
|
# The test is restarting the server to force undo truncation.
|
||
|
--source include/not_embedded.inc
|
||
|
|
||
|
SET GLOBAL innodb_fast_shutdown=0;
|
||
|
--let $restart_parameters=--innodb_undo_tablespaces=2 --innodb_undo_logs=4
|
||
|
--source include/restart_mysqld.inc
|
||
|
|
||
|
let MYSQLD_DATADIR = `select @@datadir`;
|
||
|
|
||
|
#-----------------------------------------------------------------------------
|
||
|
#
|
||
|
# 1. Perform enough DML action so that undo tablespace size grows beyond
|
||
|
# set threshold and then wait and see if it is being truncated.
|
||
|
#
|
||
|
create table t1(keyc int primary key, c1 char(100)) engine = innodb;
|
||
|
begin;
|
||
|
--disable_query_log
|
||
|
let $i=30000;
|
||
|
while ($i) {
|
||
|
eval insert into t1 values(30000-$i, '');
|
||
|
dec $i;
|
||
|
}
|
||
|
--enable_query_log
|
||
|
update t1 set c1 = 'mysql';
|
||
|
update t1 set c1 = 'oracle';
|
||
|
delete from t1;
|
||
|
commit;
|
||
|
drop table t1;
|
||
|
|
||
|
let CHECKFILE = $MYSQL_TMP_DIR/check.txt;
|
||
|
perl;
|
||
|
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size1)
|
||
|
= stat("$ENV{MYSQLD_DATADIR}/undo001");
|
||
|
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size2)
|
||
|
= stat("$ENV{MYSQLD_DATADIR}/undo002");
|
||
|
open(OUT, ">$ENV{CHECKFILE}") || die;
|
||
|
print OUT "let \$size1='$size1,$size2';\n";
|
||
|
close(OUT);
|
||
|
EOF
|
||
|
SET GLOBAL innodb_fast_shutdown=0;
|
||
|
SET GLOBAL innodb_undo_log_truncate=1;
|
||
|
SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
|
||
|
--source include/shutdown_mysqld.inc
|
||
|
--source $CHECKFILE
|
||
|
perl;
|
||
|
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size1)
|
||
|
= stat("$ENV{MYSQLD_DATADIR}/undo001");
|
||
|
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size2)
|
||
|
= stat("$ENV{MYSQLD_DATADIR}/undo002");
|
||
|
open(OUT, ">$ENV{CHECKFILE}") || die;
|
||
|
print OUT "let \$size2='$size1,$size2';\n";
|
||
|
close(OUT);
|
||
|
EOF
|
||
|
|
||
|
--source $CHECKFILE
|
||
|
--remove_file $CHECKFILE
|
||
|
|
||
|
if ($size1 == $size2)
|
||
|
{
|
||
|
echo Truncation did not happen: $size1 == $size2;
|
||
|
}
|
||
|
|
||
|
--let $restart_parameters=
|
||
|
--source include/start_mysqld.inc
|