1. 23 Feb, 2018 20 commits
  2. 22 Feb, 2018 15 commits
  3. 21 Feb, 2018 5 commits
    • Marko Mäkelä's avatar
      MDEV-15370 Upgrade fails when both insert_undo and update_undo exist · fe0e263e
      Marko Mäkelä authored
      Before MDEV-12288 in MariaDB 10.3.1, InnoDB used to partition
      the persistent transaction undo log into insert_undo and update_undo.
      
      MDEV-12288 repurposes the update_undo as the single undo log.
      In order to support an upgrade from earlier MariaDB versions,
      the insert_undo is recovered in data structures, called old_insert.
      
      An assertion failure occurred in TrxUndoRsegsIterator::set_next()
      when an incomplete transaction was recovered with both insert_undo
      and update_undo log. This could be easily demonstrated by starting
      ./mysql-test-run --manual-gdb innodb.read_only_recovery
      in MariaDB 10.2, and after the first kill, start up the MariaDB 10.3
      server with the same parameters.
      
      The problem is that MariaDB 10.3 would roll back the recovered
      transaction, and finally "commit" it twice (with all changes to
      data rolled back), both insert_undo and update_undo with the same
      commit end identifier (trx->no).
      
      Our fix is to introduce a "commit number" that comprises two components:
      (trx->no << 1 | !old_insert). In this way, the assertion in the purge
      subsystem can be relaxed so that only the trx->no component must match.
      fe0e263e
    • Daniel Black's avatar
      MDEV-15356: tp_timeout_handler needs to call set_killed_no_mutex as it has the mutex · 868bca5c
      Daniel Black authored
      Regression introducted in c2118a08 where LOCK_thd_data was moveed
      to LOCK_thd_kill
      868bca5c
    • Vladislav Vaintroub's avatar
      Fix truncation warning on Windows. · 23d7b773
      Vladislav Vaintroub authored
      23d7b773
    • Marko Mäkelä's avatar
      Refactor TrxUndoRsegsIterator for further simplification · 6a370e43
      Marko Mäkelä authored
      TrxUndoRsegs::append(): Remove.
      
      TrxUndoRsegsIterator::set_next(): Add a debug assertion that
      demonstrates that the merging of rollback segments never occurs.
      Since MDEV-12289 or earlier, MariaDB 10.2 will not make any
      temporary undo log accessible to the purge subsystem.
      (Also MySQL 5.7 would skip the purge of any undo log for
      temporary tables, but not before parsing and buffering those
      temporary undo log records.)
      6a370e43
    • Marko Mäkelä's avatar
      Simplify TrxUndoRsegs · 6ae7fa68
      Marko Mäkelä authored
      Construct directly from trx_rseg_t&.
      push_back(), size(): Remove.
      6ae7fa68