summaryrefslogtreecommitdiff
path: root/sql/sql_table.cc
diff options
context:
space:
mode:
authorNikita Malyavin <nikitamalyavin@gmail.com>2020-02-20 18:42:27 +1000
committerNikita Malyavin <nikitamalyavin@gmail.com>2020-02-20 18:42:27 +1000
commite0e845c5d8630733f6d31cbd42887221b1352e76 (patch)
treeb02d2021fb4b8196e032339231f908e9346dd043 /sql/sql_table.cc
parent5a42a114fdc9cacb6e64b5c61097e7759036b11c (diff)
downloadmariadb-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.cc8
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,