mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Patch for Bug#11765684 (58674: SP-cache does not detect changes in
pre-locking list caused by triggers). The thing is that CREATE TRIGGER / DROP TRIGGER may actually change pre-locking list of (some) stored routines. The SP-cache does not detect such changes. Thus if sp_head-instance is cached in SP-cache, subsequent executions of the cached sp_head will use inaccurate pre-locking list. The patch is to invalidate SP-cache on CREATE TRIGGER / DROP TRIGGER.
This commit is contained in:
@ -30,6 +30,7 @@
|
||||
#include "sql_db.h" // get_default_db_collation
|
||||
#include "sql_acl.h" // *_ACL, is_acl_user
|
||||
#include "sql_handler.h" // mysql_ha_rm_tables
|
||||
#include "sp_cache.h" // sp_invalidate_cache
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
@ -517,6 +518,12 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create)
|
||||
*/
|
||||
thd->locked_tables_list.reopen_tables(thd);
|
||||
|
||||
/*
|
||||
Invalidate SP-cache. That's needed because triggers may change list of
|
||||
pre-locking tables.
|
||||
*/
|
||||
sp_cache_invalidate();
|
||||
|
||||
end:
|
||||
if (!result)
|
||||
{
|
||||
|
Reference in New Issue
Block a user