• He Zhenxing's avatar
    BUG#37148 Most callers of mysql_bin_log.write ignore the return result · dd383cad
    He Zhenxing authored
    This is the non-ndb part of the patch.
    
    The return value of mysql_bin_log.write was ignored by most callers,
    which may lead to inconsistent on master and slave if the transaction
    was committed while the binlog was not correctly written. If
    my_error() is call in mysql_bin_log.write, this could also lead to
    assertion issue if my_ok() or my_error() is called after.
    
    This fixed the problem by let the caller to check and handle the
    return value of mysql_bin_log.write. This patch only adresses the
    simple cases.
    
    
    mysql-test/include/binlog_inject_error.inc:
      inject binlog write error when doing a query
    mysql-test/suite/binlog/t/binlog_write_error.test:
      Simple test case to check if proper error is reported when injecting binlog write errors.
    sql/events.cc:
      check return value of mysql_bin_log.write
    sql/log.cc:
      check return value of mysql_bin_log.write
    sql/log_event.cc:
      check return value of mysql_bin_log.write
    sql/log_event_old.cc:
      check return value of mysql_bin_log.write
    sql/mysql_priv.h:
      Change write_bin_log to return int instead of void
    sql/rpl_injector.cc:
      check return value of writing binlog
    sql/sp.cc:
      check return value of writing binlog
    sql/sp_head.cc:
      return 1 if writing binlog failed
    sql/sql_acl.cc:
      check return value of writing binlog
    sql/sql_base.cc:
      check return value of writing binlog
    sql/sql_class.h:
      Change binlog_show_create_table to return int
    sql/sql_db.cc:
      Change write_to_binlog to return int
      check return value of writing binlog
    sql/sql_delete.cc:
      check return value of writing binlog
    sql/sql_insert.cc:
      check return value of writing binlog
    sql/sql_load.cc:
      check return value of writing binlog
    sql/sql_parse.cc:
      check return value of writing binlog
    sql/sql_partition.cc:
      check return value of writing binlog
    sql/sql_rename.cc:
      check return value of writing binlog
    sql/sql_repl.cc:
      check return value of writing binlog
    sql/sql_table.cc:
      Change write_bin_log to return int, and return 1 if there was error writing binlog
    sql/sql_tablespace.cc:
      check return value of writing binlog
    sql/sql_trigger.cc:
      check return value of writing binlog
    sql/sql_udf.cc:
      check return value of writing binlog
    sql/sql_update.cc:
      check return value of writing binlog
    sql/sql_view.cc:
      check return value of writing binlog
    dd383cad
sql_load.cc 56.4 KB