Bug #64144 | rename table a to b ignores failures in fil_rename_tablespace | ||
---|---|---|---|
Submitted: | 27 Jan 2012 4:21 | Modified: | 27 Jan 2012 6:32 |
Reporter: | Mark Callaghan | Email Updates: | |
Status: | Duplicate | Impact on me: | |
Category: | MySQL Server: InnoDB Plugin storage engine | Severity: | S2 (Serious) |
Version: | 5.1.52 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | DDL, innodb, rename |
[27 Jan 2012 4:21]
Mark Callaghan
[27 Jan 2012 5:03]
Mark Callaghan
It looks like this was the root cause as the production server has: * FRM file renamed * iibd file not renamed
[27 Jan 2012 5:39]
MySQL Verification Team
see also bug #62100 and
[27 Jan 2012 5:52]
Mark Callaghan
There are two reasons why retry can be done in fil_rename_tablespace. It would help to know which one forces is the cause in the error message used by it. It would also help to know the values of: * node->n_pending * node->n_pending_flushes * node->modification_counter * node->flush_counter
[27 Jan 2012 5:55]
MySQL Verification Team
http://lists.mysql.com/mysql/225516
[27 Jan 2012 6:31]
MySQL Verification Team
In mysql-5.1 bzr code now do set the err: if (!dict_table_rename_in_cache(table, new_name, !new_is_tmp)) { trx->error_state = DB_SUCCESS; trx_general_rollback_for_mysql(trx, NULL); trx->error_state = DB_SUCCESS; err = DB_ERROR; goto funct_exit; } This was fixed by: revno: 3634 committer: Marko M„kel„ <marko.makela@oracle.com> branch nick: mysql-5.1 timestamp: Thu 2011-10-27 14:58:12 +0300 message: Bug #12884631 62146: TABLES ARE LOST FOR DDL row_rename_table_for_mysql(): Return DB_ERROR instead of DB_SUCCESS when fil_rename_tablespace() returns an error. This bug was introduced in the InnoDB Plugin.