mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	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.
This commit is contained in:
		@@ -542,6 +542,16 @@ ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs,
 | 
				
			|||||||
		if (is_column)
 | 
							if (is_column)
 | 
				
			||||||
			return NULL;
 | 
								return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							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,
 | 
								ereport(ERROR,
 | 
				
			||||||
					(errcode(ERRCODE_AMBIGUOUS_FUNCTION),
 | 
										(errcode(ERRCODE_AMBIGUOUS_FUNCTION),
 | 
				
			||||||
					 errmsg("function %s is not unique",
 | 
										 errmsg("function %s is not unique",
 | 
				
			||||||
@@ -591,6 +601,15 @@ ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs,
 | 
				
			|||||||
							 "after all regular arguments of the aggregate."),
 | 
												 "after all regular arguments of the aggregate."),
 | 
				
			||||||
					 parser_errposition(pstate, location)));
 | 
										 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
 | 
							else
 | 
				
			||||||
			ereport(ERROR,
 | 
								ereport(ERROR,
 | 
				
			||||||
					(errcode(ERRCODE_UNDEFINED_FUNCTION),
 | 
										(errcode(ERRCODE_UNDEFINED_FUNCTION),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,8 @@
 | 
				
			|||||||
CALL nonexistent();  -- error
 | 
					CALL nonexistent();  -- error
 | 
				
			||||||
ERROR:  function nonexistent() does not exist
 | 
					ERROR:  procedure nonexistent() does not exist
 | 
				
			||||||
LINE 1: CALL nonexistent();
 | 
					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
 | 
					CALL random();  -- error
 | 
				
			||||||
ERROR:  random() is not a procedure
 | 
					ERROR:  random() is not a procedure
 | 
				
			||||||
LINE 1: CALL random();
 | 
					LINE 1: CALL random();
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user