diff options
Diffstat (limited to 'sql/rpl_rli.cc')
-rw-r--r-- | sql/rpl_rli.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sql/rpl_rli.cc b/sql/rpl_rli.cc index 8b540863e31..a914378de48 100644 --- a/sql/rpl_rli.cc +++ b/sql/rpl_rli.cc @@ -1418,7 +1418,7 @@ bool Relay_log_info::is_until_satisfied(Log_event *ev) bool Relay_log_info::stmt_done(my_off_t event_master_log_pos, THD *thd, - rpl_group_info *rgi) + rpl_group_info *rgi, Log_event *ev) { int error= 0; DBUG_ENTER("Relay_log_info::stmt_done"); @@ -1481,6 +1481,13 @@ bool Relay_log_info::stmt_done(my_off_t event_master_log_pos, THD *thd, if (rgi->is_parallel_exec) mysql_mutex_unlock(&data_lock); } + if(mi->rpl_queue && ev->get_type_code() == QUERY_EVENT) + { + Query_log_event *qev= (Query_log_event* )ev; + if (!qev->is_commit() && !qev->is_rollback()) + mi->rpl_queue->dequeue_by_tail_ptr((uchar *)ev+ + sizeof(*(Query_log_event *)this)); + } DBUG_EXECUTE_IF("inject_crash_after_flush_rli", DBUG_SUICIDE();); } DBUG_RETURN(error); |