diff options
author | Davi Arnaut <davi.arnaut@oracle.com> | 2010-07-26 12:54:20 -0300 |
---|---|---|
committer | Davi Arnaut <davi.arnaut@oracle.com> | 2010-07-26 12:54:20 -0300 |
commit | e4cbcaf942796e5ba1f865485ea56c3903cf2fb8 (patch) | |
tree | 7351d5d892130fe6f95d96337a08097268d2e199 /mysql-test/t/archive.test | |
parent | 0a8021610d08718c614c3cd62332a6b4a8c2cabc (diff) | |
download | mariadb-git-e4cbcaf942796e5ba1f865485ea56c3903cf2fb8.tar.gz |
Bug#45377: ARCHIVE tables aren't discoverable after OPTIMIZE
The problem was that the optimize method of the ARCHIVE storage
engine was not preserving the FRM embedded in the ARZ file when
rewriting the ARZ file for optimization. The ARCHIVE engine stores
the FRM in the ARZ file so it can be transferred from machine to
machine without also copying the FRM -- the engine restores the
embedded FRM during discovery.
The solution is to copy over the FRM when rewriting the ARZ file.
In addition, some initial error checking is performed to ensure
garbage is not copied over.
mysql-test/t/archive.test:
Add test case for Bug#45377.
storage/archive/azio.c:
Add error checking to ensure that the I/O operations are
successful.
storage/archive/ha_archive.cc:
Copy over the embedded FRM.
Diffstat (limited to 'mysql-test/t/archive.test')
-rw-r--r-- | mysql-test/t/archive.test | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/mysql-test/t/archive.test b/mysql-test/t/archive.test index a3665e5f455..c3a080612a9 100644 --- a/mysql-test/t/archive.test +++ b/mysql-test/t/archive.test @@ -1701,3 +1701,24 @@ SELECT * FROM t1; REPAIR TABLE t1 EXTENDED; SELECT * FROM t1; DROP TABLE t1; + + +--echo # +--echo # Bug#45377: ARCHIVE tables aren't discoverable after OPTIMIZE +--echo # + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE t1 (a int) ENGINE=ARCHIVE; +SHOW CREATE TABLE t1; +INSERT INTO t1 VALUES (1); +OPTIMIZE TABLE t1; +let $MYSQLD_DATADIR= `select @@datadir`; +remove_file $MYSQLD_DATADIR/test/t1.frm; +FLUSH TABLES; +INSERT INTO t1 VALUES (2); +SELECT * FROM t1 ORDER BY a; +SHOW CREATE TABLE t1; +DROP TABLE t1; |