List:Commits« Previous MessageNext Message »
From:Gleb Shchepa Date:September 30 2008 1:32pm
Subject:bzr commit into mysql-6.0 branch (gshchepa:2827)
View as plain text  
#At file:///work/bzr/mysql-6.0-bugteam/

 2827 Gleb Shchepa	2008-09-30 [merge]
      merge 5.1-bugteam --> 6.0-bugteam
modified:
  sql/parse_file.cc
  sql/parse_file.h
  sql/sql_db.cc
  sql/sql_view.cc

=== modified file 'sql/parse_file.cc'
--- a/sql/parse_file.cc	2008-07-14 14:24:32 +0000
+++ b/sql/parse_file.cc	2008-09-30 13:31:41 +0000
@@ -26,6 +26,9 @@
 #include <my_sys.h>
 #include <my_dir.h>
 
+/* from sql_db.cc */
+extern long mysql_rm_arc_files(THD *thd, MY_DIR *dirp, const char *org_path);
+
 
 /**
   Write string with escaping.
@@ -282,8 +285,9 @@ sql_create_definition_file(const LEX_STR
     DBUG_RETURN(TRUE);
   }
 
-  // archive copies management
   path[path_end]='\0';
+#ifdef FRM_ARCHIVE
+  // archive copies management: disabled unused feature (see bug #17823).
   if (!access(path, F_OK))
   {
     if (old_version != ULONGLONG_MAX && max_versions != 0)
@@ -330,6 +334,7 @@ sql_create_definition_file(const LEX_STR
       }
     }
   }
+#endif//FRM_ARCHIVE
 
   {
     // rename temporary file
@@ -352,6 +357,7 @@ err_w_file:
 /**
   Renames a frm file (including backups) in same schema.
 
+  @thd                     thread handler
   @param schema            name of given schema
   @param old_name          original file name
   @param new_name          new file name
@@ -363,7 +369,8 @@ err_w_file:
   @retval
     1   Error (only if renaming of frm failed)
 */
-my_bool rename_in_schema_file(const char *schema, const char *old_name, 
+my_bool rename_in_schema_file(THD *thd,
+                              const char *schema, const char *old_name, 
                               const char *new_name, ulonglong revision, 
                               uint num_view_backups)
 {
@@ -377,9 +384,10 @@ my_bool rename_in_schema_file(const char
   if (my_rename(old_path, new_path, MYF(MY_WME)))
     return 1;
 
-  /* check if arc_dir exists */
+  /* check if arc_dir exists: disabled unused feature (see bug #17823). */
   build_table_filename(arc_path, sizeof(arc_path) - 1, schema, "arc", "", 0);
   
+#ifdef FRM_ARCHIVE
   if (revision > 0 && !access(arc_path, F_OK))
   {
     char old_name_buf[FN_REFLEN], new_name_buf[FN_REFLEN];
@@ -400,6 +408,16 @@ my_bool rename_in_schema_file(const char
       my_rename(old_path, new_path, MYF(0));
     }
   }
+#else//FRM_ARCHIVE
+  { // remove obsolete 'arc' directory and files if any
+    MY_DIR *new_dirp;
+    if ((new_dirp = my_dir(arc_path, MYF(MY_DONT_SORT))))
+    {
+      DBUG_PRINT("my",("Archive subdir found: %s", arc_path));
+      (void) mysql_rm_arc_files(thd, new_dirp, arc_path);
+    }
+  }
+#endif//FRM_ARCHIVE
   return 0;
 }
 

=== modified file 'sql/parse_file.h'
--- a/sql/parse_file.h	2007-10-16 20:11:50 +0000
+++ b/sql/parse_file.h	2008-09-30 13:16:11 +0000
@@ -82,8 +82,9 @@ my_bool
 sql_create_definition_file(const LEX_STRING *dir, const  LEX_STRING *file_name,
 			   const LEX_STRING *type,
 			   uchar* base, File_option *parameters, uint versions);
-my_bool rename_in_schema_file(const char *schema, const char *old_name, 
-                              const char *new_name, ulonglong revision, 
+my_bool rename_in_schema_file(THD *thd,
+                              const char *schema, const char *old_name,
+                              const char *new_name, ulonglong revision,
                               uint num_view_backups);
 
 class File_parser: public Sql_alloc

=== modified file 'sql/sql_db.cc'
--- a/sql/sql_db.cc	2008-08-27 08:47:03 +0000
+++ b/sql/sql_db.cc	2008-09-30 13:31:41 +0000
@@ -37,7 +37,7 @@ static long mysql_rm_known_files(THD *th
 				 const char *db, const char *path, uint level, 
                                  TABLE_LIST **dropped_tables);
          
-static long mysql_rm_arc_files(THD *thd, MY_DIR *dirp, const char *org_path);
+long mysql_rm_arc_files(THD *thd, MY_DIR *dirp, const char *org_path);
 static my_bool rm_dir_w_symlink(const char *org_path, my_bool send_error);
 static void mysql_change_db_impl(THD *thd,
                                  LEX_STRING *new_db_name,
@@ -1091,7 +1091,11 @@ static long mysql_rm_known_files(THD *th
     else if (file->name[0] == 'a' && file->name[1] == 'r' &&
              file->name[2] == 'c' && file->name[3] == '\0')
     {
-      /* .frm archive */
+      /* .frm archive:
+        Those archives are obsolete, but following code should
+        exist to remove existent "arc" directories.
+        See #ifdef FRM_ARCHIVE directives for obsolete code.
+      */
       char newpath[FN_REFLEN];
       MY_DIR *new_dirp;
       strxmov(newpath, org_path, "/", "arc", NullS);
@@ -1260,9 +1264,13 @@ static my_bool rm_dir_w_symlink(const ch
   RETURN
     > 0 number of removed files
     -1  error
+
+  NOTE
+    A support of "arc" directories is obsolete, however this
+    function should exist to remove existent "arc" directories.
+    See #ifdef FRM_ARCHIVE directives for obsolete code.
 */
-static long mysql_rm_arc_files(THD *thd, MY_DIR *dirp,
-				 const char *org_path)
+long mysql_rm_arc_files(THD *thd, MY_DIR *dirp, const char *org_path)
 {
   long deleted= 0;
   ulong found_other_files= 0;
@@ -1304,6 +1312,7 @@ static long mysql_rm_arc_files(THD *thd,
     {
       goto err;
     }
+    deleted++;
   }
   if (thd->killed)
     goto err;

=== modified file 'sql/sql_view.cc'
--- a/sql/sql_view.cc	2008-07-15 16:29:51 +0000
+++ b/sql/sql_view.cc	2008-09-30 13:31:41 +0000
@@ -1971,7 +1971,7 @@ mysql_rename_view(THD *thd,
       goto err;
 
     /* rename view and it's backups */
-    if (rename_in_schema_file(view->db, view->table_name, new_name, 
+    if (rename_in_schema_file(thd, view->db, view->table_name, new_name, 
                               view_def.revision - 1, num_view_backups))
       goto err;
 
@@ -1991,7 +1991,7 @@ mysql_rename_view(THD *thd,
                                    num_view_backups)) 
     {
       /* restore renamed view in case of error */
-      rename_in_schema_file(view->db, new_name, view->table_name, 
+      rename_in_schema_file(thd, view->db, new_name, view->table_name, 
                             view_def.revision - 1, num_view_backups);
       goto err;
     }

Thread
bzr commit into mysql-6.0 branch (gshchepa:2827)Gleb Shchepa30 Sep