Commit e7855119 authored by Eugene Kosov's avatar Eugene Kosov

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.
parent 2173f382
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;
--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 ...@@ -680,6 +680,14 @@ dberr_t FetchIndexRootPages::operator()(buf_block_t* block) UNIV_NOTHROW
return(DB_CORRUPTION); 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; return DB_SUCCESS;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment