1. 21 Jan, 2008 2 commits
  2. 15 Jan, 2008 1 commit
  3. 14 Jan, 2008 5 commits
  4. 11 Jan, 2008 3 commits
  5. 10 Jan, 2008 1 commit
    • sven@riska.(none)'s avatar
      BUG#27779: Slave cannot read old rows log events. · 617ea4d6
      sven@riska.(none) authored
      Problem: Replication fails when master is mysql-5.1-wl2325-5.0-drop6 and
      slave is mysql-5.1-new-rpl. The reason is that, in
      mysql-5.1-wl2325-5.0-drop6, the event type id's were different than in
      mysql-5.1-new-rpl.
      Fix (in mysql-5.1-new-rpl):
       (1) detect that the server that generated the events uses the old
      format, by checking the server version of the format_description_log_event
      This patch recognizes mysql-5.1-wl2325-5.0-drop6p13-alpha,
      mysql-5.1-wl2325-5.0-drop6, mysql-5.1-wl2325-5.0, mysql-5.1-wl2325-no-dd.
       (2) if the generating server is old, map old event types to new event
      types using a permutation array.
      
      I've also added a test case which reads binlogs for four different
      versions.
      617ea4d6
  6. 06 Jan, 2008 1 commit
  7. 02 Jan, 2008 1 commit
  8. 31 Dec, 2007 1 commit
  9. 25 Dec, 2007 1 commit
  10. 24 Dec, 2007 3 commits
  11. 21 Dec, 2007 7 commits
  12. 20 Dec, 2007 4 commits
  13. 19 Dec, 2007 2 commits
  14. 18 Dec, 2007 2 commits
  15. 17 Dec, 2007 2 commits
  16. 15 Dec, 2007 1 commit
    • hezx@hezx.(none)'s avatar
      BUG#32205 Replaying statements from mysqlbinlog fails with a syntax error, replicates fine · c2f00cc3
      hezx@hezx.(none) authored
      The reason of this bug is that when mysqlbinlog dumps a query, the query is written to
      output with a delimeter appended right after it, if the query string ends with a '--'
      comment, then the delimeter would be considered as part of the comment, if there are any
      statements after this query, then it will cause a syntax error.
      
      Start a newline before appending delimiter after a query string
      c2f00cc3
  17. 14 Dec, 2007 3 commits
    • sven@riska.(none)'s avatar
      Merge riska.(none):/home/sven/bkroot/5.1-new-rpl · 8b22f0a1
      sven@riska.(none) authored
      into  riska.(none):/home/sven/bk/b32407-5.1-new-rpl-mysqlbinlog_base64
      8b22f0a1
    • sven@riska.(none)'s avatar
      BUG#32407: Impossible to do point-in-time recovery from older binlog · 5cc348a6
      sven@riska.(none) authored
      Problem: it is unsafe to read base64-printed events without first
      reading the Format_description_log_event (FD).  Currently, mysqlbinlog
      cannot print the FD.
      
      As a side effect, another bug has also been fixed: When mysqlbinlog
      --start-position=X was specified, no ROLLBACK was printed. I changed
      this, so that ROLLBACK is always printed.
      
      This patch does several things:
      
       - Format_description_log_event (FD) now print themselves in base64
         format.
      
       - mysqlbinlog is now able to print FD events.  It has three modes:
          --base64-output=auto    Print row events in base64 output, and print
                                  FD event.  The FD event is printed even if
                                  it is outside the range specified with
                                  --start-position, because it would not be
                                  safe to read row events otherwise. This is
                                  the default.
      
          --base64-output=always  Like --base64-output=auto, but also print
                                  base64 output for query events.  This is
                                  like the old --base64-output flag, which
                                  is also a shorthand for
                                  --base64-output=always
      
          --base64-output=never   Never print base64 output, generate error if
                                  row events occur in binlog.  This is
                                  useful to suppress the FD event in binlogs
                                  known not to contain row events (e.g.,
                                  because BINLOG statement is unsafe,
                                  requires root privileges, is not SQL, etc)
      
       - the BINLOG statement now handles FD events correctly, by setting
         the thread's rli's relay log's description_event_for_exec to the
         loaded event.
      
         In fact, executing a BINLOG statement is almost the same as reading
         an event from a relay log.  Before my patch, the code for this was
         separated (exec_relay_log_event in slave.cc executes events from
         the relay log, mysql_client_binlog_statement in sql_binlog.cc
         executes BINLOG statements).  I needed to augment
         mysql_client_binlog_statement to do parts of what
         exec_relay_log_event does.  Hence, I did a small refactoring and
         moved parts of exec_relay_log_event to a new function, which I
         named apply_event_and_update_pos.  apply_event_and_update_pos is
         called both from exec_relay_log_event and from
         mysql_client_binlog_statement.
      
       - When a non-FD event is executed in a BINLOG statement, without
         previously executing a FD event in a BINLOG statement, it generates
         an error, because that's unsafe.  I took a new error code for that:
         ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENTS.
      
         In order to get a decent error message containing the name of the
         event, I added the class method char*
         Log_event::get_type_str(Log_event_type type), which returns a
         string name for the given Log_event_type.  This is just like the
         existing char* Log_event::get_type_str(), except it is a class
         method that takes the log event type as parameter.
      
         I also added PRE_GA_*_ROWS_LOG_EVENT to Log_event::get_type_str(),
         so that names of old rows event are properly printed.
      
       - When reading an event, I added a check that the event type is known
         by the current Format_description_log_event. Without this, it may
         crash on bad input (and I was struck by this several times).
      
       - I patched the following test cases, which all contain BINLOG
         statements for row events which must be preceded by BINLOG
         statements for FD events:
          - rpl_bug31076
      
      While I was here, I fixed some small things in log_event.cc:
      
       - replaced hard-coded 4 by EVENT_TYPE_OFFSET in 3 places
      
       - replaced return by DBUG_VOID_RETURN in one place
      
       - The name of the logfile can be '-' to indicate stdin.  Before my
         patch, the code just checked if the first character is '-'; now it
         does a full strcmp().  Probably, all arguments that begin with a -
         are already handled somewhere else as flags, but I still think it
         is better that the code reflects what it is supposed to do, with as
         little dependencies as possible on other parts of the code.  If we
         one day implement that all command line arguments after -- are
         files (as most unix tools do), then we need this.
      
      I also fixed the following in slave.cc:
      
       - next_event() was declared twice, and queue_event was not static but
         should be static (not used outside the file).
      5cc348a6
    • bar@bar.myoffice.izhnet.ru's avatar
      Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.1-rpl · 90db4726
      bar@bar.myoffice.izhnet.ru authored
      into  mysql.com:/home/bar/mysql-work/mysql-5.1.b29562v2
      90db4726