summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2018-07-07 11:17:04 +0200
committerPeter Eisentraut <peter_e@gmx.net>2018-07-07 11:17:04 +0200
commit0903bbdad24a8f51b18a6a54a41bbb36ad2ceee4 (patch)
treebc591d2f5eb4c04d3ecba25ac8d21be8515018bd
parenteb270b00b2d60e751545d4b808642395c901b668 (diff)
Add separate error message for procedure does not exist
While we probably don't want to split up all error messages into function and procedure variants, this one is a very prominent one, so it's helpful to be more specific here.
-rw-r--r--src/backend/parser/parse_func.c35
-rw-r--r--src/test/regress/expected/create_procedure.out4
2 files changed, 29 insertions, 10 deletions
diff --git a/src/backend/parser/parse_func.c b/src/backend/parser/parse_func.c
index abe1dbc521c..c2feaf371fe 100644
--- a/src/backend/parser/parse_func.c
+++ b/src/backend/parser/parse_func.c
@@ -542,14 +542,24 @@ ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs,
if (is_column)
return NULL;
- ereport(ERROR,
- (errcode(ERRCODE_AMBIGUOUS_FUNCTION),
- errmsg("function %s is not unique",
- func_signature_string(funcname, nargs, argnames,
- actual_arg_types)),
- errhint("Could not choose a best candidate function. "
- "You might need to add explicit type casts."),
- parser_errposition(pstate, location)));
+ if (proc_call)
+ ereport(ERROR,
+ (errcode(ERRCODE_AMBIGUOUS_FUNCTION),
+ errmsg("procedure %s is not unique",
+ func_signature_string(funcname, nargs, argnames,
+ actual_arg_types)),
+ errhint("Could not choose a best candidate procedure. "
+ "You might need to add explicit type casts."),
+ parser_errposition(pstate, location)));
+ else
+ ereport(ERROR,
+ (errcode(ERRCODE_AMBIGUOUS_FUNCTION),
+ errmsg("function %s is not unique",
+ func_signature_string(funcname, nargs, argnames,
+ actual_arg_types)),
+ errhint("Could not choose a best candidate function. "
+ "You might need to add explicit type casts."),
+ parser_errposition(pstate, location)));
}
else
{
@@ -591,6 +601,15 @@ ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs,
"after all regular arguments of the aggregate."),
parser_errposition(pstate, location)));
}
+ else if (proc_call)
+ ereport(ERROR,
+ (errcode(ERRCODE_UNDEFINED_FUNCTION),
+ errmsg("procedure %s does not exist",
+ func_signature_string(funcname, nargs, argnames,
+ actual_arg_types)),
+ errhint("No procedure matches the given name and argument types. "
+ "You might need to add explicit type casts."),
+ parser_errposition(pstate, location)));
else
ereport(ERROR,
(errcode(ERRCODE_UNDEFINED_FUNCTION),
diff --git a/src/test/regress/expected/create_procedure.out b/src/test/regress/expected/create_procedure.out
index 0acea7bd8c7..90e8f3c5ff0 100644
--- a/src/test/regress/expected/create_procedure.out
+++ b/src/test/regress/expected/create_procedure.out
@@ -1,8 +1,8 @@
CALL nonexistent(); -- error
-ERROR: function nonexistent() does not exist
+ERROR: procedure nonexistent() does not exist
LINE 1: CALL nonexistent();
^
-HINT: No function matches the given name and argument types. You might need to add explicit type casts.
+HINT: No procedure matches the given name and argument types. You might need to add explicit type casts.
CALL random(); -- error
ERROR: random() is not a procedure
LINE 1: CALL random();