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

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

    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

              • 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: