Details
-
Bug
-
Status: Open (View Workflow)
-
Major
-
Resolution: Unresolved
-
12.3
-
None
Description
The following script:
let $MYSQLD_DATADIR= `select @@datadir`;
|
|
|
CREATE DATABASE `#mysql50#a@b`;
|
USE `#mysql50#a@b`;
|
|
|
CREATE TABLE `#mysql50#c@d` (a INT);
|
CREATE TABLE t1 (a INT);
|
|
|
--write_file $MYSQLD_DATADIR/a@b/c@d.TRG
|
TYPE=TRIGGERS
|
EOF
|
|
|
--write_file $MYSQLD_DATADIR/a@b/t1.TRG
|
EOF
|
|
|
--exec $MYSQL_CHECK --fix-db-names --fix-table-names '#mysql50#a@b'
|
leads to an assertion failure:
[ERROR] Invalid (old?) table or database name 'c@d'
|
mariadbd: /src/mariadb/sql/sql_trigger.cc:2614: static bool Table_triggers_list::change_table_name(THD*, TRIGGER_RENAME_PARAM*, const LEX_CSTRING*, const LEX_CSTRING*, const LEX_CSTRING*, const LEX_CSTRING*, const LEX_CSTRING*): Assertion `!param->got_error' failed.
|
with the following stacktrace:
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=6, no_tid=0) at ./nptl/pthread_kill.c:44
|
#1 __pthread_kill_internal (threadid=<optimized out>, signo=6) at ./nptl/pthread_kill.c:89
|
#2 __GI___pthread_kill (threadid=<optimized out>, signo=6) at ./nptl/pthread_kill.c:100
|
#3 0x00005f2fa29b1d79 in my_write_core (sig=6) at /src/mariadb/mysys/stacktrace.c:424
|
#4 0x00005f2f9f714ac2 in handle_fatal_signal (sig=6) at /src/mariadb/sql/signal_handler.cc:298
|
#5 <signal handler called>
|
#6 __pthread_kill_implementation (threadid=<optimized out>, signo=6, no_tid=0) at ./nptl/pthread_kill.c:44
|
#7 __pthread_kill_internal (threadid=<optimized out>, signo=6) at ./nptl/pthread_kill.c:89
|
#8 __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=6) at ./nptl/pthread_kill.c:100
|
#9 0x00007efb2a845e2e in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
|
#10 0x00007efb2a828888 in __GI_abort () at ./stdlib/abort.c:77
|
#11 0x00007efb2a8287f0 in __assert_fail_base (fmt=<optimized out>, assertion=<optimized out>, file=<optimized out>, line=<optimized out>, function=<optimized out>) at ./assert/assert.c:118
|
#12 0x00005f2f9e3322f3 in Table_triggers_list::change_table_name (thd=0x7dbb29ad0218, param=0x7afb17d113d0, db=0x7afb17d110b0, old_alias=0x7afb17d11050, old_table=0x7afb17d11070, new_db=0x7afb17d11090, new_table=0x7afb17d11030) at /src/mariadb/sql/sql_trigger.cc:2614
|
#13 0x00005f2f9e3cff8d in rename_triggers (thd=0x7dbb29ad0218, ddl_log_entry=0x7afb17a276c0, swap_tables=false) at /src/mariadb/sql/ddl_log.cc:1272
|
#14 0x00005f2f9e3d33c5 in ddl_log_execute_action (thd=0x7dbb29ad0218, mem_root=0x7afb17a27660, ddl_log_entry=0x7afb17a276c0) at /src/mariadb/sql/ddl_log.cc:1501
|
#15 0x00005f2f9e3dee91 in ddl_log_execute_entry_no_lock (thd=0x7dbb29ad0218, first_entry=1) at /src/mariadb/sql/ddl_log.cc:2456
|
#16 0x00005f2f9e3e3e99 in ddl_log_revert (thd=0x7dbb29ad0218, state=0x7afb17903340) at /src/mariadb/sql/ddl_log.cc:2988
|
#17 0x00005f2f9dc63425 in mysql_rename_tables (thd=0x7dbb29ad0218, table_list=0x7dcb29d00438, silent=true, if_exists=false) at /src/mariadb/sql/sql_rename.cc:212
|
#18 0x00005f2f9d6e9aaf in mysql_upgrade_db (thd=0x7dbb29ad0218, old_db=...) at /src/mariadb/sql/sql_db.cc:2021
|
#19 0x00005f2f9da950c4 in mysql_execute_command (thd=0x7dbb29ad0218, is_called_from_prepared_stmt=false) at /src/mariadb/sql/sql_parse.cc:5075
|
#20 0x00005f2f9dacf30c in mysql_parse (thd=0x7dbb29ad0218, rawbuf=0x7c8b29a40670 "ALTER DATABASE `#mysql50#a@b` UPGRADE DATA DIRECTORY NAME", length=57, parser_state=0x7afb17dff170) at /src/mariadb/sql/sql_parse.cc:7895
|
#21 0x00005f2f9da4b686 in dispatch_command (command=COM_QUERY, thd=0x7dbb29ad0218, packet=0x7d8b29c9c219 "ALTER DATABASE `#mysql50#a@b` UPGRADE DATA DIRECTORY NAME", packet_length=57, blocking=true) at /src/mariadb/sql/sql_parse.cc:1878
|
#22 0x00005f2f9da3f6e4 in do_command (thd=0x7dbb29ad0218, blocking=true) at /src/mariadb/sql/sql_parse.cc:1417
|
#23 0x00005f2f9e73ba2b in do_handle_one_connection (connect=0x7b7b299e4638, put_in_cache=true) at /src/mariadb/sql/sql_connect.cc:1503
|
#24 0x00005f2f9e73aaba in handle_one_connection (arg=0x7b7b299e4638) at /src/mariadb/sql/sql_connect.cc:1415
|
#25 0x00005f2fa0f0f710 in pfs_spawn_thread (arg=0x7c6b299e7418) at /src/mariadb/storage/perfschema/pfs.cc:2198
|
#26 0x00007efb2c25f803 in asan_thread_start (arg=0x7afb18d01000) at ../../../../src/libsanitizer/asan/asan_interceptors.cpp:239
|
#27 0x00007efb2a8a3d64 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:448
|
#28 0x00007efb2a9373bc in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
|
afaik this happens because Table_triggers_list::change_table_name(..) in sql/ddl_log.cc:1272 doesn't account for result of Table_triggers_list::prepare_for_rename (which fails)
reproduced on main(e85bc65918)
Attachments
Issue Links
- relates to
-
MDEV-27027 Atomic DDL: Assertion `!param->got_error' failed upon unsuccessful multi-RENAME TABLE
-
- Closed
-
-
MDEV-36484 Atomic DDL: Assertion `!param->got_error' failed upon unsuccessful multi-RENAME TABLE
-
- Closed
-