• unknown's avatar
    Fix for BUG#3422 "In 3.23 -> 4.0 replication, slave segfault when replicating LOAD DATA INFILE": · 89fc51ad
    unknown authored
    as we transform the 3.23 Load_log_event into a 4.0 Create_file_log_event which is one
    byte longer, we need to increment event_len. The bug was that we did not increment it,
    so later in code the end 0 was not seen so there was for example a segfault in
    strlen(fname) because fname was not 0-terminated.
    Other problems remain in 3.23->4.0 replication of LOAD DATA INFILE but they are less serious:
    Exec_master_log_pos and Relay_log_space are incorrect. I'll document them.
    They are not fixable without significant code changes (if you fix those problems in 4.0,
    you get assertion failures somewhere else etc), * which are already done in 5.0.0 *.
    
    
    sql/slave.cc:
      In 3.23->4.0 replication of LOAD DATA INFILE:
      as we transform the 3.23 Load_log_event into a 4.0 Create_file_log_event which is one
      byte longer, we need to increment event_len.
      So we need to modify the event_len stored in the event.
      And we need to decrement event_len when we compute the offset in the master's binlog.
    89fc51ad
slave.cc 110 KB