1. 23 Apr, 2024 4 commits
  2. 22 Apr, 2024 5 commits
  3. 21 Apr, 2024 8 commits
  4. 20 Apr, 2024 6 commits
  5. 19 Apr, 2024 8 commits
    • Sergei Golubchik's avatar
      MDEV-33952 galera_create_table_as_select fails sporadically · 4a2e0345
      Sergei Golubchik authored
      disable until fixed
      4a2e0345
    • Zhibo Zhang's avatar
      Update tests to be compatible with OpenSSL 3.2.0 · 7432a487
      Zhibo Zhang authored
      As of version 3.2.0, OpenSSL updated the error message in new versions
      ("https://github.com/openssl/openssl/commit/81b741f68984"). Update the
      tests and result files such that they are compatible with both original
      and new error messages.
      
      All new code of the whole pull request, including one or several files that are
      either new files or modified ones, are contributed under the BSD-new
      license. I am contributing on behalf of my employer Amazon Web Services,
      Inc.
      7432a487
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · 15b607b5
      Marko Mäkelä authored
      15b607b5
    • Marko Mäkelä's avatar
      MDEV-33946: OPT_PAGE_CHECKSUM mismatch due to mtr_t::memmove() · 4c343394
      Marko Mäkelä authored
      mtr_t::memmove(): Revert to the parent of
      commit a032f14b
      where there was supposed to be an equivalent change
      that would avoid hitting a warning in some old version of GCC
      when this change was part of another 10.6 based developmet branch.
      
      For some reason, this change is not equivalent but will cause
      massive amounts of backup failures in the stress tests
      run by Matthias Leich, caught by
      commit 4179f93d in 10.6.
      4c343394
    • Marko Mäkelä's avatar
      MDEV-33325 fixup · ec7db2bd
      Marko Mäkelä authored
      ibuf_remove_free_page(): Correct the calculation of root_savepoint().
      The first entry acquired by ibuf_tree_root_get() will be ibuf.index.lock
      and not the change buffer root page.
      
      Thanks to Matthias Leich for finding this bug in RQG.
      Unfortunately, this code is very difficult to cover
      in our regression test suite.
      ec7db2bd
    • Marko Mäkelä's avatar
      MDEV-32791 MariaDB cannot be installed on Red Hat ubi9 · 8e663f5e
      Marko Mäkelä authored
      The libpmem dependency that had been added in
      commit 3daef523 (MDEV-17084)
      did not achieve any measurable performance improvement when
      comparing the same PMEM device with and without "mount -o dax"
      using the Linux ext4 file system.
      
      Because Red Hat has deprecated libpmem, let us remove the code
      altogether.
      
      Note: This is a 10.6 version of
      commit 3f9f5ca4
      which will retain PMEM support in MariaDB Server 10.11.
      8e663f5e
    • Marko Mäkelä's avatar
      MDEV-33447: libpmem is not available in RHEL 8 · 3f9f5ca4
      Marko Mäkelä authored
      Because the Red Hat Enterprise Linux 8 core repository does not include
      libpmem, let us implement the necessary subset ourselves.
      
      pmem_persist(): Implement for 64-bit x86, ARM, POWER, RISC-V, Loongarch
      in a way that should be compatible with the https://github.com/pmem/pmdk/
      implementation of pmem_persist().
      
      The CMake option WITH_INNODB_PMEM can be used for enabling or disabling
      this interface at compile time. By default, it is enabled on all applicable
      systems that are covered by our CI system.
      
      Note: libpmem had not been previously enabled for Loongarch in our
      Debian packaging. It was enabled for RISC-V, but we will not enable it
      by default on RISC-V or Loongarch because we lack CI coverage.
      
      The generated code for x86_64 was reviewed and tested on two
      Intel implementations: one that only supports clflush, and
      another that supports both clflushopt and clwb.
      
      The generated machine code was also reviewed on https://godbolt.org
      using various compiler versions. Godbolt helpfully includes an option
      to compile to binary code and display the encoding, which was
      useful on POWER.
      
      Reviewed by: Vladislav Vaintroub
      3f9f5ca4
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-33934 Assertion `!check_foreigns' failed in · 8a3755cc
      Thirunarayanan Balathandayuthapani authored
      	     bulk_insert_apply_for_table(dict_table_t*)
      
      This issue is caused by
      commit 188c5da7 (MDEV-32453).
      
      trx_t::bulk_insert_apply_for_table(): Remove the assert
      check_unique_secondary and check_foreigns. InnoDB can
      apply the bulk insert operation even after disabling
      the check_foreigns and check_unique_secondary variable.
      8a3755cc
  6. 18 Apr, 2024 3 commits
    • Vladislav Vaintroub's avatar
      MDEV-16944 postfix. Fix a typo · 2e84560d
      Vladislav Vaintroub authored
      2e84560d
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · bb2e125d
      Marko Mäkelä authored
      This excludes commit 040069f4
      because it is specific to innodb_sync_debug, which had been removed
      in commit ff5d306e.
      bb2e125d
    • mariadb-DebarunBanerjee's avatar
      MDEV-32489 Change buffer index fails to delete the records · 5928e04d
      mariadb-DebarunBanerjee authored
      When the change buffer records for a page span across multiple change
      buffer leaf pages or the starting record is at the beginning of a page
      with a left sibling, ibuf_delete_recs deletes only the records in first
      page and fails to move to subsequent pages.
      
      Subsequently a slow shutdown hangs trying to delete those left over
      records.
      
      Fix-A: Position the cursor to an user record in B-tree and exit only
      when all records are exhausted.
      
      Fix-B: Make sure we call ibuf_delete_recs during slow shutdown for
      pages with IBUF entries to cleanup any previously left over records.
      5928e04d
  7. 17 Apr, 2024 6 commits
    • Anel Husakovic's avatar
      MDEV-33420: HASHICORP_KEY_MANAGEMENT fails on Windows with libcurl installed · 11aeef2a
      Anel Husakovic authored
      - When `libcurl` is installed in path out of default path, like on
      Windows, `include_directories` failed to find `curl/curl.h`.
      - Fix `cmake` by using modern syntax with imported target and
      `find_package`
      - Fix warnings treated as the errors
        - Remove `HASHICORP_HAVE_EXCEPTIONS` macro and related code
      - Add package to `Server` component in Windows
      - Tested with `$ ./mysql-test/mtr --suite=vault`
      - Closes PR #3068
      - Reviewer: <wlad@mariadb.com>
                  <julius.goryavsky@mariadb.com>
      11aeef2a
    • Julius Goryavsky's avatar
    • Brandon Nesterenko's avatar
      MDEV-27512: Assertion !thd->transaction_rollback_request failed in rows_event_stmt_cleanup · 0ad52e4d
      Brandon Nesterenko authored
      If replicating an event in ROW format, and InnoDB detects a deadlock
      while searching for a row, the row event will error and rollback in
      InnoDB and indicate that the binlog cache also needs to be cleared,
      i.e. by marking thd->transaction_rollback_request. In the normal
      case, this will trigger an error in Rows_log_event::do_apply_event()
      and cause a rollback. During the Rows_log_event::do_apply_event()
      cleanup of a successful event application, there is a DBUG_ASSERT in
      log_event_server.cc::rows_event_stmt_cleanup(), which sets the
      expectation that thd->transaction_rollback_request cannot be set
      because the general rollback (i.e. not the InnoDB rollback) should
      have happened already. However, if the replica is configured to skip
      deadlock errors, the rows event logic will clear the error and
      continue on, as if no error happened. This results in
      thd->transaction_rollback_request being set while in
      rows_event_stmt_cleanup(), thereby triggering the assertion.
      
      This patch fixes this in the following ways:
       1) The assertion is invalid, and thereby removed.
       2) The rollback case is forced in rows_event_stmt_cleanup() if
      transaction_rollback_request is set.
      
      Note the differing behavior between transactions which are skipped
      due to deadlock errors and other errors. When a transaction is
      skipped due to an ignored deadlock error, the entire transaction is
      rolled back and skipped (though note MDEV-33930 which allows
      statements in the same transaction after the deadlock-inducing one
      to commit). When a transaction is skipped due to ignoring a
      different error, only the erroring statements are rolled-back and
      skipped - the rest of the transaction will execute as normal. The
      effect of this can be seen in the test results. The added test case
      to rpl_skip_error.test shows that only statements which are ignored
      due to non-deadlock errors are ignored in larger transactions. A
      diff between rpl_temporary_error2_skip_all.result and
      rpl_temporary_error2.result shows that all statements in the errored
      transaction are rolled back (diff pasted below):
      
      : diff rpl_temporary_error2.result rpl_temporary_error2_skip_all.result
      49c49
      < 2	1
      ---
      > 2	NULL
      51c51
      < 4	1
      ---
      > 4	NULL
      53c53
      < * There will be two rows in t2 due to the retry.
      ---
      > * There will be one row in t2 because the ignored deadlock does not retry.
      57d56
      < 1
      59c58
      < 1
      ---
      > 0
      
      Reviewed By:
      ============
      Andrei Elkin <andrei.elkin@mariadb.com>
      0ad52e4d
    • Vladislav Vaintroub's avatar
      MDEV-16944 Fix file sharing issues on Windows in mysqltest · 061adae9
      Vladislav Vaintroub authored
      On Windows systems, occurrences of ERROR_SHARING_VIOLATION due to
      conflicting share modes between processes accessing the same file can
      result in CreateFile failures.
      
      mysys' my_open() already incorporates a workaround by implementing
      wait/retry logic on Windows.
      
      But this does not help if files are opened using shell redirection like
      mysqltest traditionally did it, i.e via
      
      --echo exec "some text" > output_file
      
      In such cases, it is cmd.exe, that opens the output_file, and it
      won't do any sharing-violation retries.
      
      This commit addresses the issue by introducing a new built-in command,
      'write_line', in mysqltest. This new command serves as a brief alternative
      to 'write_file', with a single line output, that also resolves variables
      like "exec" would.
      
      Internally, this command will use my_open(), and therefore retry-on-error
      logic.
      
      Hopefully this will eliminate the very sporadic "can't open file because
      it is used by another process" error on CI.
      061adae9
    • Vladislav Vaintroub's avatar
      Remove duplicate key "Language" from .clang-format · b48de973
      Vladislav Vaintroub authored
      Latest Visual Studio complains about invalid format, it breaks formatting
      in the IDE
      b48de973
    • Vladislav Vaintroub's avatar
      Do not run maria_recover_encrypted with embedded. · 173847b7
      Vladislav Vaintroub authored
      It uses shutdown/restart etc, features not compatible the embedded.
      
      also add have_debug.inc , since it uses debug_dbug variable
      173847b7