diff options
author | Sergei Golubchik <serg@mariadb.org> | 2022-07-01 12:29:16 +0200 |
---|---|---|
committer | Nikita Malyavin <nikitamalyavin@gmail.com> | 2023-04-18 00:29:49 +0300 |
commit | 88e5d16c93ea8a452fdec2d362794ce667d45337 (patch) | |
tree | 0109bc7739116fe2fec181cfd86dd6d05aa6c9bd /sql | |
parent | 013ce4819f93588af05882e612a9fec1e5eff20b (diff) | |
download | mariadb-git-88e5d16c93ea8a452fdec2d362794ce667d45337.tar.gz |
MDEV-28967 Assertion `marked_for_write_or_computed()' failed in Field_new_decimal::store_value / online_alter_read_from_binlog`
in the catch-up phase of the online alter we apply row events,
they're unpacked into `from->record[0]` and then converted
to `to->record[0]`.
This needs all fields of `from` to be in the `write_set`.
Although practically `Field::unpack()` does not assert the `write_set`,
and `Field::reset()` - used when a field value is not present in the
after-image - also doesn't assert the `write_set` for many types,
`Field_new_decimal::reset()` does.
Diffstat (limited to 'sql')
-rw-r--r-- | sql/sql_table.cc | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 07dda6ee1cb..8913f014b8c 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -11991,6 +11991,8 @@ copy_data_between_tables(THD *thd, TABLE *from, TABLE *to, rli.relay_log.description_event_for_exec= new Format_description_log_event(4); + // We'll be filling from->record[0] from row events + bitmap_set_all(from->write_set); // We restore bitmaps, because update event is going to mess up with them. to->default_column_bitmaps(); |