MDEV-26148 SEGV or Assertion `!page_is_comp(page) == !(index->table)->not_redundant()'
FetchIndexRootPages::operator(): handle REDUNDANT vs DYNAMIC case specifically. Other combinations seems fine as is.
This commit is contained in:
parent
2173f382ca
commit
e7855119ba
12
mysql-test/suite/innodb/r/import_bugs.result
Normal file
12
mysql-test/suite/innodb/r/import_bugs.result
Normal file
@ -0,0 +1,12 @@
|
||||
call mtr.add_suppression("Index for table 'imp_t1' is corrupt; try to repair it");
|
||||
SET @save_innodb_checksum_algorithm=@@GLOBAL.innodb_checksum_algorithm;
|
||||
SET GLOBAL innodb_checksum_algorithm=full_crc32;
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
||||
CREATE TABLE imp_t1 (a INT PRIMARY KEY) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||
ALTER TABLE imp_t1 DISCARD TABLESPACE ;
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
UNLOCK TABLES;
|
||||
ALTER TABLE imp_t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Schema mismatch (ROW_FORMAT mismatch)
|
||||
DROP TABLE imp_t1, t1;
|
||||
SET GLOBAL innodb_checksum_algorithm=@save_innodb_checksum_algorithm;
|
19
mysql-test/suite/innodb/t/import_bugs.test
Normal file
19
mysql-test/suite/innodb/t/import_bugs.test
Normal file
@ -0,0 +1,19 @@
|
||||
--source include/have_innodb.inc
|
||||
|
||||
call mtr.add_suppression("Index for table 'imp_t1' is corrupt; try to repair it");
|
||||
|
||||
SET @save_innodb_checksum_algorithm=@@GLOBAL.innodb_checksum_algorithm;
|
||||
SET GLOBAL innodb_checksum_algorithm=full_crc32;
|
||||
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
||||
CREATE TABLE imp_t1 (a INT PRIMARY KEY) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||
ALTER TABLE imp_t1 DISCARD TABLESPACE ;
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
let $datadir=`select @@datadir`;
|
||||
--copy_file $datadir/test/t1.ibd $datadir/test/imp_t1.ibd
|
||||
UNLOCK TABLES;
|
||||
--error ER_TABLE_SCHEMA_MISMATCH
|
||||
ALTER TABLE imp_t1 IMPORT TABLESPACE;
|
||||
DROP TABLE imp_t1, t1;
|
||||
|
||||
SET GLOBAL innodb_checksum_algorithm=@save_innodb_checksum_algorithm;
|
@ -680,6 +680,14 @@ dberr_t FetchIndexRootPages::operator()(buf_block_t* block) UNIV_NOTHROW
|
||||
return(DB_CORRUPTION);
|
||||
}
|
||||
}
|
||||
|
||||
if (!page_is_comp(block->frame) !=
|
||||
!dict_table_is_comp(m_table)) {
|
||||
ib_errf(m_trx->mysql_thd, IB_LOG_LEVEL_ERROR,
|
||||
ER_TABLE_SCHEMA_MISMATCH,
|
||||
"ROW_FORMAT mismatch");
|
||||
return DB_CORRUPTION;
|
||||
}
|
||||
}
|
||||
|
||||
return DB_SUCCESS;
|
||||
|
Loading…
x
Reference in New Issue
Block a user