diff options
Diffstat (limited to 'sql/parse_file.cc')
-rw-r--r-- | sql/parse_file.cc | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/sql/parse_file.cc b/sql/parse_file.cc index aa352433141..2b947fcac4f 100644 --- a/sql/parse_file.cc +++ b/sql/parse_file.cc @@ -21,6 +21,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 @@ -265,8 +268,9 @@ sql_create_definition_file(const LEX_STRING *dir, const LEX_STRING *file_name, 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) @@ -313,6 +317,7 @@ sql_create_definition_file(const LEX_STRING *dir, const LEX_STRING *file_name, } } } +#endif//FRM_ARCHIVE { // rename temporary file @@ -337,6 +342,7 @@ err_w_file: SYNOPSIS rename_in_schema_file + thd thread handler schema name of given schema old_name original file name new_name new file name @@ -348,7 +354,8 @@ err_w_file: 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) { @@ -365,10 +372,11 @@ my_bool rename_in_schema_file(const char *schema, const char *old_name, 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). */ strxnmov(arc_path, FN_REFLEN, mysql_data_home, "/", schema, "/arc", NullS); (void) unpack_filename(arc_path, arc_path); +#ifdef FRM_ARCHIVE if (revision > 0 && !access(arc_path, F_OK)) { ulonglong limit= ((revision > num_view_backups) ? @@ -384,6 +392,16 @@ my_bool rename_in_schema_file(const char *schema, const char *old_name, 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; } |