1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

BUG#26138 - REPAIR TABLE with option USE_FRM erases all records in

ARCHIVE table
ARCHIVE table was truncated by REPAIR TABLE ... USE_FRM statement.
The table handler returned its file name extensions in a wrong order.
REPAIR TABLE believed it has to use the meta file to create a new table
from it.

With the fixed order, REPAIR TABLE does now use the data file to create
a new table. So REPAIR TABLE ... USE_FRM works well with ARCHIVE engine
now.

This issue affects 5.0 only, since in 5.1 ARCHIVE engine stores meta
information and data in the same file.


mysql-test/r/archive.result:
  A test case for bug#26138.
mysql-test/t/archive.test:
  A test case for bug#26138.
sql/examples/ha_example.cc:
  Added a comment.
sql/ha_archive.cc:
  First element of engine file name extentions array should be meta/index
  file extention. Second element - data file extention. This is true
  for engines that have separate meta/index file and data file.
  
  Reoder ha_archive_exts elements to meet described above requirement.
sql/handler.h:
  Added a comment.
sql/sql_table.cc:
  Added a comment.
This commit is contained in:
unknown
2007-03-30 13:00:21 +05:00
parent 817a474c3d
commit 0da1a0cdec
6 changed files with 40 additions and 2 deletions

View File

@ -2068,7 +2068,9 @@ static int prepare_for_repair(THD* thd, TABLE_LIST *table_list,
/*
Check if this is a table type that stores index and data separately,
like ISAM or MyISAM
like ISAM or MyISAM. We assume fixed order of engine file name
extentions array. First element of engine file name extentions array
is meta/index file extention. Second element - data file extention.
*/
if (!ext[0] || !ext[1])
goto end; // No data file