maria:bb-10.10-ddl-nikita

Last commit made on 2022-10-14
Get this branch:
git clone -b bb-10.10-ddl-nikita https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.10-ddl-nikita
Repository:
lp:maria

Recent commits

7f62e80... by Nikita Malyavin

few rgi assertions. this can proof that rgi is always present

ee067a8... by Nikita Malyavin

MDEV-29069 follow-up optimize find_key and allow PK removal for replication

1. Allowing PK removal/change means that field_index <= master_columns
doesn't guarantee having a value. Remove this condition from
key_parts_suit_event. But now unpack_row is required in
Update_rows_log_event::do_before_row_operations.

2. Move optimization for avoiding m_key allocation inside find_key,
so now it is used by UPDATE events too.
Together with unpack_row, do_before_row_operations is now same for
Update_rows_log_event and Delete_rows_log_event

3. Avoid traversion of all key_parts for all keys for every event.
Use cached usable_key_parts array stored in RPL_TABLE_LIST, which will
be reused for all events on this table instance.
The only reason it needs to be recalculated is changing of row_format,
which can be detected by changes has_values_set bitmap, so last bitmap copy
is also stored there, see RPL_TABLE_LIST::m_usable_keys_data

e29eb1f... by Nikita Malyavin

MDEV-29069 follow-up: fix replication with extra fields + tests

152295d... by Nikita Malyavin

rpl: extra DEFAULTs should not be UPDATEd

90274a7... by Nikita Malyavin

rpl: check should go after defaults and vcols update

761c1e8... by Nikita Malyavin

MDEV-29068 Cascade foreign key updates do not apply in online alter

Foreign key cascade operations are still implemented through innodb.

Add support for online logging in row_ins_foreign_check_on_constraint.

upd_node_t::sql_is_online_alter is added to reuse cascade->row and
cascade->upd_row.

5b15192... by Nikita Malyavin

MDEV-29181 Potential corruption on FK update on a table with vcol index

vc_templ->mysql_table concept is completely broken.
This table pointer persists with a global access and can be overwritten by
arbitrary thread. Like it wasn't enough, it also could become invalid after
eviction from tc cache.

This new solution simply does the following:
* Sets up a referenced table list in TABLE instance (sql_base.cc)
* Iterates through it along with dict_table_t::referenced_set
  (row_upd_check_references_constraints)
* Passes corresponding prebuilt through a call chain to
  row_ins_foreign_check_on_constraint
* Sets up newly created upd_node_t::prebuilt field and uses it accordingly
  is cascade update.

53e6f4b... by Nikita Malyavin

rename rpl/rpl_alter_instant -> rpl/rpl_alter_innodb

73577c8... 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))

037a450... by Nikita Malyavin

MDEV-29069 follow-up: support partially suitable keys