maria:bb-10.10-buildpass

Last commit made on 2022-07-25
Get this branch:
git clone -b bb-10.10-buildpass https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.10-buildpass
Repository:
lp:maria

Recent commits

56206e6... by Nikita Malyavin

rename rpl/rpl_alter_instant -> rpl/rpl_alter_innodb

2b78913... by Nikita Malyavin

MDEV-29038 XA assertions failing in binlog_rollback and binlog_commit

ONLINE ALTER TABLE adds binlog handlerton into ha_list, so any
rollback command can end up calling binlog_rollback having no cache_mngr,
if binlog is not enabled.

The assertion should be fixed in the same manner as DBUG_ASSERT(WSREP(thd))

52f489e... by Nikita Malyavin

MDEV-29069 follow-up: support partially suitable keys

94378dc... by Nikita Malyavin

MDEV-29069 follow-up: allow deterministic DEFAULTs

e2f8dff... by Nikita Malyavin

MDEV-29069 ER_KEY_NOT_FOUND on online autoinc addition + concurrent DELETE

We can't rely on keys formed with columns that were added during this
ALTER. These columns can be set with non-deterministic values, which can
end up with broken or incorrect search.

The deterministic columns are not considered in this commit, and the
behavior is restrictive for them as well.

The same applies to the keys that contain reliable columns, but also have
bogus ones. Using them can narrow the search, but they're also ignored.

Also, added columns shouldn't be considered during the record match. To
determine them, table->has_value_set bitmap is used.

To fill has_value_set bitmap before find_key call, extra find_row call has
been added.

For replication case, extra replica columns can be considered for this
case. We try to ignore them, too.

Other changes:
unpack_row signature is changed to accept const rpl_group_info*
rpl_group_info::gtid_info is made const. For this, gtid_info_buf is made
mutable.
Rows_log_event::do_before_row_operations now accepts const rpl_group_info*,
and it is the only parameter now.
record_compare accepts additional uint master_columns to compare only
columns available on source.

4ab091b... by Nikita Malyavin

log_event.h: remove junk EOL spaces

3a5bb13... by Nikita Malyavin

MDEV-29013 ER_KEY_NOT_FOUND/lock timeout upon online alter with long unique

1. ER_KEY_NOT_FOUND
Some virtual columns were not updated because were not included in read_set
to the moment of calculation.

In Row_logs_event::do_apply_event some fields are excluded based on m_cols,
which is the replicated columns bitmap.

We can't rely on this. Basically, we'd be satisfied, if all columns were
just set, at least for now.

2. ER_LOCK_WAIT_TIMEOUT
This is a long unique specific problem.

Sometimes, lookup_handler is created for to->file. To properly free it,
ha_reset should be called. It is usually done by calling
close_thread_table, but ALTER TABLE makes it differently. Hence, a single
ha_reset call is added to mysql_alter_table.

Also, event_mem_root is removed. Normally, no per-event data should be
allocated on thd->mem_root, that would mean a leak. And otherwise,
lookup_handler is lasily allocated, but its lifetime matches statement,
not event.

ddc7848... by Sergei Golubchik

MDEV-29067 Online alter ignores check constraint violation

4fd9b11... by Sergei Golubchik

don't do ALTER IGNORE TABLE online

because online means we'll apply events from the binlog, and
ignore means that bad rows will be skipped. So a bad Write_row_log_event
will be skipped and a following Update_row_log_event will fail to
apply.

4998737... by Nikita Malyavin

MDEV-29021 add test case from MDEV-29013

This test case was also fixed by adding update_virtual_columns.