diff --git a/sql/log_event.cc b/sql/log_event.cc index 9c41684eee4..735586f5965 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -6235,12 +6235,15 @@ Gtid_log_event::do_apply_event(Relay_log_info const *rli) /* Finalize server status flags after executing a statement. */ thd->update_server_status(); log_slow_statement(thd); - general_log_write(thd, COM_QUERY, thd->query(), thd->query_length()); + if (unlikely(thd->is_fatal_error)) + thd->is_slave_error= 1; + else if (likely(!thd->is_slave_error)) + general_log_write(thd, COM_QUERY, thd->query(), thd->query_length()); } thd->reset_query(); free_root(thd->mem_root,MYF(MY_KEEP_PREALLOC)); - return 0; + return thd->is_slave_error; } diff --git a/sql/rpl_gtid.cc b/sql/rpl_gtid.cc index 6f45c4daf5c..55e2f039562 100644 --- a/sql/rpl_gtid.cc +++ b/sql/rpl_gtid.cc @@ -1088,16 +1088,17 @@ slave_connection_state::update(const rpl_gtid *in_gtid) void slave_connection_state::remove(const rpl_gtid *in_gtid) { - bool err; uchar *rec= my_hash_search(&hash, (const uchar *)(&in_gtid->domain_id), 0); #ifndef DBUG_OFF + bool err; rpl_gtid *slave_gtid= (rpl_gtid *)rec; DBUG_ASSERT(rec /* We should never try to remove not present domain_id. */); DBUG_ASSERT(slave_gtid->server_id == in_gtid->server_id); DBUG_ASSERT(slave_gtid->seq_no == in_gtid->seq_no); #endif - err= my_hash_delete(&hash, rec); + IF_DBUG(err=, ) + my_hash_delete(&hash, rec); DBUG_ASSERT(!err); } diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index bf758c4bdb0..3c6a4588c36 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -1400,6 +1400,7 @@ void mysql_binlog_send(THD* thd, char* log_ident, my_off_t pos, DBUG_PRINT("enter",("log_ident: '%s' pos: %ld", log_ident, (long) pos)); bzero((char*) &log,sizeof(log)); + bzero(&error_gtid, sizeof(error_gtid)); /* heartbeat_period from @master_heartbeat_period user variable */