summaryrefslogtreecommitdiff
path: root/storage/archive/ha_archive.cc
diff options
context:
space:
mode:
Diffstat (limited to 'storage/archive/ha_archive.cc')
-rw-r--r--storage/archive/ha_archive.cc31
1 files changed, 5 insertions, 26 deletions
diff --git a/storage/archive/ha_archive.cc b/storage/archive/ha_archive.cc
index 515ebf8cf3d..9f164da3359 100644
--- a/storage/archive/ha_archive.cc
+++ b/storage/archive/ha_archive.cc
@@ -673,33 +673,12 @@ int ha_archive::frm_copy(azio_stream *src, azio_stream *dst)
int ha_archive::frm_compare(azio_stream *s)
{
- int rc= 0;
- const uchar *frm_ptr= 0;
- uchar *azfrm_ptr= 0;
- size_t frm_len;
-
- /* no frm = no discovery. perhaps it's a partitioned table */
- if (table->s->read_frm_image(&frm_ptr, &frm_len))
- goto err;
-
- if (!(azfrm_ptr= (uchar *) my_malloc(s->frm_length,
- MYF(MY_THREAD_SPECIFIC | MY_WME))))
- goto err;
-
- rc= 1;
+ if (!s->frmver_length)
+ return 0; // Old pre-10.0 archive table. Never rediscover.
- if (frm_len != s->frm_length)
- goto err;
-
- if (azread_frm(s, azfrm_ptr))
- goto err;
-
- rc= memcmp(frm_ptr, azfrm_ptr, frm_len);
-
-err:
- my_free(const_cast<uchar*>(frm_ptr));
- my_free(azfrm_ptr);
- return rc;
+ LEX_CUSTRING *ver= &table->s->tabledef_version;
+ return ver->length != s->frmver_length ||
+ memcmp(ver->str, s->frmver, ver->length);
}