mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-29692 Assertion `(writeptr + (i * size)) != local_frame' failed upon IMPORT TABLESPACE
fil_iterate(): Allocation bitmap pages are never encrypted. Reviewed by: Thirunarayanan Balathandayuthapani
This commit is contained in:
10
mysql-test/suite/encryption/r/import_4k.result
Normal file
10
mysql-test/suite/encryption/r/import_4k.result
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
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;
|
1
mysql-test/suite/encryption/t/import_4k.opt
Normal file
1
mysql-test/suite/encryption/t/import_4k.opt
Normal file
@ -0,0 +1 @@
|
|||||||
|
--innodb-page-size=4k
|
20
mysql-test/suite/encryption/t/import_4k.test
Normal file
20
mysql-test/suite/encryption/t/import_4k.test
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
--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 @@ page_corrupted:
|
|||||||
src + FIL_PAGE_SPACE_ID);
|
src + FIL_PAGE_SPACE_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const uint16_t type = fil_page_get_type(src);
|
||||||
page_compressed =
|
page_compressed =
|
||||||
(full_crc32
|
(full_crc32
|
||||||
&& fil_space_t::is_compressed(
|
&& fil_space_t::is_compressed(
|
||||||
callback.get_space_flags())
|
callback.get_space_flags())
|
||||||
&& buf_page_is_compressed(
|
&& buf_page_is_compressed(
|
||||||
src, callback.get_space_flags()))
|
src, callback.get_space_flags()))
|
||||||
|| (fil_page_is_compressed_encrypted(src)
|
|| type == FIL_PAGE_PAGE_COMPRESSED_ENCRYPTED
|
||||||
|| fil_page_is_compressed(src));
|
|| type == FIL_PAGE_PAGE_COMPRESSED;
|
||||||
|
|
||||||
if (page_compressed && block->page.zip.data) {
|
if (page_compressed && block->page.zip.data) {
|
||||||
goto page_corrupted;
|
goto page_corrupted;
|
||||||
@ -3997,6 +3998,7 @@ page_corrupted:
|
|||||||
block->page.zip.data = src;
|
block->page.zip.data = src;
|
||||||
frame_changed = true;
|
frame_changed = true;
|
||||||
} else if (!page_compressed
|
} else if (!page_compressed
|
||||||
|
&& type != FIL_PAGE_TYPE_XDES
|
||||||
&& !block->page.zip.data) {
|
&& !block->page.zip.data) {
|
||||||
block->frame = src;
|
block->frame = src;
|
||||||
frame_changed = true;
|
frame_changed = true;
|
||||||
|
Reference in New Issue
Block a user