diff options
Diffstat (limited to 'storage/archive')
-rw-r--r-- | storage/archive/ha_archive.cc | 15 | ||||
-rw-r--r-- | storage/archive/ha_archive.h | 14 |
2 files changed, 15 insertions, 14 deletions
diff --git a/storage/archive/ha_archive.cc b/storage/archive/ha_archive.cc index 4f4d81ffdb2..2df54567285 100644 --- a/storage/archive/ha_archive.cc +++ b/storage/archive/ha_archive.cc @@ -242,6 +242,20 @@ Archive_share::Archive_share() } +Archive_share::~Archive_share() +{ + DBUG_PRINT("ha_archive", ("~Archive_share: %p", this)); + if (archive_write_open) + { + mysql_mutex_lock(&mutex); + (void) close_archive_writer(); // Will reset archive_write_open + mysql_mutex_unlock(&mutex); + } + thr_lock_delete(&lock); + mysql_mutex_destroy(&mutex); +} + + ha_archive::ha_archive(handlerton *hton, TABLE_SHARE *table_arg) :handler(hton, table_arg), delayed_insert(0), bulk_insert(0) { @@ -675,7 +689,6 @@ int ha_archive::close(void) if (azclose(&archive)) rc= 1; } - DBUG_RETURN(rc); } diff --git a/storage/archive/ha_archive.h b/storage/archive/ha_archive.h index c1b4f27e45e..2bb5079868b 100644 --- a/storage/archive/ha_archive.h +++ b/storage/archive/ha_archive.h @@ -46,19 +46,7 @@ public: bool dirty; /* Flag for if a flush should occur */ bool crashed; /* Meta file is crashed */ Archive_share(); - ~Archive_share() - { - DBUG_PRINT("ha_archive", ("~Archive_share: %p", - this)); - if (archive_write_open) - { - mysql_mutex_lock(&mutex); - (void) close_archive_writer(); - mysql_mutex_unlock(&mutex); - } - thr_lock_delete(&lock); - mysql_mutex_destroy(&mutex); - } + virtual ~Archive_share(); int init_archive_writer(); void close_archive_writer(); int write_v1_metafile(); |