mariadb/mysql-test/suite/binlog/r/binlog_mdev22915.result
Kristian Nielsen db20a99587 MDEV-22915: Assertion 'binlog_table_maps == 0 || locked_tables_mode == LTM_LOCK_TABLES' failed in THD::reset_for_next_command
close_thread_tables() would not flush pending row events to the binlog cache
in certain conditions if LOCK TABLES was active. This could result in the
row events being binlogged without STMT_END_F flag, and eventually leave the
THD in an invalid state that triggered assertions later.

Reviewed-by: Monty <monty@mariadb.org>
Signed-off-by: Kristian Nielsen <knielsen@knielsen-hq.org>
2025-10-07 09:40:36 +02:00

31 lines
1.1 KiB
Text

RESET MASTER;
connect con1,localhost,root,,;
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
CREATE TRIGGER tr BEFORE UPDATE ON t1 FOR EACH ROW BEGIN END;
LOCK TABLES t1 WRITE;
LOAD DATA INFILE 'x' INTO TABLE x;
ERROR HY000: Table 'x' was not locked with LOCK TABLES
SET AUTOCOMMIT= OFF;
INSERT INTO t1 VALUES (1);
SAVEPOINT A;
COMMIT;
disconnect con1;
connect con2,localhost,root,,;
SELECT 1;
1
1
disconnect con2;
connection default;
include/show_binlog_events.inc
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Gtid # # GTID #-#-#
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT) ENGINE=InnoDB
master-bin.000001 # Gtid # # GTID #-#-#
master-bin.000001 # Query # # use `test`; CREATE DEFINER=`root`@`localhost` TRIGGER tr BEFORE UPDATE ON t1 FOR EACH ROW BEGIN END
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
master-bin.000001 # Annotate_rows # # INSERT INTO t1 VALUES (1)
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # SAVEPOINT `A`
master-bin.000001 # Xid # # COMMIT /* XID */
DROP TABLE t1;