1. 08 Dec, 2022 1 commit
    • Monty's avatar
      Fixed bug in Aria when used with enterprise mariadb-backup · dd5f4b36
      Monty authored
      If the backup finished in the middle of a Aria bulk load insert,
      which could happen with LOAD DATA INFILE, CREATE ... SELECT etc)
      there was a chance that Aria recovery would fail on the backup.
      
      Fixed by ensuring that bulk load operations for Aria are not allowed
      under BACKUP LOCK.
      I also changed so that the table TRN is updated just before truncate
      which ensures that old redo's for the table are ignored.
      I also enabled Aria redo for DDL's to be able to repeat REPAIR commands.
      Without this change recovery would not work on repaired tables.
      
      Notes:
      - We take the backup lock protection at the end of bulk insert (as we
        don't want to keep the lock over a very long running insert).
        If mariadb-backup keeps the backup lock too long,  this may fail with
        a lock timeout. In this case the batch insert will fail and the table
        will be truncated (set to it's original state).
      dd5f4b36
  2. 06 Dec, 2022 1 commit
  3. 05 Dec, 2022 3 commits
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · e55397a4
      Marko Mäkelä authored
      e55397a4
    • Marko Mäkelä's avatar
      MDEV-30148 Race condition between non-persistent statistics and purge · 0a7d85c9
      Marko Mäkelä authored
      btr_cur_t::open_random_leaf(): Replaces btr_cur_open_at_rnd_pos().
      Acquire a shared latch on each page, and finally release all
      latches except the one on the leaf page.
      
      This fixes a race condition between the purge of history and
      btr_estimate_number_of_different_key_vals(), which turned out
      to only hold a buffer-fix on the randomly chosen leaf page.
      Typically, an assertion would fail in page_rec_is_supremum().
      
      ibuf_contract(): Start from the beginning of the change buffer,
      to simplify the logic. Starting with
      commit b42294bc
      it does not matter much where the change buffer merge is being initiated.
      
      The race condition may have been introduced as early as
      mysql/mysql-server@ac74632293bea967b352d1b472abedeeaa921b98
      from where it was copied to
      commit 2e814d47.
      
      Reviewed by: Vladislav Lesin
      Tested by: Matthias Leich
      0a7d85c9
    • Otto Kekäläinen's avatar
      Gitlab-CI: Upgrade Fedora build always use latest (now 37) version · 95d71272
      Otto Kekäläinen authored
      The version was fixed to be Fedora 36 due to previous issues on
      Gitlab-CI, but those seem to be solved now.
      
      Use 'mariadb' name in scripts and server binary as Fedora switched name in
      https://src.fedoraproject.org/rpms/mariadb/c/df76620f9e8a9b3f14da8a615050feeac2c62e26
      
      Switch to using the `default:` section supported by newer Gitlab-CI,
      see https://docs.gitlab.com/ee/ci/yaml/#default.
      
      Also define an explicit timeout of 3 hours to ensure builds don't time
      out if the default timeout is too short.
      
      NOTE TO MERGERS: These changes are version independent and should be
      merged up on all MariaDB branches 10.6 -> 10.11.
      95d71272
  4. 03 Dec, 2022 1 commit
    • Sergei Petrunia's avatar
      MDEV-29129: Performance regression starting in 10.6: select order by limit ... · e0dbec1c
      Sergei Petrunia authored
      The cause of regression was handling for ROWNUM() function.
      For queries like
      
        SELECT ROWNUM() FROM ... ORDER BY ...
      
      ROWNUM() should be computed before the ORDER BY.
      The computation was moved to be before the ORDER BY for any entries in
      the select list that had RAND_TABLE_BIT set.
      
      This had a negative impact on queries in form:
      
        SELECT sp_func() FROM t1 ORDER BY ... LIMIT n
      
      where sp_func() is NOT declared as DETERMINISTIC (and so has
      RAND_TABLE_BIT set).
      
      The fix is to require evaluation for sorting only for the ROWNUM()
      function. Functions that just have RAND_TABLE_BIT() can be computed
      after ORDER BY ... LIMIT is applied.
      
      (think about a possible index that satisfies the ORDER BY clause. In
      that case, the the rows would be read in the needed order and we would
      stop after reading LIMIT rows, achieving the same effect).
      e0dbec1c
  5. 02 Dec, 2022 2 commits
  6. 01 Dec, 2022 1 commit
  7. 30 Nov, 2022 9 commits
  8. 29 Nov, 2022 7 commits
  9. 28 Nov, 2022 6 commits
    • Daniel Black's avatar
      MDEV-23230 wsrep files installed when built without WSREP (#2334) · 7b44d0ba
      Daniel Black authored
      Prevent wsrep files from being installed if WITH_WSREP=OFF.
      
      Reviewed by Daniel Black
      Additionally excluded #include wsrep files and galera* files
      along with galera/wsrep tests.
      
      mysql-test/include/have_wsrep.inc remainds as its used by
      a few isolated tests.
      Co-authored-by: default avatarChris Ross <cross2@cisco.com>
      7b44d0ba
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · fdc582fd
      Marko Mäkelä authored
      fdc582fd
    • Marko Mäkelä's avatar
      MDEV-24412 InnoDB: Upgrade after a crash is not supported · bd694bb7
      Marko Mäkelä authored
      recv_log_recover_10_4(): Widen the operand of bitwise and to 64 bits,
      so that the upgrade check will work when the redo log record is located
      more than 4 gigabytes from the start of the first file.
      bd694bb7
    • Marko Mäkelä's avatar
      MDEV-30106 InnoDB fails to validate the change buffer on startup · db14eb16
      Marko Mäkelä authored
      ibuf_init_at_db_start(): Validate the change buffer root page.
      A later version may stop creating a change buffer, and this
      validation check will prevent a downgrade from such later versions.
      
      ibuf_max_size_update(): If the change buffer was not loaded, do nothing.
      
      dict_boot(): Merge the local variable "error" to "err". Ignore
      failures of ibuf_init_at_db_start() if innodb_force_recovery>=4.
      db14eb16
    • Marko Mäkelä's avatar
      MDEV-30089 Metrics not incremented for 1st iteration in buf_LRU_free_from_common_LRU_list() · e0d672f3
      Marko Mäkelä authored
      In commit a03dd94b as well as
      mysql/mysql-server@6ef8c343445a26aaf9ebd76d72cf57db44b481f5
      the iterations were changed so that the variable "scanned"
      would remain 0 when the first list item qualifies for eviction.
      
      buf_LRU_free_from_unzip_LRU_list(), buf_LRU_free_from_common_LRU_list():
      Increment "scanned" when a block can be freed.
      
      buf_LRU_free_from_common_LRU_list(): Remove a redundant condition.
      Whenever this function is invoked, buf_pool.LRU should be nonempty,
      hence something should always be scanned.
      
      Thanks to Jean-François Gagné for reporting this.
      e0d672f3
    • Daniel Black's avatar
      MDEV-25417: Remove innodb buffer pool load throttling · 183ca823
      Daniel Black authored
      The very lightest of load would decimate any buffer pool loading
      to ~1 page per second. As seen in MDEV-29343 this resulting in
      a load taking over an hour on a high end system.
      
      Since MDEV-26547 the fetching is asynchronous, however the loading
      has equal access to the IO as the SQL queries.
      183ca823
  10. 26 Nov, 2022 6 commits
  11. 25 Nov, 2022 3 commits
    • Brandon Nesterenko's avatar
      MDEV-29607: binlog.binlog_checkpoint fails in buildbot with result content mismatch · 812443c2
      Brandon Nesterenko authored
      Problem:
      ========
      There is a race condition in binlog.binlog_checkpoint between the
      binlog background thread creating a binlog checkpoint event, and the
      connection thread binlogging a query event for creating a table.
      Because the test outputs the events for validation, the order
      between these two events can be different, resulting in a failed
      test.
      
      Solution:
      ========
      Instead of outputting the binlog events, use assert_grep to validate
      the content of the binlog is correct.
      
      Reviewed By:
      ============
      Andrei Elkin <andrei.elkin@mariadb.com>
      812443c2
    • Daniel Black's avatar
      Query cache: removed unused THD from few functions · 7919b143
      Daniel Black authored
      A few query cache functions don't use THD pointer
      so its removed from their interface.
      7919b143
    • Daniel Black's avatar
      MDEV-29760: DROP DATABASE hangs when particular query cache is present · 7141c260
      Daniel Black authored
      Fix the regression introduced in
      dfb41fdd.
      
      In the restructure of mysql_rm_table_no_locks the early condition
      of !frm_error that enabled non_tmp_table_deleted, and hence the
      query cache invalidation, was removed.
      
      The query_cache_invalidate1(thd, dbnorm) called after
      mysql_rm_table_no_locks depends on the query cache removal
      (for unexamined reasons).
      
      Under DROP DATABASE, in mysql_rm_table_no_locks, dont_log_query
      is true preventing the late setting of non_tmp_table_deleted
      (which retained one of its purposes as a replication deletion
      of temporary tables, but not query cache invalidation).
      
      The non_temp_tables_count however can still be used to invalidate
      the query cache.
      7141c260