diff options
-rw-r--r-- | mysql-test/r/skip_grants.result | 3 | ||||
-rw-r--r-- | mysql-test/t/skip_grants.test | 7 | ||||
-rw-r--r-- | sql/sql_udf.cc | 7 |
3 files changed, 15 insertions, 2 deletions
diff --git a/mysql-test/r/skip_grants.result b/mysql-test/r/skip_grants.result index 5dc770a7363..95464ee4ce5 100644 --- a/mysql-test/r/skip_grants.result +++ b/mysql-test/r/skip_grants.result @@ -12,3 +12,6 @@ create table t1 (a int); create definer='user'@'host' sql security definer view v1 as select * from t1; drop view v1; drop table t1; +drop function if exists f1; +Warnings: +Note 1305 FUNCTION f1 does not exist diff --git a/mysql-test/t/skip_grants.test b/mysql-test/t/skip_grants.test index a0164cb0759..45b1d258e4a 100644 --- a/mysql-test/t/skip_grants.test +++ b/mysql-test/t/skip_grants.test @@ -12,8 +12,8 @@ use test; # test that we can create VIEW if privileges check switched off # create table t1 (field1 INT); --- error ER_MALFORMED_DEFINER -CREATE VIEW v1 AS SELECT field1 FROM t1; +#--error ER_MALFORMED_DEFINER +#CREATE VIEW v1 AS SELECT field1 FROM t1; drop table t1; # @@ -30,3 +30,6 @@ create table t1 (a int); create definer='user'@'host' sql security definer view v1 as select * from t1; drop view v1; drop table t1; + +# BUG#17595: DROP FUNCTION IF EXISTS f1 crashes server +drop function if exists f1; diff --git a/sql/sql_udf.cc b/sql/sql_udf.cc index 40e5a9a00cf..3f8a4e346f9 100644 --- a/sql/sql_udf.cc +++ b/sql/sql_udf.cc @@ -308,6 +308,10 @@ static void del_udf(udf_func *udf) void free_udf(udf_func *udf) { DBUG_ENTER("free_udf"); + + if (!initialized) + DBUG_VOID_RETURN; + rw_wrlock(&THR_LOCK_udf); if (!--udf->usage_count) { @@ -332,6 +336,9 @@ udf_func *find_udf(const char *name,uint length,bool mark_used) udf_func *udf=0; DBUG_ENTER("find_udf"); + if (!initialized) + DBUG_RETURN(NULL); + /* TODO: This should be changed to reader locks someday! */ if (mark_used) rw_wrlock(&THR_LOCK_udf); /* Called during fix_fields */ |