1. 05 Sep, 2024 1 commit
  2. 03 Sep, 2024 4 commits
    • Marko Mäkelä's avatar
      MDEV-34845 buf_flush_buffer_pool(): Assertion `!os_aio_pending_reads()' failed · 9f0b1066
      Marko Mäkelä authored
      buf_flush_buffer_pool(): Wait for any pending asynchronous reads
      to complete. This assertion failed in a run where buf_read_ahead_linear()
      had been triggered in an SQL statement that was executed right
      before shutdown.
      
      Reviewed by: Debarun Banerjee
      9f0b1066
    • Marko Mäkelä's avatar
      MDEV-34791: Redundant page lookups hurt performance · 9878238f
      Marko Mäkelä authored
      btr_cur_t::search_leaf(): When the index root page is also a leaf page,
      we may need to upgrade our existing shared root page latch into an
      exclusive latch. Even if we end up waiting, the root page won't be able
      to go away while we hold an index()->lock. The index page may be split;
      that is all.
      
      btr_latch_prev(): Acquire the page latch while holding a buffer-fix
      and an index tree latch. Merge the change buffer if needed. Use
      buf_pool_t::page_fix() for this special case instead of complicating
      buf_page_get_low() and buf_page_get_gen().
      
      row_merge_read_clustered_index(): Remove some code that does not seem
      to be useful. No difference was observed with regard to removing this
      code when a CREATE INDEX or OPTIMIZE TABLE statement was run concurrently
      with sysbench oltp_update_index --tables=1 --table_size=1000 --threads=16.
      
      buf_pool_t::unzip(): Decompress a ROW_FORMAT=COMPRESSED page.
      
      buf_pool_t::page_fix(): Handle also ROW_FORMAT=COMPRESSED pages
      as well as change buffer merge. Optionally return an error.
      Add a flag for suppressing a page latch wait and a special return
      value -1 to indicate that the call would block.
      This is the preferred way of buffer-fixing blocks.
      The functions buf_page_get_gen() and buf_page_get_low() are only being
      invoked with rw_latch=RW_NO_LATCH in operations on SPATIAL INDEX.
      
      buf_page_t: Define some static functions for interpreting state().
      
      buf_page_get_zip(), buf_read_page(),
      buf_read_ahead_random(), buf_read_ahead_linear():
      Remove the redundant parameter zip_size. We must look up the
      tablespace and can invoke fil_space_t::zip_size() on it.
      
      buf_page_get_low(): Require mtr!=nullptr.
      
      buf_page_get_gen(): Implement some lock downgrading during recovery.
      
      ibuf_page_low(): Use buf_pool_t::page_fix() in a debug check.
      We do wait for a page read here, because otherwise a debug assertion in
      buf_page_get_low() in the test innodb.ibuf_delete could occasionally fail.
      
      PageConverter::operator(): Invoke buf_pool_t::page_fix() in order
      to possibly evict a block. This allows us to remove some
      special case code from buf_page_get_low().
      9878238f
    • Denis Protivensky's avatar
      MDEV-33133: MDL conflict handling code should skip BF-aborted trxs · 4e2c02a1
      Denis Protivensky authored
      It's possible that MDL conflict handling code is called more
      than once for a transaction when:
      - it holds more than one conflicting MDL lock
      - reschedule_waiters() is executed,
      which results in repeated attempts to BF-abort already aborted
      transaction.
      In such situations, it might be that BF-aborting logic sees
      a partially rolled back transaction and erroneously decides
      on future actions for such a transaction.
      
      The specific situation tested and fixed is when a SR transaction
      applied in the node gets BF-aborted by a started TOI operation.
      It's then caught with the server transaction already rolled back,
      but with no MDL locks yet released. This caused wrong state
      detection for such a transaction during repeated MDL conflict
      handling code execution.
      Signed-off-by: default avatarJulius Goryavsky <julius.goryavsky@mariadb.com>
      4e2c02a1
    • Julius Goryavsky's avatar
      Merge branch '10.5' into '10.6' · d5a669b6
      Julius Goryavsky authored
      d5a669b6
  3. 02 Sep, 2024 2 commits
    • Sergei Petrunia's avatar
      MDEV-34720: Poor plan choice for large JOIN with ORDER BY and small LIMIT · c8d04093
      Sergei Petrunia authored
      (Variant 2b: call greedy_search() twice, correct handling for limited
       search_depth)
      
      Modify the join optimizer to specifically try to produce join orders that
      can short-cut their execution for ORDER BY..LIMIT clause.
      
      The optimization is controlled by @@optimizer_join_limit_pref_ratio.
      Default value 0 means don't construct short-cutting join orders.
      Other value means construct short-cutting join order, and prefer it only
      if it promises speedup of more than #value times.
      
      In Optimizer Trace, look for these names:
      * join_limit_shortcut_is_applicable
      * join_limit_shortcut_plan_search
      * join_limit_shortcut_choice
      c8d04093
    • Sergei Petrunia's avatar
      Code cleanup in test_if_skip_sort_order() · 819765a4
      Sergei Petrunia authored
      Added comments
      Moved a part into find_indexes_matching_order().
      819765a4
  4. 01 Sep, 2024 12 commits
  5. 30 Aug, 2024 2 commits
  6. 29 Aug, 2024 5 commits
  7. 28 Aug, 2024 4 commits
    • Oleksandr Byelkin's avatar
      MDEV-34704 Quick mode produces the bug for mariadb client · 872dbec9
      Oleksandr Byelkin authored
        --quick-max-column-width parameter added to limit field
          width in --quick mode.
      872dbec9
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · 0e76c1ba
      Marko Mäkelä authored
      0e76c1ba
    • Marko Mäkelä's avatar
      MDEV-34802 Recovery fails to note some log corruption · 1ff6b6f0
      Marko Mäkelä authored
      recv_recovery_from_checkpoint_start(): Abort startup due to log
      corruption if we were unable to parse the entire log between
      the latest log checkpoint and the corresponding FILE_CHECKPOINT record.
      
      Also, reduce some code bloat related to log output and log_sys.mutex.
      
      Reviewed by: Debarun Banerjee
      1ff6b6f0
    • Marko Mäkelä's avatar
      MDEV-34803 innodb_lru_flush_size is no longer used · bda40ccb
      Marko Mäkelä authored
      In commit fa8a46eb (MDEV-33613)
      the parameter innodb_lru_flush_size ceased to have any effect.
      
      Let us declare the parameter as deprecated and additionally as
      MARIADB_REMOVED_OPTION, so that there will be a warning written
      to the error log in case the option is specified in the command line.
      
      Let us also do the same for the parameter
      innodb_purge_rseg_truncate_frequency
      that was deprecated&ignored earlier in MDEV-32050.
      
      Reviewed by: Debarun Banerjee
      bda40ccb
  8. 27 Aug, 2024 5 commits
  9. 26 Aug, 2024 5 commits