1. 13 Dec, 2022 2 commits
  2. 12 Dec, 2022 3 commits
  3. 10 Dec, 2022 1 commit
    • Julius Goryavsky's avatar
      MDEV-29814: galera_var_notify_ssl_ipv6 causes testing system to hang · a4914008
      Julius Goryavsky authored
      This commit fixes the test system hanging due to
      the galera_var_notify_ssl_ipv6 test and also brings
      the wsrep_notify[_ssl].sh files in line with each other
      between the user template and the mtr suite.
      
      Quotes are also added here to avoid problems if the
      user specifies the value of one of the variables at the
      beginning of the file containing shell-specific characters,
      for example, if the password or username specified in the
      PSWD and USER variables will contain the "$" character.
      
      Also fixed an issue with automatic --ssl-verify-server-cert
      option substitution when the corresponding value is set
      by the user to "1" or "on".
      
      Also fixed some tests here to avoid joining one of the nodes
      to another cluster when the nodes are restarted from the mtr
      side, which can lead to random failures when testing with
      buildbot.
      a4914008
  4. 08 Dec, 2022 1 commit
    • Tuukka Pasanen's avatar
      MDEV-28834: Add minimal support for Lintian version 2.115 and above · 85181653
      Tuukka Pasanen authored
      Convert minimal amount of Lintian overrides to make Lintian
      test pass also with Debian Sid latest Lintian 2.115 version.
      
      Old style overrides are kept so they can be used with
      older versions of Lintian.
      
      Introduce minimal Lintian overrides which are common
      from MariaDB version 10.5 up-to to 10.8.
      
      Overrides added files:
        * debian/mariadb-test-data.lintian-overrides
          - MariaDB installs some shared objects to test-suite directory and not in
            '/usr/lib' or similar. Share objects is pam_mariadb_mtr.so. Tags are
            arch-dependent-file-in-usr-share and
            arch-independent-package-contains-binary-or-object Lintia
       * debian/mariadb-test.lintian-overrides
         - MariaDB installs some some binaries to test-sute directory and
           in mariadb-test package they are my_safe_process and
           wsrep_check_version. Tags is
           arch-dependent-file-in-usr-share
       * debian/source/lintian-overrides
         - In source there is some source files missing which should be addressed
           sql/share/charsets/languages.html and
           and storage/rocksdb/rocksdb/docs/_includes/footer.html.
           Tags is source-is-missing
         - Add Lintian override for missing:
           storage/columnstore/columnstore/utils/jemalloc/libjemalloc.so.2
         - Add Lintian override for substvar external resources:
           ${source:Version} libmariadb-dev -> libmysqlclient-dev [debian/control:66]
           ${source:Version} libmariadb-dev -> libmysqld-dev [debian/control:66]
           ${source:Version} libmariadbd-dev -> libmariadbclient-dev [debian/control:216]
      85181653
  5. 07 Dec, 2022 1 commit
    • Jan Lindström's avatar
      MDEV-30172: Galera test case cleanup · 0174a9ff
      Jan Lindström authored
      * Delete tests that are not supported and not going to be supported
        any time soon
      * Fix result set on tests that are not run on bb
      * Fix tests that fail because of auto increment offset
      * Make sure that disabled tests have open bug report
      0174a9ff
  6. 05 Dec, 2022 1 commit
    • Monty's avatar
      Fixed a crash during automatic zerofill of moved Aria table · e748f5cc
      Monty authored
      This could happen if one did a DML with a moved table that one had done
      an external zerofill on.
      The crash happend because a message that was supposed to be sent to
      a repair report was instead sent to the result, which caused an ASSERT
      e748f5cc
  7. 02 Dec, 2022 1 commit
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-30114 Incremental prepare fails when innodb_undo_tablespaces > 0 · dd20a43c
      Thirunarayanan Balathandayuthapani authored
      - Mariabackup fails to open the undo tablespaces while applying delta
      files to the corresponding data file. Mariabackup opens the
      undo tablespaces first time in srv_undo_tablespaces_init() and does
      tries to open the undo tablespaces in xtrabackup_apply_deltas() with
      conflicting mode and leads to the failure.
      
      - Mariabackup should close the undo tablespaces before applying
      the incremental delta files.
      dd20a43c
  8. 01 Dec, 2022 1 commit
  9. 30 Nov, 2022 3 commits
  10. 29 Nov, 2022 5 commits
  11. 28 Nov, 2022 5 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
      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
  12. 26 Nov, 2022 6 commits
  13. 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
  14. 23 Nov, 2022 2 commits
    • lrf141's avatar
      MDEV-19190 Assertion `...auto_inc_initialized` failed in get_auto_increment · da03d8d9
      lrf141 authored
      This is a DELETE only case. Normally this statement doesn't make inserts,
      but DELETE ... FOR PORTION changes it. UPDATE and INSERT initializes
      autoinc by calling handler::info(HA_STATUS_AUTO). Also myisam and innodb
      can lazily initialize it in their update_create_info overrides.
      
      The solution is to initialize autoinc during delete preparation,
      if period (DELETE FOR PORTION) is specified.
      
      The initial work has been done by Kento Takeuchi by his PR #2048,
      however this commit also holds a few technical modifications by
      Nikita Malyavin
      da03d8d9
    • Marko Mäkelä's avatar
      MDEV-30009 InnoDB shutdown hangs when the change buffer is corrupted · 165564d3
      Marko Mäkelä authored
      The InnoDB change buffer (ibuf.index, stored in the system tablespace)
      and the change buffer bitmaps in persistent tablespaces could get out
      of sync with each other: According to the bitmap, no changes exist for
      a page, while there actually exist buffered entries in ibuf.index.
      
      InnoDB performs lazy deletion of buffered changes. When a secondary
      index leaf page is freed (possibly as part of DROP INDEX), any
      buffered changes will not be deleted. Instead, they would be deleted
      on a subsequent buf_page_create_low().
      
      One scenario where InnoDB failed to delete buffered changes is
      as follows:
      1. Some changes were buffered for a secondary index leaf page.
      2. The index page had been freed.
      3. ibuf_read_merge_pages() invoked ibuf_merge_or_delete_for_page(),
      which noticed that the page had been freed, and reset the change buffer
      bits, but did not delete the records from ibuf.index.
      4. The index page was reallocated for something else.
      5. The index page was removed from the buffer pool.
      6. Some changes were buffered for the newly created page.
      7. Finally, the buffered changes from both 1. and 6. were merged.
      8. The index is corrupted.
      
      An alternative outcome is:
      4. Shutdown with innodb_fast_shutdown=0 gets into an infinite loop.
      
      An alternative scenario is:
      3. ibuf_set_bitmap_for_bulk_load() reset the IBUF_BITMAP_BUFFERED bit
      but did not delete the ibuf.index records for that page number.
      
      The shutdown hang was already once fixed in
      commit d7a24017, refactored for
      10.5 in commit 77e8a311 and
      disabled in commit 310dff5d
      due to corruption.
      
      We will fix this as follows:
      
      ibuf_delete_recs(): Delete all ibuf.index entries for the specified page.
      
      ibuf_merge_or_delete_for_page(): When the change buffer bitmap bits
      were set and the page had been freed, and the page does not belong
      to ibuf.index itself, invoke ibuf_delete_recs(). This prevents the
      corruption from occurring when a DML operation is allocating a
      previously freed page for which changes had been buffered.
      
      ibuf_set_bitmap_for_bulk_load(): When the change buffer bitmap bits
      were set, invoke ibuf_delete_recs(). This prevents the corruption
      from occurring when CREATE INDEX is reusing a previously freed page.
      
      ibuf_read_merge_pages(): On slow shutdown, remove the orphan records
      by invoking ibuf_delete_recs(). This fixes the hang when the change
      buffer had become corrupted. We also remove the dops[] accounting,
      because nothing can monitor it during shutdown. We invoke
      ibuf_delete_recs() if:
      (a) buf_page_get_gen() failed to load the page or merge changes
      (b) the page is not a valid index leaf page
      (c) the page number is out of tablespace bounds
      
      srv_shutdown(): Invoke ibuf_max_size_update(0) to ensure that
      the race condition that motivated us to disable the code in
      ibuf_read_merge_pages() in commit 310dff5d
      is no longer possible. That is, during slow shutdown, both the
      rollback of transactions and the purge of history will return
      early from ibuf_insert_low().
      
      ibuf_merge_space(), ibuf_delete_for_discarded_space(): Cleanup:
      Do not allocate a memory heap.
      
      This was implemented by Thirunarayanan Balathandayuthapani
      and tested with innodb_change_buffering_debug=1 by Matthias Leich.
      165564d3
  15. 22 Nov, 2022 4 commits
  16. 21 Nov, 2022 1 commit
    • Marko Mäkelä's avatar
      MDEV-19514 fixup: Fix recovery with innodb_change_buffering_debug=1 · 4e5e8166
      Marko Mäkelä authored
      During crash recovery, recv_sys.apply(true) invokes
      mlog_init.mark_ibuf_exist(), which in turn may invoke
      recv_sys.apply(true) via the buf_flush_sync() call in
      buf_page_get_low(). The simplest fix is to disable the
      innodb_change_buffering_debug=1 instrumentation
      during crash recovery.
      4e5e8166