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