Commit c73a65f5 authored by Marko Mäkelä's avatar Marko Mäkelä

MDEV-29692 Assertion `(writeptr + (i * size)) != local_frame' failed upon IMPORT TABLESPACE

fil_iterate(): Allocation bitmap pages are never encrypted.

Reviewed by: Thirunarayanan Balathandayuthapani
parent f8c3d4c2
set @save_limit = @@GLOBAL.innodb_limit_optimistic_insert_debug;
set global innodb_limit_optimistic_insert_debug=3;
create table t1 (a INT PRIMARY KEY) engine=InnoDB ENCRYPTED=YES;
insert into t1 select * from seq_1_to_6000;
flush table t1 for export;
unlock tables;
alter table t1 discard tablespace;
alter table t1 import tablespace;
set global innodb_limit_optimistic_insert_debug=@save_limit;
drop table t1;
--source include/have_innodb.inc
--source include/have_sequence.inc
--source include/have_example_key_management_plugin.inc
--source include/have_debug.inc
set @save_limit = @@GLOBAL.innodb_limit_optimistic_insert_debug;
set global innodb_limit_optimistic_insert_debug=3;
create table t1 (a INT PRIMARY KEY) engine=InnoDB ENCRYPTED=YES;
insert into t1 select * from seq_1_to_6000;
flush table t1 for export;
--let $datadir= `select @@datadir`
--copy_file $datadir/test/t1.ibd $datadir/t1.ibd
--copy_file $datadir/test/t1.cfg $datadir/t1.cfg
unlock tables;
alter table t1 discard tablespace;
--move_file $datadir/t1.ibd $datadir/test/t1.ibd
--move_file $datadir/t1.cfg $datadir/test/t1.cfg
alter table t1 import tablespace;
set global innodb_limit_optimistic_insert_debug=@save_limit;
drop table t1;
......@@ -3971,14 +3971,15 @@ static dberr_t fil_iterate(
src + FIL_PAGE_SPACE_ID);
}
const uint16_t type = fil_page_get_type(src);
page_compressed =
(full_crc32
&& fil_space_t::is_compressed(
callback.get_space_flags())
&& buf_page_is_compressed(
src, callback.get_space_flags()))
|| (fil_page_is_compressed_encrypted(src)
|| fil_page_is_compressed(src));
|| type == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED
|| type == FIL_PAGE_PAGE_COMPRESSED;
if (page_compressed && block->page.zip.data) {
goto page_corrupted;
......@@ -3997,6 +3998,7 @@ static dberr_t fil_iterate(
block->page.zip.data = src;
frame_changed = true;
} else if (!page_compressed
&& type != FIL_PAGE_TYPE_XDES
&& !block->page.zip.data) {
block->frame = src;
frame_changed = true;
......
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