mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
Completing snapshot innodb-5.1-ss2438, part 2. Fixes
Bug #36169: create innodb compressed table with too large row size crashed Revision comments: r2422 | vasil | 2008-04-24 16:00:30 +0300 (Thu, 24 Apr 2008) | 11 lines branches/5.1: Fix Bug#36169 create innodb compressed table with too large row size crashed Sometimes it is possible that row_drop_table_for_mysql(index->table_name, trx, FALSE); is invoked in row_create_index_for_mysql() when the index object is freed so copy the table name to a safe place beforehand and use the copy. Approved by: Sunny
This commit is contained in:
parent
040f3e9e5b
commit
e361d4487b
1 changed files with 9 additions and 1 deletions
|
@ -1963,6 +1963,7 @@ row_create_index_for_mysql(
|
|||
ulint err;
|
||||
ulint i, j;
|
||||
ulint len;
|
||||
char* table_name;
|
||||
|
||||
#ifdef UNIV_SYNC_DEBUG
|
||||
ut_ad(rw_lock_own(&dict_operation_lock, RW_LOCK_EX));
|
||||
|
@ -1972,6 +1973,11 @@ row_create_index_for_mysql(
|
|||
|
||||
trx->op_info = "creating index";
|
||||
|
||||
/* Copy the table name because we may want to drop the
|
||||
table later, after the index object is freed (inside
|
||||
que_run_threads()) and thus index->table_name is not available. */
|
||||
table_name = mem_strdup(index->table_name);
|
||||
|
||||
trx_start_if_not_started(trx);
|
||||
|
||||
/* Check that the same column does not appear twice in the index.
|
||||
|
@ -2044,13 +2050,15 @@ error_handling:
|
|||
|
||||
trx_general_rollback_for_mysql(trx, FALSE, NULL);
|
||||
|
||||
row_drop_table_for_mysql(index->table_name, trx, FALSE);
|
||||
row_drop_table_for_mysql(table_name, trx, FALSE);
|
||||
|
||||
trx->error_state = DB_SUCCESS;
|
||||
}
|
||||
|
||||
trx->op_info = "";
|
||||
|
||||
mem_free(table_name);
|
||||
|
||||
return((int) err);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue