1. 04 Feb, 2008 1 commit
    • aelkin/elkin@koti.dsl.inet.fi's avatar
      Bug#33329 extraneous ROLLBACK in binlog on connection · 7880fade
      aelkin/elkin@koti.dsl.inet.fi authored
                  does not use trans tables
      
      There had been two issues.
      Rollback statement was recorded in binlog even though a multi-update
      had not modified any non-transactional table.
      The reason for this artifact was a false initial value of multi_update::transactional_tables.
      Yet another artifact that explained on the bug page is that 
      `ha_autocommit_or_rollback' works differently depending on whether
      a transaction engine has been compiled in. 
      
      Fixed: with setting multi_update::transactional_tables to zero at initialization
      time. Multi-update on non-trans table won't cause ROLLBACK in binlog with
      either compilation option.
      
      The 2nd mentioned artifact comprises a self-standing issue (to be reported
      separately).
      7880fade
  2. 30 Jan, 2008 1 commit
  3. 29 Jan, 2008 2 commits
    • hezx@mail.hezx.com's avatar
      update test result · 7572a9e3
      hezx@mail.hezx.com authored
      7572a9e3
    • hezx@mail.hezx.com's avatar
      BUG#26489 Corruption in relay logs · e4f37eab
      hezx@mail.hezx.com authored
      Here is the scenario that causes the failure.(by Mats)
      
      1. The to-be corrupt log event (let's call it X), is split into two
         packets B and C on the network level (net_write_buff()). The parts
         are X = (x',x''). The part x' ends up in packet B and part x''
         ends up in packet C. Prior to the corrupt event X, the event Y has
         been written successfully, but has been split into two packets as
         well, which we call (y',y'').
      2. The master sends packet A = (y'',x') to the slave, increases the
         packet sequence number, the slave receives the packet, but fails
         to reply before the master gets a timeout.
      3. Since the master got a timeout, it reports failure, and aborts
         sending the binary log by exiting mysql_binlog_send(). However, it
         leaves the buffer intact, still holding y'' (but not x', since the
         write_pos is not increased).
      4. After exiting mysql_binlog_send(), the master does a
         disconnection of the client thread, which involves sending an
         error message e to the client (i.e., the slave).
      5. In this case, net_write_buff() is used again, but this time the
         old contents of the packet is used so that the new packet is
         D = (y'',e). Note that this will use a new packet sequence number,
         since the packet number was increased in step 2.
      6. The slave receives the tail y'' of the Y log event, concatenates
         this with x' (which it already received), and writes the event
         (x',y'') it to the relay log since it hasn't noticed anything is
         amiss.
      7. It then tries to read more bytes, which is either e (if the length
         given for X just happened to match the length given for Y, or just
         plain garbage because the slave is out of sync with what is
         actually sent.
      8. After a while, the SQL thread tries to execute the event (x',y''),
         which is very likely to be just nonsense.
      
      The problem can be fixed by not resetting net->error after the call of 
      mysql_binlog_send, so the error message will not be sent and the connection
      will be closed.
      e4f37eab
  4. 25 Jan, 2008 1 commit
    • hezx@mail.hezx.com's avatar
      BUG#33862 completely failed DROP USER statement gets replicated · 750c4022
      hezx@mail.hezx.com authored
      The problem is when create/rename/drop users, the statement was logged regardless of error, even if no data has been changed, the statement was logged.
      
      After this patch, create/rename/drop users don't write the binlog if the statement makes no changes, if the statement does make any changes, log the statement with possible error code.
      
      This patch is based on the patch for BUG#29749, which is not pushed
      750c4022
  5. 06 Jan, 2008 6 commits
  6. 02 Jan, 2008 1 commit
  7. 24 Dec, 2007 1 commit
  8. 23 Dec, 2007 1 commit
  9. 22 Dec, 2007 1 commit
  10. 21 Dec, 2007 8 commits
  11. 20 Dec, 2007 1 commit
    • mats@capulet.kindahl.net's avatar
      BUG#12691 (Exec_master_log_pos corrupted with SQL_SLAVE_SKIP_COUNTER): · f1c32705
      mats@capulet.kindahl.net authored
      Complementary patch since LOAD DATA INFILE was not covered in
      the previous patch.
      
      This patch adds a check so that the slave skip counter is not
      decreased to zero if seeing a BEGIN_LOAD_QUERY_EVENT,
      APPEND_BLOCK_EVENT, or CREATE_FILE_EVENT since these cannot
      end a group. The group is terminated by an EXECUTE_LOAD_QUERY_
      EVENT or DELETE_FILE_EVENT.
      f1c32705
  12. 18 Dec, 2007 1 commit
  13. 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
  14. 11 Dec, 2007 1 commit
  15. 05 Dec, 2007 1 commit
  16. 03 Dec, 2007 1 commit
    • hezx@hezx.(none)'s avatar
      Bug#30998 Drop View breaks replication if view does not exist · c267a923
      hezx@hezx.(none) authored
        
      When executing drop view statement on the master, the statement is written
      into bin-log without checking for possible errors, so the statement would 
      always be bin-logged with error code cleared even if some error might occur, 
      for example, some of the views being dropped does not exist. This would cause 
      failure on the slave.
      
      Writing bin-log after check for errors, if at least one view has been dropped
      the query is bin-logged possible with an error.
      c267a923
  17. 22 Nov, 2007 1 commit
  18. 14 Nov, 2007 3 commits
  19. 13 Nov, 2007 2 commits
  20. 12 Nov, 2007 1 commit
  21. 10 Nov, 2007 1 commit
  22. 09 Nov, 2007 3 commits
    • mats@capulet.net's avatar
      Merge capulet.net:/home/bk/mysql-5.0-rpl · a88babcb
      mats@capulet.net authored
      into  capulet.net:/home/mats/devel/b31793-mysql-5.0-rpl
      a88babcb
    • mats@capulet.net's avatar
      Merge mkindahl@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl · d5ccec26
      mats@capulet.net authored
      into  capulet.net:/home/bk/mysql-5.0-rpl
      d5ccec26
    • mats@capulet.net's avatar
      BUG#31793 (log event corruption causes crash): · a432d3de
      mats@capulet.net authored
      When running mysqlbinlog on a 64-bit machine with a corrupt relay log,
      it causes mysqlbinlog to crash. In this case, the crash is caused
      because a request for 18446744073709534806U bytes is issued, which
      apparantly can be served on a 64-bit machine (speculatively, I assume)
      but this causes the memcpy() issued later to copy the data to segfault.
      
      The request for the number of bytes is caused by a computation
      of data_len - server_vars_len where server_vars_len is corrupt in such
      a sense that it is > data_len. This causes a wrap-around, with the
      the data_len given above.
      
      This patch adds a check that if server_vars_len is greater than
      data_len before the substraction, and aborts reading the event in
      that case marking the event as invalid. It also adds checks to see
      that reading the server variables does not go outside the bounds
      of the available space, giving a limited amount of integrity check.
      a432d3de