diff options
author | Nikita Malyavin <nikitamalyavin@gmail.com> | 2020-02-20 18:42:27 +1000 |
---|---|---|
committer | Nikita Malyavin <nikitamalyavin@gmail.com> | 2020-02-20 18:42:27 +1000 |
commit | e0e845c5d8630733f6d31cbd42887221b1352e76 (patch) | |
tree | b02d2021fb4b8196e032339231f908e9346dd043 /sql/sql_table.cc | |
parent | 5a42a114fdc9cacb6e64b5c61097e7759036b11c (diff) | |
download | mariadb-git-bb-10.4-MDEV-20494.tar.gz |
MDEV-20494 ER_NOT_FORM_FILE or Assertion `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' failed upon adding partition to a versioned tablebb-10.4-MDEV-20494
Problem: fast_alter_partition_table tries to write the shadow frm with zero-length period constraint name. In case of explicit write-lock table reopens and shadow frm is read. Period constraint name is saved to frm in format "zero means two bytes more" (see extra2_write_str/extra2_read_len), so zero value here corrupts frm.
Solution: generate constraint names before fast_alter_partition_table is issued
Diffstat (limited to 'sql/sql_table.cc')
-rw-r--r-- | sql/sql_table.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 851a63bf05a..694fb60546b 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -9728,9 +9728,7 @@ do_continue:; } if (handle_if_exists_options(thd, table, alter_info, - &create_info->period_info) || - fix_constraints_names(thd, &alter_info->check_constraint_list, - create_info)) + &create_info->period_info)) DBUG_RETURN(true); /* @@ -9811,6 +9809,10 @@ do_continue:; DBUG_RETURN(true); } + if (fix_constraints_names(thd, &alter_info->check_constraint_list, + create_info)) + DBUG_RETURN(true); + set_table_default_charset(thd, create_info, alter_ctx.db); if (create_info->check_fields(thd, alter_info, |