]> granicus.if.org Git - postgresql/commitdiff
Wrong boundary condition on number-of-args check.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 11 Jan 2000 05:22:25 +0000 (05:22 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 11 Jan 2000 05:22:25 +0000 (05:22 +0000)
src/backend/catalog/pg_proc.c

index 3e1c6c4667ded27acb858b94f6032f151714d75e..90232daa092699f08a71b7d07c3bfacc2a6a65ac 100644 (file)
@@ -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 */