maria:bb-11.4-mdev-28861

Last commit made on 2024-01-24
Get this branch:
git clone -b bb-11.4-mdev-28861 https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-11.4-mdev-28861
Repository:
lp:maria

Recent commits

20741b9... by Yuchen Pei <email address hidden>

MDEV-28861 Deprecate spider table options by comment/connection

Also deprecating table params not implemented in MDEV-28856.

d079086... by Ian Gilfillan <email address hidden>

Update 11.4 HELP

c37b208... by Brandon Nesterenko

MDEV-7850: Extend GTID Binlog Events with Thread Id

This patch augments Gtid_log_event with the user thread-id.
In particular that compensates for the loss of this info in
Rows_log_events.

Gtid_log_event::thread_id gets visible in mysqlbinlog output like

  #231025 16:21:45 server id 1 end_log_pos 537 CRC32 0x1cf1d963 GTID 0-1-2 ddl thread_id=10

as 64 bit unsigned integer.

While the size of Gtid event has grown by 8-9 bytes
replication from OLD <-> NEW is not affected by it.

This work was started by the late Sujatha Sivakumar.
Brandon Nesterenko took it over, reviewed initial patches and extended
the work.

Reviewed-by: <email address hidden>

8bf9f21... by Libing Song <email address hidden>

MDEV-32894 mysqlbinlog flashback support binlog_row_image FULL_NODUP mode

Summary
=======
With FULL_NODUP mode, before image inclues all columns and after
image inclues only the changed columns. flashback will swap the
value of changed columns from after image to before image.
For example:
  BI: c1, c2, c3_old, c4_old
  AI: c3_new, c4_new
flashback will reconstruct the before and after images to
  BI: c1, c2, c3_new, c4_new
  AI: c3_old, c4_old

Implementation
==============
When parsing the before and after image, position and length of
the fields are collected into ai_fields and bi_fields, if it is an
Update_rows_event and the after image doesn't includes all columns.

The changed fields are swapped between bi_fields and ai_fields.
Then it recreates the before image and after image by using
bi_fields and ai_fields. nullbit will be set to 1 if the
field is NULL, otherwise nullbit will be 0.

It also optimized flashback a little bit.
- calc_row_event_length is used instead of print_verbose_one_row
- swap_buff1 and swap_buff2 are removed.

f552feb... by Andrew Hutchings

MDEV-30879 Add support for up to BASE 62 to CONV()

BASE 62 uses 0-9, A-Z and then a-z to give the numbers 0-61. This patch
increases the range of the string functions to cover this.

Based on ideas and tests in PR #2589, but re-written into the charset
functions.

Includes fix by Sergei, UBSAN complained:
ctype-simple.c:683:38: runtime error: negation of -9223372036854775808
cannot be represented in type 'long long int'; cast to an unsigned
type to negate this value to itself

Co-authored-by: Weijun Huang <email address hidden>
Co-authored-by: Sergei Golubchik <email address hidden>

be6d48f... by Libing Song <email address hidden>

MDEV-33049 Assertion `marked_for_write_or_computed()' failed in bool
           Field_new_decimal::store_value(const my_decimal*, int*)

Analysis
========
When rpl applier is unpacking a before row image, Field::reset() will be
called before setting a field to null if null bit of the field is set in
the row image. For Field_new_decimal::reset(), it calls
Field_new_decimal::store_value() to reset the value. store_value() asserts
that the field is in the write_set bitmap since it thinks the field is
updating.

But that is not true for the row image generated in FULL_NODUP
mode. In the mode, the before image includes all fields and the after
image includes only updated fields.

Fix
===
In the case unpacking binlog row images, the assertion is meaningless.
So the unpacking field is marked in write_set temporarily to avoid the
assertion failure.

d136169... by Marko Mäkelä

Merge 11.3 into 11.4

af4f9da... by Marko Mäkelä

Merge 11.2 into 11.3

e4cb1e3... by Marko Mäkelä

Merge 11.1 into 11.2

c3a546e... by Marko Mäkelä

Merge 11.0 into 11.1