summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/archive.result19
-rw-r--r--mysql-test/std_data/bug32880.ARNbin131 -> 0 bytes
-rw-r--r--mysql-test/std_data/bug32880.ARZbin8744 -> 0 bytes
-rw-r--r--mysql-test/std_data/bug32880.frmbin8578 -> 0 bytes
-rw-r--r--mysql-test/t/archive.test15
-rw-r--r--storage/archive/ha_archive.cc6
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
deleted file mode 100644
index 643b0dfbad5..00000000000
--- a/mysql-test/std_data/bug32880.ARN
+++ /dev/null
Binary files differ
diff --git a/mysql-test/std_data/bug32880.ARZ b/mysql-test/std_data/bug32880.ARZ
deleted file mode 100644
index 4e151822647..00000000000
--- a/mysql-test/std_data/bug32880.ARZ
+++ /dev/null
Binary files differ
diff --git a/mysql-test/std_data/bug32880.frm b/mysql-test/std_data/bug32880.frm
deleted file mode 100644
index 66a4c7d7538..00000000000
--- a/mysql-test/std_data/bug32880.frm
+++ /dev/null
Binary files differ
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);