mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-17913 Encrypted transactional Aria tables remain corrupt after crash recovery, automatic repairment does not work
This was because of a wrong test in encryption code that wrote random numbers over the LSN for pages for transactional Aria tables during repair. The effect was that after an ALTER TABLE ENABLE KEYS of a encrypted recovery of the tables would not work. Fixed by changing testing of !share->now_transactional to !share->base.born_transactional. Other things: - Extended Aria check_table() to check for wrong (= too big) LSN numbers. - If check_table() failed just because of wrong LSN or TRN numbers, a following repair table will just do a zerofill which is much faster. - Limit number of LSN errors in one check table to MAX_LSN_ERROR (10). - Removed old obsolete test of 'if (error_count & 2)'. Changed error_count and warning_count from bits to numbers of errors/warnings as this is more useful.
This commit is contained in:
@@ -2,4 +2,12 @@ set global aria_encrypt_tables = 1;
|
||||
create table t1 (i int, key(i)) engine=aria;
|
||||
insert into t1 values (1);
|
||||
drop table t1;
|
||||
create table t1 (a int primary key, b int, c int, key(b),key(c)) engine=aria;
|
||||
alter table t1 disable keys;
|
||||
insert into t1 select seq,seq,seq from seq_1_to_100;
|
||||
alter table t1 enable keys;
|
||||
check table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
drop table t1;
|
||||
set global aria_encrypt_tables = 0;
|
||||
|
Reference in New Issue
Block a user