diff options
Diffstat (limited to 'sql/log_event.cc')
-rw-r--r-- | sql/log_event.cc | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/sql/log_event.cc b/sql/log_event.cc index 038c17ffaba..603c8431b03 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -1792,10 +1792,15 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli) /* InnoDB internally stores the master log position it has processed so far; - position to store is really pos + pending + event_len - since we must store the pos of the END of the current log event + position to store is of the END of the current log event. */ - rli->event_len= get_event_len(); +#if MYSQL_VERSION_ID < 40100 + rli->future_master_log_pos= log_pos + get_event_len(); +#elif MYSQL_VERSION_ID < 50000 + rli->future_group_master_log_pos= log_pos + get_event_len(); +#else + rli->future_group_master_log_pos= log_pos; +#endif thd->query_error= 0; // clear error thd->clear_error(); @@ -1935,6 +1940,17 @@ int Load_log_event::exec_event(NET* net, struct st_relay_log_info* rli, thd->query_error = 0; thd->clear_error(); + if (!use_rli_only_for_errors) + { +#if MYSQL_VERSION_ID < 40100 + rli->future_master_log_pos= log_pos + get_event_len(); +#elif MYSQL_VERSION_ID < 50000 + rli->future_group_master_log_pos= log_pos + get_event_len(); +#else + rli->future_group_master_log_pos= log_pos; +#endif + } + /* We test replicate_*_db rules. Note that we have already prepared the file to load, even if we are going to ignore and delete it now. So it is possible @@ -2392,6 +2408,14 @@ int Execute_load_log_event::exec_event(struct st_relay_log_info* rli) lev->exec_event is the place where the table is loaded (it calls mysql_load()). */ + +#if MYSQL_VERSION_ID < 40100 + rli->future_master_log_pos= log_pos + get_event_len(); +#elif MYSQL_VERSION_ID < 50000 + rli->future_group_master_log_pos= log_pos + get_event_len(); +#else + rli->future_group_master_log_pos= log_pos; +#endif if (lev->exec_event(0,rli,1)) { /* |