mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge branch '10.3' into 10.4
This commit is contained in:
@ -6726,6 +6726,22 @@ int THD::binlog_update_row(TABLE* table, bool is_trans,
|
||||
DBUG_ASSERT(is_current_stmt_binlog_format_row() &&
|
||||
((WSREP(this) && wsrep_emulate_bin_log) || mysql_bin_log.is_open()));
|
||||
|
||||
/**
|
||||
Save a reference to the original read bitmaps
|
||||
We will need this to restore the bitmaps at the end as
|
||||
binlog_prepare_row_images() may change table->read_set.
|
||||
table->read_set is used by pack_row and deep in
|
||||
binlog_prepare_pending_events().
|
||||
*/
|
||||
MY_BITMAP *old_read_set= table->read_set;
|
||||
|
||||
/**
|
||||
This will remove spurious fields required during execution but
|
||||
not needed for binlogging. This is done according to the:
|
||||
binlog-row-image option.
|
||||
*/
|
||||
binlog_prepare_row_images(table);
|
||||
|
||||
size_t const before_maxlen= max_row_length(table, table->read_set,
|
||||
before_record);
|
||||
size_t const after_maxlen= max_row_length(table, table->rpl_write_set,
|
||||
@ -6739,9 +6755,9 @@ int THD::binlog_update_row(TABLE* table, bool is_trans,
|
||||
uchar *after_row= row_data.slot(1);
|
||||
|
||||
size_t const before_size= pack_row(table, table->read_set, before_row,
|
||||
before_record);
|
||||
before_record);
|
||||
size_t const after_size= pack_row(table, table->rpl_write_set, after_row,
|
||||
after_record);
|
||||
after_record);
|
||||
|
||||
/* Ensure that all events in a GTID group are in the same cache */
|
||||
if (variables.option_bits & OPTION_GTID_BEGIN)
|
||||
@ -6776,6 +6792,9 @@ int THD::binlog_update_row(TABLE* table, bool is_trans,
|
||||
int error= ev->add_row_data(before_row, before_size) ||
|
||||
ev->add_row_data(after_row, after_size);
|
||||
|
||||
/* restore read set for the rest of execution */
|
||||
table->column_bitmaps_set_no_signal(old_read_set,
|
||||
table->write_set);
|
||||
return error;
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user