[MDEV-32950] Mariadb-binlog --flashback Should Warn/Error If Finding Statement Logged Transactions Created: 2023-12-05  Updated: 2023-12-05

Status: Open
Project: MariaDB Server
Component/s: Replication, Scripts & Clients
Affects Version/s: 10.4, 10.5, 10.6, 10.7, 10.8, 10.9, 10.10, 10.11, 11.0, 11.1, 11.2
Fix Version/s: 10.4, 10.5, 10.6, 10.11, 11.0, 11.1, 11.2

Type: Bug Priority: Major
Reporter: Brandon Nesterenko Assignee: Brandon Nesterenko
Resolution: Unresolved Votes: 0
Labels: None

Issue Links:
Relates
relates to MDEV-32933 Skip statement and mix mode for binlo... Stalled

 Description   

The mariadb-binlog command-line tool, when run with --flashback, currently outputs strange looking events if encountering Statement-binlogged transactions. For example, a simple insert is binlogged using statement format as

#231205  8:11:45 server id 1  end_log_pos 429 CRC32 0xe3e74907 	GTID 0-1-2
/*!100101 SET @@session.skip_parallel_replication=0*//*!*/;
/*!100001 SET @@session.gtid_domain_id=0*//*!*/;
/*!100001 SET @@session.server_id=1*//*!*/;
/*!100001 SET @@session.gtid_seq_no=2*//*!*/;
START TRANSACTION
/*!*/;
# at 429
#231205  8:11:45 server id 1  end_log_pos 0 CRC32 0x98b9da3a 	Query	thread_id=8	exec_time=0	error_code=0	xid=0
use `test`/*!*/;
SET TIMESTAMP=1701789105/*!*/;
SET @@session.pseudo_thread_id=8/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=latin1,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
insert into t1 values (1)
/*!*/;
# at 521
#231205  8:11:45 server id 1  end_log_pos 594 CRC32 0xdd3b6158 	Query	thread_id=8	exec_time=0	error_code=0	xid=0
SET TIMESTAMP=1701789105/*!*/;
COMMIT
/*!*/;
# at 594

where mariadb-binlog --flashback will transform this into

#231205  8:11:45 server id 1  end_log_pos 594 CRC32 0xdd3b6158 	Query	thread_id=8	exec_time=0	error_code=0	xid=0
SET TIMESTAMP=1701789105/*!*/;
START TRANSACTION
/*!*/;
#231205  8:11:45 server id 1  end_log_pos 0 CRC32 0x98b9da3a 	Query	thread_id=8	exec_time=0	error_code=0	xid=0
use `test`/*!*/;
SET TIMESTAMP=1701789105/*!*/;
SET @@session.pseudo_thread_id=8/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=latin1,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
COMMIT
/*!*/;
COMMIT
/*!*/;

Mariadb-binlog should at least issue a warning when encountering statement logged transactions when in flashback mode, as it is not supported; or error and stop altogether.


Generated at Thu Feb 08 10:35:15 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.