• Alfranio Correia's avatar
    BUG#46364 MyISAM transbuffer problems (NTM problem) · 8da3fea2
    Alfranio Correia authored
          
    It is well-known that due to concurrency issues, a slave can become
    inconsistent when a transaction contains updates to both transaction and
    non-transactional tables.
                        
    In a nutshell, the current code-base tries to preserve causality among the
    statements by writing non-transactional statements to the txn-cache which
    is flushed upon commit. However, modifications done to non-transactional
    tables on behalf of a transaction become immediately visible to other
    connections but may not immediately get into the binary log and therefore
    consistency may be broken.
                
    In general, it is impossible to automatically detect causality/dependency
    among statements by just analyzing the statements sent to the server. This
    happen because dependency may be hidden in the application code and it is
    necessary to know a priori all the statements processed in the context of
    a transaction such as in a procedure. Moreover, even for the few cases that
    we could automatically address in the server, the computation effort
    required could make the approach infeasible.
                
    So, in this patch we introduce the option
          - "--binlog-direct-non-transactional-updates" that can be used to bypass
          the current behavior in order to write directly to binary log statements
          that change non-transactional tables.
    
    Besides, it is used to enable the WL#2687 which is disabled by default.
    8da3fea2
errmsg-utf8.txt 446 KB