summaryrefslogtreecommitdiff
path: root/sql/sql_parse.cc
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2004-11-25 02:27:02 +0200
committerunknown <bell@sanja.is.com.ua>2004-11-25 02:27:02 +0200
commita352372170815bebd65755bc5fff00fdf964cf9b (patch)
tree64b87aad2e52257f0c6cb4d27336e0d1fb516494 /sql/sql_parse.cc
parentf88d01932f4a81682267e21022686d3dea4edb78 (diff)
parent00899088a5f576721ecbf3ca235cdfcd691c8a0e (diff)
downloadmariadb-git-a352372170815bebd65755bc5fff00fdf964cf9b.tar.gz
Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-5.0
into sanja.is.com.ua:/home/bell/mysql/bk/work-join-5.0 sql/item.cc: Auto merged sql/item.h: Auto merged sql/mysql_priv.h: Auto merged sql/sp.cc: Auto merged sql/sql_base.cc: Auto merged sql/sql_lex.cc: Auto merged sql/sql_lex.h: Auto merged sql/sql_parse.cc: Auto merged sql/sql_select.cc: Auto merged sql/sql_yacc.yy: Auto merged sql/table.h: Auto merged
Diffstat (limited to 'sql/sql_parse.cc')
-rw-r--r--sql/sql_parse.cc45
1 files changed, 22 insertions, 23 deletions
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 7089a79124d..af3392349ab 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -3352,16 +3352,15 @@ create_error:
}
case SQLCOM_CREATE_FUNCTION: // UDF function
{
- sp_head *sph;
if (check_access(thd,INSERT_ACL,"mysql",0,1,0))
break;
#ifdef HAVE_DLOPEN
- if ((sph= sp_find_function(thd, lex->spname)))
+ if (sp_find_function(thd, lex->spname))
{
my_error(ER_UDF_EXISTS, MYF(0), lex->spname->m_name.str);
goto error;
}
- if (!(res = mysql_create_function(thd,&lex->udf)))
+ if (!(res = mysql_create_function(thd, &lex->udf)))
send_ok(thd);
#else
res= TRUE;
@@ -3813,35 +3812,35 @@ create_error:
else
sp= sp_find_function(thd, lex->spname);
mysql_reset_errors(thd);
- if (! sp)
- result= SP_KEY_NOT_FOUND;
- else
+ if (sp)
{
if (check_sp_definer_access(thd, sp))
goto error;
if (lex->sql_command == SQLCOM_DROP_PROCEDURE)
result= sp_drop_procedure(thd, lex->spname);
else
- {
result= sp_drop_function(thd, lex->spname);
+ }
+ else
+ {
#ifdef HAVE_DLOPEN
- if (result == SP_KEY_NOT_FOUND)
- {
- udf_func *udf = find_udf(lex->spname->m_name.str,
- lex->spname->m_name.length);
- if (udf)
+ if (lex->sql_command == SQLCOM_DROP_FUNCTION)
+ {
+ udf_func *udf = find_udf(lex->spname->m_name.str,
+ lex->spname->m_name.length);
+ if (udf)
+ {
+ if (check_access(thd, DELETE_ACL, "mysql", 0, 1, 0))
+ goto error;
+ if (!(res = mysql_drop_function(thd, &lex->spname->m_name)))
{
- if (check_access(thd, DELETE_ACL, "mysql", 0, 1, 0))
- goto error;
- if (!(res = mysql_drop_function(thd,&lex->spname->m_name)))
- {
- send_ok(thd);
- break;
- }
+ send_ok(thd);
+ break;
}
}
-#endif
}
+#endif
+ result= SP_KEY_NOT_FOUND;
}
res= result;
switch (result)
@@ -3926,11 +3925,11 @@ create_error:
}
case SQLCOM_CREATE_TRIGGER:
{
- /* We don't care much about trigger body at that point */
+ res= mysql_create_or_drop_trigger(thd, all_tables, 1);
+
+ /* We don't care about trigger body after this point */
delete lex->sphead;
lex->sphead= 0;
-
- res= mysql_create_or_drop_trigger(thd, all_tables, 1);
break;
}
case SQLCOM_DROP_TRIGGER: