summaryrefslogtreecommitdiff
path: root/sql/sql_trigger.cc
diff options
context:
space:
mode:
authorAlexander Nozdrin <alexander.nozdrin@oracle.com>2011-03-10 11:07:57 +0300
committerAlexander Nozdrin <alexander.nozdrin@oracle.com>2011-03-10 11:07:57 +0300
commit2b86f34a483e4fd09241abf0297acb5272358ead (patch)
tree5fa3a4d25f85e9fca1dd6180886d6e2bd4399afb /sql/sql_trigger.cc
parentd7a4372fbe367d54c086f5dfe3cdddf050247868 (diff)
downloadmariadb-git-2b86f34a483e4fd09241abf0297acb5272358ead.tar.gz
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.
Diffstat (limited to 'sql/sql_trigger.cc')
-rw-r--r--sql/sql_trigger.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc
index e986f6d7e92..4908fce5950 100644
--- a/sql/sql_trigger.cc
+++ b/sql/sql_trigger.cc
@@ -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)
{