mariadb/mysql-test/suite/binlog/t/binlog_1pc.test
Andrei Elkin 390014781b MDEV-26031 unnessary xid logging in one phase commit case
The bug was originally observed as hanging binlog background thread at
shutdown similar to one of MDEV-21120.
It occurred through unnessary xid logging in 1pc execution.

Two parts of the issue are fixed.  Per engine loop by involved engine
with attempt to mark a group requiring xid unlogging gets corrected in
two ways. Do not execute it when the termination event is irrelevant
for recovery, does not have xid in particular.  Do not break the loop
anymore unconditionally at the end of the 1st iteration.
2021-06-29 14:13:37 +03:00

39 lines
1.1 KiB
Text

# The test file contains tests specific to one phase commit
# execution and binlogging.
#
# MDEV-26031 unnessary xid logging in one phase commit case
#
--source include/have_innodb.inc
--source include/have_aria.inc
--source include/have_binlog_format_mixed.inc
RESET MASTER;
CREATE TABLE t (f INT) ENGINE=INNODB;
CREATE TABLE ta (f INT) ENGINE=Aria;
--let $binlog_start = query_get_value(SHOW MASTER STATUS, Position, 1)
BEGIN;
INSERT INTO t SET f = 1;
INSERT INTO ta SET f = 1;
COMMIT;
--let $binlog_file = query_get_value(SHOW MASTER STATUS, File, 1)
--source include/show_binlog_events.inc
--echo # Prove that binlog is resettable. Under the bug condition it was not.
RESET MASTER;
--let $binlog_start = query_get_value(SHOW MASTER STATUS, Position, 1)
--let $binlog_file = query_get_value(SHOW MASTER STATUS, File, 1)
SET @@binlog_format = ROW;
CREATE TABLE ta2 ENGINE = Aria SELECT * from t;
--source include/show_binlog_events.inc
--echo # Prove that binlog is resettable. Under the bug condition it was not.
RESET MASTER;
--echo # Cleanup
DROP TABLE ta2, ta, t;
--echo # End of the tests