mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Bug#14324766:PARTIALLY WRITTEN INSERT STATEMENT IN BINLOG
NO ERRORS REPORTED Problem: ======= Errors from my_b_fill are ignored. MYSQL_BIN_LOG::write_cache code assumes that 0 returned from my_b_fill always means end-of-cache, but that is incorrect. It can result in error and the error is ignored. Other callers of my_b_fill don't check for error: my_b_copy_to_file, maybe my_b_gets. Fix: === An error handler is already present to check the "cache" error that is reported during "MYSQL_BIN_LOG::write_cache" call. Hence error handlers are added for "my_b_copy_to_file" and "my_b_gets". During my_b_fill() function call, when the cache read fails info->error= -1 is set. Hence a check for "info->error" is added for the above to callers upon their return.
This commit is contained in:
@ -9196,6 +9196,8 @@ Write_rows_log_event::do_exec_row(const Relay_log_info *const rli)
|
||||
#ifdef MYSQL_CLIENT
|
||||
void Write_rows_log_event::print(FILE *file, PRINT_EVENT_INFO* print_event_info)
|
||||
{
|
||||
DBUG_EXECUTE_IF("simulate_cache_read_error",
|
||||
{DBUG_SET("+d,simulate_my_b_fill_error");});
|
||||
Rows_log_event::print_helper(file, print_event_info, "Write_rows");
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user