An error occurred fetching the project authors.
  1. 21 Nov, 2023 1 commit
    • Marko Mäkelä's avatar
      MDEV-32050 fixup: Stabilize tests · 4c16ec3e
      Marko Mäkelä authored
      In any test that uses wait_all_purged.inc, ensure that InnoDB tables
      will be created without persistent statistics.
      
      This is a follow-up to commit cd04673a
      after a similar failure was observed in the innodb_zip.blob test.
      4c16ec3e
  2. 25 Oct, 2023 1 commit
    • Marko Mäkelä's avatar
      MDEV-32050: Deprecate&ignore innodb_purge_rseg_truncate_frequency · 14685b10
      Marko Mäkelä authored
      The motivation of introducing the parameter
      innodb_purge_rseg_truncate_frequency in
      mysql/mysql-server@28bbd66ea5f6acf80fcb381057bb7ca5b7b188d2 and
      mysql/mysql-server@8fc2120fed11d2498ecb3635d87f414c76985fce
      seems to have been to avoid stalls due to freeing undo log pages
      or truncating undo log tablespaces. In MariaDB Server,
      innodb_undo_log_truncate=ON should be a much lighter operation
      than in MySQL, because it will not involve any log checkpoint.
      
      Another source of performance stalls should be
      trx_purge_truncate_rseg_history(), which is shrinking the history list
      by freeing the undo log pages whose undo records have been purged.
      To alleviate that, we will introduce a purge_truncation_task that will
      offload this from the purge_coordinator_task. In that way, the next
      innodb_purge_batch_size pages may be parsed and purged while the pages
      from the previous batch are being freed and the history list being shrunk.
      
      The processing of innodb_undo_log_truncate=ON will still remain the
      responsibility of the purge_coordinator_task.
      
      purge_coordinator_state::count: Remove. We will ignore
      innodb_purge_rseg_truncate_frequency, and act as if it had been
      set to 1 (the maximum shrinking frequency).
      
      purge_coordinator_state::do_purge(): Invoke an asynchronous task
      purge_truncation_callback() to free the undo log pages.
      
      purge_sys_t::iterator::free_history(): Free those undo log pages
      that have been processed. This used to be a part of
      trx_purge_truncate_history().
      
      purge_sys_t::clone_end_view(): Take a new value of purge_sys.head
      as a parameter, so that it will be updated while holding exclusive
      purge_sys.latch. This is needed for race-free access to the field
      in purge_truncation_callback().
      
      Reviewed by: Vladislav Lesin
      14685b10
  3. 12 Sep, 2022 1 commit
  4. 14 Apr, 2020 1 commit
    • Marko Mäkelä's avatar
      MDEV-22242 B-trees can become extremely skewed · 2f7d91bb
      Marko Mäkelä authored
      The test innodb.innodb_wl6326 that had been disabled in 10.4 due to
      MDEV-21535 is failing on 10.5 due to a different reason: the removal
      of the MLOG_COMP_END_COPY_CREATED operations in MDEV-12353
      commit 276f996a caused PAGE_LAST_INSERT
      to be set to something nonzero by the function page_copy_rec_list_end().
      
      This in turn would cause btr_page_get_split_rec_to_right() to behave
      differently: we would not attempt to split the page at all, but simply
      insert the new record into the new, empty, right leaf page.
      
      Even though the change reduced the sizes of some tables, it is better
      to aim for balanced trees.
      
      page_copy_rec_list_end(), PageBulk::finishPage():
      Preserve PAGE_LAST_INSERT, PAGE_N_DIRECTION, PAGE_DIRECTION.
      
      PageBulk::finish(): Move some common code from PageBulk::finishPage().
      2f7d91bb
  5. 13 Feb, 2020 1 commit
    • Marko Mäkelä's avatar
      MDEV-12353: Replace MLOG_*_END_COPY_CREATED · 276f996a
      Marko Mäkelä authored
      Instead of writing the high-level redo log records
      MLOG_LIST_END_COPY_CREATED, MLOG_COMP_LIST_END_COPY_CREATED
      write log for each individual insert of a record.
      
      page_copy_rec_list_end_to_created_page(): Remove.
      
      This will improve the fill factor of some pages.
      Adjust some tests accordingly.
      
      PageBulk::init(), PageBulk::finish(): Avoid setting bogus limits
      to PAGE_HEAP_TOP and PAGE_N_DIR_SLOTS. Avoid accessor functions
      that would enforce these limits before the correct ones are set
      at the end of PageBulk::finish().
      276f996a
  6. 08 Aug, 2017 1 commit
    • Marko Mäkelä's avatar
      Remove wait_innodb_all_purged.inc · 86e0a73e
      Marko Mäkelä authored
      The file wait_innodb_all_purged.inc waited for InnoDB purge in a way
      that only worked in debug builds. The file wait_all_purged.inc
      provides a better mechanism.
      86e0a73e
  7. 19 Feb, 2017 1 commit
    • Marko Mäkelä's avatar
      MDEV-11802 preparation: Clean up the purge tests. · cc4b2b18
      Marko Mäkelä authored
      Revert the MDEV-4396 tweak to innodb.innodb_bug14676111.
      We must fix the root cause instead.
      
      Allow gcol.innodb_virtual_purge to run on a non-debug build
      (If wait_innodb_all_purged.inc is used in a non-debug test,
      it will have no effect.)
      
      Add the test innodb.index_merge_threshold from MySQL 5.7.
      cc4b2b18