From 22d641a7d42fba17e1f9310a8444763b4c3aa47f Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Fri, 17 May 2002 22:35:13 +0000
Subject: [PATCH] Get rid of the last few uses of typeidTypeName() rather than
 format_type_be() in error messages.

---
 src/backend/catalog/pg_aggregate.c       |  5 +--
 src/backend/catalog/pg_proc.c            |  4 +-
 src/backend/commands/tablecmds.c         |  4 +-
 src/backend/executor/nodeAgg.c           |  7 ++-
 src/backend/executor/nodeGroup.c         |  8 ++--
 src/backend/optimizer/plan/initsplan.c   |  8 ++--
 src/backend/parser/parse_coerce.c        | 12 ++---
 src/backend/parser/parse_expr.c          | 12 ++---
 src/backend/parser/parse_func.c          | 57 ++++++++++++++----------
 src/backend/parser/parse_type.c          | 40 +++--------------
 src/include/parser/parse_type.h          |  3 +-
 src/test/regress/expected/errors.out     |  8 ++--
 src/test/regress/expected/privileges.out |  2 +-
 13 files changed, 73 insertions(+), 97 deletions(-)

diff --git a/src/backend/catalog/pg_aggregate.c b/src/backend/catalog/pg_aggregate.c
index 951e45c5ffa..4c7dbba1288 100644
--- a/src/backend/catalog/pg_aggregate.c
+++ b/src/backend/catalog/pg_aggregate.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/catalog/pg_aggregate.c,v 1.44 2002/04/11 19:59:57 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/catalog/pg_aggregate.c,v 1.45 2002/05/17 22:35:12 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -24,7 +24,6 @@
 #include "optimizer/cost.h"
 #include "parser/parse_coerce.h"
 #include "parser/parse_func.h"
-#include "parser/parse_type.h"
 #include "utils/builtins.h"
 #include "utils/syscache.h"
 
@@ -83,7 +82,7 @@ AggregateCreate(const char *aggName,
 	proc = (Form_pg_proc) GETSTRUCT(tup);
 	if (proc->prorettype != aggTransType)
 		elog(ERROR, "return type of transition function %s is not %s",
-			 NameListToString(aggtransfnName), typeidTypeName(aggTransType));
+			 NameListToString(aggtransfnName), format_type_be(aggTransType));
 
 	/*
 	 * If the transfn is strict and the initval is NULL, make sure input
diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c
index e9fcdc5d8e0..50ea475f85a 100644
--- a/src/backend/catalog/pg_proc.c
+++ b/src/backend/catalog/pg_proc.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.70 2002/04/11 19:59:57 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.71 2002/05/17 22:35:12 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -140,7 +140,7 @@ ProcedureCreate(const char *procedureName,
 		(relid = typeidTypeRelid(typev[0])) != 0 &&
 		get_attnum(relid, (char *) procedureName) != InvalidAttrNumber)
 		elog(ERROR, "method %s already an attribute of type %s",
-			 procedureName, typeidTypeName(typev[0]));
+			 procedureName, format_type_be(typev[0]));
 
 	/*
 	 * If this is a postquel procedure, we parse it here in order to be
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 885b760a512..864ad65eab0 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/commands/tablecmds.c,v 1.13 2002/05/12 23:43:02 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/commands/tablecmds.c,v 1.14 2002/05/17 22:35:12 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -548,7 +548,7 @@ MergeAttributes(List *schema, List *supers, bool istemp,
 					elog(ERROR, "CREATE TABLE: inherited attribute \"%s\" type conflict (%s and %s)",
 						 attributeName,
 						 TypeNameToString(def->typename),
-						 typeidTypeName(attribute->atttypid));
+						 format_type_be(attribute->atttypid));
 				/* Merge of NOT NULL constraints = OR 'em together */
 				def->is_not_null |= attribute->attnotnull;
 				/* Default and other constraints are handled below */
diff --git a/src/backend/executor/nodeAgg.c b/src/backend/executor/nodeAgg.c
index 60174546812..b45376013f9 100644
--- a/src/backend/executor/nodeAgg.c
+++ b/src/backend/executor/nodeAgg.c
@@ -46,7 +46,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/executor/nodeAgg.c,v 1.83 2002/04/29 22:28:19 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/executor/nodeAgg.c,v 1.84 2002/05/17 22:35:12 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -63,7 +63,6 @@
 #include "parser/parse_coerce.h"
 #include "parser/parse_expr.h"
 #include "parser/parse_oper.h"
