diff options
Diffstat (limited to 'mysql-test/suite/mariabackup/alter_copy_race.test')
-rw-r--r-- | mysql-test/suite/mariabackup/alter_copy_race.test | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/mysql-test/suite/mariabackup/alter_copy_race.test b/mysql-test/suite/mariabackup/alter_copy_race.test new file mode 100644 index 00000000..553643bf --- /dev/null +++ b/mysql-test/suite/mariabackup/alter_copy_race.test @@ -0,0 +1,51 @@ +--source include/have_innodb.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc + +# The test demonstrates that intermediate tables (ALTER TABLE...ALGORITHM=COPY) +# are not always properly locked, e.g., can be dropped after +# BACKUP STAGE BLOCK_COMMIT +# succeeded. +# Thus mariabackup decides not to have them in backup at all, +# since they keep changing even after the backup LSN was determined. + +echo # xtrabackup backup; +let $targetdir=$MYSQLTEST_VARDIR/tmp/backup; + +CREATE TABLE t1(i int) ENGINE=InnoDB; +INSERT into t1 values(1); + +connect con2, localhost, root,,; +connection con2; +set lock_wait_timeout=1; +SET debug_sync='copy_data_between_tables_before_reset_backup_lock SIGNAL go WAIT_FOR after_backup_stage_block_commit'; +SET debug_sync='alter_table_after_temp_table_drop SIGNAL temp_table_dropped'; +DELIMITER |; +send SET debug_sync='now WAIT_FOR after_backup_stage_start';ALTER TABLE test.t1 FORCE, algorithm=COPY;| +DELIMITER ;| +connection default; + +# setup mariabackup events +let after_backup_stage_start=SET debug_sync='now SIGNAL after_backup_stage_start WAIT_FOR go'; +let after_backup_stage_block_commit=SET debug_sync='now SIGNAL after_backup_stage_block_commit'; +let backup_fix_ddl=SET debug_sync='now WAIT_FOR temp_table_dropped'; +--disable_result_log +exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$targetdir --dbug=+d,mariabackup_events; +--enable_result_log + +connection con2; +--error ER_LOCK_WAIT_TIMEOUT +reap; +SET debug_sync='RESET'; +disconnect con2; + +connection default; +echo # xtrabackup prepare; +--disable_result_log +exec $XTRABACKUP --prepare --target-dir=$targetdir; +-- source include/restart_and_restore.inc +--enable_result_log + +SELECT * FROM t1; +DROP TABLE t1; +rmdir $targetdir; |