BUG#20397: Crash when alter table t1 engine = x;

Review fixes
parent 32ac7da6
......@@ -4993,17 +4993,20 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
old_db_type= table->s->db_type;
if (!create_info->db_type)
{
if (create_info->used_fields & HA_CREATE_USED_ENGINE)
if (table->part_info &&
create_info->used_fields & HA_CREATE_USED_ENGINE)
{
/*
This case happens when the user specified
ENGINE = x where x is a non-existing storage engine
We clear the flag and treat it the same way
as if no storage engine was specified.
We set create_info->db_type to default_engine_type
to ensure we don't change underlying engine type
due to a erroneously given engine name.
*/
create_info->used_fields^= HA_CREATE_USED_ENGINE;
create_info->db_type= table->part_info->default_engine_type;
}
create_info->db_type= old_db_type;
else
create_info->db_type= old_db_type;
}
#ifdef WITH_PARTITION_STORAGE_ENGINE
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment