• unknown's avatar
    BUG#17233 : LOAD DATA INFILE: failure causes mysqld dbug_assert, binlog not flushed · f508249f
    unknown authored
    This patch corrects a bug involving a LOAD DATA INFILE operation on a 
    transactional table. It corrects a problem in the error handler by moving
    the transactional table check and autocommit_or_rollback operation to the 
    end of the error handler. 
    
    The problem was an assert was thrown after the operation completed. The 
    assert found a non-sunk event in the transaction cache. The events in the 
    transaction cache were added after commit_or_rollack and thereafter nothing 
    removed them.
    
    An additional test case was added to detect this
    condition.
    
    
    mysql-test/extra/rpl_tests/rpl_loaddata.test:
      BUG#17233 : LOAD DATA INFILE: failure causes mysqld dbug_assert, binlog not flushed 
          
      This patch adds an additional test to rpl_loaddata for handling the
      duplicate key error on LOAD DATA INFILE.
    mysql-test/r/rpl_loaddata.result:
      BUG#17233 : LOAD DATA INFILE: failure causes mysqld dbug_assert, binlog not flushed 
          
      This patch adds the results for the additional test for properly handling the
      duplicate key error on LOAD DATA INFILE.
    sql/sql_load.cc:
      BUG#17233 : LOAD DATA INFILE: failure causes mysqld dbug_assert, binlog not flushed 
      
      This patch moves the check for a transactional table and rollback in the
      error handler for mysql_load(). The patch moves the transactional table
      check to the end of the error handler matching the implementation for other
      similar operations (see sql_insert).
    f508249f
sql_load.cc 36 KB