From 2c8e261725b4a7d57ee56058090b14f106d41c5b Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 28 Apr 2005 10:49:18 +0200 Subject: [PATCH 1/2] BUG#9911 After review fixes - Remove ha_archive::rename_table and move the fix to handler::rename_table sql/examples/ha_archive.cc: Remove ha_archive::rename_table sql/examples/ha_archive.h: Remove ha_archive::rename_table sql/handler.cc: Fix handler::rename_table so it does not care about if the file to rename is missing --- sql/examples/ha_archive.cc | 24 ------------------------ sql/examples/ha_archive.h | 1 - sql/handler.cc | 14 +++++++++----- 3 files changed, 9 insertions(+), 30 deletions(-) diff --git a/sql/examples/ha_archive.cc b/sql/examples/ha_archive.cc index 0e1df45a70b..bc4af0c7dc7 100644 --- a/sql/examples/ha_archive.cc +++ b/sql/examples/ha_archive.cc @@ -427,30 +427,6 @@ const char **ha_archive::bas_ext() const { static const char *ext[]= { ARZ, ARN, ARM, NullS }; return ext; } -/* - Rename all files that this handler defines in bas_ext list - - NOTE Don't care if the .arn file is missing -*/ -int ha_archive::rename_table(const char * from, const char * to) -{ - DBUG_ENTER("ha_archive::rename_table"); - for (const char **ext=bas_ext(); *ext ; ext++) - { - if (rename_file_ext(from,to,*ext)) - { - if (my_errno == ENOENT && - !my_strcasecmp(system_charset_info, *ext, ARN)) - continue; - - DBUG_RETURN(my_errno); - } - - } - DBUG_RETURN(0); -} - - /* When opening a file we: Create/get our shared structure. diff --git a/sql/examples/ha_archive.h b/sql/examples/ha_archive.h index 1d3365aca67..855d756368d 100644 --- a/sql/examples/ha_archive.h +++ b/sql/examples/ha_archive.h @@ -124,7 +124,6 @@ public: int optimize(THD* thd, HA_CHECK_OPT* check_opt); THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to, enum thr_lock_type lock_type); - int rename_table(const char * from, const char * to); }; bool archive_db_init(void); diff --git a/sql/handler.cc b/sql/handler.cc index 7c369a72392..f174f51514e 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -1255,13 +1255,17 @@ int handler::delete_table(const char *name) int handler::rename_table(const char * from, const char * to) { - DBUG_ENTER("handler::rename_table"); - for (const char **ext=bas_ext(); *ext ; ext++) + int error= 0; + for (const char **ext= bas_ext(); *ext ; ext++) { - if (rename_file_ext(from,to,*ext)) - DBUG_RETURN(my_errno); + if (rename_file_ext(from, to, *ext)) + { + if ((error=my_errno) != ENOENT) + break; + error= 0; + } } - DBUG_RETURN(0); + return error; } /* From 56b8c9061c3d118f61b572e2299f351b179c9385 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 28 Apr 2005 11:05:44 +0200 Subject: [PATCH 2/2] Merge bug9911 with 5.0 mysql-test/r/archive.result: Warning will be pushed when renaming table with "optional" files. --- mysql-test/r/archive.result | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mysql-test/r/archive.result b/mysql-test/r/archive.result index 9cd5bba267f..793e50cf653 100644 --- a/mysql-test/r/archive.result +++ b/mysql-test/r/archive.result @@ -192,6 +192,8 @@ select count(*) from t3; count(*) 1199 rename table t3 to t4; +Warnings: +Error 7 Error on rename of './test/t3.ARN' to './test/t4.ARN' (Errcode: 2) select * from t4 where fld3='bonfire'; auto fld1 companynr fld3 fld4 fld5 fld6 1191 068504 00 bonfire corresponds positively