[MDEV-18017] Assertion `!index->to_be_dropped' or Failing assertion: 0 in ha_innobase::commit_inplace_alter_table upon DROP fulltext INDEX Created: 2018-12-15  Updated: 2022-01-06  Resolved: 2022-01-06

Status: Closed
Project: MariaDB Server
Component/s: Data Definition - Alter Table, Full-text Search, Storage Engine - InnoDB
Affects Version/s: 10.0, 10.1, 10.2, 10.3, 10.4
Fix Version/s: 10.1.38, 10.0.38, 10.2.22, 10.3.13

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Unassigned
Resolution: Duplicate Votes: 0
Labels: None

Issue Links:
Relates
relates to MDEV-18016 Assertion failure in dict_table_check... Closed
relates to MDEV-15329 [Draft] InnoDB: Assertion failure in ... Closed
relates to MDEV-18020 Failing assertion: !prebuilt->trx->ch... Closed

 Description   

--source include/have_innodb.inc
 
CREATE TABLE t1 (a VARCHAR(255), KEY(a)) ENGINE=InnoDB;
CREATE TABLE t2 (b VARCHAR(255), FOREIGN KEY (b) REFERENCES t1(a)) ENGINE=InnoDB;
 
ALTER TABLE t2 ADD FULLTEXT INDEX ft(b);
ALTER TABLE t2 DROP INDEX ft;
 
# Cleanup
DROP TABLE t2, t1;

On 10.2+

10.2 975f4a1295f debug

mysqld: /data/src/10.2/storage/innobase/handler/handler0alter.cc:9164: virtual bool ha_innobase::commit_inplace_alter_table(TABLE*, Alter_inplace_info*, bool): Assertion `!index->to_be_dropped' failed.
181224 14:57:50 [ERROR] mysqld got signal 6 ;
 
#7  0x00007f9d6de08ee2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
#8  0x00005584516e08a0 in ha_innobase::commit_inplace_alter_table (this=0x7f9d1c1389a8, altered_table=0x7f9d1c05e3a0, ha_alter_info=0x7f9d680e1610, commit=true) at /data/src/10.2/storage/innobase/handler/handler0alter.cc:9164
#9  0x000055845139336b in handler::ha_commit_inplace_alter_table (this=0x7f9d1c1389a8, altered_table=0x7f9d1c05e3a0, ha_alter_info=0x7f9d680e1610, commit=true) at /data/src/10.2/sql/handler.cc:4231
#10 0x00005584511e102e in mysql_inplace_alter_table (thd=0x7f9d1c000b00, table_list=0x7f9d1c012530, table=0x7f9d1c1353a0, altered_table=0x7f9d1c05e3a0, ha_alter_info=0x7f9d680e1610, inplace_supported=HA_ALTER_INPLACE_NO_LOCK_AFTER_PREPARE, target_mdl_request=0x7f9d680e1680, alter_ctx=0x7f9d680e2240) at /data/src/10.2/sql/sql_table.cc:7391
#11 0x00005584511e656f in mysql_alter_table (thd=0x7f9d1c000b00, new_db=0x7f9d1c012b40 "test", new_name=0x0, create_info=0x7f9d680e2e50, table_list=0x7f9d1c012530, alter_info=0x7f9d680e2da0, order_num=0, order=0x0, ignore=false) at /data/src/10.2/sql/sql_table.cc:9392
#12 0x00005584512618d3 in Sql_cmd_alter_table::execute (this=0x7f9d1c012b70, thd=0x7f9d1c000b00) at /data/src/10.2/sql/sql_alter.cc:329
#13 0x0000558451118995 in mysql_execute_command (thd=0x7f9d1c000b00) at /data/src/10.2/sql/sql_parse.cc:6227
#14 0x000055845111d7f7 in mysql_parse (thd=0x7f9d1c000b00, rawbuf=0x7f9d1c012448 "ALTER TABLE t2 DROP INDEX ft", length=28, parser_state=0x7f9d680e4200, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:8014
#15 0x000055845110b12f in dispatch_command (command=COM_QUERY, thd=0x7f9d1c000b00, packet=0x7f9d1c096261 "ALTER TABLE t2 DROP INDEX ft", packet_length=28, is_com_multi=false, is_next_command=false) at /data/src/10.2/sql/sql_parse.cc:1825
#16 0x0000558451109a92 in do_command (thd=0x7f9d1c000b00) at /data/src/10.2/sql/sql_parse.cc:1379
#17 0x000055845125c569 in do_handle_one_connection (connect=0x5584545abdf0) at /data/src/10.2/sql/sql_connect.cc:1335
#18 0x000055845125c2f6 in handle_one_connection (arg=0x5584545abdf0) at /data/src/10.2/sql/sql_connect.cc:1241
#19 0x0000558451682230 in pfs_spawn_thread (arg=0x5584544f21f0) at /data/src/10.2/storage/perfschema/pfs.cc:1862
#20 0x00007f9d6f8c4494 in start_thread (arg=0x7f9d680e5700) at pthread_create.c:333
#21 0x00007f9d6dec593f in clone () from /lib/x86_64-linux-gnu/libc.so.6

