mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-25334 FTWRL/Backup blocks DDL on temporary tables with binlog enabled, assertion fails in Diagnostics_area::set_error_status
Fixed by adding a MDL_BACKUP_COMMIT lock before altering temporary tables whose creation was logged to binary log (in which case the ALTER TABLE must also be logged)
This commit is contained in:
40
mysql-test/main/backup_lock_binlog.result
Normal file
40
mysql-test/main/backup_lock_binlog.result
Normal file
@ -0,0 +1,40 @@
|
||||
#
|
||||
# MDEV-25334 FTWRL/Backup blocks DDL on temporary tables with binlog
|
||||
# enabled assertion fails in Diagnostics_area::set_error_status
|
||||
#
|
||||
select @@binlog_format;
|
||||
@@binlog_format
|
||||
MIXED
|
||||
connect con1,localhost,root,,;
|
||||
connection default;
|
||||
#
|
||||
# Test 1
|
||||
#
|
||||
CREATE TEMPORARY TABLE tmp (a INT);
|
||||
connection con1;
|
||||
FLUSH TABLES WITH READ LOCK;
|
||||
connection default;
|
||||
SET lock_wait_timeout= 1;
|
||||
ALTER TABLE tmp;
|
||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||
connection con1;
|
||||
unlock tables;
|
||||
connection default;
|
||||
drop table tmp;
|
||||
#
|
||||
# Test 2 (In statement format to ensure temporary table gets logged)
|
||||
#
|
||||
set @@binlog_format=statement;
|
||||
CREATE TEMPORARY TABLE tmp (a INT);
|
||||
connection con1;
|
||||
BACKUP STAGE START;
|
||||
BACKUP STAGE BLOCK_COMMIT;
|
||||
connection default;
|
||||
SET lock_wait_timeout= 1;
|
||||
ALTER TABLE tmp;
|
||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||
connection con1;
|
||||
BACKUP STAGE end;
|
||||
connection default;
|
||||
drop table tmp;
|
||||
disconnect con1;
|
Reference in New Issue
Block a user