• Brandon Nesterenko's avatar
    MDEV-25616 XA PREPARE event group is not binlogged when.. · 42802ad6
    Brandon Nesterenko authored
    the only query of the XA transaction is on a non-transactional table
    errors out:
    
    XA BEGIN 'x';
    --error ER_DUP_ENTRY
    INSERT INTO t1 VALUES (1),(1);
    XA END 'x';
    XA PREPARE 'x';
    
    The binlogging pattern is correctly started as expected with
    the errored-out Query or its ROW format events, but there is
    no empty XA_prepare_log_event group.
    The following
    
    XA COMMIT 'x';
    
    therefore should not be logged either, but it does.
    
    The bug is fixed with proper maintaining of a read-write binlog hton
    property and use it to enforce correct binlogging decisions.
    Specifically in the bug description case XA COMMIT won't be binlogged
    in both when given in the same connection and externally after disconnect.
    The same continue to apply to an empty XA that do not change any data in all
    transactional engines involved.
    42802ad6
binlog_empty_xa_prepared.test 3.06 KB