summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
Diffstat (limited to 'sql')
-rw-r--r--sql/rpl_parallel.cc1
-rw-r--r--sql/rpl_rli.h3
-rw-r--r--sql/slave.cc3
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()