1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

fixed archive test. It might be OOM error on boxes with low amount of memory.

It leads to crash because there is no OOM check in ha_archive::unpack_row().
The fix:
added OOM error check


mysql-test/r/archive.result:
  remover test case
mysql-test/std_data/bug32880.ARN:
  remover test case
mysql-test/std_data/bug32880.ARZ:
  remover test case
mysql-test/std_data/bug32880.frm:
  remover test case
mysql-test/t/archive.test:
  remover test case
This commit is contained in:
Sergey Glukhov
2009-03-26 18:27:34 +04:00
parent fb8ac41a3b
commit d9a9f5c71f
6 changed files with 5 additions and 35 deletions

View File

@ -12695,22 +12695,3 @@ a b
1 NULL 1 NULL
2 NULL 2 NULL
DROP TABLE t1; 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,18 +1599,3 @@ INSERT INTO t1 VALUES (NULL, NULL),(NULL, NULL);
FLUSH TABLE t1; FLUSH TABLE t1;
SELECT * FROM t1 ORDER BY a; SELECT * FROM t1 ORDER BY a;
DROP TABLE t1; 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;

View File

@ -1071,7 +1071,11 @@ int ha_archive::unpack_row(azio_stream *file_to_read, uchar *record)
row_len= uint4korr(size_buffer); row_len= uint4korr(size_buffer);
DBUG_PRINT("ha_archive",("Unpack row length %u -> %u", row_len, DBUG_PRINT("ha_archive",("Unpack row length %u -> %u", row_len,
(unsigned int)table->s->reclength)); (unsigned int)table->s->reclength));
fix_rec_buff(row_len);
if (fix_rec_buff(row_len))
{
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
}
DBUG_ASSERT(row_len <= record_buffer->length); DBUG_ASSERT(row_len <= record_buffer->length);
read= azread(file_to_read, record_buffer->buffer, row_len, &error); read= azread(file_to_read, record_buffer->buffer, row_len, &error);