maria:bb-10.4-MDEV-29640

Last commit made on 2022-10-24
Get this branch:
git clone -b bb-10.4-MDEV-29640 https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.4-MDEV-29640
Repository:
lp:maria

Recent commits

e78a948... by Oleg Smirnov

MDEV-29640 FederatedX does not properly handle pushdown in case of difference in local and remote table names

FederatedX table on the local server may refer to a table having
another name on the remote server. The remote table may even reside
in a different database. For example:

-- Remote server
CREATE TABLE t1 (id int(32));

-- Local server
CREATE TABLE t2 ENGINE="FEDERATEDX"
CONNECTION="mysql://joe:joespass@192.168.1.111:9308/federatedx/t1";

It's not a problem while the federated_pushdown is disabled 'cause
the CONNECTION strings are being parsed for every table during
the execution, so the table names are translated from local to remote.
But in case of the federated_pushdown the whole query is pushed down
to the engine without any translation, so the remote server may try
to select data from a nonexistent table (for example, query
"SELECT * FROM t2" will try to retrieve data from nonexistent "t2").

Solution: do not allow pushing down queries with tables having
different names on local and remote names.

291872e... by Oleksandr "Sanja" Byelkin

Merge branch '10.3' into 10.4

7cad2e9... by Oleksandr "Sanja" Byelkin

Merge branch 'bb-10.4-vp-MDEV-27691' into 10.4

0cddb1a... by Oleksandr "Sanja" Byelkin

v5.5.1-stable

89e3815... by Oleksandr "Sanja" Byelkin

Merge branch 'bb-10.3-vp-MDEV-27691' into 10.3

f404911... by Marko Mäkelä

Merge 10.3 into 10.4

1f56153... by Marko Mäkelä

Silence clang 13 -Wunused-but-set-variable

WITH_EMBEDDED_SERVER compiles the SQL parsers separately.
Thanks to Vladislav Vaintroub for helping with this.

Fixes up commit e05ab0cfc5f52c8c240bfc02239f199081d82f61

128356b... by Nikita Malyavin

MDEV-29753 An error is wrongly reported during INSERT with vcol index

See also commits aa8a31da and 64678c for a Bug #22990029 fix.

In this scenario INSERT chose to check if delete unmarking is available for
a just deleted record. To build an update vector, it needed to calculate
the vcols as well. Since this INSERT was not IGNORE-flagged, recalculation
failed.

Solutiuon: temporarily set abort_on_warning=true, while calculating the
column for delete-unmarked insert.

3cd2c1e... by Nikita Malyavin

MDEV-29299 SELECT from table with vcol index reports warning

As of now innodb does not store trx_id for each record in secondary index.
The idea behind is following: let us store only per-page max_trx_id, and
delete-mark the records when they are deleted/updated.

If the read starts, it rememders the lowest id of currently active
transaction. Innodb refers to it as trx->read_view->m_up_limit_id.
See also ReadView::open.

When the page is fetched, its max_trx_id is compared to m_up_limit_id.
If the value is lower, and the secondary index record is not delete-marked,
then this page is just safe to read as is. Else, a clustered index could be
needed ato access. See page_get_max_trx_id call in row_search_mvcc, and the
corresponding switch (row_search_idx_cond_check(...)) below.

Virtual columns are required to be updated in case if the record was
delete-marked. The motivation behind it is documented in
Row_sel_get_clust_rec_for_mysql::operator() near
row_sel_sec_rec_is_for_clust_rec call.

This was basically a description why virtual column computation can
normally happen during SELECT, and, generally, a vcol index access.

Sometimes stats tables are updated by innodb. This starts a new
transaction, and it can happen that it didn't finish to the moment of
SELECT execution, forcing virtual columns recomputation. If the result was
a something that normally outputs a warning, like division by zero, then
it could be outputted in a racy manner.

The solution is to suppress the warnings when a column is computed
for the described purpose.
ignore_wrnings argument is added innobase_get_computed_value.
Currently, it is only true for a call from
row_sel_sec_rec_is_for_clust_rec.

4fec99a... by Vladislav Vaintroub

MDEV-29102 system_time_zone is incorrect on Windows when TZ is set

MDEV-19243 introduced a regression on Windows.

In (supposedly rare) case, where environment variable TZ was set,
@@system_time_zone no longer derives from TZ. Instead, it incorrecty
refers to system default time zone, eventhough UTC time conversion
takes TZ into account.

The fix is to restore TZ-aware handling (timezone name derives from
tzname), if TZ is set.