Loading mysql-test/r/sp-error.result +3 −0 Original line number Diff line number Diff line Loading @@ -1176,3 +1176,6 @@ end| call bug15091(); ERROR 42S02: Unknown table 'c' in field list drop procedure bug15091; drop function if exists bug16896; create aggregate function bug16896() returns int return 1; ERROR 42000: AGGREGATE is not supported for stored functions mysql-test/t/sp-error.test +12 −0 Original line number Diff line number Diff line Loading @@ -1703,6 +1703,17 @@ call bug15091(); drop procedure bug15091; # # BUG#16896: Stored function: unused AGGREGATE-clause in CREATE FUNCTION # --disable_warnings drop function if exists bug16896; --enable_warnings --error ER_SP_NO_AGGREGATE create aggregate function bug16896() returns int return 1; # # BUG#NNNN: New bug synopsis # Loading @@ -1710,3 +1721,4 @@ drop procedure bug15091; #drop procedure if exists bugNNNN| #--enable_warnings #create procedure bugNNNN... sql/share/errmsg.txt +2 −0 Original line number Diff line number Diff line Loading @@ -5607,3 +5607,5 @@ ER_SP_PROC_TABLE_CORRUPT eng "Failed to load routine %s. The table mysql.proc is missing, corrupt, or contains bad data (internal code %d)" ER_SP_WRONG_NAME 42000 eng "Incorrect routine name '%-.64s'" ER_SP_NO_AGGREGATE 42000 eng "AGGREGATE is not supported for stored functions" sql/sql_yacc.yy +10 −0 Original line number Diff line number Diff line Loading @@ -1326,6 +1326,16 @@ create_function_tail: LEX *lex= Lex; sp_head *sp; /* First check if AGGREGATE was used, in that case it's a syntax error. */ if (lex->udf.type == UDFTYPE_AGGREGATE) { my_error(ER_SP_NO_AGGREGATE, MYF(0)); YYABORT; } if (lex->sphead) { my_error(ER_SP_NO_RECURSIVE_CREATE, MYF(0), "FUNCTION"); Loading sql/udf_example.cc +9 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,7 @@ char *metaphon(UDF_INIT *initid, UDF_ARGS *args, char *result, my_bool myfunc_double_init(UDF_INIT *, UDF_ARGS *args, char *message); double myfunc_double(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error); my_bool myfunc_int_init(UDF_INIT *initid, UDF_ARGS *args, char *message); longlong myfunc_int(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error); my_bool sequence_init(UDF_INIT *initid, UDF_ARGS *args, char *message); Loading Loading @@ -597,6 +598,14 @@ longlong myfunc_int(UDF_INIT *initid, UDF_ARGS *args, char *is_null, return val; } /* At least one of _init/_deinit is needed unless the server is started with --allow_suspicious_udfs. */ my_bool myfunc_int_init(UDF_INIT *initid, UDF_ARGS *args, char *message) { return 0; } /* Simple example of how to get a sequences starting from the first argument Loading Loading
mysql-test/r/sp-error.result +3 −0 Original line number Diff line number Diff line Loading @@ -1176,3 +1176,6 @@ end| call bug15091(); ERROR 42S02: Unknown table 'c' in field list drop procedure bug15091; drop function if exists bug16896; create aggregate function bug16896() returns int return 1; ERROR 42000: AGGREGATE is not supported for stored functions
mysql-test/t/sp-error.test +12 −0 Original line number Diff line number Diff line Loading @@ -1703,6 +1703,17 @@ call bug15091(); drop procedure bug15091; # # BUG#16896: Stored function: unused AGGREGATE-clause in CREATE FUNCTION # --disable_warnings drop function if exists bug16896; --enable_warnings --error ER_SP_NO_AGGREGATE create aggregate function bug16896() returns int return 1; # # BUG#NNNN: New bug synopsis # Loading @@ -1710,3 +1721,4 @@ drop procedure bug15091; #drop procedure if exists bugNNNN| #--enable_warnings #create procedure bugNNNN...
sql/share/errmsg.txt +2 −0 Original line number Diff line number Diff line Loading @@ -5607,3 +5607,5 @@ ER_SP_PROC_TABLE_CORRUPT eng "Failed to load routine %s. The table mysql.proc is missing, corrupt, or contains bad data (internal code %d)" ER_SP_WRONG_NAME 42000 eng "Incorrect routine name '%-.64s'" ER_SP_NO_AGGREGATE 42000 eng "AGGREGATE is not supported for stored functions"
sql/sql_yacc.yy +10 −0 Original line number Diff line number Diff line Loading @@ -1326,6 +1326,16 @@ create_function_tail: LEX *lex= Lex; sp_head *sp; /* First check if AGGREGATE was used, in that case it's a syntax error. */ if (lex->udf.type == UDFTYPE_AGGREGATE) { my_error(ER_SP_NO_AGGREGATE, MYF(0)); YYABORT; } if (lex->sphead) { my_error(ER_SP_NO_RECURSIVE_CREATE, MYF(0), "FUNCTION"); Loading
sql/udf_example.cc +9 −0 Original line number Diff line number Diff line Loading @@ -144,6 +144,7 @@ char *metaphon(UDF_INIT *initid, UDF_ARGS *args, char *result, my_bool myfunc_double_init(UDF_INIT *, UDF_ARGS *args, char *message); double myfunc_double(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error); my_bool myfunc_int_init(UDF_INIT *initid, UDF_ARGS *args, char *message); longlong myfunc_int(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error); my_bool sequence_init(UDF_INIT *initid, UDF_ARGS *args, char *message); Loading Loading @@ -597,6 +598,14 @@ longlong myfunc_int(UDF_INIT *initid, UDF_ARGS *args, char *is_null, return val; } /* At least one of _init/_deinit is needed unless the server is started with --allow_suspicious_udfs. */ my_bool myfunc_int_init(UDF_INIT *initid, UDF_ARGS *args, char *message) { return 0; } /* Simple example of how to get a sequences starting from the first argument Loading