Below is the list of changes that have just been committed into a local
5.1 repository of mats. When mats does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2006-10-06 22:03:12+02:00, mats@romeo.(none) +1 -0
BUG#21474 (There is a rotation before the last table map):
Removing code to step the group log position and just stepping
the event log position. If the group log position were stepped
one time too many, it might be that the group starts at a position
that is not possible, e.g., at a Rows_log_event, or between an
Intvar_log_event and the following associated Query_log_event.
sql/slave.cc@stripped, 2006-10-06 22:03:09+02:00, mats@romeo.(none) +16 -11
Removing code to step the group log position and just stepping
the event log position. If the group log position were stepped
one time too many, it might be that the group starts at a position
that is not possible, e.g., at a Rows_log_event, or between an
Intvar_log_event and the following associated Query_log_event.
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: mats
# Host: romeo.(none)
# Root: /home/bk/b20265-mysql-5.1-new-rpl
--- 1.285/sql/slave.cc 2006-10-06 22:03:20 +02:00
+++ 1.286/sql/slave.cc 2006-10-06 22:03:20 +02:00
@@ -3101,17 +3101,22 @@
type_code != START_EVENT_V3 && type_code!= FORMAT_DESCRIPTION_EVENT))
{
DBUG_PRINT("info", ("event skipped"));
- if (thd->options & OPTION_BEGIN)
- rli->inc_event_relay_log_pos();
- else
- {
- rli->inc_group_relay_log_pos((type_code == ROTATE_EVENT ||
- type_code == STOP_EVENT ||
- type_code == FORMAT_DESCRIPTION_EVENT) ?
- LL(0) : ev->log_pos,
- 1/* skip lock*/);
- flush_relay_log_info(rli);
- }
+ /*
+ We only skip the event here and do not increase the group log
+ position. In the event that we have to restart, this means
+ that we might have to skip the event again, but that is a
+ minor issue.
+
+ If we were to increase the group log position when skipping an
+ event, it might be that we are restarting at the wrong
+ position and have events before that we should have executed,
+ so not increasing the group log position is a sure bet in this
+ case.
+
+ In this way, we just step the group log position when we
+ *know* that we are at the end of a group.
+ */
+ rli->inc_event_relay_log_pos();
/*
Protect against common user error of setting the counter to 1
| Thread |
|---|
| • bk commit into 5.1 tree (mats:1.2345) BUG#21474 | Mats Kindahl | 6 Oct |