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

Assertion failure in page_rec_get_next_low() during innodb_gis.rtree_compress

    XMLWordPrintable

    Details

      Description

      A debug assertion that was added in order to catch corruption that was reported in MDEV-17983 turns out to be bogus. In the test innodb_gis.rtree_compress,4k, the function is sometimes being invoked by purge for a spatial index root page that is not a leaf page (PAGE_LEVEL is 1). The assertion should be relaxed as follows:

      diff --git a/storage/innobase/include/page0page.ic b/storage/innobase/include/page0page.ic
      index 6369932db1b..98b518187b5 100644
      --- a/storage/innobase/include/page0page.ic
      +++ b/storage/innobase/include/page0page.ic
      @@ -660,6 +660,7 @@ page_rec_get_next_low(
       	}
       
       	ut_ad(page_rec_is_infimum(rec)
      +	      || (!page_is_leaf(page) && !page_has_prev(page))
       	      || !(rec_get_info_bits(page + offs, comp)
       		   & REC_INFO_MIN_REC_FLAG));
       
      

      That is, if the page is a leftmost non-leaf page, it may carry a record where the flag is set.

      I observed the failure on 10.5, but the assertion was introduced in 10.2.

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                Created:
                Updated:
                Resolved: