diff options
author | unknown <msvensson@neptunus.(none)> | 2005-04-26 11:35:52 +0200 |
---|---|---|
committer | unknown <msvensson@neptunus.(none)> | 2005-04-26 11:35:52 +0200 |
commit | 5444ad94009330a1db7f978290e998fafd23d501 (patch) | |
tree | 81f21369f7c01b20d066ac24c9ef32875b6e4ec7 /sql/examples | |
parent | 20cf8f82eefbc4db26ec50aef4f602c991811397 (diff) | |
download | mariadb-git-5444ad94009330a1db7f978290e998fafd23d501.tar.gz |
BUG#9911 RENAME TABLE of type ARCHIVE fails with .ARN file error
- Implemented ha_archive::rename_table
- Added testcases for rename
mysql-test/r/archive.result:
Addd testcase for rename of archive table
mysql-test/t/archive.test:
Addd testcase for rename of archive table
sql/examples/ha_archive.cc:
Implement special version of rename table that does not care it the .arn file is missing
sql/examples/ha_archive.h:
Implement special version of rename table that does not care it the .arn file is missing
Diffstat (limited to 'sql/examples')
-rw-r--r-- | sql/examples/ha_archive.cc | 24 | ||||
-rw-r--r-- | sql/examples/ha_archive.h | 1 |
2 files changed, 25 insertions, 0 deletions
diff --git a/sql/examples/ha_archive.cc b/sql/examples/ha_archive.cc index bc4af0c7dc7..0e1df45a70b 100644 --- a/sql/examples/ha_archive.cc +++ b/sql/examples/ha_archive.cc @@ -427,6 +427,30 @@ 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 855d756368d..1d3365aca67 100644 --- a/sql/examples/ha_archive.h +++ b/sql/examples/ha_archive.h @@ -124,6 +124,7 @@ 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); |