summaryrefslogtreecommitdiff
path: root/storage/archive
diff options
context:
space:
mode:
authorSergey Vojtovich <sergey.vojtovich@oracle.com>2011-06-03 11:49:05 +0400
committerSergey Vojtovich <sergey.vojtovich@oracle.com>2011-06-03 11:49:05 +0400
commit819d6b735e52b0ddaae4b4feee16196b570f19ea (patch)
tree02d778d3a688eecb4f44b4c982740a82242a98e4 /storage/archive
parenta483b5bfa945ec0741a2053cd1efe165eb22b5b3 (diff)
parent2ab0abd26820dbdf102be2ac7a6f455849ad66e3 (diff)
downloadmariadb-git-819d6b735e52b0ddaae4b4feee16196b570f19ea.tar.gz
Merge.
Diffstat (limited to 'storage/archive')
-rw-r--r--storage/archive/azio.c9
-rw-r--r--storage/archive/ha_archive.cc3
2 files changed, 11 insertions, 1 deletions
diff --git a/storage/archive/azio.c b/storage/archive/azio.c
index 1e2753027dc..5fc9bc875f8 100644
--- a/storage/archive/azio.c
+++ b/storage/archive/azio.c
@@ -114,6 +114,15 @@ int az_open (azio_stream *s, const char *path, int Flags, File fd)
errno = 0;
s->file = fd < 0 ? my_open(path, Flags, MYF(0)) : fd;
+ DBUG_EXECUTE_IF("simulate_archive_open_failure",
+ {
+ if (s->file >= 0)
+ {
+ my_close(s->file, MYF(0));
+ s->file= -1;
+ my_errno= EMFILE;
+ }
+ });
if (s->file < 0 )
{
diff --git a/storage/archive/ha_archive.cc b/storage/archive/ha_archive.cc
index df556a0721c..41c041a2c35 100644
--- a/storage/archive/ha_archive.cc
+++ b/storage/archive/ha_archive.cc
@@ -1685,11 +1685,12 @@ int ha_archive::check(THD* thd, HA_CHECK_OPT* check_opt)
azflush(&(share->archive_write), Z_SYNC_FLUSH);
mysql_mutex_unlock(&share->mutex);
+ if (init_archive_reader())
+ DBUG_RETURN(HA_ADMIN_CORRUPT);
/*
Now we will rewind the archive file so that we are positioned at the
start of the file.
*/
- init_archive_reader();
read_data_header(&archive);
while (!(rc= get_row(&archive, table->record[0])))
count--;