-#include "parser/parse_type.h"
 #include "utils/acl.h"
 #include "utils/builtins.h"
 #include "utils/lsyscache.h"
@@ -938,8 +937,8 @@ ExecInitAgg(Agg *node, EState *estate, Plan *parent)
 												 inputType, inputType,
 												 true);
 			if (!OidIsValid(eq_function))
-				elog(ERROR, "Unable to identify an equality operator for type '%s'",
-					 typeidTypeName(inputType));
+				elog(ERROR, "Unable to identify an equality operator for type %s",
+					 format_type_be(inputType));
 			fmgr_info(eq_function, &(peraggstate->equalfn));
 			peraggstate->sortOperator = any_ordering_op(inputType);
 			peraggstate->sortstate = NULL;
diff --git a/src/backend/executor/nodeGroup.c b/src/backend/executor/nodeGroup.c
index 881dfa4f1ba..0ba4d679ed6 100644
--- a/src/backend/executor/nodeGroup.c
+++ b/src/backend/executor/nodeGroup.c
@@ -15,7 +15,7 @@
  *	  locate group boundaries.
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/executor/nodeGroup.c,v 1.45 2002/04/16 23:08:10 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/executor/nodeGroup.c,v 1.46 2002/05/17 22:35:12 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -27,7 +27,7 @@
 #include "executor/executor.h"
 #include "executor/nodeGroup.h"
 #include "parser/parse_oper.h"
-#include "parser/parse_type.h"
+#include "utils/builtins.h"
 #include "utils/lsyscache.h"
 #include "utils/syscache.h"
 
@@ -493,8 +493,8 @@ execTuplesMatchPrepare(TupleDesc tupdesc,
 		eq_function = compatible_oper_funcid(makeList1(makeString("=")),
 											 typid, typid, true);
 		if (!OidIsValid(eq_function))
-			elog(ERROR, "Unable to identify an equality operator for type '%s'",
-				 typeidTypeName(typid));
+			elog(ERROR, "Unable to identify an equality operator for type %s",
+				 format_type_be(typid));
 		fmgr_info(eq_function, &eqfunctions[i]);
 	}
 
diff --git a/src/backend/optimizer/plan/initsplan.c b/src/backend/optimizer/plan/initsplan.c
index 5d35d1b230a..fdd375acd83 100644
--- a/src/backend/optimizer/plan/initsplan.c
+++ b/src/backend/optimizer/plan/initsplan.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/optimizer/plan/initsplan.c,v 1.70 2002/05/12 23:43:03 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/optimizer/plan/initsplan.c,v 1.71 2002/05/17 22:35:12 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -30,7 +30,7 @@
 #include "parser/parsetree.h"
 #include "parser/parse_expr.h"
 #include "parser/parse_oper.h"
-#include "parser/parse_type.h"
+#include "utils/builtins.h"
 #include "utils/lsyscache.h"
 #include "utils/syscache.h"
 
@@ -748,7 +748,7 @@ process_implied_equality(Query *root, Node *item1, Node *item2,
 		 * datatypes?  NO, because sortkey selection may screw up anyway.
 		 */
 		elog(ERROR, "Unable to identify an equality operator for types '%s' and '%s'",
-			 typeidTypeName(ltype), typeidTypeName(rtype));
+			 format_type_be(ltype), format_type_be(rtype));
 	}
 	pgopform = (Form_pg_operator) GETSTRUCT(eq_operator);
 
@@ -759,7 +759,7 @@ process_implied_equality(Query *root, Node *item1, Node *item2,
 		pgopform->oprrsortop != sortop2 ||
 		pgopform->oprresult != BOOLOID)
 		elog(ERROR, "Equality operator for types '%s' and '%s' should be mergejoinable, but isn't",
-			 typeidTypeName(ltype), typeidTypeName(rtype));
+			 format_type_be(ltype), format_type_be(rtype));
 
 	clause = makeNode(Expr);
 	clause->typeOid = BOOLOID;
diff --git a/src/backend/parser/parse_coerce.c b/src/backend/parser/parse_coerce.c
index 716cbcbb756..dbbaf033acd 100644
--- a/src/backend/parser/parse_coerce.c
+++ b/src/backend/parser/parse_coerce.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.72 2002/05/12 23:43:03 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.73 2002/05/17 22:35:12 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -133,7 +133,7 @@ coerce_type(ParseState *pstate, Node *node, Oid inputTypeId,
 										InvalidOid,
 										isExplicit);
 		if (!OidIsValid(funcId))
