Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 79fafdf

Browse files
committed
Some early work on error message editing. Operator-not-found and
function-not-found messages now distinguish the cases no-match and ambiguous-match, and they follow the style guidelines too.
1 parent cdb8a84 commit 79fafdf

30 files changed

+389
-367
lines changed

src/backend/catalog/aclchk.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.82 2003/06/27 14:45:26 petere Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/catalog/aclchk.c,v 1.83 2003/07/04 02:51:33 tgl Exp $
1212
*
1313
* NOTES
1414
* See acl.h.
@@ -397,8 +397,7 @@ ExecuteGrantStmt_Function(GrantStmt *stmt)
397397
char nulls[Natts_pg_proc];
398398
char replaces[Natts_pg_proc];
399399

400-
oid = LookupFuncNameTypeNames(func->funcname, func->funcargs,
401-
stmt->is_grant ? "GRANT" : "REVOKE");
400+
oid = LookupFuncNameTypeNames(func->funcname, func->funcargs, false);
402401

403402
relation = heap_openr(ProcedureRelationName, RowExclusiveLock);
404403
tuple = SearchSysCache(PROCOID,

src/backend/catalog/pg_aggregate.c

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_aggregate.c,v 1.59 2003/07/01 19:10:52 tgl Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_aggregate.c,v 1.60 2003/07/04 02:51:33 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -109,8 +109,7 @@ AggregateCreate(const char *aggName,
109109
ObjectIdGetDatum(transfn),
110110
0, 0, 0);
111111
if (!HeapTupleIsValid(tup))
112-
func_error("AggregateCreate", aggtransfnName,
113-
nargs_transfn, fnArgs, NULL);
112+
elog(ERROR, "cache lookup of function %u failed", transfn);
114113
proc = (Form_pg_proc) GETSTRUCT(tup);
115114

116115
/*
@@ -264,10 +263,12 @@ lookup_agg_function(List *fnName,
264263
&true_oid_array);
265264

266265
/* only valid case is a normal function not returning a set */
267-
if (fdresult != FUNCDETAIL_NORMAL ||
268-
!OidIsValid(fnOid) ||
269-
retset)
270-
func_error("AggregateCreate", fnName, nargs, input_types, NULL);
266+
if (fdresult != FUNCDETAIL_NORMAL || !OidIsValid(fnOid))
267+
elog(ERROR, "function %s does not exist",
268+
func_signature_string(fnName, nargs, input_types));
269+
if (retset)
270+
elog(ERROR, "function %s returns a set",
271+
func_signature_string(fnName, nargs, input_types));
271272

272273
/*
273274
* If the given type(s) are all polymorphic, there's nothing we
@@ -295,13 +296,15 @@ lookup_agg_function(List *fnName,
295296
if (true_oid_array[0] != ANYARRAYOID &&
296297
true_oid_array[0] != ANYELEMENTOID &&
297298
!IsBinaryCoercible(input_types[0], true_oid_array[0]))
298-
func_error("AggregateCreate", fnName, nargs, input_types, NULL);
299+
elog(ERROR, "function %s requires run-time type coercion",
300+
func_signature_string(fnName, nargs, true_oid_array));
299301

300302
if (nargs == 2 &&
301303
true_oid_array[1] != ANYARRAYOID &&
302304
true_oid_array[1] != ANYELEMENTOID &&
303305
!IsBinaryCoercible(input_types[1], true_oid_array[1]))
304-
func_error("AggregateCreate", fnName, nargs, input_types, NULL);
306+
elog(ERROR, "function %s requires run-time type coercion",
307+
func_signature_string(fnName, nargs, true_oid_array));
305308

306309
return fnOid;
307310
}

src/backend/catalog/pg_operator.c

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.78 2003/01/28 22:13:25 tgl Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.79 2003/07/04 02:51:33 tgl Exp $
1212
*
1313
* NOTES
1414
* these routines moved here from commands/define.c and somewhat cleaned up.
@@ -175,7 +175,7 @@ OperatorLookup(List *operatorName,
175175
RegProcedure oprcode;
176176

177177
operatorObjectId = LookupOperName(operatorName, leftObjectId,
178-
rightObjectId);
178+
rightObjectId, true);
179179
if (!OidIsValid(operatorObjectId))
180180
{
181181
*defined = false;
@@ -453,9 +453,7 @@ OperatorCreate(const char *operatorName,
453453
typeId[1] = rightTypeId;
454454
nargs = 2;
455455
}
456-
procOid = LookupFuncName(procedureName, nargs, typeId);
457-
if (!OidIsValid(procOid))
458-
func_error("OperatorDef", procedureName, nargs, typeId, NULL);
456+
procOid = LookupFuncName(procedureName, nargs, typeId, false);
459457
operResultType = get_func_rettype(procOid);
460458

461459
/*
@@ -469,9 +467,7 @@ OperatorCreate(const char *operatorName,
469467
typeId[2] = INTERNALOID; /* args list */
470468
typeId[3] = INT4OID; /* varRelid */
471469

472-
restOid = LookupFuncName(restrictionName, 4, typeId);
473-
if (!OidIsValid(restOid))
474-
func_error("OperatorDef", restrictionName, 4, typeId, NULL);
470+
restOid = LookupFuncName(restrictionName, 4, typeId, false);
475471
}
476472
else
477473
restOid = InvalidOid;
@@ -487,9 +483,7 @@ OperatorCreate(const char *operatorName,
487483
typeId[2] = INTERNALOID; /* args list */
488484
typeId[3] = INT2OID; /* jointype */
489485

490-
joinOid = LookupFuncName(joinName, 4, typeId);
491-
if (!OidIsValid(joinOid))
492-
func_error("OperatorDef", joinName, 4, typeId, NULL);
486+
joinOid = LookupFuncName(joinName, 4, typeId, false);
493487
}
494488
else
495489
joinOid = InvalidOid;

