From 904847157586455b29ffcae4fd92901b33f89782 Mon Sep 17 00:00:00 2001
From: Junwang Zhao <zhjwpku@gmail.com>
Date: Wed, 21 Sep 2022 19:39:01 +0800
Subject: [PATCH v1] polish the error message of creating proc

when a error occurs when creating proc, it should point out the
specific proc kind instead of just printing "function"

Reported-by: <qtds_126@126.com>
Signed-off-by: Junwang Zhao <zhjwpku@gmail.com>
---
 src/backend/catalog/pg_proc.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c
index a9fe45e347..58af4b48ce 100644
--- a/src/backend/catalog/pg_proc.c
+++ b/src/backend/catalog/pg_proc.c
@@ -373,7 +373,11 @@ ProcedureCreate(const char *procedureName,
 		if (!replace)
 			ereport(ERROR,
 					(errcode(ERRCODE_DUPLICATE_FUNCTION),
-					 errmsg("function \"%s\" already exists with same argument types",
+					 errmsg("%s \"%s\" already exists with same argument types",
+							(oldproc->prokind == PROKIND_AGGREGATE ? "aggregate function" :
+							 oldproc->prokind == PROKIND_PROCEDURE ? "procedure" :
+							 oldproc->prokind == PROKIND_WINDOW ? "window function" :
+							 "function"),
 							procedureName)));
 		if (!pg_proc_ownercheck(oldproc->oid, proowner))
 			aclcheck_error(ACLCHECK_NOT_OWNER, OBJECT_FUNCTION,
-- 
2.33.0

