From 765519dbcfe6d4311fa18f308c1dbcb59050503c Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 14 Jul 2002 10:37:34 +0300 Subject: [PATCH] Do handler specific drop-database at safe place. Fix for access problem (merge from 4.0) sql/sql_db.cc: Do handler specific drop-database at safe place. sql/sql_parse.cc: Fix for access problem (merge from 4.0) --- sql/sql_db.cc | 9 +-------- sql/sql_parse.cc | 3 ++- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/sql/sql_db.cc b/sql/sql_db.cc index e368ef3ae94..5ce1929e90a 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -166,6 +166,7 @@ void mysql_rm_db(THD *thd,char *db,bool if_exists) if ((deleted=mysql_rm_known_files(thd, dirp, path,0)) >= 0) { + ha_drop_database(path); if (!thd->query) { thd->query = path; @@ -189,14 +190,6 @@ void mysql_rm_db(THD *thd,char *db,bool if_exists) exit: VOID(pthread_mutex_unlock(&LOCK_open)); VOID(pthread_mutex_unlock(&LOCK_mysql_create_db)); - - /* It seems MySQL may call this function when there still are queries - running on tables of the database. Since InnoDB waits until the - queries have ended, we have to call ha_drop_database outside - the above two mutexes to avoid deadlocks. */ - - ha_drop_database(path); - DBUG_VOID_RETURN; } diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 9cca8c8fa58..d97c392bb9f 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -2154,7 +2154,8 @@ check_access(THD *thd,uint want_access,const char *db, uint *save_priv, thd->priv_user, db); /* purecov: inspected */ else db_access=thd->db_access; - want_access &= ~EXTRA_ACL; // Remove SHOW attribute + // Remove SHOW attribute and access rights we already have + want_access &= ~(thd->master_access | EXTRA_ACL); db_access= ((*save_priv=(db_access | thd->master_access)) & want_access); /* grant_option is set if there exists a single table or column grant */