src/backend/commands/aggregatecmds.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
*
1111
* IDENTIFICATION
12-
* $Header: /cvsroot/pgsql/src/backend/commands/aggregatecmds.c,v 1.9 2003/07/01 19:10:52 tgl Exp $
12+
* $Header: /cvsroot/pgsql/src/backend/commands/aggregatecmds.c,v 1.10 2003/07/04 02:51:33 tgl Exp $
1313
*
1414
* DESCRIPTION
1515
* The "DefineFoo" routines take the parse tree and pick out the
@@ -165,7 +165,7 @@ RemoveAggregate(RemoveAggrStmt *stmt)
165165
else
166166
basetypeID = ANYOID;
167167

168-
procOid = find_aggregate_func("RemoveAggregate", aggName, basetypeID);
168+
procOid = find_aggregate_func(aggName, basetypeID, false);
169169

170170
/*
171171
* Find the function tuple, do permissions and validity checks
@@ -223,7 +223,7 @@ RenameAggregate(List *name, TypeName *basetype, const char *newname)
223223

224224
rel = heap_openr(ProcedureRelationName, RowExclusiveLock);
225225

226-
procOid = find_aggregate_func("RenameAggregate", name, basetypeOid);
226+
procOid = find_aggregate_func(name, basetypeOid, false);
227227

228228
tup = SearchSysCacheCopy(PROCOID,
229229
ObjectIdGetDatum(procOid),

src/backend/commands/comment.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Copyright (c) 1996-2001, PostgreSQL Global Development Group
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/commands/comment.c,v 1.63 2003/06/27 14:45:27 petere Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/commands/comment.c,v 1.64 2003/07/04 02:51:33 tgl Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -629,7 +629,7 @@ CommentAggregate(List *aggregate, List *arguments, char *comment)
629629

630630
/* Now, attempt to find the actual tuple in pg_proc */
631631

632-
oid = find_aggregate_func("CommentAggregate", aggregate, baseoid);
632+
oid = find_aggregate_func(aggregate, baseoid, false);
633633

634634
/* Next, validate the user's attempt to comment */
635635

@@ -657,8 +657,7 @@ CommentProc(List *function, List *arguments, char *comment)
657657

658658
/* Look up the procedure */
659659

660-
oid = LookupFuncNameTypeNames(function, arguments,
661-
"CommentProc");
660+
oid = LookupFuncNameTypeNames(function, arguments, false);
662661

663662
/* Now, validate the user's ability to comment on this function */
664663

@@ -689,8 +688,7 @@ CommentOperator(List *opername, List *arguments, char *comment)
689688
Oid classoid;
690689

691690
/* Look up the operator */
692-
oid = LookupOperNameTypeNames(opername, typenode1, typenode2,
693-
"CommentOperator");
691+
oid = LookupOperNameTypeNames(opername, typenode1, typenode2, false);
694692

