summaryrefslogtreecommitdiff
path: root/sql/sp.h
diff options
context:
space:
mode:
authorJon Olav Hauglid <jon.hauglid@oracle.com>2010-11-17 15:37:23 +0100
committerJon Olav Hauglid <jon.hauglid@oracle.com>2010-11-17 15:37:23 +0100
commit1e9f239e8f191b3060fa1a7aee0b1448af20316e (patch)
treecb558c619600aa424da07c2a1a51bfcf4431ac1f /sql/sp.h
parent0ef8d8e26c39b71e3e50348332bc2f542df2aa7c (diff)
downloadmariadb-git-1e9f239e8f191b3060fa1a7aee0b1448af20316e.tar.gz
Bug #57663 Concurrent statement using stored function and DROP DATABASE
breaks SBR The problem was that DROP DATABASE ignored any metadata locks on stored functions and procedures held by other connections. This made it possible for DROP DATABASE to drop functions/procedures that were in use by other connections and therefore break statement based replication. (DROP DATABASE could appear in the binlog before a statement using a dropped function/procedure.) This problem was an issue left unresolved by the patch for Bug#30977 where metadata locks for stored functions/procedures were introduced. This patch fixes the problem by making sure DROP DATABASE takes exclusive metadata locks on all stored functions/procedures to be dropped. Test case added to sp-lock.test.
Diffstat (limited to 'sql/sp.h')
-rw-r--r--sql/sp.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/sql/sp.h b/sql/sp.h
index 5d0490586a1..68c45768857 100644
--- a/sql/sp.h
+++ b/sql/sp.h
@@ -84,6 +84,18 @@ enum
int
sp_drop_db_routines(THD *thd, char *db);
+/**
+ Acquires exclusive metadata lock on all stored routines in the
+ given database.
+
+ @param thd Thread handler
+ @param db Database name
+
+ @retval false Success
+ @retval true Failure
+ */
+bool lock_db_routines(THD *thd, char *db);
+
sp_head *
sp_find_routine(THD *thd, int type, sp_name *name,
sp_cache **cp, bool cache_only);