mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 14:02:32 +01:00
2877c5ecc2
This patch ports the work that facebook has performed to make innochecksum handle compressed tables. the basic idea is to use actual innodb-code to perform checksum verification rather than duplicating in innochecksum.cc. to make this work, innodb code has been annotated with lots of #ifndef UNIV_INNOCHECKSUM so that it can be compiled outside of storage/innobase. A new testcase is also added that verifies that innochecksum works on compressed/non-compressed tables. Merged from commit fabc79d2ea976c4ff5b79bfe913e6bc03ef69d42 from https://code.google.com/p/google-mysql/ The actual steps to produce this patch are: take innochecksum from 5.6.14 apply changes in innodb from facebook patches needed to make innochecksum compile apply changes in innochecksum from facebook patches add handcrafted testcase The referenced facebook patches used are:91e25120e7
847fe76ea5
1135628a5a
4dbf7c240c
31 lines
1.2 KiB
Text
31 lines
1.2 KiB
Text
# Create and populate a table
|
|
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB;
|
|
INSERT INTO t1 (b) VALUES ('corrupt me');
|
|
INSERT INTO t1 (b) VALUES ('corrupt me');
|
|
CREATE TABLE t2 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT)
|
|
ROW_FORMAT=COMPRESSED ENGINE=InnoDB ;
|
|
INSERT INTO t2(b) SELECT b from t1;
|
|
CREATE TABLE t3 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT)
|
|
ROW_FORMAT=COMPRESSED ENGINE=InnoDB KEY_BLOCK_SIZE=16;
|
|
INSERT INTO t3(b) SELECT b from t1;
|
|
# Write file to make mysql-test-run.pl expect the "crash", but don't
|
|
# start it until it's told to
|
|
# We give 30 seconds to do a clean shutdown because we do not want
|
|
# to redo apply the pages of t1.ibd at the time of recovery.
|
|
# We want SQL to initiate the first access to t1.ibd.
|
|
# Wait until disconnected.
|
|
# Run innochecksum on t1
|
|
InnoDB offline file checksum utility.
|
|
Table is uncompressed
|
|
Page size is 16384
|
|
# Run innochecksum on t2
|
|
InnoDB offline file checksum utility.
|
|
Table is compressed
|
|
Key block size is 8192
|
|
# Run innochecksum on t3
|
|
InnoDB offline file checksum utility.
|
|
Table is compressed
|
|
Key block size is 16384
|
|
# Write file to make mysql-test-run.pl start up the server again
|
|
# Cleanup
|
|
DROP TABLE t1, t2, t3;
|