Bug #13943231: ALTER TABLE AFTER DISCARD MAY CRASH THE SERVER

The following scenario crashes our mysql server:

1.  set global innodb_file_per_table=1;
2.  create table t1(c1 int) engine=innodb;
3.  alter table t1 discard tablespace;
4.  alter table t1 add unique index(c1);

Step 4 crashes the server.  This patch introduces a check on discarded
tablespace to avoid the crash.

rb://1041 approved by Marko Makela
This commit is contained in:
Annamalai Gurusami 2012-05-16 16:36:49 +05:30
parent 6b05e434bf
commit ce9e6b5a9a

View file

@ -665,6 +665,10 @@ ha_innobase::add_index(
DBUG_RETURN(HA_ERR_NO_SUCH_TABLE);
}
if (innodb_table->tablespace_discarded) {
DBUG_RETURN(-1);
}
/* Check that index keys are sensible */
error = innobase_check_index_keys(key_info, num_of_keys, innodb_table);