Loading mysql-test/r/sp.result +15 −0 Original line number Diff line number Diff line Loading @@ -6563,6 +6563,21 @@ f1() DROP TABLE t1; DROP FUNCTION f1; DROP PROCEDURE IF EXISTS db28318_a.t1; DROP PROCEDURE IF EXISTS db28318_b.t2; DROP DATABASE IF EXISTS db28318_a; DROP DATABASE IF EXISTS db28318_b; CREATE DATABASE db28318_a; CREATE DATABASE db28318_b; CREATE PROCEDURE db28318_a.t1() SELECT "db28318_a.t1"; CREATE PROCEDURE db28318_b.t2() CALL t1(); use db28318_a; CALL db28318_b.t2(); ERROR 42000: PROCEDURE db28318_b.t1 does not exist DROP PROCEDURE db28318_a.t1; DROP PROCEDURE db28318_b.t2; DROP DATABASE db28318_a; DROP DATABASE db28318_b; # ------------------------------------------------------------------ # -- End of 5.0 tests # ------------------------------------------------------------------ mysql-test/t/sp.test +29 −0 Original line number Diff line number Diff line Loading @@ -7671,6 +7671,35 @@ DROP FUNCTION f1; ########################################################################### # # Bug#28318 (CREATE FUNCTION (UDF) requires a schema) # --disable_warnings DROP PROCEDURE IF EXISTS db28318_a.t1; DROP PROCEDURE IF EXISTS db28318_b.t2; DROP DATABASE IF EXISTS db28318_a; DROP DATABASE IF EXISTS db28318_b; --enable_warnings CREATE DATABASE db28318_a; CREATE DATABASE db28318_b; CREATE PROCEDURE db28318_a.t1() SELECT "db28318_a.t1"; CREATE PROCEDURE db28318_b.t2() CALL t1(); use db28318_a; # In db28318_b.t2, t1 refers to db28318_b.t1 --error ER_SP_DOES_NOT_EXIST CALL db28318_b.t2(); DROP PROCEDURE db28318_a.t1; DROP PROCEDURE db28318_b.t2; DROP DATABASE db28318_a; DROP DATABASE db28318_b; --echo # ------------------------------------------------------------------ --echo # -- End of 5.0 tests --echo # ------------------------------------------------------------------ sql/sql_udf.cc +2 −2 Original line number Diff line number Diff line Loading @@ -426,14 +426,14 @@ int mysql_create_function(THD *thd,udf_func *udf) } if (udf->name.length > NAME_LEN) { my_error(ER_TOO_LONG_IDENT, MYF(0), udf->name); my_error(ER_TOO_LONG_IDENT, MYF(0), udf->name.str); DBUG_RETURN(1); } rw_wrlock(&THR_LOCK_udf); if ((hash_search(&udf_hash,(byte*) udf->name.str, udf->name.length))) { my_error(ER_UDF_EXISTS, MYF(0), udf->name); my_error(ER_UDF_EXISTS, MYF(0), udf->name.str); goto err; } if (!(dl = find_udf_dl(udf->dl))) Loading Loading
mysql-test/r/sp.result +15 −0 Original line number Diff line number Diff line Loading @@ -6563,6 +6563,21 @@ f1() DROP TABLE t1; DROP FUNCTION f1; DROP PROCEDURE IF EXISTS db28318_a.t1; DROP PROCEDURE IF EXISTS db28318_b.t2; DROP DATABASE IF EXISTS db28318_a; DROP DATABASE IF EXISTS db28318_b; CREATE DATABASE db28318_a; CREATE DATABASE db28318_b; CREATE PROCEDURE db28318_a.t1() SELECT "db28318_a.t1"; CREATE PROCEDURE db28318_b.t2() CALL t1(); use db28318_a; CALL db28318_b.t2(); ERROR 42000: PROCEDURE db28318_b.t1 does not exist DROP PROCEDURE db28318_a.t1; DROP PROCEDURE db28318_b.t2; DROP DATABASE db28318_a; DROP DATABASE db28318_b; # ------------------------------------------------------------------ # -- End of 5.0 tests # ------------------------------------------------------------------
mysql-test/t/sp.test +29 −0 Original line number Diff line number Diff line Loading @@ -7671,6 +7671,35 @@ DROP FUNCTION f1; ########################################################################### # # Bug#28318 (CREATE FUNCTION (UDF) requires a schema) # --disable_warnings DROP PROCEDURE IF EXISTS db28318_a.t1; DROP PROCEDURE IF EXISTS db28318_b.t2; DROP DATABASE IF EXISTS db28318_a; DROP DATABASE IF EXISTS db28318_b; --enable_warnings CREATE DATABASE db28318_a; CREATE DATABASE db28318_b; CREATE PROCEDURE db28318_a.t1() SELECT "db28318_a.t1"; CREATE PROCEDURE db28318_b.t2() CALL t1(); use db28318_a; # In db28318_b.t2, t1 refers to db28318_b.t1 --error ER_SP_DOES_NOT_EXIST CALL db28318_b.t2(); DROP PROCEDURE db28318_a.t1; DROP PROCEDURE db28318_b.t2; DROP DATABASE db28318_a; DROP DATABASE db28318_b; --echo # ------------------------------------------------------------------ --echo # -- End of 5.0 tests --echo # ------------------------------------------------------------------
sql/sql_udf.cc +2 −2 Original line number Diff line number Diff line Loading @@ -426,14 +426,14 @@ int mysql_create_function(THD *thd,udf_func *udf) } if (udf->name.length > NAME_LEN) { my_error(ER_TOO_LONG_IDENT, MYF(0), udf->name); my_error(ER_TOO_LONG_IDENT, MYF(0), udf->name.str); DBUG_RETURN(1); } rw_wrlock(&THR_LOCK_udf); if ((hash_search(&udf_hash,(byte*) udf->name.str, udf->name.length))) { my_error(ER_UDF_EXISTS, MYF(0), udf->name); my_error(ER_UDF_EXISTS, MYF(0), udf->name.str); goto err; } if (!(dl = find_udf_dl(udf->dl))) Loading