Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.6, 10.7(EOL), 10.8(EOL), 10.9(EOL), 10.10(EOL), 10.11
Description
CREATE DATABASE t; # Any database name |
CREATE TABLE t.FTS_1 (c INT) ENGINE=InnoDB; |
DROP DATABASE t; |
Leads to:
10.11.1 50c5743adc87e1cdec1431a02558f6540fe5a6d5 (Debug) |
mysqld: /test/10.11_dbg/storage/innobase/dict/drop.cc:270: void trx_t::commit(std::vector<pfs_os_file_t>&): Assertion `!strstr(table->name.m_name, "/FTS_") || purge_sys.must_wait_FTS()' failed.
|
10.11.1 50c5743adc87e1cdec1431a02558f6540fe5a6d5 (Debug) |
Core was generated by `/test/MD221022-mariadb-10.11.1-linux-x86_64-dbg/bin/mysqld --no-defaults --core'.
|
Program terminated with signal SIGABRT, Aborted.
|
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
|
[Current thread is 1 (Thread 0x147bf41ae700 (LWP 533632))]
|
(gdb) bt
|
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
|
#1 0x0000147c27152859 in __GI_abort () at abort.c:79
|
#2 0x0000147c27152729 in __assert_fail_base (fmt=0x147c272e8588 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x55ef32f11b90 "!strstr(table->name.m_name, \"/FTS_\") || purge_sys.must_wait_FTS()", file=0x55ef32f11948 "/test/10.11_dbg/storage/innobase/dict/drop.cc", line=270, function=<optimized out>) at assert.c:92
|
#3 0x0000147c27163fd6 in __GI___assert_fail (assertion=assertion@entry=0x55ef32f11b90 "!strstr(table->name.m_name, \"/FTS_\") || purge_sys.must_wait_FTS()", file=file@entry=0x55ef32f11948 "/test/10.11_dbg/storage/innobase/dict/drop.cc", line=line@entry=270, function=function@entry=0x55ef32f11b60 "void trx_t::commit(std::vector<pfs_os_file_t>&)") at assert.c:101
|
#4 0x000055ef329e66c6 in trx_t::commit (this=this@entry=0x147c1e9ed680, deleted=std::vector of length 0, capacity 0) at /usr/include/c++/9/bits/atomic_base.h:413
|
#5 0x000055ef326cc483 in ha_innobase::delete_table (this=<optimized out>, name=<optimized out>) at /test/10.11_dbg/storage/innobase/handler/ha_innodb.cc:13734
|
#6 0x000055ef323bec30 in hton_drop_table (hton=<optimized out>, path=<optimized out>) at /test/10.11_dbg/sql/handler.cc:576
|
#7 0x000055ef323c64d7 in ha_delete_table (thd=thd@entry=0x147b5c000d48, hton=hton@entry=0x55ef345e5db8, path=path@entry=0x147bf41abf10 "./t/FTS_1", db=db@entry=0x147bf41abd00, alias=alias@entry=0x147bf41abd10, generate_warning=generate_warning@entry=false) at /test/10.11_dbg/sql/handler.cc:3118
|
#8 0x000055ef321a6094 in mysql_rm_table_no_locks (thd=thd@entry=0x147b5c000d48, tables=tables@entry=0x147b5c0132c8, current_db=current_db@entry=0x147bf41ac410, ddl_log_state=ddl_log_state@entry=0x147bf41ac430, if_exists=if_exists@entry=true, drop_temporary=drop_temporary@entry=false, drop_view=true, drop_sequence=false, dont_log_query=true, dont_free_locks=false) at /test/10.11_dbg/sql/sql_table.cc:1680
|
#9 0x000055ef32084543 in mysql_rm_db_internal (thd=0x147b5c000d48, db=0x147b5c005c60, if_exists=<optimized out>, silent=silent@entry=false) at /test/10.11_dbg/sql/sql_db.cc:1124
|
#10 0x000055ef32084dd9 in mysql_rm_db (thd=thd@entry=0x147b5c000d48, db=db@entry=0x147b5c005c60, if_exists=<optimized out>) at /test/10.11_dbg/sql/sql_db.cc:1310
|
#11 0x000055ef320e3017 in mysql_execute_command (thd=thd@entry=0x147b5c000d48, is_called_from_prepared_stmt=is_called_from_prepared_stmt@entry=false) at /test/10.11_dbg/sql/structs.h:569
|
#12 0x000055ef320cdf90 in mysql_parse (thd=thd@entry=0x147b5c000d48, rawbuf=<optimized out>, length=<optimized out>, parser_state=parser_state@entry=0x147bf41ad300) at /test/10.11_dbg/sql/sql_parse.cc:8023
|
#13 0x000055ef320db4ac in dispatch_command (command=command@entry=COM_QUERY, thd=thd@entry=0x147b5c000d48, packet=packet@entry=0x147b5c00af09 "DROP DATABASE t", packet_length=packet_length@entry=15, blocking=blocking@entry=true) at /test/10.11_dbg/sql/sql_class.h:1346
|
#14 0x000055ef320dd8f4 in do_command (thd=0x147b5c000d48, blocking=blocking@entry=true) at /test/10.11_dbg/sql/sql_parse.cc:1407
|
#15 0x000055ef3223a067 in do_handle_one_connection (connect=<optimized out>, connect@entry=0x55ef349b20a8, put_in_cache=put_in_cache@entry=true) at /test/10.11_dbg/sql/sql_connect.cc:1416
|
#16 0x000055ef3223a536 in handle_one_connection (arg=0x55ef349b20a8) at /test/10.11_dbg/sql/sql_connect.cc:1318
|
#17 0x0000147c27663609 in start_thread (arg=<optimized out>) at pthread_create.c:477
|
#18 0x0000147c2724f133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
|
Bug confirmed present in:
MariaDB: 10.6.10 (dbg), 10.7.6 (dbg), 10.8.5 (dbg), 10.9.3 (dbg), 10.10.2 (dbg), 10.11.1 (dbg)
Bug (or feature/syntax) confirmed not present in:
MariaDB: 10.3.37 (dbg), 10.3.37 (opt), 10.4.27 (dbg), 10.4.27 (opt), 10.5.18 (dbg), 10.5.18 (opt), 10.6.10 (opt), 10.7.6 (opt), 10.8.5 (opt), 10.9.3 (opt), 10.10.2 (opt), 10.11.1 (opt)
MySQL: 5.5.62 (dbg), 5.5.62 (opt), 5.6.51 (dbg), 5.6.51 (opt), 5.7.38 (dbg), 5.7.38 (opt), 8.0.29 (dbg), 8.0.29 (opt)
In this case, the debug assertion is bogus. The purpose of the assertion is to catch trouble that could originate from
MDEV-25506.We suffer from an unfortunate design decision that was made in MySQL: the internal table names used for fulltext indexes are in the same name space and indistinguishable from user-created table names. We could make the assertion stricter so that it accepts only exactly the type of names that are being created for fulltext indexes, but even then, it would be possible to create InnoDB tables with such names.