10.2 975f4a1295f non-debug

2018-12-24 14:58:36 139942253704960 [ERROR] InnoDB: Table test/t2 contains 1 indexes inside InnoDB, which is different from the number of indexes 0 defined in the MariaDB  Have you mixed up .frm files from different installations? See http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html

On 10.0, 10.1

10.0 8634f7e5285 debug

181224 15:00:04 [ERROR] InnoDB: dict_load_foreigns() returned 38 for ALTER TABLE t2 ADD FULLTEXT INDEX ft(b)
2018-12-24 15:00:04 7f7237896700  InnoDB: Assertion failure in thread 140128534750976 in file handler0alter.cc line 6031
InnoDB: Failing assertion: 0
 
#5  0x00007f72357d93fa in abort () from /lib/x86_64-linux-gnu/libc.so.6
#6  0x00007f722df6a464 in ha_innodb::commit_inplace_alter_table (this=0x7f722147e888, altered_table=0x7f72215c4070, ha_alter_info=0x7f7237893220, commit=true) at /data/src/10.0/storage/innobase/handler/handler0alter.cc:6031
#7  0x0000000000845121 in handler::ha_commit_inplace_alter_table (this=0x7f722147e888, altered_table=0x7f72215c4070, ha_alter_info=0x7f7237893220, commit=true) at /data/src/10.0/sql/handler.cc:4228
#8  0x00000000007029ba in mysql_inplace_alter_table (thd=0x7f7229b69070, table_list=0x7f72214f8180, table=0x7f722149e470, altered_table=0x7f72215c4070, ha_alter_info=0x7f7237893220, inplace_supported=HA_ALTER_INPLACE_SHARED_LOCK_AFTER_PREPARE, target_mdl_request=0x7f7237892c70, alter_ctx=0x7f7237893800) at /data/src/10.0/sql/sql_table.cc:7176
#9  0x0000000000706ff0 in mysql_alter_table (thd=0x7f7229b69070, new_db=0x7f72214f8760 "test", new_name=0x0, create_info=0x7f72378944e0, table_list=0x7f72214f8180, alter_info=0x7f7237894450, order_num=0, order=0x0, ignore=false) at /data/src/10.0/sql/sql_table.cc:8982
#10 0x0000000000770355 in Sql_cmd_alter_table::execute (this=0x7f72214f8830, thd=0x7f7229b69070) at /data/src/10.0/sql/sql_alter.cc:312
#11 0x0000000000654d1b in mysql_execute_command (thd=0x7f7229b69070) at /data/src/10.0/sql/sql_parse.cc:5125
#12 0x0000000000658372 in mysql_parse (thd=0x7f7229b69070, rawbuf=0x7f72214f8088 "ALTER TABLE t2 ADD FULLTEXT INDEX ft(b)", length=39, parser_state=0x7f7237895640) at /data/src/10.0/sql/sql_parse.cc:6644
#13 0x000000000064ac2c in dispatch_command (command=COM_QUERY, thd=0x7f7229b69070, packet=0x7f722f5ef071 "ALTER TABLE t2 ADD FULLTEXT INDEX ft(b)", packet_length=39) at /data/src/10.0/sql/sql_parse.cc:1301
#14 0x0000000000649f20 in do_command (thd=0x7f7229b69070) at /data/src/10.0/sql/sql_parse.cc:1003
#15 0x000000000076baa8 in do_handle_one_connection (thd_arg=0x7f7229b69070) at /data/src/10.0/sql/sql_connect.cc:1377
#16 0x000000000076b81a in handle_one_connection (arg=0x7f7229b69070) at /data/src/10.0/sql/sql_connect.cc:1292
#17 0x0000000000acd6de in pfs_spawn_thread (arg=0x7f7229b19670) at /data/src/10.0/storage/perfschema/pfs.cc:1861
#18 0x00007f72374d4494 in start_thread (arg=0x7f7237896700) at pthread_create.c:333
#19 0x00007f723588d93f in clone () from /lib/x86_64-linux-gnu/libc.so.6



 Comments   
Comment by Elena Stepanova [ 2022-01-06 ]

It was fixed along with MDEV-18016

commit 1522ee2949ae304ad9092894896a6272dc08bb39
Author: Marko Mäkelä
Date:   Tue Jan 29 15:00:41 2019 +0200
 
    MDEV-18016: Assertion failure on ALTER TABLE after foreign_key_checks=0
    
    ha_innobase::commit_inplace_alter_table(): Do not crash if

Generated at Thu Feb 08 08:40:52 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.