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

Multi-delete on table with unique blob and partitions: Failing assertion: node->pcur->rel_pos == BTR_PCUR_ON, Error 126: Index is corrupted, Assertion `bitmap_is_set(&(m_part_info->read_partitions), m_last_part)' failed

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Fixed
    • 10.3(EOL), 10.4(EOL), 10.5, 10.6, 10.7(EOL), 10.8(EOL), 10.9(EOL), 10.10(EOL), 10.11, 11.0(EOL), 11.1(EOL)
    • 10.5.9
    • None

    Description

      Notes:

      • Possibly system versioning is not necessary, but I couldn't get rid of it.
      • While the test case does not use virtual columns explicitly, it is likely to be related to a number of virtual column bugs.
      • Without partitioning the InnoDB version of test case causes the assertion failure btr_validate_index(index, 0) for which we have plenty of reports already – MDEV-20661, MDEV-20618, etc.

      With InnoDB

      --source include/have_partition.inc
      --source include/have_innodb.inc
       
      CREATE TABLE t1 (a INT) ENGINE=InnoDB;
      INSERT  INTO t1 VALUES (1),(2),(3),(4),(5),(6);
       
      CREATE TABLE t2 (f BLOB UNIQUE) ENGINE=InnoDB WITH SYSTEM VERSIONING PARTITION BY system_time INTERVAL 1 WEEK (PARTITION p1 HISTORY, PARTITION pn CURRENT);
      INSERT INTO t2 VALUES (NULL),('');
       
      DELETE t2.* FROM t1, t2;
       
      # Cleanup
      DROP TABLE t1, t2;
      

      10.4 non-debug dc22acfd

      2020-05-22 14:49:55 0x7f10b4659700  InnoDB: Assertion failure in file /data/src/10.4/storage/innobase/row/row0mysql.cc line 1855
      InnoDB: Failing assertion: node->pcur->rel_pos == BTR_PCUR_ON
       
      #6  0x0000564559da6a2f in ut_dbg_assertion_failed (expr=expr@entry=0x56455a75bc08 "node->pcur->rel_pos == BTR_PCUR_ON", file=file@entry=0x56455a75b3e0 "/data/src/10.4/storage/innobase/row/row0mysql.cc", line=line@entry=1855) at /data/src/10.4/storage/innobase/ut/ut0dbg.cc:60
      #7  0x000056455a2ad50f in row_update_for_mysql (prebuilt=0x7f105c0468c8) at /data/src/10.4/storage/innobase/row/row0mysql.cc:1855
      #8  0x000056455a1fa17a in ha_innobase::delete_row (this=0x7f105c04d320, record=0x7f105c050220 "\374") at /data/src/10.4/storage/innobase/handler/ha_innodb.cc:8921
      #9  0x000056455a07c2f7 in handler::ha_delete_row (this=0x7f105c04d320, buf=buf@entry=0x7f105c050220 "\374") at /data/src/10.4/sql/handler.cc:6814
      #10 0x000056455a50dd35 in ha_partition::delete_row (this=0x7f105c0439d0, buf=0x7f105c050220 "\374") at /data/src/10.4/sql/ha_partition.cc:4558
      #11 0x000056455a07c283 in handler::ha_delete_row (this=0x7f105c0439d0, buf=0x7f105c050220 "\374") at /data/src/10.4/sql/handler.cc:6814
      #12 0x000056455a199d87 in TABLE::delete_row (this=0x7f105c042bd8) at /data/src/10.4/sql/sql_delete.cc:289
      #13 multi_delete::send_data (this=0x7f105c011478, values=...) at /data/src/10.4/sql/sql_delete.cc:1346
      #14 0x0000564559ec4c8f in end_send (join=0x7f105c011a28, join_tab=0x7f105c0148f8, end_of_records=<optimized out>) at /data/src/10.4/sql/sql_select.cc:21555
      #15 0x0000564559ea7b9d in evaluate_join_record (join=join@entry=0x7f105c011a28, join_tab=join_tab@entry=0x7f105c014550, error=error@entry=0) at /data/src/10.4/sql/sql_select.cc:20586
      #16 0x0000564559eb5fef in sub_select (join=0x7f105c011a28, join_tab=0x7f105c014550, end_of_records=false) at /data/src/10.4/sql/sql_select.cc:20405
      #17 0x0000564559ea7b9d in evaluate_join_record (join=join@entry=0x7f105c011a28, join_tab=join_tab@entry=0x7f105c0141a8, error=error@entry=0) at /data/src/10.4/sql/sql_select.cc:20586
      #18 0x0000564559eb5fef in sub_select (join=0x7f105c011a28, join_tab=0x7f105c0141a8, end_of_records=false) at /data/src/10.4/sql/sql_select.cc:20405
      #19 0x0000564559ed636e in do_select (procedure=<optimized out>, join=0x7f105c011a28) at /data/src/10.4/sql/sql_select.cc:19904
      #20 JOIN::exec_inner (this=this@entry=0x7f105c011a28) at /data/src/10.4/sql/sql_select.cc:4459
      #21 0x0000564559ed6584 in JOIN::exec (this=this@entry=0x7f105c011a28) at /data/src/10.4/sql/sql_select.cc:4241
      #22 0x0000564559ed49d0 in mysql_select (thd=thd@entry=0x7f105c0009a8, tables=0x7f105c010598, wild_num=wild_num@entry=0, fields=..., conds=conds@entry=0x0, og_num=og_num@entry=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=3489926016, result=0x7f105c011478, unit=0x7f105c004710, select_lex=0x7f105c004f08) at /data/src/10.4/sql/sql_select.cc:4673
      #23 0x0000564559e80bba in mysql_execute_command (thd=thd@entry=0x7f105c0009a8) at /data/src/10.4/sql/sql_parse.cc:4784
      #24 0x0000564559e85ac9 in mysql_parse (thd=thd@entry=0x7f105c0009a8, rawbuf=<optimized out>, length=23, parser_state=parser_state@entry=0x7f10b46585b0, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /data/src/10.4/sql/sql_parse.cc:7900
      #25 0x0000564559e87cbf in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x7f105c0009a8, packet=packet@entry=0x7f105c007a19 "DELETE t2.* FROM t1, t2", packet_length=packet_length@entry=23, is_com_multi=is_com_multi@entry=false, is_next_command=is_next_command@entry=false) at /data/src/10.4/sql/sql_parse.cc:1842
      #26 0x0000564559e89431 in do_command (thd=0x7f105c0009a8) at /data/src/10.4/sql/sql_parse.cc:1360
      #27 0x0000564559f58c04 in do_handle_one_connection (connect=connect@entry=0x56455d07c638) at /data/src/10.4/sql/sql_connect.cc:1412
      #28 0x0000564559f58cb4 in handle_one_connection (arg=arg@entry=0x56455d07c638) at /data/src/10.4/sql/sql_connect.cc:1316
      #29 0x000056455a4fb6a4 in pfs_spawn_thread (arg=0x56455d03d208) at /data/src/10.4/storage/perfschema/pfs.cc:1869
      #30 0x00007f10bd23a4a4 in start_thread (arg=0x7f10b4659700) at pthread_create.c:456
      #31 0x00007f10bb36ed0f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97
      

      10.4 debug dc22acfd

      mysqld: /data/src/10.4/sql/ha_partition.cc:5190: virtual void ha_partition::position(const uchar*): Assertion `bitmap_is_set(&(m_part_info->read_partitions), m_last_part)' failed.
      200522 14:52:37 [ERROR] mysqld got signal 6 ;
       
      #7  0x00007f3428f6ef12 in __GI___assert_fail (assertion=0x55ddf38abfb8 "bitmap_is_set(&(m_part_info->read_partitions), m_last_part)", file=0x55ddf38aaed0 "/data/src/10.4/sql/ha_partition.cc", line=5190, function=0x55ddf38af4c0 <ha_partition::position(unsigned char const*)::__PRETTY_FUNCTION__> "virtual void ha_partition::position(const uchar*)") at assert.c:101
      #8  0x000055ddf33a2ea4 in ha_partition::position (this=0x7f33d006b348, record=0x7f33d0072d58 "\374") at /data/src/10.4/sql/ha_partition.cc:5190
      #9  0x000055ddf2d1fc9c in multi_delete::send_data (this=0x7f33d0014850, values=...) at /data/src/10.4/sql/sql_delete.cc:1333
      #10 0x000055ddf287f3b1 in end_send (join=0x7f33d0014e00, join_tab=0x7f33d0017cd0, end_of_records=false) at /data/src/10.4/sql/sql_select.cc:21555
      #11 0x000055ddf287ca43 in evaluate_join_record (join=0x7f33d0014e00, join_tab=0x7f33d0017928, error=0) at /data/src/10.4/sql/sql_select.cc:20586
      #12 0x000055ddf287c4de in sub_select (join=0x7f33d0014e00, join_tab=0x7f33d0017928, end_of_records=false) at /data/src/10.4/sql/sql_select.cc:20405
      #13 0x000055ddf287ca43 in evaluate_join_record (join=0x7f33d0014e00, join_tab=0x7f33d0017580, error=0) at /data/src/10.4/sql/sql_select.cc:20586
      #14 0x000055ddf287c4de in sub_select (join=0x7f33d0014e00, join_tab=0x7f33d0017580, end_of_records=false) at /data/src/10.4/sql/sql_select.cc:20405
      #15 0x000055ddf287b7b8 in do_select (join=0x7f33d0014e00, procedure=0x0) at /data/src/10.4/sql/sql_select.cc:19904
      #16 0x000055ddf28506a1 in JOIN::exec_inner (this=0x7f33d0014e00) at /data/src/10.4/sql/sql_select.cc:4459
      #17 0x000055ddf284f7de in JOIN::exec (this=0x7f33d0014e00) at /data/src/10.4/sql/sql_select.cc:4241
      #18 0x000055ddf2850ef3 in mysql_select (thd=0x7f33d0000af0, tables=0x7f33d0013970, wild_num=0, fields=..., conds=0x0, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=3489926016, result=0x7f33d0014850, unit=0x7f33d0004a18, select_lex=0x7f33d0005210) at /data/src/10.4/sql/sql_select.cc:4673
      #19 0x000055ddf2800f58 in mysql_execute_command (thd=0x7f33d0000af0) at /data/src/10.4/sql/sql_parse.cc:4784
      #20 0x000055ddf280b509 in mysql_parse (thd=0x7f33d0000af0, rawbuf=0x7f33d0013198 "DELETE t2.* FROM t1, t2", length=23, parser_state=0x7f341e30c570, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:7900
      #21 0x000055ddf27f7ab9 in dispatch_command (command=COM_QUERY, thd=0x7f33d0000af0, packet=0x7f33d00083a1 "DELETE t2.* FROM t1, t2", packet_length=23, is_com_multi=false, is_next_command=false) at /data/src/10.4/sql/sql_parse.cc:1842
      #22 0x000055ddf27f625b in do_command (thd=0x7f33d0000af0) at /data/src/10.4/sql/sql_parse.cc:1360
      #23 0x000055ddf297de6a in do_handle_one_connection (connect=0x55ddf6a1d210) at /data/src/10.4/sql/sql_connect.cc:1412
      #24 0x000055ddf297dbb9 in handle_one_connection (arg=0x55ddf6a1d210) at /data/src/10.4/sql/sql_connect.cc:1316
      #25 0x000055ddf337b291 in pfs_spawn_thread (arg=0x55ddf6d11590) at /data/src/10.4/storage/perfschema/pfs.cc:1869
      #26 0x00007f342aef74a4 in start_thread (arg=0x7f341e30d700) at pthread_create.c:456
      #27 0x00007f342902bd0f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97
      

      With MyISAM

      --source include/have_partition.inc
       
      CREATE TABLE t1 (a INT);
      INSERT  INTO t1 VALUES (1),(2),(3),(4),(5),(6);
       
      CREATE TABLE t2 (f BLOB UNIQUE) WITH SYSTEM VERSIONING PARTITION BY system_time INTERVAL 1 WEEK (PARTITION p1 HISTORY, PARTITION pn CURRENT);
      INSERT INTO t2 VALUES (NULL),('');
       
      DELETE t2.* FROM t1, t2;
       
      # Cleanup
      DROP TABLE t1, t2;
      

      10.4 non-debug dc22acfd

      mysqltest: At line 9: query 'DELETE t2.* FROM t1, t2' failed: 126: Index for table './test/t2#P#p1.MYI' is corrupt; try to repair it
      

      Debug assertion bitmap_is_set(&(m_part_info->read_partitions), m_last_part) fails both with InnoDB and MyISAM. Non-debug build produces an assertion failure with InnoDB and error 126 with MyISAM.

      Reproducible with 10.4, 10.5.

      Without partitioning the test cases cause the debug assertion

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              elenst Elena Stepanova
              Votes:
              0 Vote for this issue
              Watchers:
              5 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.