Bug #62431 What is needed to make innodb compression work for 32KB pages?
Submitted: 14 Sep 2011 8:31 Modified: 22 Feb 2012 22:35
Reporter: Nizameddin Ordulu Email Updates:
Status: Closed Impact on me:
Category:MySQL Server: InnoDB Plugin storage engine Severity:S3 (Non-critical)
Version: OS:Any
Assigned to: CPU Architecture:Any
Tags: compression, innodb

[14 Sep 2011 8:31] Nizameddin Ordulu
This is rather a question. I want to test innodb with 32/64 KB pages with compression. What are the possible issues that may come up, and what should I change in source code to make this happen?

How to repeat:
not a bug. read the description.
[14 Sep 2011 8:58] Marko Mäkelä
The limitation is the dense page directory at the end of a compressed B-tree page. This directory contains a byte offset to the origin of each record. The 16-bit array is indexed by heap_no. The two high-order bits are reserved for flags.

If you move the flag bits somewhere else (a separate array?), you could compress 32k or even 64k pages.

But, note that there might be some problems with 64k uncompressed page size. I have a note from the MySQL 4.0 or 4.1 era of an assertion failure when using 64k page size. Lots of things have been fixed since then, though.
[14 Sep 2011 9:20] MySQL Verification Team
Could be closed as !bug after Marko answer?. Thanks.
[14 Sep 2011 21:26] Nizameddin Ordulu
[12 Nov 2011 0:01] Nizameddin Ordulu
What would happen if I change PAGE_ZIP_DIR_SLOT_SIZE to 3?
[12 Nov 2011 0:02] Nizameddin Ordulu
[14 Jan 2012 13:09] Sveta Smirnova
Thank you for the report, but the bug system is not the appropriate forum for asking help on using MySQL products. Your problem is not the result of a bug.

Please try to ask at Internals mailing list at http://lists.mysql.com/internals
[14 Jan 2012 15:05] Mark Callaghan
I am being very pedantic here, but the manual claims that 8kb to 64kb is supported.
[16 Jan 2012 18:36] Valeriy Kravchuk
As manual statements contradict reality for this case, we have reasons to claim that there is a bug. Either manual should explicitly list limitations for specific page sizes, or it should list steps to get all features supported with all supported page sizes, or InnoDB code should be modified to support everything that our manual describes as "supported".
[22 Feb 2012 22:35] John Russell
The manual includes this wording:

Changing* the page size is not a supported operation and there is no guarantee that InnoDB will function normally with a page size other than 16KB. Problems compiling or running InnoDB may occur. In particular, ROW_FORMAT=COMPRESSED in the InnoDB Plugin assumes that the page size is at most 16KB and uses 14-bit pointers.

* In 5.6, the doc says "Increasing", since there you can use innodb_page_size to lower the size.

The "no guarantee" phrasing was always intended to be the conclusive statement, despite the later wording that said it was possible to change the page size in source code. The reference to changing page size via source code has been removed, as that was a use-at-your-own-risk proposition rather than a supported feature.