Hi, Nikita, ok to push after making few small changes, see inline: On Jul 20, Nikita Malyavin wrote:
revision-id: 08403d85b00 (mariadb-11.0.1-147-g08403d85b00) parent(s): a31b2a52119 author: Nikita Malyavin committer: Nikita Malyavin timestamp: 2023-07-19 19:08:51 +0400 message:
MDEV-31677 Assertion failed upon online ALTER with binlog_row_image=NOBLOB
Make binlog_prepare_row_images accept image type as an argument.
diff --git a/sql/sql_class.cc b/sql/sql_class.cc index d4ad0efbf3a..bb2453af6a0 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -7070,7 +7071,7 @@ int THD::binlog_update_row(TABLE* table, Event_log *bin_log, not needed for binlogging. This is done according to the: binlog-row-image option.
the comment is outdated, should say This is done according to the row_image argument
*/ - binlog_prepare_row_images(table); + binlog_prepare_row_images(table, row_image);
size_t const before_maxlen= max_row_length(table, table->read_set, before_record); @@ -7194,7 +7195,7 @@ void THD::binlog_prepare_row_images(TABLE *table) and the handler involved supports this. */ if (table->s->primary_key < MAX_KEY && - (thd->variables.binlog_row_image < BINLOG_ROW_IMAGE_FULL) && + row_image < BINLOG_ROW_IMAGE_FULL && !ha_check_storage_engine_flag(table->s->db_type(), HTON_NO_BINLOG_ROW_OPT)) {
please also repace thd->variables.binlog_row_image in the switch() below. doesn't make any practical difference, just for clarity Regards, Sergei VP of MariaDB Server Engineering and security@mariadb.org