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

Review fixes
parent 32ac7da6
...@@ -4993,16 +4993,19 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name, ...@@ -4993,16 +4993,19 @@ bool mysql_alter_table(THD *thd,char *new_db, char *new_name,
old_db_type= table->s->db_type; old_db_type= table->s->db_type;
if (!create_info->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 This case happens when the user specified
ENGINE = x where x is a non-existing storage engine ENGINE = x where x is a non-existing storage engine
We clear the flag and treat it the same way We set create_info->db_type to default_engine_type
as if no storage engine was specified. 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;
} }
else
create_info->db_type= old_db_type; create_info->db_type= old_db_type;
} }
......
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