maria:10.2-MDEV-27355-rpl-ubsan

Last commit made on 2022-06-27
Get this branch:
git clone -b 10.2-MDEV-27355-rpl-ubsan https://git.launchpad.net/maria

Branch merges

Branch information

Name:
10.2-MDEV-27355-rpl-ubsan
Repository:
lp:maria

Recent commits

02cc8a5... by Brandon Nesterenko

MDEV-27655 Fix UBSAN's Findings in Replication

Tagged mysys/my_compare.c::ha_key_cmp() with attribute to ignore
UBSAN runtime checks on shift operations. In particular, it is
expected that this function can perform shift of greater length
than the number of bits in the underlying field variables.

57312cc... by Brandon Nesterenko

MDEV-27655 Fix UBSAN's Findings in Replication

Tagged a statement which intentionally performs
integer overflow so UBSAN knows to ignore it
during its runtime checks.

b8eeacb... by Brandon Nesterenko

MDEV-27355 Fix UBSAN's Findings in Replication

sql/sql_select.cc:22771:22: runtime error: load of value 2779096485, which is not a valid value for type 'enum_parsing_place'

be735f9... by Brandon Nesterenko

MDEV-27355 Fix UBSAN's Findings in Replication

Ensured the initialization for geometry_type enum

0ba528f... by Sergei Golubchik

MDEV-28606 Server crashes in st_select_lex::add_table_to_list instead of error 1066: Not unique table/alias

10.2-only fix, 10.3+ uses LEX_STRING's and checks the length first

84984b7... by Sergei Golubchik

Revert "MDEV-27524: Incorrect binlogs after Galera SST using rsync and mariabackup"

This reverts commit 17e0f5224c8339ec08707a6ad0397bbf8c19bbd3.

2d26f71... by Brandon Nesterenko

MDEV-28550: improper handling of replication event group that contains Gtid_log_list_event

If a slave received a fake GLLE event after a GTID event
it would terminate the group. This adds a test for the
previous commit which fixed this issue (939672a).

Review by Andrei Elkin <email address hidden>

726bd8c... by Andrei <email address hidden>

MDEV-28550 improper handling of replication event group that contains

GTID_LIST_EVENT or INCIDENT_EVENT.

It's legal to have either of the two inside a group. E.g
  Gtid_event, Gtid_log_list_event, Query_1, ... Xid_log_event
is permitted.
However, the slave IO thread treated both
as the terminal even when the group represents a DDL query.
That causes a premature Gtid state update so the slave IO would think
the whole group has been collected while in fact Query_1 etc are yet to process.

Fixed with correcting a condition to compute the terminal event
of the group.
Tested with rpl_mysqlbinlog_slave_consistency (of 10.9) and
rpl_gtid_errorlog.test.

a5dc12e... by Andrei <email address hidden>

MDEV-28310 Missing binlog data for INSERT .. ON DUPLICATE KEY UPDATE
MDEV-21810 MBR: Unexpected "Unsafe statement" warning for unsafe IODKU

MDEV-17614 fixes to replication unsafety for INSERT ON DUP KEY UPDATE
on two or more unique key table left a flaw. The fixes checked the
safety condition per each inserted record with the idea to catch a user-created
value to an autoincrement column and when that succeeds the autoincrement column
would become the source of unsafety too.
It was not expected that after a duplicate error the next record's
write_set may become different and the unsafe decision for that
specific record will be computed to screw the Query's binlogging
state and when @@binlog_format is MIXED nothing gets bin-logged.

This case has been already fixed in 10.5.2 by 91ab42a823 that
relocated/optimized THD::decide_logging_format_low() out of the record insert
loop. The safety decision is computed once and at the right time.
Pertinent parts of the commit are cherry-picked.

Also a spurious warning about unsafety is removed when MIXED
@@binlog_format; original MDEV-17614 test result corrected.
The original test of MDEV-17614 is extended and made more readable.

141ab97... by Oleksandr "Sanja" Byelkin

MDEV-28402 ASAN heap-use-after-free in create_tmp_table, Assertion `l_offset >= 0 && table->s->rec_buff_length - l_offset > 0'

Make default() function follow Item_field and use get_tmp_table_item() for
change_to_use_tmp_fields().