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

Assertion `!fts_index' failed in prepare_inplace_alter_table_dict

Details

    Description

      --source include/have_innodb.inc
       
      CREATE TABLE t1 (a VARCHAR(8), b VARCHAR(8)) ENGINE=InnoDB;
      ALTER TABLE t1 ADD FULLTEXT(b), ADD FULLTEXT(a);
       
      # Cleanup
      DROP TABLE t1;
      

      10.3 34f2f4fa431893db5550

      mysqld: /data/src/10.3/storage/innobase/handler/handler0alter.cc:5423: bool prepare_inplace_alter_table_dict(Alter_inplace_info*, const TABLE*, const TABLE*, const char*, ulint, ulint, ulint, bool, bool): Assertion `!fts_index' failed.
      171216  3:21:29 [ERROR] mysqld got signal 6 ;
       
      #7  0x00007f21c8457ee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
      #8  0x00005621228fb85f in prepare_inplace_alter_table_dict (ha_alter_info=0x7f21c0056520, altered_table=0x7f2170168e40, old_table=0x7f21700da2c0, table_name=0x7f217000e035 "t1", flags=33, flags2=94, fts_doc_id_col=2, add_fts_doc_id=true, add_fts_doc_id_idx=true) at /data/src/10.3/storage/innobase/handler/handler0alter.cc:5423
      #9  0x00005621228ffba9 in ha_innobase::prepare_inplace_alter_table (this=0x7f217000c988, altered_table=0x7f2170168e40, ha_alter_info=0x7f21c0056520) at /data/src/10.3/storage/innobase/handler/handler0alter.cc:6842
      #10 0x00005621225989bb in handler::ha_prepare_inplace_alter_table (this=0x7f217000c988, altered_table=0x7f2170168e40, ha_alter_info=0x7f21c0056520) at /data/src/10.3/sql/handler.cc:4231
      #11 0x0000562122397b0c in mysql_inplace_alter_table (thd=0x7f2170000b00, table_list=0x7f2170014c60, table=0x7f21700da2c0, altered_table=0x7f2170168e40, ha_alter_info=0x7f21c0056520, inplace_supported=HA_ALTER_INPLACE_SHARED_LOCK_AFTER_PREPARE, target_mdl_request=0x7f21c0056590, alter_ctx=0x7f21c0057150) at /data/src/10.3/sql/sql_table.cc:7357
      #12 0x000056212239d10b in mysql_alter_table (thd=0x7f2170000b00, new_db=0x7f2170015270 "test", new_name=0x0, create_info=0x7f21c0057d60, table_list=0x7f2170014c60, alter_info=0x7f21c0057cb0, order_num=0, order=0x0, ignore=false) at /data/src/10.3/sql/sql_table.cc:9395
      #13 0x000056212241d5c7 in Sql_cmd_alter_table::execute (this=0x7f21700153f8, thd=0x7f2170000b00) at /data/src/10.3/sql/sql_alter.cc:331
      #14 0x00005621222cda6d in mysql_execute_command (thd=0x7f2170000b00) at /data/src/10.3/sql/sql_parse.cc:6248
      #15 0x00005621222d247e in mysql_parse (thd=0x7f2170000b00, rawbuf=0x7f2170014b58 "ALTER TABLE t1 ADD FULLTEXT(b), ADD FULLTEXT(a)", length=47, parser_state=0x7f21c0059610, is_com_multi=false, is_next_command=false) at /data/src/10.3/sql/sql_parse.cc:7963
      #16 0x00005621222bfe11 in dispatch_command (command=COM_QUERY, thd=0x7f2170000b00, packet=0x7f2170160d01 "ALTER TABLE t1 ADD FULLTEXT(b), ADD FULLTEXT(a)", packet_length=47, is_com_multi=false, is_next_command=false) at /data/src/10.3/sql/sql_parse.cc:1825
      #17 0x00005621222be845 in do_command (thd=0x7f2170000b00) at /data/src/10.3/sql/sql_parse.cc:1370
      #18 0x0000562122418140 in do_handle_one_connection (connect=0x562124f230d0) at /data/src/10.3/sql/sql_connect.cc:1420
      #19 0x0000562122417ecd in handle_one_connection (arg=0x562124f230d0) at /data/src/10.3/sql/sql_connect.cc:1326
      #20 0x00005621228a05c6 in pfs_spawn_thread (arg=0x562124f3fce0) at /data/src/10.3/storage/perfschema/pfs.cc:1863
      #21 0x00007f21ca12e494 in start_thread (arg=0x7f21c005a700) at pthread_create.c:333
      #22 0x00007f21c851493f in clone () from /lib/x86_64-linux-gnu/libc.so.6
      

      Attachments

        Activity

          In 10.2, the following error message is issued as expected:

          mysqltest: At line 3: query 'ALTER TABLE t1 ADD FULLTEXT(b), ADD FULLTEXT(a)' failed: 1795: InnoDB presently supports one FULLTEXT index creation at a time

          marko Marko Mäkelä added a comment - In 10.2, the following error message is issued as expected: mysqltest: At line 3: query 'ALTER TABLE t1 ADD FULLTEXT(b), ADD FULLTEXT(a)' failed: 1795: InnoDB presently supports one FULLTEXT index creation at a time

          Actually, in MariaDB 10.0 to 10.2, the above error (which comes from logic that was inherited from MySQL 5.6 and 5.7) is wrong, and it occurs because the limitation is being enforced too late, after ALGORITHM=INPLACE has already been chosen.
          Earlier MariaDB 10.x versions as well as upstream would fall back to ALGORITHM=COPY for rebuilding a table that contains multiple fulltext indexes, but not when the ALTER TABLE statement explicitly specifies multiple ADD FULLTEXT INDEX clauses. MariaDB 10.3.4 will correct this.

          marko Marko Mäkelä added a comment - Actually, in MariaDB 10.0 to 10.2, the above error (which comes from logic that was inherited from MySQL 5.6 and 5.7) is wrong, and it occurs because the limitation is being enforced too late, after ALGORITHM=INPLACE has already been chosen. Earlier MariaDB 10.x versions as well as upstream would fall back to ALGORITHM=COPY for rebuilding a table that contains multiple fulltext indexes, but not when the ALTER TABLE statement explicitly specifies multiple ADD FULLTEXT INDEX  clauses. MariaDB 10.3.4 will correct this.

          People

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