mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
e1978234eb
Analysis: Problem was that in fil_read_first_page we do find that table has encryption information and that encryption service or used key_id is not available. But, then we just printed fatal error message that causes above assertion. Fix: When we open single table tablespace if it has encryption information (crypt_data) store this crypt data to the table structure. When we open a table and we find out that tablespace is not available, check has table a encryption information and from there is encryption service or used key_id is not available. If it is, add additional warning for SQL-layer.
39 lines
2.2 KiB
Text
39 lines
2.2 KiB
Text
call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed.*");
|
|
CALL mtr.add_suppression("InnoDB: Error: Unable to read tablespace .* page no .* into the buffer pool after 100 attempts");
|
|
CALL mtr.add_suppression("InnoDB: Warning: database page corruption or a failed");
|
|
CALL mtr.add_suppression("InnoDB: Database page corruption on disk or a failed");
|
|
CALL mtr.add_suppression("InnoDB: Space .* file test/t1 read of page .*");
|
|
CALL mtr.add_suppression("InnoDB: You may have to recover from a backup.");
|
|
CALL mtr.add_suppression("InnoDB: It is also possible that your operatingsystem has corrupted its own file cache.");
|
|
CALL mtr.add_suppression("InnoDB: and rebooting your computer removes the error.");
|
|
CALL mtr.add_suppression("InnoDB: If the corrupt page is an index page you can also try to");
|
|
CALL mtr.add_suppression("InnoDB: fix the corruption by dumping, dropping, and reimporting");
|
|
CALL mtr.add_suppression("InnoDB: the corrupt table. You can use CHECK");
|
|
CALL mtr.add_suppression("InnoDB: TABLE to scan your table for corruption.");
|
|
CALL mtr.add_suppression("InnoDB: See also .* about forcing recovery.");
|
|
# Create and populate the table to be corrupted
|
|
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');
|
|
# 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.
|
|
# Backup the t1.ibd before corrupting
|
|
# Corrupt the table
|
|
Munged a string.
|
|
Munged a string.
|
|
# Write file to make mysql-test-run.pl start up the server again
|
|
SET DEBUG_DBUG = '+d,innodb_page_corruption_retries';
|
|
# Write file to make mysql-test-run.pl expect the "crash", but don't
|
|
# start it until it's told to
|
|
# The below SELECT query will crash the server because some pages
|
|
# on the disk are corrupted
|
|
SELECT * FROM t1;
|
|
ERROR HY000: Lost connection to MySQL server during query
|
|
# Restore the original t1.ibd
|
|
# Write file to make mysql-test-run.pl start up the server again
|
|
# Cleanup
|
|
DROP TABLE t1;
|