Browse Source
Merge 10.2 into bb-10.2-ext; also, fix MDEV-13015 After restart, InnoDB wrongly thinks that a SEQUENCE is a TABLE
Merge 10.2 into bb-10.2-ext; also, fix MDEV-13015 After restart, InnoDB wrongly thinks that a SEQUENCE is a TABLE
sql_sequence.read_only: Show that the sequence can be read in both read-only and read-write mode, and that the sequence remains accessible after a server restart.pull/401/merge
44 changed files with 1268 additions and 565 deletions
-
3include/mysql.h.pp
-
13include/mysql_com.h
-
2libmariadb
-
2mysql-test/r/mysqld--help.result
-
28mysql-test/suite/encryption/r/innodb_lotoftables.result
-
2mysql-test/suite/innodb/r/row_format_redundant.result
-
105mysql-test/suite/innodb/r/table_flags,32k.rdiff
-
92mysql-test/suite/innodb/r/table_flags,4k.rdiff
-
105mysql-test/suite/innodb/r/table_flags,64k.rdiff
-
92mysql-test/suite/innodb/r/table_flags,8k.rdiff
-
188mysql-test/suite/innodb/r/table_flags.result
-
4mysql-test/suite/innodb/t/row_format_redundant.test
-
206mysql-test/suite/innodb/t/table_flags.test
-
13mysql-test/suite/sql_sequence/read_only.result
-
16mysql-test/suite/sql_sequence/read_only.test
-
4mysql-test/suite/sys_vars/r/sysvars_server_embedded.result
-
4mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
-
2sql/item.cc
-
4sql/item.h
-
10sql/sql_insert.cc
-
7sql/sql_parse.cc
-
222sql/sql_prepare.cc
-
3sql/sql_prepare.h
-
3storage/innobase/btr/btr0btr.cc
-
177storage/innobase/dict/dict0load.cc
-
32storage/innobase/fil/fil0fil.cc
-
11storage/innobase/fsp/fsp0file.cc
-
8storage/innobase/handler/ha_innodb.cc
-
266storage/innobase/include/dict0dict.ic
-
89storage/innobase/include/dict0mem.h
-
4storage/innobase/include/fil0fil.h
-
12storage/innobase/include/fsp0types.h
-
18storage/innobase/row/row0import.cc
-
16storage/innobase/row/row0mysql.cc
-
3storage/xtradb/btr/btr0btr.cc
-
4storage/xtradb/dict/dict0load.cc
-
18storage/xtradb/fil/fil0fil.cc
-
2storage/xtradb/handler/ha_innodb.cc
-
20storage/xtradb/include/dict0dict.ic
-
4storage/xtradb/include/dict0mem.h
-
3storage/xtradb/include/fil0fil.h
-
2storage/xtradb/os/os0file.cc
-
2storage/xtradb/row/row0import.cc
-
12storage/xtradb/row/row0mysql.cc
@ -1 +1 @@ |
|||
Subproject commit 467a193b399dfda41d87368a898e9550d754fa14 |
|||
Subproject commit ff4bfdf1caf2e0a47382fdbe6d796d0e63ec1062 |
@ -0,0 +1,105 @@ |
|||
--- suite/innodb/r/table_flags.result |
|||
+++ suite/innodb/r/table_flags,32k.reject |
|||
@@ -5,6 +5,8 @@ |
|||
SET innodb_strict_mode=OFF; |
|||
CREATE TABLE tz(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=COMPRESSED |
|||
KEY_BLOCK_SIZE=1; |
|||
+Warnings: |
|||
+Warning 1478 InnoDB: Cannot create a COMPRESSED table when innodb_page_size > 16k. Assuming ROW_FORMAT=DYNAMIC. |
|||
SET innodb_strict_mode=ON; |
|||
CREATE TABLE tp(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=DYNAMIC |
|||
PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9; |
|||
@@ -13,7 +15,7 @@ |
|||
header=0x01000003016e (NAME=0x696e66696d756d00) |
|||
header=0x00002815008d (NAME='SYS_DATAFILES', |
|||
DB_TRX_ID=0x000000000302, |
|||
- DB_ROLL_PTR=0x81000001320194, |
|||
+ DB_ROLL_PTR=0x81000001310194, |
|||
ID=0x000000000000000e, |
|||
N_COLS=0x00000002, |
|||
TYPE=0x00000001, |
|||
@@ -23,7 +25,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x0000101500d5 (NAME='SYS_FOREIGN', |
|||
DB_TRX_ID=0x000000000300, |
|||
- DB_ROLL_PTR=0x800000012d0110, |
|||
+ DB_ROLL_PTR=0x800000012c0110, |
|||
ID=0x000000000000000b, |
|||
N_COLS=0x00000004, |
|||
TYPE=0x00000001, |
|||
@@ -33,7 +35,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x000018150122 (NAME='SYS_FOREIGN_COLS', |
|||
DB_TRX_ID=0x000000000300, |
|||
- DB_ROLL_PTR=0x800000012d0201, |
|||
+ DB_ROLL_PTR=0x800000012c0201, |
|||
ID=0x000000000000000c, |
|||
N_COLS=0x00000004, |
|||
TYPE=0x00000001, |
|||
@@ -43,7 +45,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x0400201501b8 (NAME='SYS_TABLESPACES', |
|||
DB_TRX_ID=0x000000000302, |
|||
- DB_ROLL_PTR=0x81000001320110, |
|||
+ DB_ROLL_PTR=0x81000001310110, |
|||
ID=0x000000000000000d, |
|||
N_COLS=0x00000003, |
|||
TYPE=0x00000001, |
|||
@@ -53,7 +55,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x000030150244 (NAME='SYS_VIRTUAL', |
|||
DB_TRX_ID=0x000000000304, |
|||
- DB_ROLL_PTR=0x82000001350110, |
|||
+ DB_ROLL_PTR=0x82000001340110, |
|||
ID=0x000000000000000f, |
|||
N_COLS=0x00000003, |
|||
TYPE=0x00000001, |
|||
@@ -63,7 +65,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x000040150288 (NAME='test/tc', |
|||
DB_TRX_ID=0x000000000308, |
|||
- DB_ROLL_PTR=0x84000001380110, |
|||
+ DB_ROLL_PTR=0x84000001370110, |
|||
ID=0x0000000000000011, |
|||
N_COLS=0x80000001, |
|||
TYPE=0x00000001, |
|||
@@ -73,7 +75,7 @@ |
|||
SPACE=0x00000002) |
|||
header=0x000048150310 (NAME='test/td', |
|||
DB_TRX_ID=0x00000000030a, |
|||
- DB_ROLL_PTR=0x85000001390110, |
|||
+ DB_ROLL_PTR=0x85000001380110, |
|||
ID=0x0000000000000012, |
|||
N_COLS=0x80000001, |
|||
TYPE=0x00000021, |
|||
@@ -83,7 +85,7 @@ |
|||
SPACE=0x00000003) |
|||
header=0x000058150200 (NAME='test/tp', |
|||
DB_TRX_ID=0x00000000030e, |
|||
- DB_ROLL_PTR=0x870000013b0110, |
|||
+ DB_ROLL_PTR=0x870000013a0110, |
|||
ID=0x0000000000000014, |
|||
N_COLS=0x80000001, |
|||
TYPE=0x000009a1, |
|||
@@ -93,7 +95,7 @@ |
|||
SPACE=0x00000005) |
|||
header=0x0000381502cc (NAME='test/tr', |
|||
DB_TRX_ID=0x000000000306, |
|||
- DB_ROLL_PTR=0x83000001370110, |
|||
+ DB_ROLL_PTR=0x83000001360110, |
|||
ID=0x0000000000000010, |
|||
N_COLS=0x00000001, |
|||
TYPE=0x00000001, |
|||
@@ -103,10 +105,10 @@ |
|||
SPACE=0x00000001) |
|||
header=0x000050150074 (NAME='test/tz', |
|||
DB_TRX_ID=0x00000000030c, |
|||
- DB_ROLL_PTR=0x860000013a0110, |
|||
+ DB_ROLL_PTR=0x86000001390110, |
|||
ID=0x0000000000000013, |
|||
N_COLS=0x80000001, |
|||
- TYPE=0x00000023, |
|||
+ TYPE=0x00000021, |
|||
MIX_ID=0x0000000000000000, |
|||
MIX_LEN=0x00000050, |
|||
CLUSTER_NAME=NULL(0 bytes), |
@ -0,0 +1,92 @@ |
|||
--- suite/innodb/r/table_flags.result |
|||
+++ suite/innodb/r/table_flags,4k.reject |
|||
@@ -13,7 +13,7 @@ |
|||
header=0x01000003016e (NAME=0x696e66696d756d00) |
|||
header=0x00002815008d (NAME='SYS_DATAFILES', |
|||
DB_TRX_ID=0x000000000302, |
|||
- DB_ROLL_PTR=0x81000001320194, |
|||
+ DB_ROLL_PTR=0x81000003260194, |
|||
ID=0x000000000000000e, |
|||
N_COLS=0x00000002, |
|||
TYPE=0x00000001, |
|||
@@ -23,7 +23,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x0000101500d5 (NAME='SYS_FOREIGN', |
|||
DB_TRX_ID=0x000000000300, |
|||
- DB_ROLL_PTR=0x800000012d0110, |
|||
+ DB_ROLL_PTR=0x80000003200110, |
|||
ID=0x000000000000000b, |
|||
N_COLS=0x00000004, |
|||
TYPE=0x00000001, |
|||
@@ -33,7 +33,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x000018150122 (NAME='SYS_FOREIGN_COLS', |
|||
DB_TRX_ID=0x000000000300, |
|||
- DB_ROLL_PTR=0x800000012d0201, |
|||
+ DB_ROLL_PTR=0x80000003200201, |
|||
ID=0x000000000000000c, |
|||
N_COLS=0x00000004, |
|||
TYPE=0x00000001, |
|||
@@ -43,7 +43,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x0400201501b8 (NAME='SYS_TABLESPACES', |
|||
DB_TRX_ID=0x000000000302, |
|||
- DB_ROLL_PTR=0x81000001320110, |
|||
+ DB_ROLL_PTR=0x81000003260110, |
|||
ID=0x000000000000000d, |
|||
N_COLS=0x00000003, |
|||
TYPE=0x00000001, |
|||
@@ -53,7 +53,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x000030150244 (NAME='SYS_VIRTUAL', |
|||
DB_TRX_ID=0x000000000304, |
|||
- DB_ROLL_PTR=0x82000001350110, |
|||
+ DB_ROLL_PTR=0x820000032a0110, |
|||
ID=0x000000000000000f, |
|||
N_COLS=0x00000003, |
|||
TYPE=0x00000001, |
|||
@@ -63,7 +63,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x000040150288 (NAME='test/tc', |
|||
DB_TRX_ID=0x000000000308, |
|||
- DB_ROLL_PTR=0x84000001380110, |
|||
+ DB_ROLL_PTR=0x840000032d0110, |
|||
ID=0x0000000000000011, |
|||
N_COLS=0x80000001, |
|||
TYPE=0x00000001, |
|||
@@ -73,7 +73,7 @@ |
|||
SPACE=0x00000002) |
|||
header=0x000048150310 (NAME='test/td', |
|||
DB_TRX_ID=0x00000000030a, |
|||
- DB_ROLL_PTR=0x85000001390110, |
|||
+ DB_ROLL_PTR=0x850000032f0110, |
|||
ID=0x0000000000000012, |
|||
N_COLS=0x80000001, |
|||
TYPE=0x00000021, |
|||
@@ -83,7 +83,7 @@ |
|||
SPACE=0x00000003) |
|||
header=0x000058150200 (NAME='test/tp', |
|||
DB_TRX_ID=0x00000000030e, |
|||
- DB_ROLL_PTR=0x870000013b0110, |
|||
+ DB_ROLL_PTR=0x87000003310110, |
|||
ID=0x0000000000000014, |
|||
N_COLS=0x80000001, |
|||
TYPE=0x000009a1, |
|||
@@ -93,7 +93,7 @@ |
|||
SPACE=0x00000005) |
|||
header=0x0000381502cc (NAME='test/tr', |
|||
DB_TRX_ID=0x000000000306, |
|||
- DB_ROLL_PTR=0x83000001370110, |
|||
+ DB_ROLL_PTR=0x830000032c0110, |
|||
ID=0x0000000000000010, |
|||
N_COLS=0x00000001, |
|||
TYPE=0x00000001, |
|||
@@ -103,7 +103,7 @@ |
|||
SPACE=0x00000001) |
|||
header=0x000050150074 (NAME='test/tz', |
|||
DB_TRX_ID=0x00000000030c, |
|||
- DB_ROLL_PTR=0x860000013a0110, |
|||
+ DB_ROLL_PTR=0x86000003300110, |
|||
ID=0x0000000000000013, |
|||
N_COLS=0x80000001, |
|||
TYPE=0x00000023, |
@ -0,0 +1,105 @@ |
|||
--- suite/innodb/r/table_flags.result |
|||
+++ suite/innodb/r/table_flags,64k.reject |
|||
@@ -5,6 +5,8 @@ |
|||
SET innodb_strict_mode=OFF; |
|||
CREATE TABLE tz(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=COMPRESSED |
|||
KEY_BLOCK_SIZE=1; |
|||
+Warnings: |
|||
+Warning 1478 InnoDB: Cannot create a COMPRESSED table when innodb_page_size > 16k. Assuming ROW_FORMAT=DYNAMIC. |
|||
SET innodb_strict_mode=ON; |
|||
CREATE TABLE tp(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=DYNAMIC |
|||
PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9; |
|||
@@ -13,7 +15,7 @@ |
|||
header=0x01000003016e (NAME=0x696e66696d756d00) |
|||
header=0x00002815008d (NAME='SYS_DATAFILES', |
|||
DB_TRX_ID=0x000000000302, |
|||
- DB_ROLL_PTR=0x81000001320194, |
|||
+ DB_ROLL_PTR=0x81000001310194, |
|||
ID=0x000000000000000e, |
|||
N_COLS=0x00000002, |
|||
TYPE=0x00000001, |
|||
@@ -23,7 +25,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x0000101500d5 (NAME='SYS_FOREIGN', |
|||
DB_TRX_ID=0x000000000300, |
|||
- DB_ROLL_PTR=0x800000012d0110, |
|||
+ DB_ROLL_PTR=0x800000012c0110, |
|||
ID=0x000000000000000b, |
|||
N_COLS=0x00000004, |
|||
TYPE=0x00000001, |
|||
@@ -33,7 +35,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x000018150122 (NAME='SYS_FOREIGN_COLS', |
|||
DB_TRX_ID=0x000000000300, |
|||
- DB_ROLL_PTR=0x800000012d0201, |
|||
+ DB_ROLL_PTR=0x800000012c0201, |
|||
ID=0x000000000000000c, |
|||
N_COLS=0x00000004, |
|||
TYPE=0x00000001, |
|||
@@ -43,7 +45,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x0400201501b8 (NAME='SYS_TABLESPACES', |
|||
DB_TRX_ID=0x000000000302, |
|||
- DB_ROLL_PTR=0x81000001320110, |
|||
+ DB_ROLL_PTR=0x81000001310110, |
|||
ID=0x000000000000000d, |
|||
N_COLS=0x00000003, |
|||
TYPE=0x00000001, |
|||
@@ -53,7 +55,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x000030150244 (NAME='SYS_VIRTUAL', |
|||
DB_TRX_ID=0x000000000304, |
|||
- DB_ROLL_PTR=0x82000001350110, |
|||
+ DB_ROLL_PTR=0x82000001340110, |
|||
ID=0x000000000000000f, |
|||
N_COLS=0x00000003, |
|||
TYPE=0x00000001, |
|||
@@ -63,7 +65,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x000040150288 (NAME='test/tc', |
|||
DB_TRX_ID=0x000000000308, |
|||
- DB_ROLL_PTR=0x84000001380110, |
|||
+ DB_ROLL_PTR=0x84000001370110, |
|||
ID=0x0000000000000011, |
|||
N_COLS=0x80000001, |
|||
TYPE=0x00000001, |
|||
@@ -73,7 +75,7 @@ |
|||
SPACE=0x00000002) |
|||
header=0x000048150310 (NAME='test/td', |
|||
DB_TRX_ID=0x00000000030a, |
|||
- DB_ROLL_PTR=0x85000001390110, |
|||
+ DB_ROLL_PTR=0x85000001380110, |
|||
ID=0x0000000000000012, |
|||
N_COLS=0x80000001, |
|||
TYPE=0x00000021, |
|||
@@ -83,7 +85,7 @@ |
|||
SPACE=0x00000003) |
|||
header=0x000058150200 (NAME='test/tp', |
|||
DB_TRX_ID=0x00000000030e, |
|||
- DB_ROLL_PTR=0x870000013b0110, |
|||
+ DB_ROLL_PTR=0x870000013a0110, |
|||
ID=0x0000000000000014, |
|||
N_COLS=0x80000001, |
|||
TYPE=0x000009a1, |
|||
@@ -93,7 +95,7 @@ |
|||
SPACE=0x00000005) |
|||
header=0x0000381502cc (NAME='test/tr', |
|||
DB_TRX_ID=0x000000000306, |
|||
- DB_ROLL_PTR=0x83000001370110, |
|||
+ DB_ROLL_PTR=0x83000001360110, |
|||
ID=0x0000000000000010, |
|||
N_COLS=0x00000001, |
|||
TYPE=0x00000001, |
|||
@@ -103,10 +105,10 @@ |
|||
SPACE=0x00000001) |
|||
header=0x000050150074 (NAME='test/tz', |
|||
DB_TRX_ID=0x00000000030c, |
|||
- DB_ROLL_PTR=0x860000013a0110, |
|||
+ DB_ROLL_PTR=0x86000001390110, |
|||
ID=0x0000000000000013, |
|||
N_COLS=0x80000001, |
|||
- TYPE=0x00000023, |
|||
+ TYPE=0x00000021, |
|||
MIX_ID=0x0000000000000000, |
|||
MIX_LEN=0x00000050, |
|||
CLUSTER_NAME=NULL(0 bytes), |
@ -0,0 +1,92 @@ |
|||
--- suite/innodb/r/table_flags.result |
|||
+++ suite/innodb/r/table_flags,8k.reject |
|||
@@ -13,7 +13,7 @@ |
|||
header=0x01000003016e (NAME=0x696e66696d756d00) |
|||
header=0x00002815008d (NAME='SYS_DATAFILES', |
|||
DB_TRX_ID=0x000000000302, |
|||
- DB_ROLL_PTR=0x81000001320194, |
|||
+ DB_ROLL_PTR=0x81000001d70194, |
|||
ID=0x000000000000000e, |
|||
N_COLS=0x00000002, |
|||
TYPE=0x00000001, |
|||
@@ -23,7 +23,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x0000101500d5 (NAME='SYS_FOREIGN', |
|||
DB_TRX_ID=0x000000000300, |
|||
- DB_ROLL_PTR=0x800000012d0110, |
|||
+ DB_ROLL_PTR=0x80000001d10110, |
|||
ID=0x000000000000000b, |
|||
N_COLS=0x00000004, |
|||
TYPE=0x00000001, |
|||
@@ -33,7 +33,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x000018150122 (NAME='SYS_FOREIGN_COLS', |
|||
DB_TRX_ID=0x000000000300, |
|||
- DB_ROLL_PTR=0x800000012d0201, |
|||
+ DB_ROLL_PTR=0x80000001d10201, |
|||
ID=0x000000000000000c, |
|||
N_COLS=0x00000004, |
|||
TYPE=0x00000001, |
|||
@@ -43,7 +43,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x0400201501b8 (NAME='SYS_TABLESPACES', |
|||
DB_TRX_ID=0x000000000302, |
|||
- DB_ROLL_PTR=0x81000001320110, |
|||
+ DB_ROLL_PTR=0x81000001d70110, |
|||
ID=0x000000000000000d, |
|||
N_COLS=0x00000003, |
|||
TYPE=0x00000001, |
|||
@@ -53,7 +53,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x000030150244 (NAME='SYS_VIRTUAL', |
|||
DB_TRX_ID=0x000000000304, |
|||
- DB_ROLL_PTR=0x82000001350110, |
|||
+ DB_ROLL_PTR=0x82000001da0110, |
|||
ID=0x000000000000000f, |
|||
N_COLS=0x00000003, |
|||
TYPE=0x00000001, |
|||
@@ -63,7 +63,7 @@ |
|||
SPACE=0x00000000) |
|||
header=0x000040150288 (NAME='test/tc', |
|||
DB_TRX_ID=0x000000000308, |
|||
- DB_ROLL_PTR=0x84000001380110, |
|||
+ DB_ROLL_PTR=0x84000001dd0110, |
|||
ID=0x0000000000000011, |
|||
N_COLS=0x80000001, |
|||
TYPE=0x00000001, |
|||
@@ -73,7 +73,7 @@ |
|||
SPACE=0x00000002) |
|||
header=0x000048150310 (NAME='test/td', |
|||
DB_TRX_ID=0x00000000030a, |
|||
- DB_ROLL_PTR=0x85000001390110, |
|||
+ DB_ROLL_PTR=0x85000001de0110, |
|||
ID=0x0000000000000012, |
|||
N_COLS=0x80000001, |
|||
TYPE=0x00000021, |
|||
@@ -83,7 +83,7 @@ |
|||
SPACE=0x00000003) |
|||
header=0x000058150200 (NAME='test/tp', |
|||
DB_TRX_ID=0x00000000030e, |
|||
- DB_ROLL_PTR=0x870000013b0110, |
|||
+ DB_ROLL_PTR=0x87000001e00110, |
|||
ID=0x0000000000000014, |
|||
N_COLS=0x80000001, |
|||
TYPE=0x000009a1, |
|||
@@ -93,7 +93,7 @@ |
|||
SPACE=0x00000005) |
|||
header=0x0000381502cc (NAME='test/tr', |
|||
DB_TRX_ID=0x000000000306, |
|||
- DB_ROLL_PTR=0x83000001370110, |
|||
+ DB_ROLL_PTR=0x83000001dc0110, |
|||
ID=0x0000000000000010, |
|||
N_COLS=0x00000001, |
|||
TYPE=0x00000001, |
|||
@@ -103,7 +103,7 @@ |
|||
SPACE=0x00000001) |
|||
header=0x000050150074 (NAME='test/tz', |
|||
DB_TRX_ID=0x00000000030c, |
|||
- DB_ROLL_PTR=0x860000013a0110, |
|||
+ DB_ROLL_PTR=0x86000001df0110, |
|||
ID=0x0000000000000013, |
|||
N_COLS=0x80000001, |
|||
TYPE=0x00000023, |
@ -0,0 +1,188 @@ |
|||
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 |
|||
SHOW CREATE TABLE td; |
|||
ERROR 42S02: Table 'test.td' doesn't exist in engine |
|||
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 |
|||
BEGIN; |
|||
INSERT INTO tz VALUES(42); |
|||
ROLLBACK; |
|||
SELECT * FROM tz; |
|||
a |
|||
42 |
|||
SHOW CREATE TABLE tp; |
|||
ERROR 42S02: Table 'test.tp' doesn't exist in engine |
|||
FOUND 4 /InnoDB: Table `test`.`t[cp]` 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: Refusing to load '\..test.td\.ibd' \(id=3, flags=0x1?[2ae]1\); dictionary contains id=3, flags=0x10[01][2ae]1\b/ 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 tp VALUES(1); |
|||
ROLLBACK; |
|||
SELECT * FROM tr; |
|||
a |
|||
SELECT * FROM tc; |
|||
a |
|||
SELECT * FROM td; |
|||
a |
|||
SELECT * FROM tp; |
|||
a |
|||
DROP TABLE tr,tc,td,tz,tp; |
|||
ib_buffer_pool |
|||
ib_logfile0 |
|||
ib_logfile1 |
|||
ibdata1 |
|||
sys_tables.bin |
@ -0,0 +1,206 @@ |
|||
--source include/innodb_page_size.inc |
|||
# Embedded server tests do not support restarting |
|||
--source include/not_embedded.inc |
|||
|
|||
--disable_query_log |
|||
call mtr.add_suppression("InnoDB: Table `mysql`\\.`innodb_table_stats` not found"); |
|||
call mtr.add_suppression("InnoDB: incorrect flags in SYS_TABLES"); |
|||
call mtr.add_suppression("InnoDB: Table `test`.`t[cp]` in InnoDB data dictionary contains invalid flags\\. SYS_TABLES\\.TYPE=(129|289|3873|1232[31]) SYS_TABLES\\.N_COLS=2147483649\\r?$"); |
|||
call mtr.add_suppression("InnoDB: Table `test`\\.`tr` in InnoDB data dictionary contains invalid flags\\. SYS_TABLES\\.TYPE=65 SYS_TABLES\\.MIX_LEN=4294967295\\r?$"); |
|||
call mtr.add_suppression("InnoDB: Refusing to load '\\..test.td\\.ibd' \\(id=3, flags=0x([2e]1)\\); dictionary contains id=3, flags=0x100\\1\\r?$"); |
|||
call mtr.add_suppression("InnoDB: Refusing to load '\\..test.td\\.ibd' \\(id=3, flags=0x(1[2ae]1)\\); dictionary contains id=3, flags=0x10\\1\\r?$"); |
|||
call mtr.add_suppression("InnoDB: Ignoring tablespace for `test`.`td` because it could not be opened\\."); |
|||
# FIXME: Remove the following spam due to invalid flags for test.td |
|||
call mtr.add_suppression("InnoDB: Operating system error number .* in a file operation"); |
|||
call mtr.add_suppression("InnoDB: The error means the system cannot find the path specified"); |
|||
call mtr.add_suppression("InnoDB: If you are installing InnoDB, remember that you must create directories yourself"); |
|||
FLUSH TABLES; |
|||
--enable_query_log |
|||
|
|||
let INNODB_PAGE_SIZE=`select @@innodb_page_size`; |
|||
let MYSQLD_DATADIR=`select @@datadir`; |
|||
|
|||
let bugdir= $MYSQLTEST_VARDIR/tmp/table_flags; |
|||
--mkdir $bugdir |
|||
--let SEARCH_FILE = $MYSQLTEST_VARDIR/log/mysqld.1.err |
|||
|
|||
--let $d=--innodb-data-home-dir=$bugdir --innodb-log-group-home-dir=$bugdir |
|||
--let $d=$d --innodb-data-file-path=ibdata1:1M:autoextend |
|||
--let $d=$d --innodb-undo-tablespaces=0 |
|||
--let $restart_parameters=$d --innodb-stats-persistent=0 --innodb-file-format=1 |
|||
--source include/restart_mysqld.inc |
|||
|
|||
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; |
|||
# PAGE_COMPRESSED is supported starting with MariaDB 10.1.0 |
|||
CREATE TABLE tp(a INT PRIMARY KEY)ENGINE=InnoDB ROW_FORMAT=DYNAMIC |
|||
PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9; |
|||
|
|||
--source include/shutdown_mysqld.inc |
|||
--perl |
|||
use strict; |
|||
my $ps= $ENV{INNODB_PAGE_SIZE}; |
|||
my $file= "$ENV{bugdir}/ibdata1"; |
|||
open(FILE, "+<", $file) || die "Unable to open $file\n"; |
|||
# Read DICT_HDR_TABLES, the root page number of CLUST_IND (SYS_TABLES.NAME). |
|||
sysseek(FILE, 7*$ps+38+32, 0) || die "Unable to seek $file"; |
|||
die "Unable to read $file" unless sysread(FILE, $_, 4) == 4; |
|||
my $sys_tables_root = unpack("N", $_); |
|||
my $page; |
|||
print "SYS_TABLES clustered index root page ($sys_tables_root):\n"; |
|||
sysseek(FILE, $sys_tables_root*$ps, 0) || die "Unable to seek $file"; |
|||
die "Unable to read $file" unless sysread(FILE, $page, $ps) == $ps; |
|||
open(BACKUP, ">$ENV{bugdir}/sys_tables.bin") || die "Unable to open backup\n"; |
|||
syswrite(BACKUP, $page, $ps)==$ps || die "Unable to write backup\n"; |
|||
close(BACKUP) || die "Unable to close backup\n"; |
|||
print "N_RECS=", unpack("n", substr($page,38+16,2)); |
|||
print "; LEVEL=", unpack("n", substr($page,38+26,2)); |
|||
print "; INDEX_ID=0x", unpack("H*", substr($page,38+28,8)), "\n"; |
|||
my @fields=("NAME","DB_TRX_ID","DB_ROLL_PTR", |
|||
"ID","N_COLS","TYPE","MIX_ID","MIX_LEN","CLUSTER_NAME","SPACE"); |
|||
for (my $offset= 0x65; $offset; |
|||
$offset= unpack("n", substr($page,$offset-2,2))) |
|||
{ |
|||
print "header=0x", unpack("H*",substr($page,$offset-6,6)), " ("; |
|||
my $n_fields= unpack("n", substr($page,$offset-4,2)) >> 1 & 0x3ff; |
|||
my $start= 0; |
|||
my $name; |
|||
for (my $i= 0; $i < $n_fields; $i++) { |
|||
my $end= unpack("C", substr($page, $offset-7-$i, 1)); |
|||
print ",\n " if $i; |
|||
print "$fields[$i]="; |
|||
if ($end & 0x80) { |
|||
print "NULL(", ($end & 0x7f) - $start, " bytes)" |
|||
} elsif ($n_fields > 1 && $i == 0) { |
|||
$name= substr($page,$offset+$start,$end-$start); |
|||
print "'$name'" |
|||
} else { |
|||
print "0x", unpack("H*", substr($page,$offset+$start,$end-$start)) |
|||
} |
|||
# Corrupt SYS_TABLES.TYPE |
|||
if ($i == 5) |
|||
{ |
|||
my $flags= 0; |
|||
if ($name eq 'test/tr') { |
|||
$flags= 0x40 # DATA_DIR (largely ignored by 10.1+) |
|||
} elsif ($name eq 'test/tc') { |
|||
$flags= 0x80 # 10.1 PAGE_COMPRESSED |
|||
} elsif ($name eq 'test/td') { |
|||
$flags= 0xf00 # PAGE_COMPRESSION_LEVEL=15 (0..9 is valid) |
|||
# As part of the MDEV-12873 fix, because the |
|||
# PAGE_COMPRESSED=YES flag was not set, we will assume that |
|||
# this table was actually created with 10.2.2..10.2.6 |
|||
# using PAGE_COMPRESSED=YES PAGE_COMPRESSION_LEVEL=7. |
|||
} elsif ($name eq 'test/tz') { |
|||
$flags= 0x3000 # 10.1 ATOMIC_WRITES=3 (0..2 is valid) |
|||
} elsif ($name eq 'test/tp') { |
|||
$flags= 0x880 # 10.1 PAGE_COMPRESSED, PAGE_COMPRESSION_LEVEL=8 |
|||
# (in 10.2.2 through 10.2.6, this is interpreted as |
|||
# PAGE_COMPRESSION_LEVEL=4 without PAGE_COMPRESSED |
|||
# but with SHARED_SPACE, which should be invalid) |
|||
} |
|||
|
|||
substr($page,$offset+$start,$end-$start)= pack( |
|||
"N", $flags ^ |
|||
unpack("N", substr($page,$offset+$start,$end-$start))) |
|||
if $flags; |
|||
} |
|||
# Corrupt SYS_TABLES.MIX_LEN (ignored for ROW_FORMAT=REDUNDANT) |
|||
if ($i == 7 && $name eq 'test/tr') |
|||
{ |
|||
substr($page,$offset+$start,$end-$start)= chr(255) x 4; |
|||
} |
|||
$start= $end & 0x7f; |
|||
} |
|||
print ")\n"; |
|||
} |
|||
substr($page,0,4)=pack("N",0xdeadbeef); |
|||
substr($page,$ps-8,4)=pack("N",0xdeadbeef); |
|||
sysseek(FILE, $sys_tables_root*$ps, 0) || die "Unable to seek $file"; |
|||
syswrite(FILE, $page, $ps)==$ps || die "Unable to write $file\n"; |
|||
close(FILE) || die "Unable to close $file\n"; |
|||
EOF |
|||
--source include/start_mysqld.inc |
|||
|
|||
--error ER_NO_SUCH_TABLE_IN_ENGINE |
|||
SHOW CREATE TABLE tr; |
|||
--error ER_NO_SUCH_TABLE_IN_ENGINE |
|||
SHOW CREATE TABLE tc; |
|||
--error ER_NO_SUCH_TABLE_IN_ENGINE |
|||
SHOW CREATE TABLE td; |
|||
# This table was converted to NO_ROLLBACK due to the SYS_TABLES.TYPE change. |
|||
SHOW CREATE TABLE tz; |
|||
BEGIN; |
|||
INSERT INTO tz VALUES(42); |
|||
ROLLBACK; |
|||
SELECT * FROM tz; |
|||
--error ER_NO_SUCH_TABLE_IN_ENGINE |
|||
SHOW CREATE TABLE tp; |
|||
|
|||
--source include/shutdown_mysqld.inc |
|||
|
|||
let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err; |
|||
--let SEARCH_PATTERN= InnoDB: Table `test`.`t[cp]` in InnoDB data dictionary contains invalid flags\. SYS_TABLES\.TYPE=(129|289|3873|1232[13]) SYS_TABLES\.N_COLS=2147483649 |
|||
--source include/search_pattern_in_file.inc |
|||
--let SEARCH_PATTERN= InnoDB: Refusing to load '\..test.td\.ibd' \(id=3, flags=0x1?[2ae]1\); dictionary contains id=3, flags=0x10[01][2ae]1\b |
|||
--source include/search_pattern_in_file.inc |
|||
--let SEARCH_PATTERN= InnoDB: Table `test`\.`tr` in InnoDB data dictionary contains invalid flags\. SYS_TABLES\.TYPE=65 SYS_TABLES\.MIX_LEN=4294967295\b |
|||
--source include/search_pattern_in_file.inc |
|||
|
|||
# Restore the backup of the corrupted SYS_TABLES clustered index root page |
|||
--perl |
|||
use strict; |
|||
my $ps= $ENV{INNODB_PAGE_SIZE}; |
|||
my $file= "$ENV{bugdir}/ibdata1"; |
|||
open(FILE, "+<", $file) || die "Unable to open $file\n"; |
|||
open(BACKUP, "<$ENV{bugdir}/sys_tables.bin") || die "Unable to open backup\n"; |
|||
# Read DICT_HDR_TABLES, the root page number of CLUST_IND (SYS_TABLES.NAME). |
|||
sysseek(FILE, 7*$ps+38+32, 0) || die "Unable to seek $file"; |
|||
die "Unable to read $file\n" unless sysread(FILE, $_, 4) == 4; |
|||
my $sys_tables_root = unpack("N", $_); |
|||
print "Restoring SYS_TABLES clustered index root page ($sys_tables_root)\n"; |
|||
sysseek(FILE, $sys_tables_root*$ps, 0) || die "Unable to seek $file"; |
|||
die "Unable to read backup\n" unless sysread(BACKUP, $_, $ps) == $ps; |
|||
die "Unable to restore backup\n" unless syswrite(FILE, $_, $ps) == $ps; |
|||
close(BACKUP); |
|||
close(FILE) || die "Unable to close $file\n"; |
|||
EOF |
|||
--source include/start_mysqld.inc |
|||
|
|||
SHOW CREATE TABLE tr; |
|||
SHOW CREATE TABLE tc; |
|||
SHOW CREATE TABLE td; |
|||
SHOW CREATE TABLE tz; |
|||
SHOW CREATE TABLE tp; |
|||
|
|||
BEGIN; |
|||
INSERT INTO tr VALUES(1); |
|||
INSERT INTO tc VALUES(1); |
|||
INSERT INTO td VALUES(1); |
|||
# We cannot access tz, because due to our fiddling of the NO_ROLLBACK flag, |
|||
# it now has a record with DB_TRX_ID=0, which is invalid for |
|||
# transactional tables until MDEV-12288 is implemented. |
|||
# INSERT INTO tz VALUES(1); |
|||
INSERT INTO tp VALUES(1); |
|||
ROLLBACK; |
|||
|
|||
SELECT * FROM tr; |
|||
SELECT * FROM tc; |
|||
SELECT * FROM td; |
|||
# SELECT * FROM tz; |
|||
SELECT * FROM tp; |
|||
|
|||
DROP TABLE tr,tc,td,tz,tp; |
|||
|
|||
--let $restart_parameters= |
|||
--source include/restart_mysqld.inc |
|||
|
|||
--list_files $bugdir |
|||
--remove_files_wildcard $bugdir |
|||
--rmdir $bugdir |
Write
Preview
Loading…
Cancel
Save
Reference in new issue