From cc042237b1eb1cf9235d235efd363cf2e8c20ef6 Mon Sep 17 00:00:00 2001 From: unknown <aivanov@mysql.com> Date: Tue, 6 Jun 2006 23:05:10 +0400 Subject: Applied innodb-4.1-ss31 snapshot. Fixed BUG#19727 "InnoDB crashed server and crashed tables are not recoverable". innobase/row/row0mysql.c: Applied innodb-4.1-ss31 snapshot. Move trx_commit_for_mysql(trx) calls before calls to row_mysql_unlock_data_dictionary(trx). --- innobase/row/row0mysql.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c index 23d019b6f78..1ee920ffb14 100644 --- a/innobase/row/row0mysql.c +++ b/innobase/row/row0mysql.c @@ -2237,14 +2237,14 @@ do not allow the discard. We also reserve the data dictionary latch. */ } } funct_exit: + trx_commit_for_mysql(trx); + row_mysql_unlock_data_dictionary(trx); if (graph) { que_graph_free(graph); } - trx_commit_for_mysql(trx); - trx->op_info = ""; return((int) err); @@ -2374,10 +2374,10 @@ row_import_tablespace_for_mysql( } funct_exit: - row_mysql_unlock_data_dictionary(trx); - trx_commit_for_mysql(trx); + row_mysql_unlock_data_dictionary(trx); + trx->op_info = ""; return((int) err); @@ -2769,6 +2769,8 @@ fputs(" InnoDB: You are trying to drop table ", stderr); } funct_exit: + trx_commit_for_mysql(trx); + if (locked_dictionary) { row_mysql_unlock_data_dictionary(trx); } @@ -2779,8 +2781,6 @@ funct_exit: que_graph_free(graph); - trx_commit_for_mysql(trx); - trx->op_info = ""; srv_wake_master_thread(); @@ -2857,10 +2857,10 @@ loop: } } - row_mysql_unlock_data_dictionary(trx); - trx_commit_for_mysql(trx); + row_mysql_unlock_data_dictionary(trx); + trx->op_info = ""; return(err); @@ -3272,6 +3272,8 @@ row_rename_table_for_mysql( } } funct_exit: + trx_commit_for_mysql(trx); + if (!recovering_temp_table) { row_mysql_unlock_data_dictionary(trx); } @@ -3284,8 +3286,6 @@ funct_exit: mem_heap_free(heap); } - trx_commit_for_mysql(trx); - trx->op_info = ""; return((int) err); -- cgit v1.2.1