mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 14:02:32 +01:00
dd383cadec
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
22 lines
457 B
PHP
22 lines
457 B
PHP
#
|
|
# === Name
|
|
#
|
|
# binlog_inject_error.inc
|
|
#
|
|
# === Description
|
|
#
|
|
# Inject binlog write error when running the query, verifies that the
|
|
# query is ended with the proper error (ER_ERROR_ON_WRITE).
|
|
#
|
|
# === Usage
|
|
#
|
|
# let query= 'CREATE TABLE t1 (a INT)';
|
|
# source include/binlog_inject_error.inc;
|
|
#
|
|
|
|
SET GLOBAL debug='d,injecting_fault_writing';
|
|
--echo $query;
|
|
--replace_regex /(errno: .*)/(errno: #)/
|
|
--error ER_ERROR_ON_WRITE
|
|
--eval $query
|
|
SET GLOBAL debug='';
|