mirror of
https://github.com/MariaDB/server.git
synced 2025-08-31 22:22:30 +03:00
MDEV-13105 InnoDB fails to load a table with PAGE_COMPRESSION_LEVEL after upgrade from 10.1.20
When using innodb_page_size=16k, InnoDB tables that were created in MariaDB 10.1.0 to 10.1.20 with PAGE_COMPRESSED=1 and PAGE_COMPRESSION_LEVEL=2 or PAGE_COMPRESSION_LEVEL=3 would fail to load. fsp_flags_is_valid(): When using innodb_page_size=16k, use a more strict check for .ibd files, with the assumption that nobody would try to use different-page-size files.
This commit is contained in:
@@ -11,7 +11,7 @@ sub convert_to_mariadb_101
|
||||
# FIL_PAGE_DATA + FSP_SPACE_FLAGS = 38 + 16 = 54 bytes from the start
|
||||
my($flags) = unpack "x[54]N", $_;
|
||||
my $badflags = ($flags & 0x3f);
|
||||
my $compression_level=6;
|
||||
my $compression_level=3;
|
||||
$badflags |= 1<<6|$compression_level<<7 if ($flags & 1 << 16);
|
||||
$badflags |= ($flags & 15 << 6) << 7; # PAGE_SSIZE
|
||||
|
||||
|
@@ -9,7 +9,7 @@ SET INNODB_STRICT_MODE=OFF;
|
||||
CREATE TABLE tz(a INT)ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
||||
SET INNODB_STRICT_MODE=ON;
|
||||
CREATE TABLE tdd(a INT) ENGINE=InnoDB, DATA DIRECTORY='MYSQL_TMP_DIR';
|
||||
CREATE TABLE tp(a INT) ENGINE=InnoDB page_compressed=1;
|
||||
CREATE TABLE tp(a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC PAGE_COMPRESSED=1;
|
||||
CREATE TABLE ti(a INT) ENGINE=InnoDB;
|
||||
FLUSH TABLES ti FOR EXPORT;
|
||||
backup: ti
|
||||
|
@@ -29,7 +29,7 @@ SET INNODB_STRICT_MODE=ON;
|
||||
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
||||
EVAL CREATE TABLE tdd(a INT) ENGINE=InnoDB, DATA DIRECTORY='$MYSQL_TMP_DIR';
|
||||
|
||||
CREATE TABLE tp(a INT) ENGINE=InnoDB page_compressed=1;
|
||||
CREATE TABLE tp(a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC PAGE_COMPRESSED=1;
|
||||
CREATE TABLE ti(a INT) ENGINE=InnoDB;
|
||||
FLUSH TABLES ti FOR EXPORT;
|
||||
perl;
|
||||
|
Reference in New Issue
Block a user