1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-30 11:22:14 +03:00

Bug#22043 MySQL don't add "USE <DATABASE>" before "DROP PROCEDURE EXISTS"

- CREATE PROCEDURE stores database name based on query context instead
  of 'current database' as set by 'USE' according to manual.
  The bug reporter interpret the filtering statements as bug for
   DROP PROCEDURE based on this behavior.
- Removed the code which changes db context.
- Added code to check that a valid db was supplied.
This commit is contained in:
thek@kpdesk.mysql.com
2006-11-28 16:03:53 +01:00
parent 55aa6e04bd
commit 294cb8432f
4 changed files with 72 additions and 9 deletions

View File

@@ -4226,6 +4226,30 @@ end_with_restore_list:
DBUG_ASSERT(lex->sphead != 0);
DBUG_ASSERT(lex->sphead->m_db.str); /* Must be initialized in the parser */
/*
Verify that the database name is allowed, optionally
lowercase it.
*/
if (check_db_name(lex->sphead->m_db.str))
{
my_error(ER_WRONG_DB_NAME, MYF(0), lex->sphead->m_db.str);
delete lex->sphead;
lex->sphead= 0;
goto error;
}
/*
Check that a database with this name
exists.
*/
if (check_db_dir_existence(lex->sphead->m_db.str))
{
my_error(ER_BAD_DB_ERROR, MYF(0), lex->sphead->m_db.str);
delete lex->sphead;
lex->sphead= 0;
goto error;
}
if (check_access(thd, CREATE_PROC_ACL, lex->sphead->m_db.str, 0, 0, 0,
is_schema_db(lex->sphead->m_db.str)))
{