diff options
author | unknown <malff/marcsql@weblab.(none)> | 2006-07-31 12:11:08 -0700 |
---|---|---|
committer | unknown <malff/marcsql@weblab.(none)> | 2006-07-31 12:11:08 -0700 |
commit | d57c41b79d972012ae76fe0b36ee31b1e97989ef (patch) | |
tree | 9cb7bf50baf1156807804a1bd1cca8d46063bacb | |
parent | 918f9a3806f820037b55721c1ccdcf29dfcebc56 (diff) | |
parent | d251e9be4315a3bf92a0e997daf5c2c2f42588f3 (diff) | |
download | mariadb-git-d57c41b79d972012ae76fe0b36ee31b1e97989ef.tar.gz |
Merge malff@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into weblab.(none):/home/marcsql/TREE/mysql-5.0-21269
-rw-r--r-- | mysql-test/r/udf.result | 6 | ||||
-rw-r--r-- | mysql-test/t/udf.test | 12 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 11 |
3 files changed, 29 insertions, 0 deletions
diff --git a/mysql-test/r/udf.result b/mysql-test/r/udf.result index 484c42c41bf..d71e7ef2ce7 100644 --- a/mysql-test/r/udf.result +++ b/mysql-test/r/udf.result @@ -93,6 +93,12 @@ NULL 0R FR DROP TABLE bug19904; +CREATE DEFINER=CURRENT_USER() FUNCTION should_not_parse +RETURNS STRING SONAME "should_not_parse.so"; +ERROR HY000: Incorrect usage of SONAME and DEFINER +CREATE DEFINER=someone@somewhere FUNCTION should_not_parse +RETURNS STRING SONAME "should_not_parse.so"; +ERROR HY000: Incorrect usage of SONAME and DEFINER End of 5.0 tests. DROP FUNCTION metaphon; DROP FUNCTION myfunc_double; diff --git a/mysql-test/t/udf.test b/mysql-test/t/udf.test index f3be08c8537..9d295d32831 100644 --- a/mysql-test/t/udf.test +++ b/mysql-test/t/udf.test @@ -109,6 +109,18 @@ SELECT myfunc_double(n) AS f FROM bug19904; SELECT metaphon(v) AS f FROM bug19904; DROP TABLE bug19904; +# +# Bug#21269: DEFINER-clause is allowed for UDF-functions +# + +--error ER_WRONG_USAGE +CREATE DEFINER=CURRENT_USER() FUNCTION should_not_parse +RETURNS STRING SONAME "should_not_parse.so"; + +--error ER_WRONG_USAGE +CREATE DEFINER=someone@somewhere FUNCTION should_not_parse +RETURNS STRING SONAME "should_not_parse.so"; + --echo End of 5.0 tests. # diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index a92d19ee58d..d497678cec3 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -1256,6 +1256,17 @@ create_function_tail: RETURNS_SYM udf_type UDF_SONAME_SYM TEXT_STRING_sys { LEX *lex=Lex; + if (lex->definer != NULL) + { + /* + DEFINER is a concept meaningful when interpreting SQL code. + UDF functions are compiled. + Using DEFINER with UDF has therefore no semantic, + and is considered a parsing error. + */ + my_error(ER_WRONG_USAGE, MYF(0), "SONAME", "DEFINER"); + YYABORT; + } lex->sql_command = SQLCOM_CREATE_FUNCTION; lex->udf.name = lex->spname->m_name; lex->udf.returns=(Item_result) $2; |