mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge 10.9 into 10.10
This commit is contained in:
@@ -6,8 +6,8 @@ call mtr.add_suppression("Plugin 'InnoDB' init function returned error");
|
||||
call mtr.add_suppression("Plugin 'InnoDB' registration as a STORAGE ENGINE failed");
|
||||
call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed read of file '.*test.t1\\.ibd' page");
|
||||
call mtr.add_suppression("InnoDB: Failed to read page 3 from file '.*test.t1\\.ibd': Page read from tablespace is corrupted.");
|
||||
call mtr.add_suppression("InnoDB: Background Page read failed to read or decrypt \\[page id: space=\\d+, page number=3\\]");
|
||||
call mtr.add_suppression("Table .*t1.* is corrupted. Please drop the table and recreate.");
|
||||
call mtr.add_suppression("Table test/t1 is corrupted. Please drop the table and recreate\\.");
|
||||
call mtr.add_suppression("InnoDB: File '.*test/t1\\.ibd' is corrupted");
|
||||
--enable_query_log
|
||||
|
||||
let INNODB_PAGE_SIZE=`select @@innodb_page_size`;
|
||||
|
@@ -1,34 +0,0 @@
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_innodb_16k.inc
|
||||
--source include/have_debug.inc
|
||||
|
||||
SET @saved_debug_dbug = @@SESSION.debug_dbug;
|
||||
|
||||
--echo #
|
||||
--echo #BUG#21326304 INNODB ONLINE ALTER TABLE ENDS IN CRASH ON DISK FULL
|
||||
--echo #
|
||||
CREATE TABLE t1(f1 CHAR(255) NOT NULL, f2 CHAR(255) NOT NULL, f3
|
||||
CHAR(255) NOT NULL, f4 CHAR(255) NOT NULL, f5 CHAR(255) NOT NULL,f6
|
||||
CHAR(255) NOT NULL, f7 CHAR(255) NOT NULL, f8 CHAR(255) NOT NULL,f9
|
||||
CHAR(255) NOT NULL, f10 CHAR(255) NOT NULL, f11 CHAR(255) NOT NULL,f12
|
||||
CHAR(255) NOT NULL, f13 CHAR(255) NOT NULL, f14 CHAR(255) NOT NULL,f15
|
||||
CHAR(255) NOT NULL, f16 CHAR(255) NOT NULL, f17 CHAR(255) NOT NULL,f18
|
||||
CHAR(255) NOT NULL)
|
||||
ENGINE=INNODB ROW_FORMAT=DYNAMIC;
|
||||
|
||||
INSERT INTO t1
|
||||
VALUES('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r');
|
||||
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
INSERT INTO t1 SELECT * FROM t1;
|
||||
|
||||
SET debug_dbug = '+d,disk_is_full';
|
||||
|
||||
--error ER_RECORD_FILE_FULL
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=INPLACE;
|
||||
|
||||
SET debug_dbug= @saved_debug_dbug;
|
||||
|
||||
DROP TABLE t1;
|
@@ -3,6 +3,7 @@
|
||||
call mtr.add_suppression("Table `test`.`t2` should have 2 indexes but the tablespace has 1 indexes");
|
||||
call mtr.add_suppression("Index for table 't2' is corrupt; try to repair it");
|
||||
call mtr.add_suppression("Trying to read .* bytes at .* outside the bounds of the file: \\..test.t2\\.ibd");
|
||||
call mtr.add_suppression("InnoDB: File '.*test/t2\\.ibd' is corrupted");
|
||||
|
||||
let MYSQLD_DATADIR = `SELECT @@datadir`;
|
||||
|
||||
|
@@ -29,6 +29,8 @@ call mtr.add_suppression("InnoDB: Page for tablespace ");
|
||||
call mtr.add_suppression("InnoDB: Invalid FSP_SPACE_FLAGS=");
|
||||
call mtr.add_suppression("InnoDB: Unknown index id .* on page");
|
||||
call mtr.add_suppression("InnoDB: Cannot save statistics for table `test`\\.`t1` because the \\.ibd file is missing");
|
||||
call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed read of file '.*ibdata1' page");
|
||||
call mtr.add_suppression("InnoDB: File '.*ibdata1' is corrupted");
|
||||
FLUSH TABLES;
|
||||
|
||||
let MYSQLD_DATADIR =`SELECT @@datadir`;
|
||||
@@ -1173,20 +1175,29 @@ ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
|
||||
# Restore files
|
||||
let INNODB_PAGE_SIZE=`select @@innodb_page_size`;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
my $page;
|
||||
my $ps = $ENV{INNODB_PAGE_SIZE};
|
||||
my $file = "$ENV{MYSQLD_DATADIR}/test/t1.ibd";
|
||||
open(FILE, "+<$file") || die "Unable to open $file";
|
||||
binmode FILE;
|
||||
sysseek(FILE, 3*$ps, 0) || die "Unable to seek $file\n";
|
||||
die "Unable to read $file" unless sysread(FILE, $page, $ps) == $ps;
|
||||
substr($page,24,2)='42';
|
||||
sysseek(FILE, 3*$ps, 0) || die "Unable to rewind $file\n";
|
||||
syswrite(FILE, $page, $ps)==$ps || die "Unable to write $file\n";
|
||||
close(FILE) || die "Unable to close $file";
|
||||
EOF
|
||||
|
||||
SET SESSION debug_dbug="+d,buf_page_import_corrupt_failure";
|
||||
|
||||
--replace_regex /'.*t1.cfg'/'t1.cfg'/
|
||||
|
||||
--error ER_INTERNAL_ERROR
|
||||
--error ER_NOT_KEYFILE
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
SET SESSION debug_dbug=@saved_debug_dbug;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
perl;
|
||||
|
@@ -7,7 +7,7 @@
|
||||
|
||||
let $wait_timeout = 180;
|
||||
let $wait_condition =
|
||||
SELECT SUBSTR(variable_value, 1, 31) = 'Completed resizing buffer pool.'
|
||||
SELECT SUBSTR(variable_value, 1, 30) = 'Completed resizing buffer pool'
|
||||
FROM information_schema.global_status
|
||||
WHERE LOWER(variable_name) = 'innodb_buffer_pool_resize_status';
|
||||
|
||||
|
@@ -15,7 +15,7 @@ SET GLOBAL innodb_buffer_pool_size=8388608;
|
||||
|
||||
let $wait_timeout = 60;
|
||||
let $wait_condition =
|
||||
SELECT SUBSTR(variable_value, 1, 31) = 'Completed resizing buffer pool.'
|
||||
SELECT SUBSTR(variable_value, 1, 30) = 'Completed resizing buffer pool'
|
||||
FROM information_schema.global_status
|
||||
WHERE variable_name = 'INNODB_BUFFER_POOL_RESIZE_STATUS';
|
||||
--source include/wait_condition.inc
|
||||
|
@@ -8,7 +8,7 @@
|
||||
|
||||
let $wait_timeout = 180;
|
||||
let $wait_condition =
|
||||
SELECT SUBSTR(variable_value, 1, 31) = 'Completed resizing buffer pool.'
|
||||
SELECT SUBSTR(variable_value, 1, 30) = 'Completed resizing buffer pool'
|
||||
FROM information_schema.global_status
|
||||
WHERE LOWER(variable_name) = 'innodb_buffer_pool_resize_status';
|
||||
|
||||
|
@@ -12,6 +12,7 @@ call mtr.add_suppression("InnoDB: Table `test`\\.`t1` is corrupted\\. Please dro
|
||||
call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed read of file '.*test.t1\\.ibd' page");
|
||||
call mtr.add_suppression("InnoDB: We detected index corruption in an InnoDB type table");
|
||||
call mtr.add_suppression("Index for table 't1' is corrupt; try to repair it");
|
||||
call mtr.add_suppression("InnoDB: File '.*test/t1\\.ibd' is corrupted");
|
||||
--enable_query_log
|
||||
|
||||
--echo # Ensure that purge will not crash on the table after we corrupt it.
|
||||
@@ -70,13 +71,13 @@ EOF
|
||||
|
||||
--echo # Now t1 is corrupted but we should not crash
|
||||
|
||||
--error 1030,1712,1932
|
||||
--error ER_GET_ERRNO,ER_NOT_KEYFILE,ER_INDEX_CORRUPT,ER_NO_SUCH_TABLE_IN_ENGINE
|
||||
SELECT * FROM t1;
|
||||
|
||||
--error 126,1030,1034,1712,1932
|
||||
--error 126,ER_GET_ERRNO,ER_NOT_KEYFILE,ER_INDEX_CORRUPT,ER_NO_SUCH_TABLE_IN_ENGINE
|
||||
INSERT INTO t1(b) VALUES('abcdef');
|
||||
|
||||
--error 1030,1712,1932
|
||||
--error ER_GET_ERRNO,ER_NOT_KEYFILE,ER_INDEX_CORRUPT,ER_NO_SUCH_TABLE_IN_ENGINE
|
||||
UPDATE t1 set b = 'deadbeef' where a = 1;
|
||||
|
||||
--echo # Cleanup, this must be possible
|
||||
|
@@ -3,13 +3,13 @@
|
||||
|
||||
--disable_query_log
|
||||
call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed read of file '.*test.t1\\.ibd' page");
|
||||
call mtr.add_suppression("InnoDB: Background Page read failed to read or decrypt \\[page id: space=\\d+, page number=19\\]");
|
||||
call mtr.add_suppression("\\[ERROR\\] InnoDB: Failed to read page 19 from file '.*test.t1\\.ibd': Page read from tablespace is corrupted\\.");
|
||||
call mtr.add_suppression("\\[ERROR\\] InnoDB: Plugin initialization aborted at srv0start\\.cc.* with error Data structure corruption");
|
||||
call mtr.add_suppression("\\[ERROR\\] Plugin 'InnoDB' (init function|registration)");
|
||||
call mtr.add_suppression("\\[ERROR\\] InnoDB: We detected index corruption");
|
||||
call mtr.add_suppression("\\[ERROR\\] (mysqld|mariadbd).*: Index for table 't1' is corrupt; try to repair it");
|
||||
call mtr.add_suppression("InnoDB: btr_pcur_open_low level: 0 table: `test`\\.`t1` index: `PRIMARY`");
|
||||
call mtr.add_suppression("InnoDB: File '.*test/t1\\.ibd' is corrupted");
|
||||
--enable_query_log
|
||||
CREATE TABLE t1 (pk INT PRIMARY KEY, c CHAR(255))ENGINE=InnoDB STATS_PERSISTENT=0;
|
||||
|
||||
|
@@ -61,9 +61,11 @@ let SEARCH_PATTERN=page id mismatch;
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
--remove_file $resultlog
|
||||
# prevent purge from crashing on page ID mismatch
|
||||
let $restart_parameters=--innodb-force-recovery=2;
|
||||
let $restart_parameters=--innodb-force-recovery=1;
|
||||
--source include/start_mysqld.inc
|
||||
SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
|
||||
--source include/wait_all_purged.inc
|
||||
drop table t1;
|
||||
call mtr.add_suppression("InnoDB: Failed to read page 3 from file '.*test/t1\\.ibd': Page read from tablespace is corrupted\\.");
|
||||
let $restart_parameters=;
|
||||
--source include/restart_mysqld.inc
|
||||
|
@@ -93,7 +93,7 @@ DROP TABLE tr,tc,td;
|
||||
|
||||
let $wait_timeout = 180;
|
||||
let $wait_condition =
|
||||
SELECT SUBSTR(variable_value, 1, 31) = 'Completed resizing buffer pool.'
|
||||
SELECT SUBSTR(variable_value, 1, 30) = 'Completed resizing buffer pool'
|
||||
FROM information_schema.global_status
|
||||
WHERE LOWER(variable_name) = 'innodb_buffer_pool_resize_status';
|
||||
|
||||
|
1
mysql-test/suite/innodb/t/row_format_redundant.opt
Normal file
1
mysql-test/suite/innodb/t/row_format_redundant.opt
Normal file
@@ -0,0 +1 @@
|
||||
--innodb-checksum-algorithm=crc32
|
@@ -17,7 +17,13 @@ SET DEBUG_SYNC='now WAIT_FOR c';
|
||||
--source include/restart_mysqld.inc
|
||||
disconnect wait;
|
||||
|
||||
SET @save_frequency=@@GLOBAL.innodb_purge_rseg_truncate_frequency;
|
||||
SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
|
||||
--source include/wait_all_purged.inc
|
||||
SET GLOBAL innodb_purge_rseg_truncate_frequency=@save_frequency;
|
||||
|
||||
--replace_result 2 0
|
||||
SELECT COUNT(*) FROM t1;
|
||||
TRUNCATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
Reference in New Issue
Block a user