mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
BUG#20397: Crash when alter table t1 engine = x;
Review fixes sql/sql_table.cc: Review fixes
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user