maria:10.4-mdev22555

Last commit made on 2020-05-14
Get this branch:
git clone -b 10.4-mdev22555 https://git.launchpad.net/maria

Branch merges

Branch information

Name:
10.4-mdev22555
Repository:
lp:maria

Recent commits

82b6a5c... by varun

MDEV-22556: Incorrect result for window function when using encrypt-tmp-files=ON

The issue here is that end_of_file for encrypted temporary IO_CACHE (used by filesort) is updated
using lseek.
Encryption adds storage overhead and hides it from the caller by recalculating offsets and lengths.
Two different IO_CACHE cannot possibly modify the same file
because the encryption key is randomly generated and stored in the IO_CACHE.
So when the tempfiles are encrypted DO NOT use lseek to change end_of_file.

Further observations about updating end_of_file using lseek
1) The end_of_file update is only used for binlog index files
2) The whole point is to update file length when the file was modified via a different file descriptor.
3) The temporary IO_CACHE files can never be modified via a different file descriptor.
4) For encrypted temporary IO_CACHE, end_of_file should not be updated with lseek

3bfe305... by Vladislav Vaintroub

MDEV-22555 Windows, packaging: binaries depend on vcruntime140_1.dll, which is not in MSI

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")

38f6c47... by Marko Mäkelä

Merge 10.3 into 10.4

15fa70b... by Marko Mäkelä

Merge 10.2 into 10.3

6bc4444... by Marko Mäkelä

Merge 10.1 into 10.2

9f20968... by Alexander Barkov

MDEV-20261 NULL passed to String::eq, SEGV, server crash, regression in 10.4

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.

218d20f... by Vlad Lesin

MDEV-22398: mariabackup.innodb_xa_rollback fails on repeat

Flush LSN to system tablespace on innodb shutdown if XA is rolled back by
mariabackup.

0e6a578... by Marko Mäkelä

Cleanup: Remove InnoDB wrappers of thd_charset(), thd_query_safe()

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.

a2560b0... by Marko Mäkelä

MDEV-22529 thd_query_safe() isn’t, causing InnoDB to hang

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.

db537a8... by Oleksandr "Sanja" Byelkin

Merge branch '10.4-release' into 10.4