diff options
Diffstat (limited to 'sql')
-rw-r--r-- | sql/rpl_parallel.cc | 1 | ||||
-rw-r--r-- | sql/rpl_rli.h | 3 | ||||
-rw-r--r-- | sql/slave.cc | 3 |
3 files changed, 4 insertions, 3 deletions
diff --git a/sql/rpl_parallel.cc b/sql/rpl_parallel.cc index cac47c56f3b..4725834eae3 100644 --- a/sql/rpl_parallel.cc +++ b/sql/rpl_parallel.cc @@ -946,6 +946,7 @@ rpl_parallel::do_event(rpl_group_info *serial_rgi, Log_event *ev, qev->future_event_master_log_pos= log_pos; if (!current) { + rli->event_relay_log_pos= rli->future_event_relay_log_pos; handle_queued_pos_update(rli->sql_driver_thd, qev); my_free(qev); return false; diff --git a/sql/rpl_rli.h b/sql/rpl_rli.h index a3dcf7ad7e9..390936114bc 100644 --- a/sql/rpl_rli.h +++ b/sql/rpl_rli.h @@ -688,8 +688,7 @@ public: inline void inc_event_relay_log_pos() { - if (!is_parallel_exec || - rli->event_relay_log_pos < future_event_relay_log_pos) + if (!is_parallel_exec) rli->event_relay_log_pos= future_event_relay_log_pos; } }; diff --git a/sql/slave.cc b/sql/slave.cc index 28f0127d091..dc4cdfcd794 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -6019,6 +6019,7 @@ static Log_event* next_event(rpl_group_info *rgi, ulonglong *event_size) The other case is much simpler: We just have a read only log that nobody else will be updating. */ + ulonglong old_pos; bool hot_log; if ((hot_log = (cur_log != &rli->cache_buf))) { @@ -6070,12 +6071,12 @@ static Log_event* next_event(rpl_group_info *rgi, ulonglong *event_size) But if the relay log is created by new_file(): then the solution is: MYSQL_BIN_LOG::open() will write the buffered description event. */ + old_pos= rli->event_relay_log_pos; if ((ev= Log_event::read_log_event(cur_log,0, rli->relay_log.description_event_for_exec, opt_slave_sql_verify_checksum))) { - ulonglong old_pos= rli->future_event_relay_log_pos; /* read it while we have a lock, to avoid a mutex lock in inc_event_relay_log_pos() |