#
# MDEV-19229 Allow innodb_undo_tablespaces to be changed
# after database creation
#
call mtr.add_suppression("Found .* prepared XA transactions" );
call mtr.add_suppression("InnoDB: Plugin initialization aborted" );
call mtr.add_suppression("Plugin 'InnoDB' init function returned error" );
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed" );
call mtr.add_suppression("InnoDB: Cannot change innodb_undo_tablespaces=\\d+ because previous shutdown was not with innodb_fast_shutdown=0" );
CREATE TABLE t1(f1 INT NOT NULL)ENGINE=InnoDB;
# case 1 : XA transaction alone left
InnoDB 0 transactions not purged
XA START 'zombie' ;
INSERT INTO t1 VALUES(2 );
XA END 'zombie' ;
XA PREPARE 'zombie' ;
# restart
# Display 4 undo tablespaces
select @@global.innodb_undo_tablespaces;
@@global.innodb_undo_tablespaces
4
# Should list 4 undo log tablespaces
undo001
undo002
undo003
undo004
XA COMMIT 'zombie' ;
# case 2 : Successful innodb_undo_tablespace upgrade
SET GLOBAL innodb_fast_shutdown=0 ;
# restart: --innodb_undo_tablespaces=2 --innodb-log-recovery-start=0
# Display 2 undo tablespaces
SELECT @@global.innodb_undo_tablespaces;
@@global.innodb_undo_tablespaces
2
# Should list 2 undo log tablespaces
undo001
undo002
DROP TABLE t1;
InnoDB 0 transactions not purged
# case 3 : Reduce the innodb_undo_tablespace to 0
# restart: --innodb_undo_tablespaces=0 --innodb-log-recovery-start=0
# Display 0 undo tablespace
SELECT @@global.innodb_undo_tablespaces;
@@global.innodb_undo_tablespaces
0
# Shouldn't list any undo log tablespaces
# case 4 : Change undo tablespace when force_recovery < 5
# restart: --innodb_undo_tablespaces=2 --innodb_force_recovery=4 --innodb-log-recovery-start=0
# Display 2 undo tablespace
SELECT @@global.innodb_undo_tablespaces;
@@global.innodb_undo_tablespaces
2
# Should list 2 undo log tablespaces
undo001
undo002
# case 5 : Fail to change undo tablespace when force_recovery > 4
# restart: --innodb_undo_tablespaces=4 --innodb_force_recovery=5 --innodb-log-recovery-start=0
# Display 2 undo tablespace
SELECT @@global.innodb_undo_tablespaces;
@@global.innodb_undo_tablespaces
2
# Should list 2 undo log tablespaces, not 4
undo001
undo002
#
# MDEV-34200 InnoDB tries to write to read-only
# system tablespace in buf_dblwr_t::init_or_load_pages()
#
SET GLOBAL innodb_fast_shutdown=0 ;
# restart: --innodb_undo_tablespaces=4 --innodb-log-recovery-start=0
# Should list 4 undo log tablespaces
undo001
undo002
undo003
undo004
set global innodb_fast_shutdown=0 ;
# restart: --innodb_read_only=1 --innodb-log-recovery-start=0
set global innodb_fast_shutdown=0 ;
# restart: --innodb-data-file-path=ibdata1:1 M:autoextend --innodb_undo_directory=MYSQLTEST_VARDIR/tmp/undo_dir --innodb-log-recovery-start=0 --innodb-data-home-dir=MYSQLTEST_VARDIR/tmp/bugdir --innodb-log-group-home-dir=MYSQLTEST_VARDIR/tmp/bugdir --innodb_undo_tablespaces=3
# Should list 3 undo log tablespaces
undo001
undo002
undo003
set global innodb_fast_shutdown=0 ;
# restart: --innodb-data-file-path=ibdata1:1 M:autoextend --innodb_undo_directory=MYSQLTEST_VARDIR/tmp/undo_dir --innodb-log-recovery-start=0 --innodb-data-home-dir=MYSQLTEST_VARDIR/tmp/bugdir_1 --innodb-log-group-home-dir=MYSQLTEST_VARDIR/tmp/bugdir_1 --innodb_undo_tablespaces=0
# Shouldn't list 0 undo log tablespaces
set global innodb_fast_shutdown=0 ;
# restart: --innodb-log-recovery-start=0
Messung V0.5 in Prozent C=74 H=100 G=87
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet am 2026-10-08)
¤
*© Formatika GbR, Deutschland