695693
/* Valid user's ability to comment on this operator */
696694
if (!pg_oper_ownercheck(oid, GetUserId()))

src/backend/commands/conversioncmds.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/commands/conversioncmds.c,v 1.6 2003/06/27 14:45:27 petere Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/commands/conversioncmds.c,v 1.7 2003/07/04 02:51:33 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -70,10 +70,8 @@ CreateConversionCommand(CreateConversionStmt *stmt)
7070
* Check the existence of the conversion function. Function name could
7171
* be a qualified name.
7272
*/
73-
funcoid = LookupFuncName(func_name, sizeof(funcargs) / sizeof(Oid), funcargs);
74-
if (!OidIsValid(funcoid))
75-
func_error("CreateConversion", func_name,
76-
sizeof(funcargs) / sizeof(Oid), funcargs, NULL);
73+
funcoid = LookupFuncName(func_name, sizeof(funcargs) / sizeof(Oid),
74+
funcargs, false);
7775

7876
/* Check we have EXECUTE rights for the function */
7977
aclresult = pg_proc_aclcheck(funcoid, GetUserId(), ACL_EXECUTE);

src/backend/commands/functioncmds.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
*
1111
* IDENTIFICATION
12-
* $Header: /cvsroot/pgsql/src/backend/commands/functioncmds.c,v 1.26 2003/06/27 14:45:27 petere Exp $
12+
* $Header: /cvsroot/pgsql/src/backend/commands/functioncmds.c,v 1.27 2003/07/04 02:51:33 tgl Exp $
1313
*
1414
* DESCRIPTION
1515
* These routines take the parse tree and pick out the
@@ -495,8 +495,7 @@ RemoveFunction(RemoveFuncStmt *stmt)
495495
/*
496496
* Find the function, do permissions and validity checks
497497
*/
498-
funcOid = LookupFuncNameTypeNames(functionName, argTypes,
499-
"RemoveFunction");
498+
funcOid = LookupFuncNameTypeNames(functionName, argTypes, false);
500499

501500
tup = SearchSysCache(PROCOID,
502501
ObjectIdGetDatum(funcOid),
@@ -607,7 +606,7 @@ RenameFunction(List *name, List *argtypes, const char *newname)
607606

608607
rel = heap_openr(ProcedureRelationName, RowExclusiveLock);
609608

610-
procOid = LookupFuncNameTypeNames(name, argtypes, "RenameFunction");
609+
procOid = LookupFuncNameTypeNames(name, argtypes, false);
611610

612611
tup = SearchSysCacheCopy(PROCOID,
613612
ObjectIdGetDatum(procOid),
@@ -796,7 +795,7 @@ CreateCast(CreateCastStmt *stmt)
796795

797796
funcid = LookupFuncNameTypeNames(stmt->func->funcname,
798797
stmt->func->funcargs,
799-
"CreateCast");
798+
false);
800799

801800
tuple = SearchSysCache(PROCOID,
802801
ObjectIdGetDatum(funcid),

src/backend/commands/opclasscmds.c

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
*
1111
* IDENTIFICATION
12-
* $Header: /cvsroot/pgsql/src/backend/commands/opclasscmds.c,v 1.10 2003/06/27 14:45:27 petere Exp $
12+
* $Header: /cvsroot/pgsql/src/backend/commands/opclasscmds.c,v 1.11 2003/07/04 02:51:33 tgl Exp $
1313
*
1414
*-------------------------------------------------------------------------
1515
*/
@@ -155,19 +155,15 @@ DefineOpClass(CreateOpClassStmt *stmt)
155155
TypeName *typeName2 = (TypeName *) lsecond(item->args);
156156

157157
operOid = LookupOperNameTypeNames(item->name,
158-
typeName1, typeName2,
159-
"DefineOpClass");
160-
/* No need to check for error */
158+
typeName1,
159+
typeName2,
160+
false);
161161
}
162162
else
163163
{
164164
/* Default to binary op on input datatype */
165-
operOid = LookupOperName(item->name, typeoid, typeoid);
166-
if (!OidIsValid(operOid))
167-
elog(ERROR, "DefineOpClass: Operator '%s' for types '%s' and '%s' does not exist",
168-
NameListToString(item->name),
169-
format_type_be(typeoid),
170-
format_type_be(typeoid));
165+
operOid = LookupOperName(item->name, typeoid, typeoid,
166+
false);
171167
}
172168
/* Caller must have execute permission on operators */
173169
funcOid = get_opcode(operOid);
@@ -187,7 +183,7 @@ DefineOpClass(CreateOpClassStmt *stmt)
187183
elog(ERROR, "DefineOpClass: procedure number %d appears more than once",
188184
item->number);
189185
funcOid = LookupFuncNameTypeNames(item->name, item->args,
190-
"DefineOpClass");
186+
false);
191187
/* Caller must have execute permission on functions */
192188
aclresult = pg_proc_aclcheck(funcOid, GetUserId(),
193189
ACL_EXECUTE);

