mirror of
https://github.com/MariaDB/server.git
synced 2025-11-15 09:02:33 +03:00
When code from MySQL 5.7.9 was merged to MariaDB 10.2.2
in commit 2e814d4702
an assignment validate=true was inadvertently added to the function
dict_check_sys_tables().
This causes InnoDB to open every single .ibd file on startup, even
when no crash recovery was needed.
Simply removing the assignment would make some tests fail. We do the
best to retain almost the same level of inconsistency detection.
In the test innodb.table_flags, access to one of the tables will not
be blocked despite inconsistent flags.
dict_check_sys_tables(): Remove the problematic assignment, and skip
validation in normal startup.
dict_load_table_one(): If the .ibd file cannot be opened, mark the
table as corrupted and unreadable.
fil_node_open_file(): Validate FSP_SPACE_FLAGS with the expected
flags. If reading the tablespace fails, invalidate node->handle
instead of letting it remain stale. This bug was caught by a
fil_validate() assertion failure.
fsp_flags_try_adjust(): If the tablespace file is invalid, do nothing.
188 lines
5.3 KiB
Plaintext
188 lines
5.3 KiB
Plaintext
SET GLOBAL innodb_file_per_table=1;
|
|
CREATE TABLE tr(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
|
CREATE TABLE tc(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=COMPACT;
|
|
CREATE TABLE td(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
|
SET innodb_strict_mode=OFF;
|
|
CREATE TABLE tz(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=COMPRESSED
|
|
KEY_BLOCK_SIZE=1;
|
|
SET innodb_strict_mode=ON;
|
|
CREATE TABLE tp(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=DYNAMIC
|
|
PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
|
|
SYS_TABLES clustered index root page (8):
|
|
N_RECS=10; LEVEL=0; INDEX_ID=0x0000000000000001
|
|
header=0x01000003016e (NAME=0x696e66696d756d00)
|
|
header=0x00002815008d (NAME='SYS_DATAFILES',
|
|
DB_TRX_ID=0x000000000302,
|
|
DB_ROLL_PTR=0x81000001320194,
|
|
ID=0x000000000000000e,
|
|
N_COLS=0x00000002,
|
|
TYPE=0x00000001,
|
|
MIX_ID=0x0000000000000000,
|
|
MIX_LEN=0x00000040,
|
|
CLUSTER_NAME=NULL(0 bytes),
|
|
SPACE=0x00000000)
|
|
header=0x0000101500d5 (NAME='SYS_FOREIGN',
|
|
DB_TRX_ID=0x000000000300,
|
|
DB_ROLL_PTR=0x800000012d0110,
|
|
ID=0x000000000000000b,
|
|
N_COLS=0x00000004,
|
|
TYPE=0x00000001,
|
|
MIX_ID=0x0000000000000000,
|
|
MIX_LEN=0x00000040,
|
|
CLUSTER_NAME=NULL(0 bytes),
|
|
SPACE=0x00000000)
|
|
header=0x000018150122 (NAME='SYS_FOREIGN_COLS',
|
|
DB_TRX_ID=0x000000000300,
|
|
DB_ROLL_PTR=0x800000012d0201,
|
|
ID=0x000000000000000c,
|
|
N_COLS=0x00000004,
|
|
TYPE=0x00000001,
|
|
MIX_ID=0x0000000000000000,
|
|
MIX_LEN=0x00000040,
|
|
CLUSTER_NAME=NULL(0 bytes),
|
|
SPACE=0x00000000)
|
|
header=0x0400201501b8 (NAME='SYS_TABLESPACES',
|
|
DB_TRX_ID=0x000000000302,
|
|
DB_ROLL_PTR=0x81000001320110,
|
|
ID=0x000000000000000d,
|
|
N_COLS=0x00000003,
|
|
TYPE=0x00000001,
|
|
MIX_ID=0x0000000000000000,
|
|
MIX_LEN=0x00000040,
|
|
CLUSTER_NAME=NULL(0 bytes),
|
|
SPACE=0x00000000)
|
|
header=0x000030150244 (NAME='SYS_VIRTUAL',
|
|
DB_TRX_ID=0x000000000304,
|
|
DB_ROLL_PTR=0x82000001350110,
|
|
ID=0x000000000000000f,
|
|
N_COLS=0x00000003,
|
|
TYPE=0x00000001,
|
|
MIX_ID=0x0000000000000000,
|
|
MIX_LEN=0x00000040,
|
|
CLUSTER_NAME=NULL(0 bytes),
|
|
SPACE=0x00000000)
|
|
header=0x000040150288 (NAME='test/tc',
|
|
DB_TRX_ID=0x000000000308,
|
|
DB_ROLL_PTR=0x84000001380110,
|
|
ID=0x0000000000000011,
|
|
N_COLS=0x80000001,
|
|
TYPE=0x00000001,
|
|
MIX_ID=0x0000000000000000,
|
|
MIX_LEN=0x00000050,
|
|
CLUSTER_NAME=NULL(0 bytes),
|
|
SPACE=0x00000002)
|
|
header=0x000048150310 (NAME='test/td',
|
|
DB_TRX_ID=0x00000000030a,
|
|
DB_ROLL_PTR=0x85000001390110,
|
|
ID=0x0000000000000012,
|
|
N_COLS=0x80000001,
|
|
TYPE=0x00000021,
|
|
MIX_ID=0x0000000000000000,
|
|
MIX_LEN=0x00000050,
|
|
CLUSTER_NAME=NULL(0 bytes),
|
|
SPACE=0x00000003)
|
|
header=0x000058150200 (NAME='test/tp',
|
|
DB_TRX_ID=0x00000000030e,
|
|
DB_ROLL_PTR=0x870000013b0110,
|
|
ID=0x0000000000000014,
|
|
N_COLS=0x80000001,
|
|
TYPE=0x000009a1,
|
|
MIX_ID=0x0000000000000000,
|
|
MIX_LEN=0x00000050,
|
|
CLUSTER_NAME=NULL(0 bytes),
|
|
SPACE=0x00000005)
|
|
header=0x0000381502cc (NAME='test/tr',
|
|
DB_TRX_ID=0x000000000306,
|
|
DB_ROLL_PTR=0x83000001370110,
|
|
ID=0x0000000000000010,
|
|
N_COLS=0x00000001,
|
|
TYPE=0x00000001,
|
|
MIX_ID=0x0000000000000000,
|
|
MIX_LEN=0x00000050,
|
|
CLUSTER_NAME=NULL(0 bytes),
|
|
SPACE=0x00000001)
|
|
header=0x000050150074 (NAME='test/tz',
|
|
DB_TRX_ID=0x00000000030c,
|
|
DB_ROLL_PTR=0x860000013a0110,
|
|
ID=0x0000000000000013,
|
|
N_COLS=0x80000001,
|
|
TYPE=0x00000023,
|
|
MIX_ID=0x0000000000000000,
|
|
MIX_LEN=0x00000050,
|
|
CLUSTER_NAME=NULL(0 bytes),
|
|
SPACE=0x00000004)
|
|
header=0x070008030000 (NAME=0x73757072656d756d00)
|
|
SHOW CREATE TABLE tr;
|
|
ERROR 42S02: Table 'test.tr' doesn't exist in engine
|
|
SHOW CREATE TABLE tc;
|
|
ERROR 42S02: Table 'test.tc' doesn't exist in engine
|
|
SELECT * FROM tc;
|
|
ERROR 42S02: Table 'test.tc' doesn't exist in engine
|
|
SHOW CREATE TABLE td;
|
|
Table Create Table
|
|
td CREATE TABLE `td` (
|
|
`a` int(11) NOT NULL,
|
|
PRIMARY KEY (`a`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
|
|
SELECT * FROM td;
|
|
a
|
|
SHOW CREATE TABLE tz;
|
|
ERROR 42S02: Table 'test.tz' doesn't exist in engine
|
|
SHOW CREATE TABLE tp;
|
|
ERROR 42S02: Table 'test.tp' doesn't exist in engine
|
|
FOUND 7 /InnoDB: Table `test`.`t[czp]` in InnoDB data dictionary contains invalid flags\. SYS_TABLES\.TYPE=(129|289|3873|1232[13]) SYS_TABLES\.N_COLS=2147483649/ in mysqld.1.err
|
|
FOUND 2 /InnoDB: Table `test`\.`tr` in InnoDB data dictionary contains invalid flags\. SYS_TABLES\.TYPE=65 SYS_TABLES\.MIX_LEN=4294967295\b/ in mysqld.1.err
|
|
Restoring SYS_TABLES clustered index root page (8)
|
|
SHOW CREATE TABLE tr;
|
|
Table Create Table
|
|
tr CREATE TABLE `tr` (
|
|
`a` int(11) NOT NULL,
|
|
PRIMARY KEY (`a`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
|
|
SHOW CREATE TABLE tc;
|
|
Table Create Table
|
|
tc CREATE TABLE `tc` (
|
|
`a` int(11) NOT NULL,
|
|
PRIMARY KEY (`a`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT
|
|
SHOW CREATE TABLE td;
|
|
Table Create Table
|
|
td CREATE TABLE `td` (
|
|
`a` int(11) NOT NULL,
|
|
PRIMARY KEY (`a`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
|
|
SHOW CREATE TABLE tz;
|
|
Table Create Table
|
|
tz CREATE TABLE `tz` (
|
|
`a` int(11) NOT NULL,
|
|
PRIMARY KEY (`a`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1
|
|
SHOW CREATE TABLE tp;
|
|
Table Create Table
|
|
tp CREATE TABLE `tp` (
|
|
`a` int(11) NOT NULL,
|
|
PRIMARY KEY (`a`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=9
|
|
BEGIN;
|
|
INSERT INTO tr VALUES(1);
|
|
INSERT INTO tc VALUES(1);
|
|
INSERT INTO td VALUES(1);
|
|
INSERT INTO tz VALUES(1);
|
|
INSERT INTO tp VALUES(1);
|
|
ROLLBACK;
|
|
SELECT * FROM tr;
|
|
a
|
|
SELECT * FROM tc;
|
|
a
|
|
SELECT * FROM td;
|
|
a
|
|
SELECT * FROM tz;
|
|
a
|
|
SELECT * FROM tp;
|
|
a
|
|
DROP TABLE tr,tc,td,tz,tp;
|
|
ib_logfile0
|
|
ib_logfile1
|
|
ibdata1
|
|
sys_tables.bin
|