List:Commits« Previous MessageNext Message »
From:Dmitry Shulga Date:December 10 2010 11:35am
Subject:bzr commit into mysql-5.5-bugteam branch (Dmitry.Shulga:3183) Bug#54486
View as plain text  
#At file:///Users/shulga/projects/mysql/mysql-5.5-bugteam/ based on revid:bjorn.munch@stripped

 3183 Dmitry Shulga	2010-12-10 [merge]
      Manual merge from mysql-5.1-bugteam for bug#54486.

    modified:
      sql/sql_db.cc
      storage/myisam/mi_check.c
=== modified file 'sql/sql_db.cc'
--- a/sql/sql_db.cc	2010-11-17 14:37:23 +0000
+++ b/sql/sql_db.cc	2010-12-10 11:32:58 +0000
@@ -794,14 +794,9 @@ bool mysql_rm_db(THD *thd,char *db,bool 
     }
   }
 
-  thd->push_internal_handler(&err_handler);
-
   if (find_db_tables_and_rm_known_files(thd, dirp, db, path, &tables,
                                         &found_other_files))
-  {
-    thd->pop_internal_handler();
     goto exit;
-  }
 
   /*
     Disable drop of enabled log tables, must be done before name locking.
@@ -815,7 +810,6 @@ bool mysql_rm_db(THD *thd,char *db,bool 
                              table->table_name_length, table->table_name, true))
       {
         my_error(ER_BAD_LOG_STATEMENT, MYF(0), "DROP");
-        thd->pop_internal_handler();
         goto exit;
       }
     }
@@ -825,10 +819,7 @@ bool mysql_rm_db(THD *thd,char *db,bool 
   if (lock_table_names(thd, tables, NULL, thd->variables.lock_wait_timeout,
                        MYSQL_OPEN_SKIP_TEMPORARY) ||
       lock_db_routines(thd, db))
-  {
-    thd->pop_internal_handler();
     goto exit;
-  }
 
   /* mysql_ha_rm_tables() requires a non-null TABLE_LIST. */
   if (tables)
@@ -841,6 +832,7 @@ bool mysql_rm_db(THD *thd,char *db,bool 
     deleted_tables++;
   }
 
+  thd->push_internal_handler(&err_handler);
   if (thd->killed ||
       (tables && mysql_rm_table_no_locks(thd, tables, true, false, true, true)))
   {
@@ -1094,8 +1086,16 @@ static bool find_db_tables_and_rm_known_
     else
     {
       strxmov(filePath, path, "/", file->name, NullS);
-      if (mysql_file_delete_with_symlink(key_file_misc, filePath, MYF(MY_WME)))
-	DBUG_RETURN(true);
+      /*
+        We ignore ENOENT error in order to skip files that was deleted
+        by concurrently running statement like REAPIR TABLE ...
+      */
+      if (my_delete_with_symlink(filePath, MYF(0)) &&
+          my_errno != ENOENT)
+      {
+        my_error(EE_DELETE, MYF(0), filePath, my_errno);
+        DBUG_RETURN(true);
+      }
     }
   }
   *tables= tot_list;

=== modified file 'storage/myisam/mi_check.c'
--- a/storage/myisam/mi_check.c	2010-07-23 20:15:07 +0000
+++ b/storage/myisam/mi_check.c	2010-12-10 11:32:58 +0000
@@ -1748,6 +1748,8 @@ err:
 			     MYF(MY_REDEL_MAKE_BACKUP): MYF(0))) ||
 	  mi_open_datafile(info,share,name,-1))
 	got_error=1;
+
+      param->retry_repair= 0;
     }
   }
   if (got_error)


Attachment: [text/bzr-bundle] bzr/dmitry.shulga@oracle.com-20101210113258-5kuldljyahvu390t.bundle
Thread
bzr commit into mysql-5.5-bugteam branch (Dmitry.Shulga:3183) Bug#54486Dmitry Shulga10 Dec