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 · 74f773b4
      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
      74f773b4
    • Mattias Jonsson's avatar
      merge · 70e3313e
      Mattias Jonsson authored
      70e3313e
    • Mattias Jonsson's avatar
      minor fix of copyright header · d83706bc
      Mattias Jonsson authored
      d83706bc
    • Mattias Jonsson's avatar
      merge · bede87d3
      Mattias Jonsson authored
      bede87d3
    • Alfranio Correia's avatar
      BUG#59338 Inconsistency in binlog for statements that don't change any rows STATEMENT SBR · 8ce9b992
      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.
      8ce9b992
    • John H. Embretsen's avatar
      Null-merge from mysql-5.1 · cbf2f80d
      John H. Embretsen authored
      cbf2f80d
    • Jimmy Yang's avatar
      b448b5d5
    • Jimmy Yang's avatar
      df13ee2e
    • Jimmy Yang's avatar
      Fix Bug #59465 btr_estimate_number_of_different_key_vals use incorrect offset · 71e8043b
      Jimmy Yang authored
      for external_size
            
      rb://581 approved by Marko
      71e8043b
    • Alfranio Correia's avatar
      BUG#55675 rpl.rpl_log_pos fails sporadically with error binlog truncated in the middle · 235e10d9
      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.
      235e10d9
  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. · 6ae9810f
      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
      6ae9810f
    • Mattias Jonsson's avatar
      merge · ec5e43da
      Mattias Jonsson authored
      ec5e43da
    • Mattias Jonsson's avatar
      merge · ad74ed74
      Mattias Jonsson authored
      ad74ed74
    • Jon Olav Hauglid's avatar
      Bug #42230 during add index, cannot do queries on storage engines · e99f2b1c
      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.
      e99f2b1c