mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
MDEV-15325 Incomplete validation of missing tablespace during recovery
Problem: ======= During validation of missing tablespace, missing tablespace id is being compared with hash table of redo logs (recv_sys->addr_hash). But if the hash table ran out of memory then there is a possibility that it will not contain the redo logs of all tablespace. In that case, Server will load the InnoDB even though there is a missing tablespace. Solution: ======== If the recv_sys->addr_hash hash table ran out of memory then InnoDB needs to scan the remaining redo log again to validate the missing tablespace.
This commit is contained in:
@@ -1848,3 +1848,20 @@ create table t1(o1 int, o2 int, o3 int, primary key(o1,o2,o3)) engine = innodb;
|
||||
insert into t1 values(1,1,2),(2,2,1);
|
||||
alter table t1 drop primary key, add primary key(o1), lock=none;
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-15325 Incomplete validation of missing tablespace during recovery
|
||||
#
|
||||
CREATE TABLE t1(f1 INT PRIMARY KEY)ENGINE=InnoDB;
|
||||
CREATE TABLE t2(f1 INT PRIMARY KEY)ENGINE=InnoDB;
|
||||
# Kill the server
|
||||
# Wrong space_id in a dirty file and a missing file
|
||||
SELECT * FROM INFORMATION_SCHEMA.ENGINES
|
||||
WHERE engine = 'innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||
# Restore t1 and t2
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
SELECT * FROM t2;
|
||||
f1
|
||||
DROP TABLE t1, t2;
|
||||
|
Reference in New Issue
Block a user