• Alfranio Correia's avatar
    BUG#47678 Changes to n-tables that happen early in a trans. are only flushed upon commit · 7e0da435
    Alfranio Correia authored
      Let
        - T be a transactional table and N non-transactional table.
        - B be begin, C commit and R rollback.
        - N be a statement that accesses and changes only N-tables.
        - T be a statement that accesses and changes only T-tables.
    
    In RBR, changes to N-tables that happen early in a transaction are not immediately flushed
    upon committing a statement. This behavior may, however, break consistency in the presence
    of concurrency since changes done to N-tables become immediately visible to other
    connections. To fix this problem, we do the following:
    
      . B N N T C would log - B N C B N C B T C.
      . B N N T R would log - B N C B N C B T R.
    
    Note that we are not preserving history from the master as we are introducing a commit that
    never happened. However, this seems to be more acceptable than the possibility of breaking
    consistency in the presence of concurrency.
    7e0da435
binlog_failure_mixing_engines.test 10.3 KB