1. 14 May, 2020 1 commit
    • Vladislav Vaintroub's avatar
      MDEV-22555 Windows, packaging: binaries depend on vcruntime140_1.dll, which is not in MSI · 3bfe305c
      Vladislav Vaintroub authored
      When server is compiled with recent VS2019, then executables,
      have dependency on  vcruntime140_1.dll
      
      While we include the VC redistributable merge modules into our MSI package,
      those merge modules were stale (taken from older VS version, 2017)
      
      Since VS2019 brough new DLL dependency by introducing new exception handling
      https://devblogs.microsoft.com/cppblog/making-cpp-exception-handling-smaller-x64
      thus the old MSMs were not enough.
      
      The fix is to change logic in win/packaging/CMakeLists.txt to look up for
      the correct, new MSMs.
      
      The bug only affects 10.4,as we compile with static CRT before 10.4,
      and partly-statically(just vcruntime stub is statically linked, but not UCRT)
      after 10.4
      
      For the fix to work, it required also some changes on the build machine
      (vs_installer, modify VS2019 installation, add Individual Component
      "C++ 2019 Redistributable MSMs")
      3bfe305c
  2. 13 May, 2020 3 commits
  3. 12 May, 2020 4 commits
    • Alexander Barkov's avatar
      MDEV-20261 NULL passed to String::eq, SEGV, server crash, regression in 10.4 · 9f209681
      Alexander Barkov authored
      Type_handler_xxx::Item_const_eq() can handle only non-NULL values.
      The code in Item_basic_value::eq() did not take this into account.
      
      Adding a test to detect three different combinations:
      - Both values are NULLs, return true.
      - Only one value is NULL, return false.
      - Both values are not NULL, call Type_handler::Item_const_eq()
        to check equality.
      9f209681
    • Vlad Lesin's avatar
      MDEV-22398: mariabackup.innodb_xa_rollback fails on repeat · 218d20ff
      Vlad Lesin authored
      Flush LSN to system tablespace on innodb shutdown if XA is rolled back by
      mariabackup.
      218d20ff
    • Marko Mäkelä's avatar
      Cleanup: Remove InnoDB wrappers of thd_charset(), thd_query_safe() · 0e6a5786
      Marko Mäkelä authored
      innobase_get_charset(), innobase_get_stmt_safe(): Remove.
      It is more efficient and readable to invoke thd_charset()
      and thd_query_safe() directly, without a non-inlined wrapper function.
      0e6a5786
    • Marko Mäkelä's avatar
      MDEV-22529 thd_query_safe() isn’t, causing InnoDB to hang · a2560b00
      Marko Mäkelä authored
      The function thd_query_safe() is used in the implementation of the
      following INFORMATION_SCHEMA views:
      
          information_schema.innodb_trx
          information_schema.innodb_locks
          information_schema.innodb_lock_waits
          information_schema.rocksdb_trx
      
      The implementation of the InnoDB views is in trx_i_s_common_fill_table().
      This function invokes trx_i_s_possibly_fetch_data_into_cache(),
      which will acquire lock_sys->mutex and trx_sys->mutex in order to
      protect the set of active transactions and explicit locks.
      While holding those mutexes, it will traverse the collection of
      InnoDB transactions. For each transaction, thd_query_safe() will be
      invoked.
      
      When called via trx_i_s_common_fill_table(), thd_query_safe()
      is acquiring THD::LOCK_thd_data while holding the InnoDB locks.
      This will cause a deadlock with THD::awake() (such as executing
      KILL QUERY), because THD::awake() could invoke lock_trx_handle_wait(),
      which attempts to acquire lock_sys->mutex while already holding
      THD::lock_thd_data.
      
      thd_query_safe(): Invoke mysql_mutex_trylock() instead of
      mysql_mutex_lock(). Return the empty string if the mutex
      cannot be acquired without waiting.
      a2560b00
  4. 11 May, 2020 10 commits
  5. 09 May, 2020 7 commits
  6. 08 May, 2020 14 commits
  7. 07 May, 2020 1 commit
    • Marko Mäkelä's avatar
      MDEV-19344 innodb.innodb-change-buffer-recovery fails · 0dee57c6
      Marko Mäkelä authored
      The test was incompatible with ./mtr --repeat=2 until
      commit 2d6719d7
      fixed that.
      
      It turns out that the failing assertion that we disabled in
      commit 3db94d24
      is bogus and can fail when the change buffer is emptied
      during the last batch of crash recovery. The reason for this
      is the condition around the page_create_empty() call in
      page_cur_delete_rec(). The condition was removed in MariaDB
      Server 10.5 as part of MDEV-12353, in
      commit 7ae21b18 and
      commit f8a9f906.
      
      The bug that the assertion aimed to catch is MDEV-22497, which
      was fixed in commit 26aab96e.
      0dee57c6