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

Page contains nonzero PAGE_MAX_TRX_ID

    XMLWordPrintable

    Details

      Description

      The field PAGE_MAX_TRX_ID only matters in secondary index leaf pages. It was expected to be 0 on all other pages until the field is put into some other use.
      (MDEV-6076 repurposed the field in clustered index root pages for a persistent AUTO_INCREMENT value. MDEV-11369 and MDEV-11424 may repurpose it in further clustered index pages.)

      When running innodb.innodb-wl5522-debug or innodb_zip.wl5522_debug_zip with innodb_page_size=4k, an assertion in btr_page_reorganize_low() is failing:

      	/* PAGE_MAX_TRX_ID must be zero on non-leaf pages other than
      	clustered index root pages. */
      	ut_ad(recovery
      	      || page_get_max_trx_id(page) == 0
      	      || (dict_index_is_sec_or_ibuf(index)
      		  ? page_is_leaf(temp_page)
      		  : page_is_root(temp_page)));
      

      An easy fix would be to relax the assertion:

      	/* PAGE_MAX_TRX_ID must be zero on non-leaf pages other than
      	clustered index root pages. */
      	ut_ad(recovery
      	      || page_get_max_trx_id(page) == 0
      	      || dict_index_is_sec_or_ibuf(index)
      	      || page_is_root(temp_page));
      

      But I would like to study why this happens. Maybe we are not clearing PAGE_MAX_TRX_ID when splitting a secondary index leaf page.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              marko Marko Mäkelä
              Reporter:
              marko Marko Mäkelä
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: