maria:bb-10.5-MDEV-16641-test-unmask-mysql_client_test_tests

Last commit made on 2023-09-08
Get this branch:
git clone -b bb-10.5-MDEV-16641-test-unmask-mysql_client_test_tests https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.5-MDEV-16641-test-unmask-mysql_client_test_tests
Repository:
lp:maria

Recent commits

f68f951... by Daniel Black

MDEV-16641: renable mysql_client_test* tests

59952b2... by Marko Mäkelä

Merge 10.4 into 10.5

d1fca0b... by THIRUNARAYANAN BALATHANDAYUTHAPANI

MDEV-32060 Server aborts when table doesn't have referenced index

- Server aborts when table doesn't have referenced index.
This is caused by 5f09b53bdb4e973e7c7ec2c53a24c98321223f98 (MDEV-31086).
While iterating the foreign key constraints, we fail to
consider that InnoDB doesn't have referenced index for
it when foreign key check is disabled.

2db5f1b... by Marko Mäkelä

MDEV-32049 Deadlock due to log_free_check() in trx_purge_truncate_history()

The function log_free_check() is not supposed to be invoked while
the caller is holding any InnoDB synchronization objects, such as
buffer page latches, tablespace latches, index tree latches, or
in this case, rseg->mutex (rseg->latch in 10.6 or later).

A hang was reported in 10.6 where several threads were waiting for
an rseg->latch that had been exclusively acquired in
trx_purge_truncate_history(), which invoked log_free_check() inside
trx_purge_truncate_rseg_history(). Because the threads that were
waiting for the rseg->latch were holding exclusive latches on some
index pages, log_free_check() was unable to advance the checkpoint
because those index pages could not be written out.

trx_purge_truncate_history(): Invoke log_free_check() before
acquiring the rseg->mutex and invoking trx_purge_free_segment().

trx_purge_free_segment(): Do not invoke log_free_check() in order
to avoid a deadlock.

3c86765... by Marko Mäkelä

MDEV-23974 fixup: Use standard quotes in have_innodb.inc

This fixes the following test:
set sql_mode=ORACLE;
--source include/have_innodb.inc

53499cd... by Alexander Barkov

MDEV-31303 Key not used when IN clause has both signed and usigned values

Summary:

This patch enables possible index optimization when
the WHERE clause has an IN condition of the form:

signed_or_unsigned_column IN (signed_or_unsigned_constant,
                              signed_or_unsigned_constant
                              [,signed_or_unsigned_constant]*)

when the IN list constants are of different signess, e.g.:
  WHERE signed_column IN (signed_constant, unsigned_constant ...)
  WHERE unsigned_column IN (signed_constant, unsigned_constant ...)

Details:

In a condition like:
   WHERE unsigned_predicant IN (1, LONGLONG_MAX + 1)

comparison handlers for individual (predicant,value) pairs are
calculated as follows:

* unsigned_predicant and 1 produce &type_handler_newdecimal
* unsigned_predicant and (LONGLONG_MAX + 1) produce &type_handler_slonglong

The old code decided that it could not use bisection because
the two pairs had different comparison handlers.
As a result, bisection was not allowed, and, in case of
an indexed integer column predicant the index on the column was not used.

The new code catches special cases like:
    signed_predicant IN (signed_constant, unsigned_constant)
    unsigned_predicant IN (signed_constant, unsigned_constant)

It enables bisection using in_longlong, which supports a mixture
of predicant and values of different signess.
In case when the predicant is an indexed column this change
automatically enables index range optimization.

Thanks to Vicențiu Ciorbaru for proposing the idea and for preparing MTR tests.

e938d7c... by THIRUNARAYANAN BALATHANDAYUTHAPANI

MDEV-32028 InnoDB scrubbing doesn't write zero while freeing the extent

Problem:
========
InnoDB fails to mark the page status as FREED during
freeing of an extent of a segment. This behaviour affects
scrubbing and doesn't write all zeroes in file even though
pages are freed.

Solution:
========
InnoDB should mark the page status as FREED before
reinitialize the extent descriptor entry.

1fde785... by Dmitry Shulga <email address hidden>

MDEV-31890: Compilation failing on MacOS (unknown warning option -Wno-unused-but-set-variable)

For clang compiler the compiler's flag -Wno-unused-but-set-variable
was set based on compiler version. This approach could result in
false positive detection for presence of compiler option since
only first three groups of digits in compiler version taken into account
and it could lead to inaccuracy in determining of supported compiler's
features.

Correct way to detect options supported by a compiler is to use
the macros MY_CHECK_CXX_COMPILER_FLAG and to check the result of
variable with prefix have_CXX__
So, to check whether compiler does support the option
 -Wno-unused-but-set-variable
the macros
 MY_CHECK_CXX_COMPILER_FLAG(-Wno-unused-but-set-variable)
should be called and the result variable
 have_CXX__Wno_unused_but_set_variable
be tested for assigned value.

aeb8eae... by Marko Mäkelä

Merge 10.4 into 10.5

02878f1... by Marko Mäkelä

MDEV-31813 SET GLOBAL innodb_max_purge_lag_wait hangs if innodb_read_only

innodb_max_purge_lag_wait_update(): Return immediately if we are
in high_level_read_only mode.

srv_wake_purge_thread_if_not_active(): Relax a debug assertion.
If srv_read_only_mode holds, purge_sys.enabled() will not hold
and this function will do nothing.

trx_t::commit_in_memory(): Remove a redundant condition before
invoking srv_wake_purge_thread_if_not_active().