-			elog(ERROR, "coerce_type: no conversion function from %s to %s",
+			elog(ERROR, "coerce_type: no conversion function from '%s' to '%s'",
 				 format_type_be(inputTypeId), format_type_be(targetTypeId));
 
 		result = build_func_call(funcId, baseTypeId, makeList1(node));
@@ -392,8 +392,8 @@ select_common_type(List *typeids, const char *context)
 				 * both types in different categories? then not much
 				 * hope...
 				 */
-				elog(ERROR, "%s types \"%s\" and \"%s\" not matched",
-				  context, typeidTypeName(ptype), typeidTypeName(ntype));
+				elog(ERROR, "%s types '%s' and '%s' not matched",
+				  context, format_type_be(ptype), format_type_be(ntype));
 			}
 			else if (IsPreferredType(pcategory, ntype)
 					 && !IsPreferredType(pcategory, ptype)
@@ -448,8 +448,8 @@ coerce_to_common_type(ParseState *pstate, Node *node,
 						   false);
 	else
 	{
-		elog(ERROR, "%s unable to convert to type \"%s\"",
-			 context, typeidTypeName(targetTypeId));
+		elog(ERROR, "%s unable to convert to type %s",
+			 context, format_type_be(targetTypeId));
 	}
 	return node;
 }
diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c
index e29d5ca4b5c..9a11074ed91 100644
--- a/src/backend/parser/parse_expr.c
+++ b/src/backend/parser/parse_expr.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.117 2002/05/12 23:43:03 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.118 2002/05/17 22:35:13 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -366,7 +366,7 @@ transformExpr(ParseState *pstate, Node *expr)
 					/* Combining operators other than =/<> is dubious... */
 					if (length(left_list) != 1 &&
 						strcmp(opname, "=") != 0 && strcmp(opname, "<>") != 0)
