--source include/have_debug.inc --echo # --echo # Try various things when InnoDB runs out of free undo logs. --echo # --echo # These first three injection points are during DDL_Log removal --echo # after a CREATE TABLE --echo # Inject error #1 SET GLOBAL DEBUG='+d,DDL_Log_remove_inject_error_1'; --error ER_TOO_MANY_CONCURRENT_TRXS CREATE TABLE t1 (f1 INT, f2 CHAR(6), KEY(f2)); SET GLOBAL DEBUG='-d,DDL_Log_remove_inject_error_1'; --echo # Try more DDL, restart, try more DDL CREATE TABLE t9 (f1 INT, f2 CHAR(6), KEY(f2)); DROP TABLE t9; --source include/restart_mysqld.inc CREATE TABLE t9 (f1 INT, f2 CHAR(6), KEY(f2)); DROP TABLE t9; --echo # Inject error #2 SET GLOBAL DEBUG='+d,DDL_Log_remove_inject_error_2'; --error ER_TOO_MANY_CONCURRENT_TRXS CREATE TABLE t1 (f1 INT, f2 CHAR(6), KEY(f2)); SET GLOBAL DEBUG='-d,DDL_Log_remove_inject_error_2'; --echo # Try more DDL, restart, try more DDL CREATE TABLE t9 (f1 INT, f2 CHAR(6), KEY(f2)); DROP TABLE t9; --source include/restart_mysqld.inc CREATE TABLE t9 (f1 INT, f2 CHAR(6), KEY(f2)); DROP TABLE t9; --echo # Inject error #3 SET GLOBAL DEBUG='+d,DDL_Log_remove_inject_error_3'; --error ER_TOO_MANY_CONCURRENT_TRXS CREATE TABLE t1 (f1 INT, f2 CHAR(6), KEY(f2)); SET GLOBAL DEBUG='-d,DDL_Log_remove_inject_error_3'; --echo # Try more DDL, restart, try more DDL CREATE TABLE t9 (f1 INT, f2 CHAR(6), KEY(f2)); DROP TABLE t9; --source include/restart_mysqld.inc CREATE TABLE t9 (f1 INT, f2 CHAR(6), KEY(f2)); DROP TABLE t9; --echo # These next two injection points are during DDL_Log removal --echo # after a RENAME TABLE CREATE TABLE t1 (f1 INT, f2 CHAR(6), KEY(f2)); --echo # Inject error #4 SET GLOBAL DEBUG='+d,DDL_Log_remove_inject_error_4'; --replace_regex /Error on rename of '.*' to '.*'/Error on rename of 'OLD_FILE_NAME' to 'NEW_FILE_NAME'/ --error ER_ERROR_ON_RENAME ALTER TABLE t1 RENAME TO t2; SET GLOBAL DEBUG='-d,DDL_Log_remove_inject_error_4'; ALTER TABLE t1 RENAME TO t2; --echo # Try more DDL, restart, try more DDL CREATE TABLE t9 (f1 INT, f2 CHAR(6), KEY(f2)); DROP TABLE t9; --source include/restart_mysqld.inc CREATE TABLE t9 (f1 INT, f2 CHAR(6), KEY(f2)); DROP TABLE t9; --echo # Inject error #5 SET GLOBAL DEBUG='+d,DDL_Log_remove_inject_error_5'; --replace_regex /Error on rename of '.*' to '.*'/Error on rename of 'OLD_FILE_NAME' to 'NEW_FILE_NAME'/ --error ER_ERROR_ON_RENAME ALTER TABLE t2 RENAME TO t1; SET GLOBAL DEBUG='-d,DDL_Log_remove_inject_error_5'; ALTER TABLE t2 RENAME TO t1; DROP TABLE t1; --echo # Try more DDL, restart, try more DDL CREATE TABLE t9 (f1 INT, f2 CHAR(6), KEY(f2)); DROP TABLE t9; --source include/restart_mysqld.inc CREATE TABLE t9 (f1 INT, f2 CHAR(6), KEY(f2)); DROP TABLE t9; --disable_query_log call mtr.add_suppression("\\[ERROR\\] .* Too many concurrent transactions while clearing the DDL Log. Please increase the number of Rollback Segments"); --enable_query_log