WL#7704: InnoDB: Remove deprecated file format parameters in 8.0
Affects: Server-8.0 — Status: Complete — Priority: Medium
The following options will be removed: innodb_file_format innodb_file_format_check innodb_file_format_max innodb_large_prefix They have been deprecated in 5.7.7 with WL#7703. The file_format column in two INFORMATION_SCHEMA tables will be removed: innodb_sys_tablespaces innodb_sys_tables See also WL#8307 InnoDB: Make ROW_FORMAT=DYNAMIC the default
The innodb_file_format was persisted at the end of TRX_SYS_PAGE in the system tablespace (space 0, page 5). Assuming that the first file of the system tablespace is called ibdata1 the file format tag would be stored at the 8 bytes starting at the offset 6*innodb_page_size-16 which is 98288 or 0x17FF0 when innodb_page_size=16k. Theoretically, this field could contain uninitialized garbage bytes if the system tablespace was created with a very old version of InnoDB and MySQL 5.5, 5.6 or 5.7 was never started on the file. In practice, there are 3 possible values of the innodb_file_format tag when the database was created with MySQL 5.5, 5.6 or 5.7: 0 (not initialized yet) 0xA3AC72B5D9505B81 (innodb_file_format_max=Antelope) 0xA3AC72B5D9505B82 (innodb_file_format_max=Barracuda) According to mysql-test, the value can remain at 0 across server restarts. ./mtr main.1st innodb.innodb od -An -t x1 -j 98288 -N 8 var/mysqld.1/data/ibdata1 ./mtr innodb.innodb_file_format od -An -t x1 -j 98288 -N 8 var/mysqld.1/data/ibdata1 After the first tests, the bytes remain at 0. The last test will change the format tag to 0xA3AC72B5D9505B81. Because of this, we will remove all explicit initialization of the file format tag bytes. On startup, and on any DDL operation, we will leave the tag at whatever value it was. When creating a new database instance, the tag will be initialized to 0.
Copyright (c) 2000, 2019, Oracle Corporation and/or its affiliates. All rights reserved.