Commit 6dd40f3e authored by unknown's avatar unknown
Browse files

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

Review fixes


sql/sql_table.cc:
  Review fixes
parent e846fb89
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -4993,16 +4993,19 @@ 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;
    }
    else
      create_info->db_type= old_db_type;
  }