mariadb/mysql-test/suite/mariabackup/undo_truncate.result
Marko Mäkelä 46aaf328ce MDEV-35830 Fix innodb_undo_log_truncate in backup
recv_sys_t::parse(): Correctly handle the storing==BACKUP case,
and simplify some logic around storing==YES as well.

The added test mariabackup.undo_truncate is based on an idea of
Thirunarayanan Balathandayuthapani. It nondeterministically (not on
every run) covers this logic, including the function backup_undo_trunc(),
for both innodb_encrypt_log=ON and innodb_encrypt_log=OFF.

Reviewed by: Debarun Banerjee
2025-01-13 16:57:11 +02:00

39 lines
1 KiB
Text

SET GLOBAL innodb_undo_log_truncate = 0;
create table t1 (keyc int primary key default 0, c char(6)) engine=innodb;
create table t2 (keyc int primary key default 0, c char(6)) engine=innodb;
CREATE PROCEDURE p(t VARCHAR(64))
BEGIN
DECLARE i TEXT DEFAULT 'insert into t1 select seq,repeat(chr(48),6)
from seq_1_to_20000';
DECLARE u1 TEXT DEFAULT 'update t1 set c=repeat(chr(32),6)';
DECLARE u2 TEXT DEFAULT 'update t1 set c=repeat(chr(64),6)';
EXECUTE IMMEDIATE REPLACE(i,'t1', t);
EXECUTE IMMEDIATE REPLACE(u1,'t1', t);
EXECUTE IMMEDIATE REPLACE(u2,'t1', t);
END;
$$
connect con1,localhost,root,,;
begin;
call p('t1');
connection default;
call p('t2');
connection con1;
commit;
disconnect con1;
connection default;
DROP PROCEDURE p;
SET GLOBAL innodb_undo_log_truncate = 1;
SET GLOBAL innodb_max_undo_log_size=DEFAULT;
SET GLOBAL innodb_max_purge_lag_wait=0;
# Prepare full backup
# shutdown server
# remove datadir
# xtrabackup move back
# restart
select count(*) from t1;
count(*)
20000
select count(*) from t2;
count(*)
20000
DROP TABLE t1,t2;