Commit fd5bd91a authored by unknown's avatar unknown

Merge malff@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime

into  lambda.hsd1.co.comcast.net.:/home/malff/TREE/mysql-5.0-28318-rework
parents 3eaea539 473e6285
...@@ -1211,7 +1211,7 @@ ERROR 42S02: Unknown table 'c' in field list ...@@ -1211,7 +1211,7 @@ ERROR 42S02: Unknown table 'c' in field list
drop procedure bug15091; drop procedure bug15091;
drop function if exists bug16896; drop function if exists bug16896;
create aggregate function bug16896() returns int return 1; create aggregate function bug16896() returns int return 1;
ERROR 42000: AGGREGATE is not supported for stored functions ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '() returns int return 1' at line 1
DROP PROCEDURE IF EXISTS bug14702; DROP PROCEDURE IF EXISTS bug14702;
CREATE IF NOT EXISTS PROCEDURE bug14702() CREATE IF NOT EXISTS PROCEDURE bug14702()
BEGIN BEGIN
...@@ -1457,7 +1457,7 @@ CREATE DATABASE mysqltest; ...@@ -1457,7 +1457,7 @@ CREATE DATABASE mysqltest;
USE mysqltest; USE mysqltest;
DROP DATABASE mysqltest; DROP DATABASE mysqltest;
SELECT inexistent(), 1 + ,; SELECT inexistent(), 1 + ,;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 ERROR 42000: FUNCTION inexistent does not exist
SELECT inexistent(); SELECT inexistent();
ERROR 42000: FUNCTION inexistent does not exist ERROR 42000: FUNCTION inexistent does not exist
SELECT .inexistent(); SELECT .inexistent();
......
...@@ -6563,6 +6563,21 @@ f1() ...@@ -6563,6 +6563,21 @@ f1()
DROP TABLE t1; DROP TABLE t1;
DROP FUNCTION f1; 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 # -- End of 5.0 tests
# ------------------------------------------------------------------ # ------------------------------------------------------------------
...@@ -95,10 +95,10 @@ FR ...@@ -95,10 +95,10 @@ FR
DROP TABLE bug19904; DROP TABLE bug19904;
CREATE DEFINER=CURRENT_USER() FUNCTION should_not_parse CREATE DEFINER=CURRENT_USER() FUNCTION should_not_parse
RETURNS STRING SONAME "should_not_parse.so"; RETURNS STRING SONAME "should_not_parse.so";
ERROR HY000: Incorrect usage of SONAME and DEFINER ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RETURNS STRING SONAME "should_not_parse.so"' at line 2
CREATE DEFINER=someone@somewhere FUNCTION should_not_parse CREATE DEFINER=someone@somewhere FUNCTION should_not_parse
RETURNS STRING SONAME "should_not_parse.so"; RETURNS STRING SONAME "should_not_parse.so";
ERROR HY000: Incorrect usage of SONAME and DEFINER ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RETURNS STRING SONAME "should_not_parse.so"' at line 2
create table t1(f1 int); create table t1(f1 int);
insert into t1 values(1),(2); insert into t1 values(1),(2);
explain select myfunc_int(f1) from t1 order by 1; explain select myfunc_int(f1) from t1 order by 1;
......
...@@ -1744,7 +1744,7 @@ drop procedure bug15091; ...@@ -1744,7 +1744,7 @@ drop procedure bug15091;
drop function if exists bug16896; drop function if exists bug16896;
--enable_warnings --enable_warnings
--error ER_SP_NO_AGGREGATE --error ER_PARSE_ERROR
create aggregate function bug16896() returns int return 1; create aggregate function bug16896() returns int return 1;
...@@ -2099,7 +2099,10 @@ DROP DATABASE IF EXISTS mysqltest; ...@@ -2099,7 +2099,10 @@ DROP DATABASE IF EXISTS mysqltest;
CREATE DATABASE mysqltest; CREATE DATABASE mysqltest;
USE mysqltest; USE mysqltest;
DROP DATABASE mysqltest; DROP DATABASE mysqltest;
--error ER_PARSE_ERROR # Both ER_SP_DOES_NOT_EXIST and ER_PARSE_ERROR are valid here,
# the result is implementation dependent:
# See Bug#29816 for details
--error ER_SP_DOES_NOT_EXIST
SELECT inexistent(), 1 + ,; SELECT inexistent(), 1 + ,;
--error ER_SP_DOES_NOT_EXIST --error ER_SP_DOES_NOT_EXIST
SELECT inexistent(); SELECT inexistent();
......
...@@ -7671,6 +7671,35 @@ DROP FUNCTION f1; ...@@ -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 # ------------------------------------------------------------------
--echo # -- End of 5.0 tests --echo # -- End of 5.0 tests
--echo # ------------------------------------------------------------------ --echo # ------------------------------------------------------------------
...@@ -113,11 +113,11 @@ DROP TABLE bug19904; ...@@ -113,11 +113,11 @@ DROP TABLE bug19904;
# Bug#21269: DEFINER-clause is allowed for UDF-functions # Bug#21269: DEFINER-clause is allowed for UDF-functions
# #
--error ER_WRONG_USAGE --error ER_PARSE_ERROR
CREATE DEFINER=CURRENT_USER() FUNCTION should_not_parse CREATE DEFINER=CURRENT_USER() FUNCTION should_not_parse
RETURNS STRING SONAME "should_not_parse.so"; RETURNS STRING SONAME "should_not_parse.so";
--error ER_WRONG_USAGE --error ER_PARSE_ERROR
CREATE DEFINER=someone@somewhere FUNCTION should_not_parse CREATE DEFINER=someone@somewhere FUNCTION should_not_parse
RETURNS STRING SONAME "should_not_parse.so"; RETURNS STRING SONAME "should_not_parse.so";
# #
......
...@@ -4016,12 +4016,6 @@ mysql_execute_command(THD *thd) ...@@ -4016,12 +4016,6 @@ mysql_execute_command(THD *thd)
if (check_access(thd,INSERT_ACL,"mysql",0,1,0,0)) if (check_access(thd,INSERT_ACL,"mysql",0,1,0,0))
break; break;
#ifdef HAVE_DLOPEN #ifdef HAVE_DLOPEN
if (sp_find_routine(thd, TYPE_ENUM_FUNCTION, lex->spname,
&thd->sp_func_cache, FALSE))
{
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); send_ok(thd);
#else #else
......
...@@ -426,14 +426,14 @@ int mysql_create_function(THD *thd,udf_func *udf) ...@@ -426,14 +426,14 @@ int mysql_create_function(THD *thd,udf_func *udf)
} }
if (udf->name.length > NAME_LEN) 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); DBUG_RETURN(1);
} }
rw_wrlock(&THR_LOCK_udf); rw_wrlock(&THR_LOCK_udf);
if ((hash_search(&udf_hash,(byte*) udf->name.str, udf->name.length))) 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; goto err;
} }
if (!(dl = find_udf_dl(udf->dl))) if (!(dl = find_udf_dl(udf->dl)))
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment