Commit 654b5931 authored by Monty's avatar Monty

BINLOG with LOCK TABLES and SAVEPOINT could cause a crash in debug bin

MDEV-22048 Assertion `binlog_table_maps == 0 ||
           locked_tables_mode == LTM_LOCK_TABLES' failed in
           THD::reset_for_next_command
parent 6a3b581b
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
INSERT INTO t1 (a) VALUES (1),(2);
CREATE TABLE t2 (b INT) ENGINE=InnoDB;
CREATE TRIGGER tr1 BEFORE UPDATE ON t1 FOR EACH ROW SET @a = 0;
CREATE TRIGGER tr2 BEFORE INSERT ON t2 FOR EACH ROW DELETE FROM t1 LIMIT 1;
SET AUTOCOMMIT= OFF;
LOCK TABLES t2 WRITE;
DELETE FROM t1 LIMIT 1;
SAVEPOINT A;
UNLOCK TABLES;
DROP TABLE t1, t2;
--source include/have_innodb.inc
--source include/have_binlog_format_mixed_or_row.inc
#
# MDEV-22048 Assertion `binlog_table_maps == 0 ||
# locked_tables_mode == LTM_LOCK_TABLES' failed in
# THD::reset_for_next_command
#
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
INSERT INTO t1 (a) VALUES (1),(2);
CREATE TABLE t2 (b INT) ENGINE=InnoDB;
CREATE TRIGGER tr1 BEFORE UPDATE ON t1 FOR EACH ROW SET @a = 0;
CREATE TRIGGER tr2 BEFORE INSERT ON t2 FOR EACH ROW DELETE FROM t1 LIMIT 1;
SET AUTOCOMMIT= OFF;
LOCK TABLES t2 WRITE;
DELETE FROM t1 LIMIT 1;
SAVEPOINT A;
UNLOCK TABLES;
DROP TABLE t1, t2;
......@@ -5045,6 +5045,7 @@ mysql_execute_command(THD *thd)
res= 1;
thd->mdl_context.release_transactional_locks();
thd->variables.option_bits&= ~(OPTION_TABLE_LOCK);
thd->reset_binlog_for_next_statement();
}
if (thd->global_read_lock.is_acquired() &&
thd->current_backup_stage == BACKUP_FINISHED)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment