Commit 3d887422 authored by Peter Eisentraut's avatar Peter Eisentraut

Fix crash when using CALL on an aggregate

Author: Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
Reported-by: default avatarRushabh Lathia <rushabh.lathia@gmail.com>
parent 8e211f53
......@@ -336,6 +336,15 @@ ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs,
Form_pg_aggregate classForm;
int catDirectArgs;
if (proc_call)
ereport(ERROR,
(errcode(ERRCODE_UNDEFINED_FUNCTION),
errmsg("%s is not a procedure",
func_signature_string(funcname, nargs,
argnames,
actual_arg_types)),
parser_errposition(pstate, location)));
tup = SearchSysCache1(AGGFNOID, ObjectIdGetDatum(funcid));
if (!HeapTupleIsValid(tup)) /* should not happen */
elog(ERROR, "cache lookup failed for aggregate %u", funcid);
......
......@@ -41,6 +41,15 @@ SELECT 5;
$$;
CALL ptest2();
-- various error cases
CALL version(); -- error: not a procedure
ERROR: version() is not a procedure
LINE 1: CALL version();
^
HINT: To call a function, use SELECT.
CALL sum(1); -- error: not a procedure
ERROR: sum(integer) is not a procedure
LINE 1: CALL sum(1);
^
CREATE PROCEDURE ptestx() LANGUAGE SQL WINDOW AS $$ INSERT INTO cp_test VALUES (1, 'a') $$;
ERROR: invalid attribute in procedure definition
LINE 1: CREATE PROCEDURE ptestx() LANGUAGE SQL WINDOW AS $$ INSERT I...
......
......@@ -30,6 +30,9 @@ CALL ptest2();
-- various error cases
CALL version(); -- error: not a procedure
CALL sum(1); -- error: not a procedure
CREATE PROCEDURE ptestx() LANGUAGE SQL WINDOW AS $$ INSERT INTO cp_test VALUES (1, 'a') $$;
CREATE PROCEDURE ptestx() LANGUAGE SQL STRICT AS $$ INSERT INTO cp_test VALUES (1, 'a') $$;
CREATE PROCEDURE ptestx(OUT a int) LANGUAGE SQL AS $$ INSERT INTO cp_test VALUES (1, 'a') $$;
......
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