• Sujatha Sivakumar's avatar
    Bug#13961678:MULTI-STATEMENT TRANSACTION REQUIRED MORE THAN · 03993d03
    Sujatha Sivakumar authored
    'MAX_BINLOG_CACHE_SIZE' ERROR
          
    Problem:
    =======
    MySQL returns following error in win64.
    "ERROR 1197 (HY000): Multi-statement transaction required more than
    'max_binlog_cache_size' bytes of storage; increase this mysqld variable
    and try again" when user tries to load >4G file even if
    max_binlog_cache_size set to maximum value. On Linux everything
    works fine.
          
    Analysis:
    ========
    The `max_binlog_cache_size' variable is of type `ulonglong'.  This
    value is set to `ULONGLONG_MAX' at the time of server start up. The
    above value is stored in an intermediate variable named
    `saved_max_binlog_cache_size' which is of type `ulong'. In visual
    c++ complier the `ulong' type is of 4bytes in size and hence the value
    is getting truncated to '4GB' and the cache is not able to grow beyond
    4GB size. The same limitation is observed with 
    "max_binlog_stmt_cache_size" as well. Similar fix has been applied.
          
    Fix:
    ===
    As part of fix the type "ulong" is replaced with "my_off_t" which is of
    type "ulonglong". 
    
    mysys/mf_iocache.c:
      Added debug statement to simulate a scenario where the cache
      file's current position is set to >4GB
    sql/log.cc:
      Replaced the type of `saved_max_binlog_cache_size' from "ulong" to
      "my_off_t", which is a type def for "ulonglong".
    03993d03
log.cc 190 KB