diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc index 24bd7001eea..19379d3f77a 100644 --- a/sql/sql_trigger.cc +++ b/sql/sql_trigger.cc @@ -396,6 +396,7 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create) bool result= TRUE; String stmt_query; bool lock_upgrade_done= FALSE; + bool backup_of_table_list_done= 0;; MDL_ticket *mdl_ticket= NULL; MDL_request mdl_request_for_trn; Query_tables_list backup; @@ -465,6 +466,7 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create) Protect the query table list from the temporary and potentially destructive changes necessary to open the trigger's table. */ + backup_of_table_list_done= 1; thd->lex->reset_n_backup_query_tables_list(&backup); /* Restore Query_tables_list::sql_command, which was @@ -634,7 +636,7 @@ end: mdl_ticket->downgrade_lock(MDL_SHARED_NO_READ_WRITE); /* Restore the query table list. Used only for drop trigger. */ - if (!create) + if (backup_of_table_list_done) thd->lex->restore_backup_query_tables_list(&backup); if (!result)