src/backend/commands/operatorcmds.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
*
1111
* IDENTIFICATION
12-
* $Header: /cvsroot/pgsql/src/backend/commands/operatorcmds.c,v 1.7 2002/09/04 20:31:15 momjian Exp $
12+
* $Header: /cvsroot/pgsql/src/backend/commands/operatorcmds.c,v 1.8 2003/07/04 02:51:33 tgl Exp $
1313
*
1414
* DESCRIPTION
1515
* The "DefineFoo" routines take the parse tree and pick out the
@@ -206,14 +206,13 @@ RemoveOperator(RemoveOperStmt *stmt)
206206
ObjectAddress object;
207207

208208
operOid = LookupOperNameTypeNames(operatorName, typeName1, typeName2,
209-
"RemoveOperator");
209+
false);
210210

211211
tup = SearchSysCache(OPEROID,
212212
ObjectIdGetDatum(operOid),
213213
0, 0, 0);
214214
if (!HeapTupleIsValid(tup)) /* should not happen */
215-
elog(ERROR, "RemoveOperator: failed to find tuple for operator '%s'",
216-
NameListToString(operatorName));
215+
elog(ERROR, "cache lookup of operator %u failed", operOid);
217216

218217
/* Permission check: must own operator or its namespace */
219218
if (!pg_oper_ownercheck(operOid, GetUserId()) &&

src/backend/commands/proclang.c

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1994, Regents of the University of California
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/commands/proclang.c,v 1.44 2003/06/27 14:45:27 petere Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/commands/proclang.c,v 1.45 2003/07/04 02:51:33 tgl Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -77,10 +77,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
7777
* return type
7878
*/
7979
MemSet(typev, 0, sizeof(typev));
80-
procOid = LookupFuncName(stmt->plhandler, 0, typev);
81-
if (!OidIsValid(procOid))
82-
elog(ERROR, "function %s() doesn't exist",
83-
NameListToString(stmt->plhandler));
80+
procOid = LookupFuncName(stmt->plhandler, 0, typev, false);
8481
funcrettype = get_func_rettype(procOid);
8582
if (funcrettype != LANGUAGE_HANDLEROID)
8683
{
@@ -104,10 +101,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
104101
if (stmt->plvalidator)
105102
{
106103
typev[0] = OIDOID;
107-
valProcOid = LookupFuncName(stmt->plvalidator, 1, typev);
108-
if (!OidIsValid(valProcOid))
109-
elog(ERROR, "function %s(oid) doesn't exist",
110-
NameListToString(stmt->plvalidator));
104+
valProcOid = LookupFuncName(stmt->plvalidator, 1, typev, false);
111105
/* return value is ignored, so we don't check the type */
112106
}
113107
else

src/backend/commands/trigger.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1994, Regents of the University of California
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.149 2003/06/24 23:25:44 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.150 2003/07/04 02:51:33 tgl Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -257,10 +257,7 @@ CreateTrigger(CreateTrigStmt *stmt, bool forConstraint)
257257
* Find and validate the trigger function.
258258
*/
259259
MemSet(fargtypes, 0, FUNC_MAX_ARGS * sizeof(Oid));
260-
funcoid = LookupFuncName(stmt->funcname, 0, fargtypes);
261-
if (!OidIsValid(funcoid))
262-
elog(ERROR, "CreateTrigger: function %s() does not exist",
263-
NameListToString(stmt->funcname));
260+
funcoid = LookupFuncName(stmt->funcname, 0, fargtypes, false);
264261
funcrettype = get_func_rettype(funcoid);
265262
if (funcrettype != TRIGGEROID)
266263
{

0 commit comments

Comments
 (0)