List:Commits« Previous MessageNext Message »
From:Luis Soares Date:October 13 2010 7:25am
Subject:bzr commit into mysql-5.1-bugteam branch (luis.soares:3528)
View as plain text  
#At file:///home/lsoares/Workspace/bzr/work/bugfixing/push/mysql-5.1-bugteam/ based on revid:dmitry.shulga@stripped

 3528 Luis Soares	2010-10-13 [merge]
      BUG 38718: automerged bzr bundle from bug report into 
      latest mysql-5.1-bugteam.

    modified:
      sql/log_event.cc
      sql/log_event.h
=== modified file 'sql/log_event.cc'
--- a/sql/log_event.cc	2010-10-09 07:05:43 +0000
+++ b/sql/log_event.cc	2010-10-13 07:25:43 +0000
@@ -1230,7 +1230,7 @@ Log_event* Log_event::read_log_event(con
       break;
 #ifdef HAVE_REPLICATION
     case SLAVE_EVENT: /* can never happen (unused event) */
-      ev = new Slave_log_event(buf, event_len);
+      ev = new Slave_log_event(buf, event_len, description_event);
       break;
 #endif /* HAVE_REPLICATION */
     case CREATE_FILE_EVENT:
@@ -1318,8 +1318,10 @@ Log_event* Log_event::read_log_event(con
     (because constructor is "void") ; so instead we leave the pointer we
     wanted to allocate (e.g. 'query') to 0 and we test it in is_valid().
     Same for Format_description_log_event, member 'post_header_len'.
+
+    SLAVE_EVENT is never used, so it should not be read ever.
   */
-  if (!ev || !ev->is_valid())
+  if (!ev || !ev->is_valid() || (event_type == SLAVE_EVENT))
   {
     DBUG_PRINT("error",("Found invalid event in binary log"));
 
@@ -5983,8 +5985,12 @@ void Slave_log_event::init_from_mem_pool
 
 
 /** This code is not used, so has not been updated to be format-tolerant. */
-Slave_log_event::Slave_log_event(const char* buf, uint event_len)
-  :Log_event(buf,0) /*unused event*/ ,mem_pool(0),master_host(0)
+/* We are using description_event so that slave does not crash on Log_event
+  constructor */
+Slave_log_event::Slave_log_event(const char* buf, 
+                                 uint event_len,
+                                 const Format_description_log_event* description_event)
+  :Log_event(buf,description_event),mem_pool(0),master_host(0)
 {
   if (event_len < LOG_EVENT_HEADER_LEN)
     return;

=== modified file 'sql/log_event.h'
--- a/sql/log_event.h	2010-07-04 04:02:49 +0000
+++ b/sql/log_event.h	2010-10-06 11:23:46 +0000
@@ -1782,7 +1782,9 @@ public:
   void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
 #endif
 
-  Slave_log_event(const char* buf, uint event_len);
+  Slave_log_event(const char* buf,
+                  uint event_len,
+                  const Format_description_log_event *description_event);
   ~Slave_log_event();
   int get_data_size();
   bool is_valid() const { return master_host != 0; }


Attachment: [text/bzr-bundle] bzr/luis.soares@oracle.com-20101013072543-hls04ta3imoxs05k.bundle
Thread
bzr commit into mysql-5.1-bugteam branch (luis.soares:3528) Luis Soares13 Oct