-						elog(ERROR, "Row comparison cannot use '%s'",
+						elog(ERROR, "Row comparison cannot use operator %s",
 							 opname);
 
 					/*
@@ -405,13 +405,13 @@ transformExpr(ParseState *pstate, Node *expr)
 						opform = (Form_pg_operator) GETSTRUCT(optup);
 
 						if (opform->oprresult != BOOLOID)
-							elog(ERROR, "'%s' result type of '%s' must return '%s'"
+							elog(ERROR, "%s has result type of %s, but must return %s"
 								 " to be used with quantified predicate subquery",
-								 opname, typeidTypeName(opform->oprresult),
-								 typeidTypeName(BOOLOID));
+								 opname, format_type_be(opform->oprresult),
+								 format_type_be(BOOLOID));
 
 						if (get_func_retset(opform->oprcode))
-							elog(ERROR, "'%s' must not return a set"
+							elog(ERROR, "%s must not return a set"
 								 " to be used with quantified predicate subquery",
 								 opname);
 
diff --git a/src/backend/parser/parse_func.c b/src/backend/parser/parse_func.c
index 1912ab4e072..ec54bae387b 100644
--- a/src/backend/parser/parse_func.c
+++ b/src/backend/parser/parse_func.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.129 2002/05/12 23:43:03 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.130 2002/05/17 22:35:13 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -19,6 +19,7 @@
 #include "catalog/namespace.h"
 #include "catalog/pg_inherits.h"
 #include "catalog/pg_proc.h"
+#include "lib/stringinfo.h"
 #include "nodes/makefuncs.h"
 #include "parser/parse_coerce.h"
 #include "parser/parse_expr.h"
@@ -261,9 +262,25 @@ ParseFuncOrColumn(ParseState *pstate, List *funcname, List *fargs,
 		 * give an error message that is appropriate for that case.
 		 */
 		if (is_column)
-			elog(ERROR, "Attribute \"%s\" not found",
-				 strVal(lfirst(funcname)));
-		/* Else generate a detailed complaint */
+		{
+			char   *colname = strVal(lfirst(funcname));
+			Oid		relTypeId;
+
+			Assert(nargs == 1);
+			if (IsA(first_arg, RangeVar))
+				elog(ERROR, "No such attribute %s.%s",
+					 ((RangeVar *) first_arg)->relname, colname);
+			relTypeId = exprType(first_arg);
+			if (!ISCOMPLEX(relTypeId))
+				elog(ERROR, "Attribute notation .%s applied to type %s, which is not a complex type",
+					 colname, format_type_be(relTypeId));
+			else
+				elog(ERROR, "Attribute \"%s\" not found in datatype %s",
+					 colname, format_type_be(relTypeId));
+		}
+		/*
+		 * Else generate a detailed complaint for a function
+		 */
 		func_error(NULL, funcname, nargs, oid_array,
 				   "Unable to identify a function that satisfies the "
 				   "given argument types"
@@ -1214,39 +1231,31 @@ func_error(const char *caller, List *funcname,
 		   int nargs, const Oid *argtypes,
 		   const char *msg)
 {
-	char		p[(NAMEDATALEN + 2) * FUNC_MAX_ARGS],
-			   *ptr;
+	StringInfoData argbuf;
 	int			i;
 
-	ptr = p;
-	*ptr = '\0';
+	initStringInfo(&argbuf);
+
 	for (i = 0; i < nargs; i++)
 	{
 		if (i)
-		{
-			*ptr++ = ',';
-			*ptr++ = ' ';
-		}
+			appendStringInfo(&argbuf, ", ");
 		if (OidIsValid(argtypes[i]))
-		{
-			strncpy(ptr, typeidTypeName(argtypes[i]), NAMEDATALEN);
-			*(ptr + NAMEDATALEN) = '\0';
-		}
+			appendStringInfo(&argbuf, format_type_be(argtypes[i]));
 		else
-			strcpy(ptr, "opaque");
-		ptr += strlen(ptr);
+			appendStringInfo(&argbuf, "opaque");
 	}
 
 	if (caller == NULL)
 	{
-		elog(ERROR, "Function '%s(%s)' does not exist%s%s",
-			 NameListToString(funcname), p,
+		elog(ERROR, "Function %s(%s) does not exist%s%s",
+			 NameListToString(funcname), argbuf.data,
 			 ((msg != NULL) ? "\n\t" : ""), ((msg != NULL) ? msg : ""));
 	}
 	else
 	{
-		elog(ERROR, "%s: function '%s(%s)' does not exist%s%s",
-			 caller, NameListToString(funcname), p,
+		elog(ERROR, "%s: function %s(%s) does not exist%s%s",
+			 caller, NameListToString(funcname), argbuf.data,
 			 ((msg != NULL) ? "\n\t" : ""), ((msg != NULL) ? msg : ""));
 	}
 }
@@ -1271,10 +1280,10 @@ find_aggregate_func(const char *caller, List *aggname, Oid basetype)
 	if (!OidIsValid(oid))
 	{
 		if (basetype == InvalidOid)
-			elog(ERROR, "%s: aggregate '%s' for all types does not exist",
+			elog(ERROR, "%s: aggregate %s(*) does not exist",
 				 caller, NameListToString(aggname));
 		else
-			elog(ERROR, "%s: aggregate '%s' for type %s does not exist",
+			elog(ERROR, "%s: aggregate %s(%s) does not exist",
 				 caller, NameListToString(aggname),
 				 format_type_be(basetype));
 	}
diff --git a/src/backend/parser/parse_type.c b/src/backend/parser/parse_type.c
index a8a466ac3ba..60ccd611560 100644
--- a/src/backend/parser/parse_type.c
+++ b/src/backend/parser/parse_type.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_type.c,v 1.41 2002/05/12 20:10:04 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_type.c,v 1.42 2002/05/17 22:35:13 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -23,6 +23,7 @@
 #include "parser/parser.h"
 #include "parser/parse_expr.h"
 #include "parser/parse_type.h"
+#include "utils/builtins.h"
 #include "utils/lsyscache.h"
 #include "utils/syscache.h"
 
@@ -93,7 +94,7 @@ LookupTypeName(const TypeName *typename)
 
 		/* emit nuisance warning */
 		elog(NOTICE, "%s converted to %s",
-			 TypeNameToString(typename), typeidTypeName(restype));
+			 TypeNameToString(typename), format_type_be(restype));
 	}
 	else
 	{
@@ -187,7 +188,7 @@ TypeNameToString(const TypeName *typename)
 	else
 	{
 		/* Look up internally-specified type */
-		appendStringInfo(&string, "%s", typeidTypeName(typename->typeid));
+		appendStringInfo(&string, "%s", format_type_be(typename->typeid));
 	}
 
 	/*
@@ -252,12 +253,7 @@ typenameType(const TypeName *typename)
 	return (Type) tup;
 }
 
-/* check to see if a type id is valid,
- * returns true if it is. By using this call before calling
- * typeidType or typeidTypeName, more meaningful error messages
- * can be produced because the caller typically has more context of
- *	what's going on                 - jolly
- */
+/* check to see if a type id is valid, returns true if it is */
 bool
 typeidIsValid(Oid id)
 {
@@ -418,32 +414,6 @@ typeidOutfunc(Oid type_id)
 }
 #endif
 
-/* return a type name, given a typeid */
-/* nb: type name is NOT unique; use this only for error messages */
-char *
-typeidTypeName(Oid id)
-{
-	HeapTuple	tup;
-	Form_pg_type typetuple;
-	char	   *result;
-
-	tup = SearchSysCache(TYPEOID,
-						 ObjectIdGetDatum(id),
-						 0, 0, 0);
-	if (!HeapTupleIsValid(tup))
-		elog(ERROR, "Unable to locate type oid %u in catalog", id);
-	typetuple = (Form_pg_type) GETSTRUCT(tup);
-
-	/*
-	 * pstrdup here because result may need to outlive the syscache entry
-	 * (eg, it might end up as part of a parse tree that will outlive the
-	 * current transaction...)
-	 */
-	result = pstrdup(NameStr(typetuple->typname));
-	ReleaseSysCache(tup);
-	return result;
-}
-
 /* given a typeid, return the type's typrelid (associated relation, if any) */
 Oid
 typeidTypeRelid(Oid type_id)
diff --git a/src/include/parser/parse_type.h b/src/include/parser/parse_type.h
index d883a2b3316..6a4eaa010ad 100644
--- a/src/include/parser/parse_type.h
+++ b/src/include/parser/parse_type.h
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: parse_type.h,v 1.21 2002/03/29 19:06:25 tgl Exp $
+ * $Id: parse_type.h,v 1.22 2002/05/17 22:35:13 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -36,7 +36,6 @@ extern char typeTypeFlag(Type t);
 extern Oid	typeTypeRelid(Type typ);
 extern Datum stringTypeDatum(Type tp, char *string, int32 atttypmod);
 
-extern char *typeidTypeName(Oid id);
 extern Oid	typeidTypeRelid(Oid type_id);
 
 extern void parseTypeString(const char *str, Oid *type_id, int32 *typmod);
diff --git a/src/test/regress/expected/errors.out b/src/test/regress/expected/errors.out
index 2d90066fc72..4eabfd129bd 100644
--- a/src/test/regress/expected/errors.out
+++ b/src/test/regress/expected/errors.out
@@ -102,7 +102,7 @@ create aggregate newavg2 (sfunc = int4pl,
 			  stype = int4,
 			  finalfunc = int2um,
 			  initcond = '0');
-ERROR:  AggregateCreate: function 'int2um(int4)' does not exist
+ERROR:  AggregateCreate: function int2um(integer) does not exist
 -- left out basetype
 create aggregate newcnt1 (sfunc = int4inc,
 			  stype = int4,
@@ -137,10 +137,10 @@ drop aggregate newcnt (nonesuch);
 ERROR:  Type "nonesuch" does not exist
 -- no such aggregate 
 drop aggregate nonesuch (int4);
-ERROR:  RemoveAggregate: aggregate 'nonesuch' for type integer does not exist
+ERROR:  RemoveAggregate: aggregate nonesuch(integer) does not exist
 -- no such aggregate for type
 drop aggregate newcnt (float4);
-ERROR:  RemoveAggregate: aggregate 'newcnt' for type real does not exist
+ERROR:  RemoveAggregate: aggregate newcnt(real) does not exist
 --
 -- REMOVE FUNCTION
  
@@ -152,7 +152,7 @@ drop function 314159();
 ERROR:  parser: parse error at or near "314159"
 -- no such function 
 drop function nonesuch();
-ERROR:  RemoveFunction: function 'nonesuch()' does not exist
+ERROR:  RemoveFunction: function nonesuch() does not exist
 --
 -- REMOVE TYPE
  
diff --git a/src/test/regress/expected/privileges.out b/src/test/regress/expected/privileges.out
index c9c013e758f..1ab013469fa 100644
--- a/src/test/regress/expected/privileges.out
+++ b/src/test/regress/expected/privileges.out
@@ -205,7 +205,7 @@ GRANT USAGE ON FUNCTION testfunc1(int) TO regressuser3; -- semantic error
 ERROR:  invalid privilege type USAGE for function object
 GRANT ALL PRIVILEGES ON FUNCTION testfunc1(int) TO regressuser4;
 GRANT ALL PRIVILEGES ON FUNCTION testfunc_nosuch(int) TO regressuser4;
-ERROR:  GRANT: function 'testfunc_nosuch(int4)' does not exist
+ERROR:  GRANT: function testfunc_nosuch(integer) does not exist
 SET SESSION AUTHORIZATION regressuser2;
 SELECT testfunc1(5), testfunc2(5); -- ok
  testfunc1 | testfunc2 
-- 
GitLab