1
0
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:
Monty
2021-04-06 16:37:11 +03:00
parent 58780b5afb
commit 4e2ca42225
3 changed files with 107 additions and 3 deletions

View File

@ -0,0 +1,49 @@
--source include/have_binlog_format_mixed_or_statement.inc
#
# Tests involving locks and binlog
#
--echo #
--echo # MDEV-25334 FTWRL/Backup blocks DDL on temporary tables with binlog
--echo # enabled assertion fails in Diagnostics_area::set_error_status
--echo #
select @@binlog_format;
--connect (con1,localhost,root,,)
connection default;
--echo #
--echo # Test 1
--echo #
CREATE TEMPORARY TABLE tmp (a INT);
--connection con1
FLUSH TABLES WITH READ LOCK;
--connection default
SET lock_wait_timeout= 1;
--error ER_LOCK_WAIT_TIMEOUT
ALTER TABLE tmp;
--connection con1
unlock tables;
--connection default
drop table tmp;
--echo #
--echo # Test 2 (In statement format to ensure temporary table gets logged)
--echo #
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;
--error ER_LOCK_WAIT_TIMEOUT
ALTER TABLE tmp;
--connection con1
BACKUP STAGE end;
--connection default
drop table tmp;
--disconnect con1