diff options
-rw-r--r-- | mysql-test/r/archive.result | 19 | ||||
-rw-r--r-- | mysql-test/std_data/bug32880.ARN | bin | 131 -> 0 bytes | |||
-rw-r--r-- | mysql-test/std_data/bug32880.ARZ | bin | 8744 -> 0 bytes | |||
-rw-r--r-- | mysql-test/std_data/bug32880.frm | bin | 8578 -> 0 bytes | |||
-rw-r--r-- | mysql-test/t/archive.test | 15 | ||||
-rw-r--r-- | storage/archive/ha_archive.cc | 6 |
6 files changed, 5 insertions, 35 deletions
diff --git a/mysql-test/r/archive.result b/mysql-test/r/archive.result index 02acccb234e..8c26ea1ff82 100644 --- a/mysql-test/r/archive.result +++ b/mysql-test/r/archive.result @@ -12695,22 +12695,3 @@ 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; diff --git a/mysql-test/std_data/bug32880.ARN b/mysql-test/std_data/bug32880.ARN Binary files differdeleted file mode 100644 index 643b0dfbad5..00000000000 --- a/mysql-test/std_data/bug32880.ARN +++ /dev/null diff --git a/mysql-test/std_data/bug32880.ARZ b/mysql-test/std_data/bug32880.ARZ Binary files differdeleted file mode 100644 index 4e151822647..00000000000 --- a/mysql-test/std_data/bug32880.ARZ +++ /dev/null diff --git a/mysql-test/std_data/bug32880.frm b/mysql-test/std_data/bug32880.frm Binary files differdeleted file mode 100644 index 66a4c7d7538..00000000000 --- a/mysql-test/std_data/bug32880.frm +++ /dev/null diff --git a/mysql-test/t/archive.test b/mysql-test/t/archive.test index 0d521f95b38..7139d95ab49 100644 --- a/mysql-test/t/archive.test +++ b/mysql-test/t/archive.test @@ -1599,18 +1599,3 @@ 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; diff --git a/storage/archive/ha_archive.cc b/storage/archive/ha_archive.cc index d20ab3bf723..5e2a4ad5da3 100644 --- a/storage/archive/ha_archive.cc +++ b/storage/archive/ha_archive.cc @@ -1071,7 +1071,11 @@ int ha_archive::unpack_row(azio_stream *file_to_read, uchar *record) row_len= uint4korr(size_buffer); DBUG_PRINT("ha_archive",("Unpack row length %u -> %u", row_len, (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); read= azread(file_to_read, record_buffer->buffer, row_len, &error); |