From 1fff2398ef3dda1a7e8404f18e4e165823bd4e0a Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Wed, 19 May 2021 22:26:02 +0200 Subject: [PATCH] MDEV-22530 Aborting OPTIMIZE TABLE still logs in binary log and replicates to the Slave server Followup. If the KILL happens - report it as a failure, don't eat it up silently. Note that this has to be done after `table_name` is populated, so that the error message could show it. --- sql/sql_admin.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sql/sql_admin.cc b/sql/sql_admin.cc index c7d83676cc4..65985be3bd6 100644 --- a/sql/sql_admin.cc +++ b/sql/sql_admin.cc @@ -588,8 +588,6 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables, DBUG_PRINT("admin", ("table: '%s'.'%s'", db, table->table_name.str)); DEBUG_SYNC(thd, "admin_command_kill_before_modify"); - if (thd->is_killed()) - break; table_name.length= strxmov(table_name_buff, db, ".", table->table_name.str, NullS) - table_name_buff; thd->open_options|= extra_open_options; @@ -605,6 +603,13 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables, : lock_type >= TL_FIRST_WRITE ? MDL_SHARED_WRITE : MDL_SHARED_READ); + if (thd->check_killed()) + { + fatal_error= true; + result_code= HA_ADMIN_FAILED; + goto send_result; + } + /* open only one table from local list of command */ while (1) {