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);
|
||||
}
|
||||
|
||||
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 @@ page_corrupted:
|
||||
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;
|
||||
|
Reference in New Issue
Block a user