summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2019-02-03 19:56:41 +0100
committerSergei Golubchik <serg@mariadb.org>2019-02-05 01:34:17 +0100
commitb57ae8b58cbfff020ab91f6844fc174f536af43f (patch)
treef86f2b2cdeba0c6d9fbc94ac98d286b303f1641d /sql
parentdb8f0daeb4f86dd5fab1fba292b6682fa4413e8b (diff)
downloadmariadb-git-b57ae8b58cbfff020ab91f6844fc174f536af43f.tar.gz
MDEV-18239 ASAN use-after-poison in process_str_arg / ... / mark_unsupported_func or unexpected ER_BAD_FIELD_ERROR upon ALTER TABLE
renaming columns in a CHECK constraint during ALTER TABLE taints the original TABLE and requires m_need_reopen=1. In this case, though, renaming was redundant, so just don't do it.
Diffstat (limited to 'sql')
-rw-r--r--sql/sql_table.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 4f9adc3338c..f27b61092d2 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -8123,7 +8123,12 @@ mysql_prepare_alter_table(THD *thd, TABLE *table,
}
if (!drop)
{
- check->expr->walk(&Item::rename_fields_processor, 1, &column_rename_param);
+ if (alter_info->flags & Alter_info::ALTER_RENAME_COLUMN)
+ {
+ check->expr->walk(&Item::rename_fields_processor, 1,
+ &column_rename_param);
+ table->m_needs_reopen= 1; // because new column name is on thd->mem_root
+ }
new_constraint_list.push_back(check, thd->mem_root);
}
}