diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 3471297ac7d72..36fc0c1000591 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -4420,10 +4420,9 @@ handle_table(THD *thd, Query_tables_list *prelocking_ctx, { if (table_list->table->triggers) { - *need_prelocking= TRUE; if (table_list->table->triggers-> - add_tables_and_routines_for_triggers(thd, prelocking_ctx, table_list)) + add_tables_and_routines_for_triggers(thd, prelocking_ctx, table_list,need_prelocking)) return TRUE; } if (table_list->table->file->referenced_by_foreign_key()) diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc index 52817ef65ae33..a300db1cd0618 100644 --- a/sql/sql_trigger.cc +++ b/sql/sql_trigger.cc @@ -2237,7 +2237,7 @@ bool Table_triggers_list:: add_tables_and_routines_for_triggers(THD *thd, Query_tables_list *prelocking_ctx, - TABLE_LIST *table_list) + TABLE_LIST *table_list,bool *need_prelocking) { DBUG_ASSERT(static_cast(table_list->lock_type) >= static_cast(TL_WRITE_ALLOW_WRITE)); @@ -2253,6 +2253,7 @@ add_tables_and_routines_for_triggers(THD *thd, for ( ; triggers ; triggers= triggers->next) { + *need_prelocking = TRUE; sp_head *trigger= triggers->body; if (!triggers->body) // Parse error diff --git a/sql/sql_trigger.h b/sql/sql_trigger.h index e2e6e1b7acc63..f472c417aec62 100644 --- a/sql/sql_trigger.h +++ b/sql/sql_trigger.h @@ -269,7 +269,7 @@ class Table_triggers_list: public Sql_alloc bool add_tables_and_routines_for_triggers(THD *thd, Query_tables_list *prelocking_ctx, - TABLE_LIST *table_list); + TABLE_LIST *table_list,bool *need_prelocking); Field **nullable_fields() { return record0_field; } void reset_extra_null_bitmap()