Details
-
Bug
-
Status: Open (View Workflow)
-
Major
-
Resolution: Unresolved
-
10.6, 10.11, 11.4, 12.3, 13.0
-
None
-
Unexpected results
Description
The InnoDB buffer-pool information_schema tables INNODB_BUFFER_PAGE and INNODB_BUFFER_PAGE_LRU expose two boolean-ish columns, IS_HASHED and IS_OLD. In MySQL — and in MariaDB up to and including 10.4 — these are 'YES'/'NO' strings. Since MariaDB 10.5.0 they return integer 0/1 instead. This is a silent, undocumented, MySQL-incompatible change to a public information_schema table.
1. The portability problem (base table definition)
MySQL exposes these columns as 'YES'/'NO' strings (see the example output in the MySQL manual: IS_HASHED: YES, IS_OLD: YES). MariaDB <= 10.4 matched this (Varchar(3), stored as "YES"/"NO").
MariaDB 10.5.0 changed both columns, in both tables, to int(1) (0/1):
commit d09aec7a15ab4be539d2b110742af544fa6b139f — MDEV-19940 "Clean up INFORMATION_SCHEMA.INNODB_ tables" (Marko Mäkelä, 2019-06-28)
Consequences:
Any query/tool/script comparing these columns against the documented 'YES'/'NO' now silently gets wrong results and a Truncated incorrect DECIMAL value: 'YES' warning from the <int> = 'YES' coercion.
The change was never documented. The MariaDB KB (INNODB_BUFFER_PAGE) still documents IS_HASHED/IS_OLD as varchar(3) with YES/NO values — directly contradicting what the server has returned since 10.5.0. No version/incompatibility note exists.
2. How MDEV-37083 "fixed" the status quo
The breakage surfaced in MariaDB's own sys schema, whose views (inherited from upstream mysql/mysql-sys) compared IS_HASHED = 'YES'. Rather than restoring the column type, MDEV-37083 adapted the views to the new integer type:
commit 2147951560c013fc084c4c06dcf8e09ec403dd9f — MDEV-37083 "Fixed type mismatch in sys views" (2025-07-11)
(four views: innodb_buffer_stats_by_schema, innodb_buffer_stats_by_table, and their x$ variants)
This silenced the warning but entrenched the incompatibility instead of addressing its root cause: the underlying information_schema table is still MySQL-incompatible (This fixup reached 10.11.15 / 11.4.9 / 11.8.4 / 12.x, but not 10.6 — so 10.6 still emits the warning. That release gap is only a symptom.)
3. Proposed resolution
Revert the InnoDB base-table change from MDEV-19940 for these columns: restore IS_HASHED/IS_OLD to 'YES'/'NO' strings in both INNODB_BUFFER_PAGE and INNODB_BUFFER_PAGE_LRU, for MySQL compatibility and to match the documentation.
Revert MDEV-37083 in the sys schema: once the columns are strings again, the original IF(ibp.is_hashed = 'YES', ...) comparison is correct and the views realign with upstream mysql-sys.
Attachments
Issue Links
- causes
-
MDEV-34946 Querying the Sys Schema innodb_buffer_stats_by_schema view returns warnings
-
- Closed
-
-
MDEV-37083 Inconsistency between sys.innodb_buffer_stats_by_table and information_schema.innodb_buffer_page
-
- Closed
-