summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2022-07-01 12:29:16 +0200
committerNikita Malyavin <nikitamalyavin@gmail.com>2023-04-18 00:29:49 +0300
commit88e5d16c93ea8a452fdec2d362794ce667d45337 (patch)
tree0109bc7739116fe2fec181cfd86dd6d05aa6c9bd /sql
parent013ce4819f93588af05882e612a9fec1e5eff20b (diff)
downloadmariadb-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.cc2
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();