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

Clearing delete-mark on R-tree pages does not appear crash-safe

    XMLWordPrintable

Details

    Description

      In the functions rtr_page_copy_rec_list_end_no_locks() and rtr_page_copy_rec_list_start_no_locks(), no redo log is being written for clearing a bit in the R-tree page:

      				if (rec_get_deleted_flag(cur1_rec,
      					dict_table_is_comp(index->table))) {
      					goto next;
      				} else {
      					/* We have two identical leaf records,
      					skip copying the undeleted one, and
      					unmark deleted on the current page */
      					btr_rec_set_deleted_flag(
      						cur_rec, NULL, FALSE);
      					goto next;
      				}
      

      This call is also passing page_zip=NULL, which ought to cause UNIV_ZIP_DEBUG assertion failures when using ROW_FORMAT=COMPRESSED. But, that parameter was changed in MySQL 5.7.5 exactly to address the failure of a UNIV_ZIP_DEBUG check. There code change is associated with a test case change, so we have some hope that the failure is repeatable.

      The purpose of this call is unclear. It was added as part of introducing InnoDB R-tree index support.

      The bug was found as part of implementing a purely physical redo log record format in MDEV-12353.

      Attachments

        Issue Links

          Activity

            People

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

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

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