1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +03:00

Fix for BUG#32880 - Repairing Archive table fails with internal error 144

Any statement reading corrupt archive data file
(CHECK/REPAIR/SELECT/UPDATE/DELETE) may cause assertion
failure in debug builds. This assertion has been removed
and an error is returned instead.

Also fixed that CHECK/REPAIR returns vague error message
when it mets corruption in archive data file. This is
fixed by returning proper error code.

mysql-test/r/archive.result:
  A test case for BUG#32880
mysql-test/std_data/bug32880.ARN:
  corrupted archive table to test check and repair table operation
mysql-test/std_data/bug32880.ARZ:
  corrupted archive table to test check and repair table operation
mysql-test/std_data/bug32880.frm:
  corrupted archive table to test check and repair table operation
mysql-test/t/archive.test:
  A test case for BUG#32880
storage/archive/ha_archive.cc:
  Fixed unpack_row() to return the error instead of throwing assertion 
  and also fixed repair() to throw better error when repair table
  operation fails on corrupted archive table
This commit is contained in:
Satya B
2009-03-18 11:16:21 +05:30
parent da3c4375cf
commit 497db6ac0f
6 changed files with 36 additions and 4 deletions

View File

@ -12695,3 +12695,22 @@ a b
1 NULL
2 NULL
DROP TABLE t1;
#
# BUG#32880 - Repairing Archive table fails with internal error 144
#
# Test with an existing table which is corrupted
# Copy t1 from std_data
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` blob
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check error Corrupt
REPAIR TABLE t1;
Table Op Msg_type Msg_text
test.t1 repair error Corrupt
DROP TABLE t1;

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1599,3 +1599,18 @@ INSERT INTO t1 VALUES (NULL, NULL),(NULL, NULL);
FLUSH TABLE t1;
SELECT * FROM t1 ORDER BY a;
DROP TABLE t1;
--echo #
--echo # BUG#32880 - Repairing Archive table fails with internal error 144
--echo #
--echo
--echo # Test with an existing table which is corrupted
--echo # Copy t1 from std_data
let $MYSQLD_DATADIR= `select @@datadir`;
copy_file std_data/bug32880.frm $MYSQLD_DATADIR/test/t1.frm;
copy_file std_data/bug32880.ARZ $MYSQLD_DATADIR/test/t1.ARZ;
copy_file std_data/bug32880.ARN $MYSQLD_DATADIR/test/t1.ARN;
SHOW CREATE TABLE t1;
CHECK TABLE t1;
REPAIR TABLE t1;
DROP TABLE t1;