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

Assertion `share->reopen == 1' failed in maria_extra upon ALTER on Aria table with triggers and locks

Details

    Description

      CREATE TABLE t1 (a INT) ENGINE=Aria;
      CREATE TRIGGER tr BEFORE INSERT ON t1 FOR EACH ROW INSERT INTO t1 SELECT * FROM t1; 
      LOCK TABLE t1 WRITE;
      ALTER TABLE t1 FORCE, LOCK=EXCLUSIVE;
       
      # Cleanup
      DROP TABLE t1;
      

      10.0 cd0734d6bde debug

      mysqld: /data/src/10.0/storage/maria/ma_extra.c:289: maria_extra: Assertion `share->reopen == 1' failed.
      181031  1:09:36 [ERROR] mysqld got signal 6 ;
       
      #7  0x00007fb24db46ee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
      #8  0x0000000000a2f5f3 in maria_extra (info=0x7fb246129070, function=HA_EXTRA_FORCE_REOPEN, extra_arg=0x0) at /data/src/10.0/storage/maria/ma_extra.c:289
      #9  0x00000000009ef883 in ha_maria::extra (this=0x7fb24607e888, operation=HA_EXTRA_FORCE_REOPEN) at /data/src/10.0/storage/maria/ha_maria.cc:2609
      #10 0x00000000005eadb6 in wait_while_table_is_used (thd=0x7fb247aa2070, table=0x7fb24609fc70, function=HA_EXTRA_FORCE_REOPEN) at /data/src/10.0/sql/sql_base.cc:1844
      #11 0x000000000070674b in mysql_alter_table (thd=0x7fb247aa2070, new_db=0x7fb2460fa760 "test", new_name=0x0, create_info=0x7fb24fc154e0, table_list=0x7fb2460fa180, alter_info=0x7fb24fc15450, order_num=0, order=0x0, ignore=false) at /data/src/10.0/sql/sql_table.cc:9016
      #12 0x000000000076f695 in Sql_cmd_alter_table::execute (this=0x7fb2460fa778, thd=0x7fb247aa2070) at /data/src/10.0/sql/sql_alter.cc:312
      #13 0x0000000000654436 in mysql_execute_command (thd=0x7fb247aa2070) at /data/src/10.0/sql/sql_parse.cc:5118
      #14 0x0000000000657a8c in mysql_parse (thd=0x7fb247aa2070, rawbuf=0x7fb2460fa088 "ALTER TABLE t1 FORCE, LOCK=EXCLUSIVE", length=36, parser_state=0x7fb24fc16640) at /data/src/10.0/sql/sql_parse.cc:6637
      #15 0x000000000064a3ac in dispatch_command (command=COM_QUERY, thd=0x7fb247aa2070, packet=0x7fb248fe5071 "ALTER TABLE t1 FORCE, LOCK=EXCLUSIVE", packet_length=36) at /data/src/10.0/sql/sql_parse.cc:1300
      #16 0x00000000006496ac in do_command (thd=0x7fb247aa2070) at /data/src/10.0/sql/sql_parse.cc:1003
      #17 0x000000000076ade8 in do_handle_one_connection (thd_arg=0x7fb247aa2070) at /data/src/10.0/sql/sql_connect.cc:1377
      #18 0x000000000076ab5a in handle_one_connection (arg=0x7fb247aa2070) at /data/src/10.0/sql/sql_connect.cc:1292
      #19 0x0000000000acc902 in pfs_spawn_thread (arg=0x7fb2479a2370) at /data/src/10.0/storage/perfschema/pfs.cc:1861
      #20 0x00007fb24f84a494 in start_thread (arg=0x7fb24fc17700) at pthread_create.c:333
      #21 0x00007fb24dc0393f in clone () from /lib/x86_64-linux-gnu/libc.so.6
      

      No visible effect on a non-debug build.

      Attachments

        Activity

          The problem was that the code in maria_extra assumed that there could be
          only one table open when doing maria_extra(MA_FORCE_REOPEN)
          However in the case of triggers, there can be multiple copies of the table open.

          This problem only affected debug builds. Fixed by removing assert.

          monty Michael Widenius added a comment - The problem was that the code in maria_extra assumed that there could be only one table open when doing maria_extra(MA_FORCE_REOPEN) However in the case of triggers, there can be multiple copies of the table open. This problem only affected debug builds. Fixed by removing assert.

          People

            monty Michael Widenius
            elenst Elena Stepanova
            Votes:
            0 Vote for this issue
            Watchers:
            2 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.