[MDEV-27837] disallow `set @@session.server_id` within transaction Created: 2022-02-14  Updated: 2023-04-27

Status: Open
Project: MariaDB Server
Component/s: Replication
Affects Version/s: None
Fix Version/s: 10.4, 10.5, 10.6

Type: Bug Priority: Major
Reporter: Andrei Elkin Assignee: Andrei Elkin
Resolution: Unresolved Votes: 0
Labels: None


 Description   

Currently the session scope variable is mutable within transaction which
probably never conceived to this way because is dangerous for replication.
In particular a transaction can be relay-logged any of its events removed including
Gtid and Xid events
which affects overall slave applier behavior, esp in the parallel mode.
E.g in master server_id=1 and slave server_id 2 the following transaction

begin; 
set @@server_id=1; insert into t set a=14; 
set @@server_id=2; 
commit /* to end up on slave in I */; 

ends up in the slave relay log as a singleton no-gtid event:

slave-relay-bin.000003 | 688 | Query             |         1 |        1193 | use `test`; insert into t set a=14     


Generated at Thu Feb 08 09:55:57 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.