1. 31 Jan, 2011 6 commits
  2. 30 Jan, 2011 4 commits
  3. 29 Jan, 2011 5 commits
  4. 28 Jan, 2011 10 commits
    • Bjorn Munch's avatar
      Bug #59148 'INSTALL PLUGIN rpl_semi_sync_master' fails in release build with debug binaries · b51ab5e6
      Bjorn Munch authored
      Do as mysqld_safe: if running mysqld-debug, plugins are in debug subdirs
      NB mtr --debug won't work in this context until 47141 is fixed
      Also moved read_plugin_defs; no point running this in all worker threads
      b51ab5e6
    • Mattias Jonsson's avatar
      merge · 2a6e34f2
      Mattias Jonsson authored
      2a6e34f2
    • Mattias Jonsson's avatar
      minor fix of copyright header · 74efe8c3
      Mattias Jonsson authored
      74efe8c3
    • Mattias Jonsson's avatar
      merge · a2f39d9d
      Mattias Jonsson authored
      a2f39d9d
    • Alfranio Correia's avatar
      BUG#59338 Inconsistency in binlog for statements that don't change any rows STATEMENT SBR · 6f12ed4a
      Alfranio Correia authored
      In SBR, if a statement does not fail, it is always written to the binary
      log, regardless if rows are changed or not. If there is a failure, a
      statement is only written to the binary log if a non-transactional (.e.g.
      MyIsam) engine is updated.
      
      INSERT ON DUPLICATE KEY UPDATE and INSERT IGNORE were not following the
      rule above and were not written to the binary log, if then engine was
      Innodb.
      
      mysql-test/extra/rpl_tests/rpl_insert_duplicate.test:
        Added test case.
      mysql-test/extra/rpl_tests/rpl_insert_ignore.test:
        Updated test case.
      mysql-test/include/commit.inc:
        Updated test case as the calls to the binary log have changed
        for INSERT ON DUPLICATE and INSERT IGNORE.
      mysql-test/r/commit_1innodb.result:
        Updated result file.
      mysql-test/suite/rpl/r/rpl_insert_duplicate.result:
        Added test case.
      mysql-test/suite/rpl/r/rpl_insert_ignore.result:
        Updated result file.
      mysql-test/suite/rpl/t/rpl_insert_duplicate.test:
        Added test case.
      mysql-test/suite/rpl/t/rpl_insert_ignore.test:
        Improved test case.
      6f12ed4a
    • John H. Embretsen's avatar
      Null-merge from mysql-5.1 · 2aafc476
      John H. Embretsen authored
      2aafc476
    • Jimmy Yang's avatar
      f173c706
    • Jimmy Yang's avatar
      7b1b224c
    • Jimmy Yang's avatar
      Fix Bug #59465 btr_estimate_number_of_different_key_vals use incorrect offset · 2c53b74b
      Jimmy Yang authored
      for external_size
            
      rb://581 approved by Marko
      2c53b74b
    • Alfranio Correia's avatar
      BUG#55675 rpl.rpl_log_pos fails sporadically with error binlog truncated in the middle · ce326166
      Alfranio Correia authored
      There are two calls to read_log_event() on master in mysql_binlog_send().
      Each call reads 19 bytes in this test case and the error of the second
      read_log_event() is reported to the slave.
      
      The second read_log_event() starts from position 94 (75 + 19) to 113
      (75 + 19 + 19). Usually, there are two events in the binary log:
      
          . 0   - 3   - Header
          . 4   - 105 - Format Descriptor Event
          . 106 - 304 - Query Event
      
      and both reads fail because operations are reading from invalid positions
      as expected.
      
      However, mysql_binlog_send() does not use the same IO_CACHE that is used to
      write into binary log (i.e. mysql_bin_log.log_file) for the hot binary log.
      It opens the binary log file directly by calling open_binlog() and creates a
      separated IO_CACHE. So there is a possibly that after a master has flushed
      the binary log file, the content has been cached by the filesystem, and has
      not updated the disk file. If this happens, then a slave will only see part
      of the file, and thus the second read_log_event() will report event truncated
      error.
      
      To fix the problem, if the first read_log_event() has failed, we ensure that
      the second one will try to read from the same position.
      ce326166
  5. 27 Jan, 2011 11 commits
  6. 26 Jan, 2011 4 commits
    • Mattias Jonsson's avatar
      merge of bug 47902 and (null-merge) of bug 57924. · 9c3b8485
      Mattias Jonsson authored
      bug#57924 does not occur in 5.5, so I reverted the 5.1 specific
      code and used the errors from 5.5 instead in the tests
      9c3b8485
    • Mattias Jonsson's avatar
      merge · df4fe184
      Mattias Jonsson authored
      df4fe184
    • Mattias Jonsson's avatar
      merge · 25c612c4
      Mattias Jonsson authored
      25c612c4
    • Jon Olav Hauglid's avatar
      Bug #42230 during add index, cannot do queries on storage engines · de76ab7c
      Jon Olav Hauglid authored
                 that implement add_index
      
      The problem was that ALTER TABLE blocked reads on an InnoDB table
      while adding a secondary index, even if this was not needed. It is
      only needed for the final step where the .frm file is updated.
      
      The reason queries were blocked, was that ALTER TABLE upgraded the
      metadata lock from MDL_SHARED_NO_WRITE (which blocks writes) to
      MDL_EXCLUSIVE (which blocks all accesses) before index creation.
      
      The way the server handles index creation, is that storage engines
      publish their capabilities to the server and the server determines
      which of the following three ways this can be handled: 1) build a
      new version of the table; 2) change the existing table but with
      exclusive metadata lock; 3) change the existing table but without
      metadata lock upgrade.
      
      For InnoDB and secondary index creation, option 3) should have been
      selected. However this failed for two reasons. First, InnoDB did
      not publish this capability properly.
      
      Second, the ALTER TABLE code failed to made proper use of the
      information supplied by the storage engine. A variable
      need_lock_for_indexes was set accordingly, but was not later used.
      This patch fixes this problem by only doing metadata lock upgrade
      before index creation/deletion if this variable has been set.
      
      This patch also changes some of the related terminology used 
      in the code. Specifically the use of "fast" and "online" with
      respect to ALTER TABLE. "Fast" was used to indicate that an
      ALTER TABLE operation could be done without involving a
      temporary table. "Fast" has been renamed "in-place" to more
      accurately describe the behavior.
      
      "Online" meant that the operation could be done without taking
      a table lock. However, in the current implementation writes
      are always prohibited during ALTER TABLE and an exclusive
      metadata lock is held while updating the .frm, so ALTER TABLE
      is not completely online. This patch replaces "online" with 
      "in-place", with additional comments indicating if concurrent
      reads are allowed during index creation/deletion or not.
      
      An important part of this update of terminology is renaming
      of the handler flags used by handlers to indicate if index
      creation/deletion can be done in-place and if concurrent reads
      are allowed. For example, the HA_ONLINE_ADD_INDEX_NO_WRITES
      flag has been renamed to HA_INPLACE_ADD_INDEX_NO_READ_WRITE,
      while HA_ONLINE_ADD_INDEX is now HA_INPLACE_ADD_INDEX_NO_WRITE.
      Note that this is a rename to clarify current behavior, the
      flag values have not changed and no flags have been removed or
      added.
      
      Test case added to innodb_mysql_sync.test.
      de76ab7c