Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-40208

INNODB_BUFFER_PAGE/INNODB_BUFFER_PAGE_LRU: IS_HASHED and IS_OLD changed from 'YES'/'NO' to integer — MySQL-incompatible, undocumented, contradicts the KB

    XMLWordPrintable

Details

    • 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 d09aec7a15ab4be539d2b110742af544fa6b139fMDEV-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 2147951560c013fc084c4c06dcf8e09ec403dd9fMDEV-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

          Activity

            People

              Unassigned Unassigned
              wlad Vladislav Vaintroub
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.