summaryrefslogtreecommitdiff
path: root/sql/examples
diff options
context:
space:
mode:
authorunknown <msvensson@neptunus.(none)>2005-04-26 11:35:52 +0200
committerunknown <msvensson@neptunus.(none)>2005-04-26 11:35:52 +0200
commit5444ad94009330a1db7f978290e998fafd23d501 (patch)
tree81f21369f7c01b20d066ac24c9ef32875b6e4ec7 /sql/examples
parent20cf8f82eefbc4db26ec50aef4f602c991811397 (diff)
downloadmariadb-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.cc24
-rw-r--r--sql/examples/ha_archive.h1
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);