maria:11.0-MDEV-27293

Last commit made on 2023-06-20
Get this branch:
git clone -b 11.0-MDEV-27293 https://git.launchpad.net/maria

Branch merges

Branch information

Name:
11.0-MDEV-27293
Repository:
lp:maria

Recent commits

653e9f6... by Nikita Malyavin

MDEV-27293 preview

c457f23... by Nikita Malyavin

MDEV-30984 Online ALTER table is denied with non-informative error messages

Unify online support checks under a single function, add warning.

f4b04ec... by Nikita Malyavin

MDEV-30984 Online ALTER table is denied with non-informative error messages

a6b4943... by Nikita Malyavin

MDEV-30987 main.alter_table_online times out with view-protocol

disabie view-protocol for certain places:
1. While a transaction is in progress: a view gets locked for a
transaction duration, so DROP VIEW from a servicing conneciton
deadlocks. We can't just disable servicing connection, as
CREATE VIEW and DROP VIEW commit implicitly.
2. For querying Opened_table_definitions: the actual query executed
is `SELECT * FROM mysqltest_tmp_v`, then the view is dropped

064ec60... by Nikita Malyavin

MDEV-31059 "Slave SQL" errors upon concurrent DML and erroneous ALTER

Skip more rpl-related error handling.
Also move the error check inside if (table) -- otherwise the error
should be handled already.

fb6ac4e... by Nikita Malyavin

refactor unpack_row

Online alter and replication paths differ quite noticeably. It's time to
fix the mess. Online alter has to unpack the old table's data
(here conv_table), and then convert, while replication requires more
sophisticated track: handle possible conversions, treat extra replica
fields, and carefully deduce master's record length.

* Extract unpack_field.
* handle the unpacking progress through a state machine presented by
  Unpack_record_state struct.
* Stick most of the online alter unpacking together under a single
  conditional branch.

cf34100... by Nikita Malyavin

unpack_row: unpack a correct number of fields

c75f774... by Nikita Malyavin

MDEV-31058 ER_KEY_NOT_FOUND upon concurrent CHANGE column autoinc and DML

When column is changed to autoinc, ALTER TABLE may update zero/NULL values,
if NO_AUTO_VALUE_ON_ZERO mode is not enabled.

Forbid this for LOCK=NONE for the unreliable cases.
The cases are described in online_alter_check_autoinc.

3192071... by Nikita Malyavin

unpack_row: set the correct fields in has_value_set for online alter

f85918a... by Nikita Malyavin

MDEV-30949 Direct leak in binlog_online_alter_end_trans

when committing a big transaction, online_alter_cache_log creates a cache
file. It wasn't properly closed, which was spotted by a memory leak from
my_register_filename. A temporary file also remained open.

Binlog wasn't affected by this, since it features its own file management.

A proper closing is calling close_cached_file. It deinits io_cache and
closes the underlying file. After closing, the file is expected to be
deleted automagically.