diff options
Diffstat (limited to 'sql')
-rw-r--r-- | sql/log.cc | 7 | ||||
-rw-r--r-- | sql/sql_repl.cc | 4 |
2 files changed, 10 insertions, 1 deletions
diff --git a/sql/log.cc b/sql/log.cc index a73dd483711..43786990797 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -613,7 +613,12 @@ bool MYSQL_LOG::open(const char *log_name, even if this is not the very first binlog. */ Format_description_log_event s(BINLOG_VERSION); - s.flags|= LOG_EVENT_BINLOG_IN_USE_F; + /* + don't set LOG_EVENT_BINLOG_IN_USE_F for SEQ_READ_APPEND io_cache + as we won't be able to reset it later + */ + if (io_cache_type == WRITE_CACHE) + s.flags|= LOG_EVENT_BINLOG_IN_USE_F; if (!s.is_valid()) goto err; if (null_created_arg) diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index fb583448535..0284ab542df 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -456,6 +456,7 @@ impossible position"; { binlog_can_be_corrupted= test((*packet)[FLAGS_OFFSET+1] & LOG_EVENT_BINLOG_IN_USE_F); + (*packet)[FLAGS_OFFSET+1] &= ~LOG_EVENT_BINLOG_IN_USE_F; /* mark that this event with "log_pos=0", so the slave should not increment master's binlog position @@ -512,8 +513,11 @@ impossible position"; #endif if ((*packet)[EVENT_TYPE_OFFSET+1] == FORMAT_DESCRIPTION_EVENT) + { binlog_can_be_corrupted= test((*packet)[FLAGS_OFFSET+1] & LOG_EVENT_BINLOG_IN_USE_F); + (*packet)[FLAGS_OFFSET+1] &= ~LOG_EVENT_BINLOG_IN_USE_F; + } else if ((*packet)[EVENT_TYPE_OFFSET+1] == STOP_EVENT) binlog_can_be_corrupted= FALSE; |