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

InnoDB: tried to purge non-delete-marked record of an index on a virtual column prefix

    XMLWordPrintable

Details

    Description

      The test case below fails nearly deterministically (but not quite, so run with --repeat=N) on 10.3, 10.4 and 10.6+ since the commit 1562b2c20b5 (MDEV-29666).

      A recent comment in MDEV-20640 seems to suggest it may be a probability issue. I'm not so sure about it. This test fails on the 1st-2nd attempt after the change and didn't fail in 1000 attempts before the change, so how big the change in probability it must have been? And even if it was, it is still a regression from a very remotely possible problem to a very real one.

      --source include/have_innodb.inc
       
      CREATE TABLE t (a BINARY(8) NOT NULL DEFAULT '', b CHAR(8) AS (a) VIRTUAL, KEY(b(4))) CHARACTER SET utf8 ENGINE=InnoDB;
      INSERT INTO t (a) VALUES (''),('');
      UPDATE t SET a = 'x';
      UPDATE t SET a = '';
       
      --sleep 1
       
      # Cleanup
      DROP TABLE t;
      

      10.3 df4c3d96

      2022-11-17  0:10:54 3 [ERROR] InnoDB: tried to purge non-delete-marked record in index `b` of table `test`.`t`: tuple: TUPLE (info_bits=0, 2 fields): {[4]    (0x00000000),[6]      (0x000000000200)}, record: COMPACT RECORD(info_bits=0, 2 fields): {[4]    (0x00000000),[6]      (0x000000000200)}
      mysqld: /home/jenkins/workspace/sandbox-elenst/Nightly-Build-CS/src/storage/innobase/row/row0purge.cc:599: bool row_purge_remove_sec_if_poss_leaf(purge_node_t*, dict_index_t*, const dtuple_t*): Assertion `0' failed.
       
      #7  0x00007f1da665c662 in __GI___assert_fail (assertion=0x560bc03a8a80 "0", file=0x560bc03aae00 "/home/jenkins/workspace/sandbox-elenst/Nightly-Build-CS/src/storage/innobase/row/row0purge.cc", line=599, function=0x560bc03ab940 "bool row_purge_remove_sec_if_poss_leaf(purge_node_t*, dict_index_t*, const dtuple_t*)") at assert.c:101
      #8  0x0000560bbf21d918 in row_purge_remove_sec_if_poss_leaf (node=0x61a000002508, index=0x618000048508, entry=0x619000051f08) at /home/jenkins/workspace/sandbox-elenst/Nightly-Build-CS/src/storage/innobase/row/row0purge.cc:599
      #9  0x0000560bbf21df45 in row_purge_remove_sec_if_poss (node=0x61a000002508, index=0x618000048508, entry=0x619000051f08) at /home/jenkins/workspace/sandbox-elenst/Nightly-Build-CS/src/storage/innobase/row/row0purge.cc:695
      #10 0x0000560bbf21fb37 in row_purge_upd_exist_or_extern_func (thr=0x616000006dd0, node=0x61a000002508, undo_rec=0x613000002060 "") at /home/jenkins/workspace/sandbox-elenst/Nightly-Build-CS/src/storage/innobase/row/row0purge.cc:897
      #11 0x0000560bbf223734 in row_purge_record_func (node=0x61a000002508, undo_rec=0x613000002060 "", thr=0x616000006dd0, updated_extern=false) at /home/jenkins/workspace/sandbox-elenst/Nightly-Build-CS/src/storage/innobase/row/row0purge.cc:1342
      #12 0x0000560bbf223af6 in row_purge (node=0x61a000002508, undo_rec=0x613000002060 "", thr=0x616000006dd0) at /home/jenkins/workspace/sandbox-elenst/Nightly-Build-CS/src/storage/innobase/row/row0purge.cc:1386
      #13 0x0000560bbf2240b4 in row_purge_step (thr=0x616000006dd0) at /home/jenkins/workspace/sandbox-elenst/Nightly-Build-CS/src/storage/innobase/row/row0purge.cc:1464
      #14 0x0000560bbf100937 in que_thr_step (thr=0x616000006dd0) at /home/jenkins/workspace/sandbox-elenst/Nightly-Build-CS/src/storage/innobase/que/que0que.cc:966
      #15 0x0000560bbf100d6e in que_run_threads_low (thr=0x616000006dd0) at /home/jenkins/workspace/sandbox-elenst/Nightly-Build-CS/src/storage/innobase/que/que0que.cc:1028
      #16 0x0000560bbf101194 in que_run_threads (thr=0x616000006dd0) at /home/jenkins/workspace/sandbox-elenst/Nightly-Build-CS/src/storage/innobase/que/que0que.cc:1068
      #17 0x0000560bbf2c9010 in srv_task_execute (slot=0x560bc10049b8 <srv_sys+1016>) at /home/jenkins/workspace/sandbox-elenst/Nightly-Build-CS/src/storage/innobase/srv/srv0srv.cc:2452
      #18 0x0000560bbf2c93a9 in srv_worker_thread (arg=0x0) at /home/jenkins/workspace/sandbox-elenst/Nightly-Build-CS/src/storage/innobase/srv/srv0srv.cc:2507
      #19 0x00007f1da6807ea7 in start_thread (arg=<optimized out>) at pthread_create.c:477
      #20 0x00007f1da6727aef in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
      

      10.6 ae6ebafd

      2022-11-17  0:23:22 0 [ERROR] InnoDB: tried to purge non-delete-marked record in index `b` of table `test`.`t`: tuple: TUPLE (info_bits=0, 2 fields): {[4]    (0x00000000),[6]      (0x000000000200)}, record: COMPACT RECORD(info_bits=0, 2 fields): {[4]    (0x00000000),[6]      (0x000000000200)}
      2022-11-17  0:23:22 0 [ERROR] InnoDB: Flagged corruption of `b` in table `test`.`t` in purge
      

      Attachments

        Issue Links

          Activity

            People

              marko Marko Mäkelä
              elenst Elena Stepanova
              Votes:
              0 Vote for this issue
              Watchers:
              7 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.