From fa3aa5e1bb494c64432625bf426591d49ed5d0c0 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 11 Jan 2000 05:22:25 +0000 Subject: [PATCH] Wrong boundary condition on number-of-args check. --- src/backend/catalog/pg_proc.c | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c index 3e1c6c4667..90232daa09 100644 --- a/src/backend/catalog/pg_proc.c +++ b/src/backend/catalog/pg_proc.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.38 2000/01/11 02:30:05 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.39 2000/01/11 05:22:25 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -80,8 +80,9 @@ ProcedureCreate(char *procedureName, { Value *t = lfirst(x); - if (parameterCount > FUNC_MAX_ARGS) - elog(ERROR, "Procedures cannot take more than %d arguments",FUNC_MAX_ARGS); + if (parameterCount >= FUNC_MAX_ARGS) + elog(ERROR, "Procedures cannot take more than %d arguments", + FUNC_MAX_ARGS); if (strcmp(strVal(t), "opaque") == 0) { @@ -172,7 +173,6 @@ ProcedureCreate(char *procedureName, elog(ERROR, "ProcedureCreate: sql functions cannot return type \"opaque\""); typeObjectId = 0; } - else { typeObjectId = TypeGet(returnTypeName, &defined); @@ -192,7 +192,6 @@ ProcedureCreate(char *procedureName, returnTypeName); } } - else if (!defined) { elog(NOTICE, "ProcedureCreate: return type '%s' is only a shell", @@ -247,7 +246,7 @@ ProcedureCreate(char *procedureName, prosrc = procedureName; if (fmgr_lookupByName(prosrc) == (func_ptr) NULL) elog(ERROR, - "ProcedureCreate: there is no builtin function named \"%s\"", + "ProcedureCreate: there is no builtin function named \"%s\"", prosrc); } @@ -266,30 +265,18 @@ ProcedureCreate(char *procedureName, values[i++] = NameGetDatum(&procname); values[i++] = Int32GetDatum(GetUserId()); values[i++] = ObjectIdGetDatum(languageObjectId); - /* XXX isinherited is always false for now */ - values[i++] = Int8GetDatum((bool) 0); - - /* XXX istrusted is always false for now */ - values[i++] = Int8GetDatum(trusted); values[i++] = Int8GetDatum(canCache); values[i++] = UInt16GetDatum(parameterCount); values[i++] = Int8GetDatum(returnsSet); values[i++] = ObjectIdGetDatum(typeObjectId); - values[i++] = (Datum) typev; - - /* - * The following assignments of constants are made. The real values - * will have to be extracted from the arglist someday soon. - */ values[i++] = Int32GetDatum(byte_pct); /* probyte_pct */ values[i++] = Int32GetDatum(perbyte_cpu); /* properbyte_cpu */ values[i++] = Int32GetDatum(percall_cpu); /* propercall_cpu */ values[i++] = Int32GetDatum(outin_ratio); /* prooutin_ratio */ - values[i++] = (Datum) fmgr(F_TEXTIN, prosrc); /* prosrc */ values[i++] = (Datum) fmgr(F_TEXTIN, probin); /* probin */ -- 2.40.0