1. 14 Feb, 2022 8 commits
  2. 13 Feb, 2022 2 commits
    • Marko Mäkelä's avatar
      MDEV-27817 InnoDB recovery of recently created files is not crash-safe · 7b891008
      Marko Mäkelä authored
      Before commit 86dc7b4d (MDEV-24626)
      all tablespace ID that needed recovery were known already in
      recv_init_crash_recovery_spaces().
      
      recv_sys_t::recover_deferred(): Invoke fil_names_dirty(space) on
      the newly initialized tablespace. In this way, if the next log
      checkpoint occurs at some LSN that is after the initialization of
      the tablespace and before the last recovered LSN, a FILE_MODIFY
      record will be written, so that a subsequent recovery will succeed.
      
      The recovery was broken when
      commit 0261eac5 merged the 10.5
      commit f443cd11 (MDEV-27022).
      7b891008
    • Marko Mäkelä's avatar
      Merge mariadb-10.6.7 into 10.6 · f1e08eaa
      Marko Mäkelä authored
      f1e08eaa
  3. 12 Feb, 2022 5 commits
  4. 11 Feb, 2022 5 commits
    • Vladislav Vaintroub's avatar
      MDEV-27813 Windows, compiling : RelWithDebInfo should use /Ob2 · 91d9e9bd
      Vladislav Vaintroub authored
      Fixed inlining flags. Remove /Ob1 added by CMake for RelWithDebInfo.
      (the actual compiler default is /Ob2 if optimizations are enabled)
      
      Allow to define custom /Ob flag with new variable MSVC_INLINE, if desired
      91d9e9bd
    • Marko Mäkelä's avatar
      Disable innodb_gis.rtree_compress2 · 1a7573d5
      Marko Mäkelä authored
      1a7573d5
    • Krunal Bauskar's avatar
      MDEV-27805: tpcc workload shows regression with MDB-10.6 · fb875055
      Krunal Bauskar authored
      - regression got revealed while running tpcc workload.
      
      - as part of MDEV-25919 changes logic for statistics computation was revamped.
      
      - if the table has changed to certain threshold then table is added to
        statistics recomputation queue (dict_stats_recalc_pool_add)
      
      - after the table is added to queue the background statistics thread is
        notified
      
      - during revamp the condition to notify background statistics threads was
        wrongly updated to check if the queue/vector is empty when it should
        check if there is queue/vector has entries to process.
      
      - vec.begin() == vec.end() : only when vector is empty
      
      - also accessing these iterator outside the parallely changing vector is not
        safe
      
      - fix now tend to notify background statistics thread if the logic adds
        an entry to the queue/vector.
      fb875055
    • Vlad Lesin's avatar
      MDEV-27746 Wrong comparision of BLOB's empty preffix with non-preffixed BLOB... · 3b10e8f8
      Vlad Lesin authored
      MDEV-27746 Wrong comparision of BLOB's empty preffix with non-preffixed BLOB causes rows count mismatch for clustered and secondary indexes during non-locking read
      
      row_sel_sec_rec_is_for_clust_rec() treats empty BLOB prefix field in
      secondary index as a field equal to any external BLOB field in clustered
      index. Row_sel_get_clust_rec_for_mysql::operator() doesn't zerro out
      clustered record pointer in row_search_mvcc(), and row_search_mvcc()
      thinks that delete-marked secondary index record has visible for
      "CHECK TABLE"'s read view old-versioned clustered index record, and
      row_scan_index_for_mysql() counts it as a row.
      
      The fix is to execute row_sel_sec_rec_is_for_blob() in
      row_sel_sec_rec_is_for_clust_rec() if clustered field contains BLOB's
      reference.
      3b10e8f8
    • Samuel Thibault's avatar
      MDEV-27804 Fails to build - perf schema - thread id of type uintptr_t requires header · 7c6ec0a5
      Samuel Thibault authored
      While building on GNU/Hurd and kfreebsd.
      
      On the C++ standard uintptr_t can be defined in <cstdint>
      ref: https://www.cplusplus.com/reference/cstdint/
      
      Fixes: 0d44792a
      7c6ec0a5
  5. 10 Feb, 2022 11 commits
  6. 09 Feb, 2022 8 commits
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · cce99405
      Marko Mäkelä authored
      cce99405
    • Marko Mäkelä's avatar
      MDEV-27716 mtr_t::commit() acquires log_sys.mutex when writing no log · fd101daa
      Marko Mäkelä authored
      mtr_t::is_block_dirtied(), mtr_t::memo_push(): Never set m_made_dirty
      for pages of the temporary tablespace. Ever since
      commit 5eb53955
      we never add those pages to buf_pool.flush_list.
      
      mtr_t::commit(): Implement part of mtr_t::prepare_write() here,
      and avoid acquiring log_sys.mutex if no log is written.
      During IMPORT TABLESPACE fixup, we do not write log, but we must
      add pages to buf_pool.flush_list and for that, be prepared
      to acquire log_sys.flush_order_mutex.
      
      mtr_t::do_write(): Replaces mtr_t::prepare_write().
      fd101daa
    • Oleksandr Byelkin's avatar
      1bed5640
    • Oleksandr Byelkin's avatar
      34c50196
    • Oleksandr Byelkin's avatar
      8a7776a8
    • Oleksandr Byelkin's avatar
      e3524445
    • Oleksandr Byelkin's avatar
      941bc705
    • Marko Mäkelä's avatar
      MDEV-27734 Set innodb_change_buffering=none by default · 5c46751f
      Marko Mäkelä authored
      The aim of the InnoDB change buffer is to avoid delays when a leaf page
      of a secondary index is not present in the buffer pool, and a record needs
      to be inserted, delete-marked, or purged. Instead of reading the page into
      the buffer pool for making such a modification, we may insert a record to
      the change buffer (a special index tree in the InnoDB system tablespace).
      The buffered changes are guaranteed to be merged if the index page
      actually needs to be read later.
      
      The change buffer could be useful when the database is stored on a
      rotational medium (hard disk) where random seeks are slower than
      sequential reads or writes.
      
      Obviously, the change buffer will cause write amplification, due to
      potentially large amount of metadata that is being written to the
      change buffer. We will have to write redo log records for modifying
      the change buffer tree as well as the user tablespace. Furthermore,
      in the user tablespace, we must maintain a change buffer bitmap page
      that uses 2 bits for estimating the amount of free space in pages,
      and 1 bit to specify whether buffered changes exist. This bitmap needs
      to be updated on every operation, which could reduce performance.
      
      Even if the change buffer were free of bugs such as MDEV-24449
      (potentially causing the corruption of any page in the system tablespace)
      or MDEV-26977 (corruption of secondary indexes due to a currently
      unknown reason), it will make diagnosis of other data corruption harder.
      
      Because of all this, it is best to disable the change buffer by default.
      5c46751f
  7. 08 Feb, 2022 1 commit