List:Commits« Previous MessageNext Message »
From:vasil.dimov Date:February 1 2011 11:59am
Subject:bzr commit into mysql-5.5-innodb branch (vasil.dimov:3300) Bug#56947
View as plain text  
#At file:///usr/local/devel/bzrroot/server/mysql-5.5-innodb/ based on revid:vasil.dimov@stripped

 3300 Vasil Dimov	2011-02-01
      Replay a lost change (fix for Bug#56947 InnoDB leaks memory... in 5.5)
      
      This change was originally done in
      marko.makela@stripped
      but was later lost during the merge process.

    modified:
      storage/innobase/row/row0mysql.c
=== modified file 'storage/innobase/row/row0mysql.c'
--- a/storage/innobase/row/row0mysql.c	revid:vasil.dimov@stripped
+++ b/storage/innobase/row/row0mysql.c	revid:vasil.dimov@stripped
@@ -1939,15 +1939,13 @@ err_exit:
 
 	err = trx->error_state;
 
-	if (UNIV_UNLIKELY(err != DB_SUCCESS)) {
+	switch (err) {
+	case DB_SUCCESS:
+		break;
+	case DB_OUT_OF_FILE_SPACE:
 		trx->error_state = DB_SUCCESS;
 		trx_general_rollback_for_mysql(trx, NULL);
-		/* TO DO: free table?  The code below will dereference
-		table->name, though. */
-	}
 
-	switch (err) {
-	case DB_OUT_OF_FILE_SPACE:
 		ut_print_timestamp(stderr);
 		fputs("  InnoDB: Warning: cannot create table ",
 		      stderr);
@@ -1962,9 +1960,13 @@ err_exit:
 		break;
 
 	case DB_DUPLICATE_KEY:
+	default:
 		/* We may also get err == DB_ERROR if the .ibd file for the
 		table already exists */
 
+		trx->error_state = DB_SUCCESS;
+		trx_general_rollback_for_mysql(trx, NULL);
+		dict_mem_table_free(table);
 		break;
 	}
 


Attachment: [text/bzr-bundle] bzr/vasil.dimov@oracle.com-20110201115510-o090wltwt6y40d96.bundle
Thread
bzr commit into mysql-5.5-innodb branch (vasil.dimov:3300) Bug#56947vasil.dimov1 Feb