Make number of args to a function configurable.
authorBruce Momjian
Mon, 10 Jan 2000 17:14:46 +0000 (17:14 +0000)
committerBruce Momjian
Mon, 10 Jan 2000 17:14:46 +0000 (17:14 +0000)
30 files changed:
src/backend/access/hash/hashfunc.c
src/backend/access/nbtree/nbtcompare.c
src/backend/catalog/pg_aggregate.c
src/backend/catalog/pg_operator.c
src/backend/catalog/pg_proc.c
src/backend/catalog/pg_type.c
src/backend/commands/_deadcode/recipe.c
src/backend/commands/comment.c
src/backend/commands/indexcmds.c
src/backend/commands/proclang.c
src/backend/commands/remove.c
src/backend/commands/trigger.c
src/backend/executor/execQual.c
src/backend/libpq/be-pqexec.c
src/backend/parser/parse_coerce.c
src/backend/parser/parse_func.c
src/backend/parser/parse_target.c
src/backend/tcop/fastpath.c
src/backend/utils/adt/regproc.c
src/backend/utils/adt/selfuncs.c
src/backend/utils/fmgr/fmgr.c
src/bin/pg_dump/pg_dump.c
src/bin/pg_dump/pg_dump.h
src/include/access/funcindex.h
src/include/config.h.in
src/include/parser/parse_func.h
src/include/utils/rel.h
src/pl/plpgsql/src/pl_comp.c
src/pl/plpgsql/src/plpgsql.h
src/pl/tcl/pltcl.c

index e318777700946a539e634aec0c451faea26eeeac..3b64450707c2124d13304271545919ec41075517 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/hash/hashfunc.c,v 1.21 2000/01/10 16:13:10 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/hash/hashfunc.c,v 1.22 2000/01/10 17:14:28 momjian Exp $
  *
  * NOTES
  *   These functions are stored in pg_amproc.  For each operator class
@@ -145,7 +145,7 @@ hashoidvector(Oid *key)
    int         i;
    uint32      result = 0;
 
-   for (i = 0; i < 8; i++)
+   for (i = 0; i < INDEX_MAX_KEYS; i++)
        result = result ^ (~(uint32) key[i]);
    return result;
 }
index 57c3f981a37ead0b16bf00b6268de9584ec10ae7..fd84db3e5cb44fe7129e5dece32e1ecc7780e757 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtcompare.c,v 1.29 2000/01/10 16:13:10 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtcompare.c,v 1.30 2000/01/10 17:14:29 momjian Exp $
  *
  * NOTES
  *     These functions are stored in pg_amproc.  For each operator class
@@ -98,7 +98,7 @@ btoidvectorcmp(Oid *a, Oid *b)
 {
    int         i;
 
-   for (i = 0; i < 8; i++)
+   for (i = 0; i < INDEX_MAX_KEYS; i++)
        /* we use this because we need the int4gt, etc */
        if (!int4eq(a[i], b[i]))
        {
index e7e61178c2d8c597121de85d87d4ee662ef7c6a6..7a5377fd033c380b54054046fadc9897382451df 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_aggregate.c,v 1.26 1999/11/22 17:55:58 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_aggregate.c,v 1.27 2000/01/10 17:14:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -71,11 +71,11 @@ AggregateCreate(char *aggName,
    Oid         xret1 = InvalidOid;
    Oid         xret2 = InvalidOid;
    Oid         fret = InvalidOid;
-   Oid         fnArgs[8];
+   Oid         fnArgs[FUNC_MAX_ARGS];
    NameData    aname;
    TupleDesc   tupDesc;
 
-   MemSet(fnArgs, 0, 8 * sizeof(Oid));
+   MemSet(fnArgs, 0, FUNC_MAX_ARGS * sizeof(Oid));
 
    /* sanity checks */
    if (!aggName)
index f30482f4dbe032bf02dc4594c52de02b13530ff4..a143c807c777787e0aad3e4e3b90f29fd321de15 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.46 2000/01/05 18:23:45 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.47 2000/01/10 17:14:31 momjian Exp $
  *
  * NOTES
  *   these routines moved here from commands/define.c and somewhat cleaned up.
@@ -482,7 +482,7 @@ OperatorDef(char *operatorName,
    bool        rightDefined = false;
    bool        selfCommutator = false;
    char       *name[4];
-   Oid         typeId[8];
+   Oid         typeId[FUNC_MAX_ARGS];
    int         nargs;
    NameData    oname;
    TupleDesc   tupDesc;
@@ -556,7 +556,7 @@ OperatorDef(char *operatorName,
     * have to worry about deleting them later.
     * ----------------
     */
-   MemSet(typeId, 0, 8 * sizeof(Oid));
+   MemSet(typeId, 0, FUNC_MAX_ARGS * sizeof(Oid));
    if (!leftTypeName)
    {
        typeId[0] = rightTypeId;
@@ -592,7 +592,7 @@ OperatorDef(char *operatorName,
     */
    if (restrictionName)
    {                           /* optional */
-       MemSet(typeId, 0, 8 * sizeof(Oid));
+       MemSet(typeId, 0, FUNC_MAX_ARGS * sizeof(Oid));
        typeId[0] = OIDOID;     /* operator OID */
        typeId[1] = OIDOID;     /* relation OID */
        typeId[2] = INT2OID;    /* attribute number */
@@ -617,7 +617,7 @@ OperatorDef(char *operatorName,
     */
    if (joinName)
    {                           /* optional */
-       MemSet(typeId, 0, 8 * sizeof(Oid));
+       MemSet(typeId, 0, FUNC_MAX_ARGS * sizeof(Oid));
        typeId[0] = OIDOID;     /* operator OID */
        typeId[1] = OIDOID;     /* relation OID 1 */
        typeId[2] = INT2OID;    /* attribute number 1 */
@@ -923,11 +923,11 @@ OperatorUpd(Oid baseId, Oid commId, Oid negId)
                setheapoverride(true);
                heap_update(pg_operator_desc, &tup->t_self, tup, NULL);
                setheapoverride(false);
-       
+
                if (RelationGetForm(pg_operator_desc)->relhasindex)
                {
                    Relation    idescs[Num_pg_operator_indices];
-           
+
                    CatalogOpenIndices(Num_pg_operator_indices, Name_pg_operator_indices, idescs);
                    CatalogIndexInsert(idescs, Num_pg_operator_indices, pg_operator_desc, tup);
                    CatalogCloseIndices(Num_pg_operator_indices, idescs);
@@ -961,7 +961,7 @@ OperatorUpd(Oid baseId, Oid commId, Oid negId)
        if (RelationGetForm(pg_operator_desc)->relhasindex)
        {
            Relation    idescs[Num_pg_operator_indices];
-   
+
            CatalogOpenIndices(Num_pg_operator_indices, Name_pg_operator_indices, idescs);
            CatalogIndexInsert(idescs, Num_pg_operator_indices, pg_operator_desc, tup);
            CatalogCloseIndices(Num_pg_operator_indices, idescs);
@@ -1001,7 +1001,7 @@ OperatorUpd(Oid baseId, Oid commId, Oid negId)
        if (RelationGetForm(pg_operator_desc)->relhasindex)
        {
            Relation    idescs[Num_pg_operator_indices];
-   
+
            CatalogOpenIndices(Num_pg_operator_indices, Name_pg_operator_indices, idescs);
            CatalogIndexInsert(idescs, Num_pg_operator_indices, pg_operator_desc, tup);
            CatalogCloseIndices(Num_pg_operator_indices, idescs);
index 3c0ca7689004b439afcd8333382b6ae8144494c9..9eea8cd1266034b1a5946c9cc45f604330c8f45e 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.36 1999/11/22 17:55:58 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.37 2000/01/10 17:14:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -61,7 +61,7 @@ ProcedureCreate(char *procedureName,
    List       *x;
    List       *querytree_list;
    List       *plan_list;
-   Oid         typev[8];
+   Oid         typev[FUNC_MAX_ARGS];
    Oid         relid;
    Oid         toid;
    NameData    procname;
@@ -75,13 +75,13 @@ ProcedureCreate(char *procedureName,
    Assert(PointerIsValid(probin));
 
    parameterCount = 0;
-   MemSet(typev, 0, 8 * sizeof(Oid));
+   MemSet(typev, 0, FUNC_MAX_ARGS * sizeof(Oid));
    foreach(x, argList)
    {
        Value      *t = lfirst(x);
 
-       if (parameterCount == 8)
-           elog(ERROR, "Procedures cannot take more than 8 arguments");
+       if (parameterCount == FUNC_MAX_ARGS)
+           elog(ERROR, "Procedures cannot take more than %d arguments",FUNC_MAX_ARGS);
 
        if (strcmp(strVal(t), "opaque") == 0)
        {
index 4a2bdca1c1ba75bcdcd33671715b9f5aaeb7f3b0..b7226146b9d4ed990a6cc50f3704f121c78dc292 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.44 1999/12/16 22:19:39 wieck Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.45 2000/01/10 17:14:31 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -305,7 +305,7 @@ TypeCreate(char *typeName,
    bool        defined;
    NameData    name;
    TupleDesc   tupDesc;
-   Oid         argList[8];
+   Oid         argList[FUNC_MAX_ARGS];
 
    static ScanKeyData typeKey[1] = {
        {0, Anum_pg_type_typname, F_NAMEEQ}
@@ -393,7 +393,7 @@ TypeCreate(char *typeName,
         * First look for a 1-argument func with all argtypes 0. This is
         * valid for all four kinds of procedure.
         */
-       MemSet(argList, 0, 8 * sizeof(Oid));
+       MemSet(argList, 0, FUNC_MAX_ARGS * sizeof(Oid));
 
        tup = SearchSysCacheTuple(PROCNAME,
                                  PointerGetDatum(procname),
index e390b03fe82b7e10e0dcb735013c80645c441f0f..dc0928fe97b0f2197b02d7811e3cdbe4eda7601a 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/_deadcode/Attic/recipe.c,v 1.7 1999/07/16 04:58:42 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/_deadcode/Attic/recipe.c,v 1.8 2000/01/10 17:14:33 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -695,14 +695,14 @@ getParamTypes(TgElement * elem, Oid *typev)
                j;
 
    parameterCount = 0;
-   for (i = 0; i < 8; i++)
+   for (i = 0; i < FUNC_MAX_ARGS; i++)
        typev[i] = 0;
    for (j = 0; j < elem->inTypes->num; j++)
    {
-       if (parameterCount == 8)
+       if (parameterCount == FUNC_MAX_ARGS)
        {
            elog(ERROR,
-                "getParamTypes: Ingredients cannot take > 8 arguments");
+                "getParamTypes: Ingredients cannot take > %d arguments",FUNC_MAX_ARGS);
        }
        t = elem->inTypes->val[j];
        if (strcmp(t, "opaque") == 0)
@@ -810,7 +810,7 @@ tg_parseSubQuery(TgRecipe * r, TgNode * n, TeeInfo * teeInfo)
 {
    TgElement  *elem;
    char       *funcName;
-   Oid         typev[8],       /* eight arguments maximum  */
+   Oid         typev[FUNC_MAX_ARGS],       /* eight arguments maximum  */
                relid;
    int         i,
                parameterCount;
index e98f4be885050e8a32dea881af9c2722b6a1a8fd..d560d7862125879b0e27c74d59024b5933ccf4c9 100644 (file)
@@ -1,7 +1,7 @@
 /*-------------------------------------------------------------------------
  *
  * comment.c
- *   
+ *
  * PostgreSQL object comments utility code.
  *
  * Copyright (c) 1999, PostgreSQL Global Development Group
 
 /*------------------------------------------------------------------
  * Static Function Prototypes --
- * 
- * The following protoypes are declared static so as not to conflict 
- * with any other routines outside this module. These routines are 
- * called by the public function CommentObject() routine to create 
+ *
+ * The following protoypes are declared static so as not to conflict
+ * with any other routines outside this module. These routines are
+ * called by the public function CommentObject() routine to create
  * the appropriate comment for the specific object type.
  *------------------------------------------------------------------
  */
@@ -55,10 +55,10 @@ static void CommentTrigger(char *trigger, char *relation, char *comments);
 /*------------------------------------------------------------------
  * CommentObject --
  *
- * This routine is used to add the associated comment into 
- * pg_description for the object specified by the paramters handed 
- * to this routine. If the routine cannot determine an Oid to 
- * associated with the parameters handed to this routine, an 
+ * This routine is used to add the associated comment into
+ * pg_description for the object specified by the paramters handed
+ * to this routine. If the routine cannot determine an Oid to
+ * associated with the parameters handed to this routine, an
  * error is thrown. Otherwise the comment is added to pg_description
  * by calling the CreateComments() routine. If the comments were
  * empty, CreateComments() will drop any comments associated with
@@ -66,9 +66,9 @@ static void CommentTrigger(char *trigger, char *relation, char *comments);
  *------------------------------------------------------------------
 */
 
-void CommentObject(int objtype, char *objname, char *objproperty, 
+void CommentObject(int objtype, char *objname, char *objproperty,
           List *objlist, char *comment) {
-  
+
   switch (objtype) {
   case (INDEX):
   case (SEQUENCE):
@@ -102,18 +102,18 @@ void CommentObject(int objtype, char *objname, char *objproperty,
     break;
   default:
     elog(ERROR, "An attempt was made to comment on a unkown type: %i",
-    objtype);    
+    objtype);
   }
 
 }
 
 /*------------------------------------------------------------------
  * CreateComments --
- * 
+ *
  * This routine is handed the oid and the command associated
- * with that id and will insert, update, or delete (if the 
+ * with that id and will insert, update, or delete (if the
  * comment is an empty string or a NULL pointer) the associated
- * comment from the system cataloge, pg_description. 
+ * comment from the system cataloge, pg_description.
  *
  *------------------------------------------------------------------
  */
@@ -147,7 +147,7 @@ void CreateComments(Oid oid, char *comment) {
   }
 
   /*** Now, open pg_description and attempt to find the old tuple ***/
-  
+
   ScanKeyEntryInitialize(&entry, 0x0, Anum_pg_description_objoid, F_OIDEQ,
             ObjectIdGetDatum(oid));
   scan = heap_beginscan(description, false, SnapshotNow, 1, &entry);
@@ -156,21 +156,21 @@ void CreateComments(Oid oid, char *comment) {
   /*** If a previous tuple exists, either delete or prep replacement ***/
 
   if (HeapTupleIsValid(searchtuple)) {
-        
+
     /*** If the comment is blank, call heap_delete, else heap_update ***/
 
     if ((comment == NULL) || (strlen(comment) == 0)) {
       heap_delete(description, &searchtuple->t_self, NULL);
     } else {
-      desctuple = heap_modifytuple(searchtuple, description, values, 
-                  nulls, replaces);      
+      desctuple = heap_modifytuple(searchtuple, description, values,
+                  nulls, replaces);
       setheapoverride(true);
       heap_update(description, &searchtuple->t_self, desctuple, NULL);
       setheapoverride(false);
       modified = TRUE;
     }
 
-  } else {    
+  } else {
     desctuple = heap_formtuple(tupDesc, values, nulls);
     heap_insert(description, desctuple);
     modified = TRUE;
@@ -179,14 +179,14 @@ void CreateComments(Oid oid, char *comment) {
   /*** Complete the scan, update indices, if necessary ***/
 
   heap_endscan(scan);
-  
+
   if (modified) {
     if (RelationGetForm(description)->relhasindex) {
       Relation idescs[Num_pg_description_indices];
-      
-      CatalogOpenIndices(Num_pg_description_indices, 
+
+      CatalogOpenIndices(Num_pg_description_indices,
             Name_pg_description_indices, idescs);
-      CatalogIndexInsert(idescs, Num_pg_description_indices, description, 
+      CatalogIndexInsert(idescs, Num_pg_description_indices, description,
             desctuple);
       CatalogCloseIndices(Num_pg_description_indices, idescs);
     }
@@ -198,10 +198,10 @@ void CreateComments(Oid oid, char *comment) {
 
 }
 
-/*------------------------------------------------------------------    
+/*------------------------------------------------------------------
  * DeleteComments --
  *
- * This routine is used to purge any comments 
+ * This routine is used to purge any comments
  * associated with the Oid handed to this routine,
  * regardless of the actual object type. It is
  * called, for example, when a relation is destroyed.
@@ -220,7 +220,7 @@ void DeleteComments(Oid oid) {
   tupDesc = description->rd_att;
 
   /*** Now, open pg_description and attempt to find the old tuple ***/
-  
+
   ScanKeyEntryInitialize(&entry, 0x0, Anum_pg_description_objoid, F_OIDEQ,
             ObjectIdGetDatum(oid));
   scan = heap_beginscan(description, false, SnapshotNow, 1, &entry);
@@ -228,24 +228,24 @@ void DeleteComments(Oid oid) {
 
   /*** If a previous tuple exists, delete it ***/
 
-  if (HeapTupleIsValid(searchtuple)) {    
+  if (HeapTupleIsValid(searchtuple)) {
     heap_delete(description, &searchtuple->t_self, NULL);
-  } 
-  
+  }
+
   /*** Complete the scan, update indices, if necessary ***/
 
   heap_endscan(scan);
   heap_close(description, RowExclusiveLock);
-  
+
 }
-    
+
 /*------------------------------------------------------------------
  * CommentRelation --
  *
- * This routine is used to add/drop a comment from a relation, where 
+ * This routine is used to add/drop a comment from a relation, where
  * a relation is a TABLE, SEQUENCE, VIEW or INDEX. The routine simply
- * finds the relation name by searching the system cache, locating 
- * the appropriate tuple, and inserting a comment using that 
+ * finds the relation name by searching the system cache, locating
+ * the appropriate tuple, and inserting a comment using that
  * tuple's oid. Its parameters are the relation name and comments.
  *------------------------------------------------------------------
 */
@@ -300,10 +300,10 @@ void CommentRelation(int reltype, char *relname, char *comment) {
     }
     break;
   }
-    
+
   /*** Create the comments using the tuple's oid ***/
 
-  CreateComments(oid, comment);  
+  CreateComments(oid, comment);
 
 }
 
@@ -311,11 +311,11 @@ void CommentRelation(int reltype, char *relname, char *comment) {
  * CommentAttribute --
  *
  * This routine is used to add/drop a comment from an attribute
- * such as a table's column. The routine will check security 
+ * such as a table's column. The routine will check security
  * restrictions and then attempt to fetch the oid of the associated
  * attribute. If successful, a comment is added/dropped, else an
  * elog() exception is thrown.  The parameters are the relation
- * and attribute names, and the comments 
+ * and attribute names, and the comments
  *------------------------------------------------------------------
 */
 
@@ -332,10 +332,10 @@ void CommentAttribute(char *relname, char *attrname, char *comment) {
     elog(ERROR, "you are not permitted to comment on class '%s\'", relname);
   }
   #endif
-  
+
   /*** Now, fetch the attribute oid from the system cache ***/
 
-  relation = heap_openr(relname, AccessShareLock);  
+  relation = heap_openr(relname, AccessShareLock);
   attrtuple = SearchSysCacheTuple(ATTNAME, ObjectIdGetDatum(relation->rd_id),
                  PointerGetDatum(attrname), 0, 0);
   if (!HeapTupleIsValid(attrtuple)) {
@@ -343,14 +343,14 @@ void CommentAttribute(char *relname, char *attrname, char *comment) {
     attrname, relname);
   }
   oid = attrtuple->t_data->t_oid;
-  
+
   /*** Call CreateComments() to create/drop the comments ***/
 
   CreateComments(oid, comment);
 
   /*** Now, close the heap relation and return ***/
 
-  heap_close(relation, AccessShareLock); 
+  heap_close(relation, AccessShareLock);
 
 }
 
@@ -358,10 +358,10 @@ void CommentAttribute(char *relname, char *attrname, char *comment) {
  * CommentDatabase --
  *
  * This routine is used to add/drop any user-comments a user might
- * have regarding the specified database. The routine will check 
- * security for owner permissions, and, if succesful, will then 
- * attempt to find the oid of the database specified. Once found, 
- * a comment is added/dropped using the CreateComments() routine. 
+ * have regarding the specified database. The routine will check
+ * security for owner permissions, and, if succesful, will then
+ * attempt to find the oid of the database specified. Once found,
+ * a comment is added/dropped using the CreateComments() routine.
  *------------------------------------------------------------------
 */
 
@@ -374,7 +374,7 @@ void CommentDatabase(char *database, char *comment) {
   Oid oid;
   bool superuser;
   int4 dba, userid;
-  char *username;  
+  char *username;
 
   /*** First find the tuple in pg_database for the database ***/
 
@@ -383,7 +383,7 @@ void CommentDatabase(char *database, char *comment) {
             F_NAMEEQ, NameGetDatum(database));
   scan = heap_beginscan(pg_database, 0, SnapshotNow, 1, &entry);
   dbtuple = heap_getnext(scan, 0);
-  
+
   /*** Validate database exists, and fetch the dba id and oid ***/
 
   if (!HeapTupleIsValid(dbtuple)) {
@@ -391,9 +391,9 @@ void CommentDatabase(char *database, char *comment) {
   }
   dba = ((Form_pg_database) GETSTRUCT(dbtuple))->datdba;
   oid = dbtuple->t_data->t_oid;
-  
+
   /*** Now, fetch user information ***/
-  
+
   username = GetPgUserName();
   usertuple = SearchSysCacheTuple(SHADOWNAME, PointerGetDatum(username),
                  0, 0, 0);
@@ -402,9 +402,9 @@ void CommentDatabase(char *database, char *comment) {
   }
   userid = ((Form_pg_shadow) GETSTRUCT(usertuple))->usesysid;
   superuser = ((Form_pg_shadow) GETSTRUCT(usertuple))->usesuper;
-  
+
   /*** Allow if the userid matches the database dba or is a superuser ***/
-  
+
   #ifndef NO_SECURITY
   if (!(superuser || (userid == dba))) {
     elog(ERROR, "you are not permitted to comment on database '%s'",
@@ -413,11 +413,11 @@ void CommentDatabase(char *database, char *comment) {
   #endif
 
   /*** Create the comments with the pg_database oid ***/
-  
+
   CreateComments(oid, comment);
-  
+
   /*** Complete the scan and close any opened relations ***/
-  
+
   heap_endscan(scan);
   heap_close(pg_database, AccessShareLock);
 
@@ -428,7 +428,7 @@ void CommentDatabase(char *database, char *comment) {
  *
  * This routine is used to add/drop any user-comments a user might
  * have regarding a specified RULE. The rule is specified by name
- * and, if found, and the user has appropriate permissions, a 
+ * and, if found, and the user has appropriate permissions, a
  * comment will be added/dropped using the CreateComments() routine.
  *------------------------------------------------------------------
 */
@@ -441,8 +441,8 @@ void CommentRewrite(char *rule, char *comment) {
   int aclcheck;
 
   /*** First, validate user ***/
-  
-  #ifndef NO_SECURITY  
+
+  #ifndef NO_SECURITY
   user = GetPgUserName();
   relation = RewriteGetRuleEventRel(rule);
   aclcheck = pg_aclcheck(relation, user, ACL_RU);
@@ -453,7 +453,7 @@ void CommentRewrite(char *rule, char *comment) {
   #endif
 
   /*** Next, find the rule's oid ***/
-  
+
   rewritetuple = SearchSysCacheTuple(RULENAME, PointerGetDatum(rule),
                     0, 0, 0);
   if (!HeapTupleIsValid(rewritetuple)) {
@@ -461,7 +461,7 @@ void CommentRewrite(char *rule, char *comment) {
   }
 
   oid = rewritetuple->t_data->t_oid;
-  
+
   /*** Call CreateComments() to create/drop the comments ***/
 
   CreateComments(oid, comment);
@@ -473,7 +473,7 @@ void CommentRewrite(char *rule, char *comment) {
  *
  * This routine is used to add/drop any user-comments a user might
  * have regarding a TYPE. The type is specified by name
- * and, if found, and the user has appropriate permissions, a 
+ * and, if found, and the user has appropriate permissions, a
  * comment will be added/dropped using the CreateComments() routine.
  * The type's name and the comments are the paramters to this routine.
  *------------------------------------------------------------------
@@ -486,17 +486,17 @@ void CommentType(char *type, char *comment) {
   char *user;
 
   /*** First, validate user ***/
-  
-  #ifndef NO_SECURITY  
+
+  #ifndef NO_SECURITY
   user = GetPgUserName();
-  if (!pg_ownercheck(user, type, TYPENAME)) {    
+  if (!pg_ownercheck(user, type, TYPENAME)) {
     elog(ERROR, "you are not permitted to comment on type '%s'",
     type);
   }
   #endif
 
   /*** Next, find the type's oid ***/
-  
+
   typetuple = SearchSysCacheTuple(TYPENAME, PointerGetDatum(type),
                  0, 0, 0);
   if (!HeapTupleIsValid(typetuple)) {
@@ -504,7 +504,7 @@ void CommentType(char *type, char *comment) {
   }
 
   oid = typetuple->t_data->t_oid;
-  
+
   /*** Call CreateComments() to create/drop the comments ***/
 
   CreateComments(oid, comment);
@@ -514,20 +514,20 @@ void CommentType(char *type, char *comment) {
 /*------------------------------------------------------------------
  * CommentAggregate --
  *
- * This routine is used to allow a user to provide comments on an 
+ * This routine is used to allow a user to provide comments on an
  * aggregate function. The aggregate function is determined by both
- * its name and its argument type, which, with the comments are 
+ * its name and its argument type, which, with the comments are
  * the three parameters handed to this routine.
  *------------------------------------------------------------------
 */
 
 void CommentAggregate(char *aggregate, char *argument, char *comment) {
-  
+
   HeapTuple aggtuple;
   Oid baseoid, oid;
   bool defined;
   char *user;
-  
+
   /*** First, attempt to determine the base aggregate oid ***/
 
   if (argument) {
@@ -538,7 +538,7 @@ void CommentAggregate(char *aggregate, char *argument, char *comment) {
   } else {
     baseoid = 0;
   }
-  
+
   /*** Next, validate the user's attempt to comment ***/
 
   #ifndef NO_SECURITY
@@ -566,9 +566,9 @@ void CommentAggregate(char *aggregate, char *argument, char *comment) {
       elog(ERROR, "aggregate '%s' does not exist", aggregate);
     }
   }
-  
+
   oid = aggtuple->t_data->t_oid;
-  
+
   /*** Call CreateComments() to create/drop the comments ***/
 
   CreateComments(oid, comment);
@@ -578,9 +578,9 @@ void CommentAggregate(char *aggregate, char *argument, char *comment) {
 /*------------------------------------------------------------------
  * CommentProc --
  *
- * This routine is used to allow a user to provide comments on an 
+ * This routine is used to allow a user to provide comments on an
  * procedure (function). The procedure is determined by both
- * its name and its argument list. The argument list is expected to 
+ * its name and its argument list. The argument list is expected to
  * be a series of parsed nodes pointed to by a List object. If the
  * comments string is empty, the associated comment is dropped.
  *------------------------------------------------------------------
@@ -589,7 +589,7 @@ void CommentAggregate(char *aggregate, char *argument, char *comment) {
 void CommentProc(char *function, List *arguments, char *comment) {
 
   HeapTuple argtuple, functuple;
-  Oid oid, argoids[8];
+  Oid oid, argoids[FUNC_MAX_ARGS];
   char *user, *argument;
   int i, argcount;
 
@@ -597,7 +597,7 @@ void CommentProc(char *function, List *arguments, char *comment) {
 
   argcount = length(arguments);
   if (argcount > 0) {
-    MemSet(argoids, 0, 8 * sizeof(Oid));
+    MemSet(argoids, 0, FUNC_MAX_ARGS * sizeof(Oid));
     for (i = 0; i < argcount; i++) {
       argument = strVal(lfirst(arguments));
       arguments = lnext(arguments);
@@ -632,29 +632,29 @@ void CommentProc(char *function, List *arguments, char *comment) {
                  PointerGetDatum(argoids), 0);
 
   /*** Deallocate our argument oids and check the function tuple ***/
-  
+
   if (!HeapTupleIsValid(functuple)) {
     elog(ERROR, "function '%s' with the supplied %s does not exist",
     function, "argument list");
   }
-    
+
   oid = functuple->t_data->t_oid;
-  
+
   /*** Call CreateComments() to create/drop the comments ***/
 
   CreateComments(oid, comment);
 
 }
-  
+
 /*------------------------------------------------------------------
  * CommentOperator --
  *
- * This routine is used to allow a user to provide comments on an 
+ * This routine is used to allow a user to provide comments on an
  * operator. The operator for commenting is determined by both
  * its name and its argument list which defines the left and right
- * hand types the operator will operate on. The argument list is 
- * expected to be a couple of parse nodes pointed to be a List 
- * object. If the comments string is empty, the associated comment 
+ * hand types the operator will operate on. The argument list is
+ * expected to be a couple of parse nodes pointed to be a List
+ * object. If the comments string is empty, the associated comment
  * is dropped.
  *------------------------------------------------------------------
 */
@@ -670,7 +670,7 @@ void CommentOperator(char *opername, List *arguments, char *comment) {
 
   if (lfirst(arguments) != NULL) {
     lefttype = strVal(lfirst(arguments));
-  }  
+  }
   if (lsecond(arguments) != NULL) {
     righttype = strVal(lsecond(arguments));
   }
@@ -683,9 +683,9 @@ void CommentOperator(char *opername, List *arguments, char *comment) {
       elog(ERROR, "left type '%s' does not exist", lefttype);
     }
   }
-  
+
   /*** Attempt to fetch the right oid, if specified ***/
-  
+
   if (righttype != NULL) {
     rightoid = TypeGet(righttype, &defined);
     if (!OidIsValid(rightoid)) {
@@ -699,7 +699,7 @@ void CommentOperator(char *opername, List *arguments, char *comment) {
   else if (OidIsValid(leftoid)) oprtype = 'l';
   else if (OidIsValid(rightoid)) oprtype = 'r';
   else elog(ERROR, "operator '%s' is of an illegal type'", opername);
-  
+
   /*** Attempt to fetch the operator oid ***/
 
   optuple = SearchSysCacheTupleCopy(OPERNAME, PointerGetDatum(opername),
@@ -710,8 +710,8 @@ void CommentOperator(char *opername, List *arguments, char *comment) {
     elog(ERROR, "operator '%s' does not exist", opername);
   }
 
-  oid = optuple->t_data->t_oid;  
-  
+  oid = optuple->t_data->t_oid;
+
   /*** Valid user's ability to comment on this operator ***/
 
   #ifndef NO_SECURITY
@@ -748,8 +748,8 @@ void CommentTrigger(char *trigger, char *relname, char *comment) {
   ScanKeyData entry;
   Oid oid = InvalidOid;
   char *user;
-  
-  /*** First, validate the user's action ***/  
+
+  /*** First, validate the user's action ***/
 
   #ifndef NO_SECURITY
   user = GetPgUserName();
@@ -761,10 +761,10 @@ void CommentTrigger(char *trigger, char *relname, char *comment) {
 
   /*** Now, fetch the trigger oid from pg_trigger  ***/
 
-  relation = heap_openr(relname, AccessShareLock);  
+  relation = heap_openr(relname, AccessShareLock);
   pg_trigger = heap_openr(TriggerRelationName, AccessShareLock);
   ScanKeyEntryInitialize(&entry, 0, Anum_pg_trigger_tgrelid,
-            F_OIDEQ, RelationGetRelid(relation));  
+            F_OIDEQ, RelationGetRelid(relation));
   scan = heap_beginscan(pg_trigger, 0, SnapshotNow, 1, &entry);
   triggertuple = heap_getnext(scan, 0);
   while (HeapTupleIsValid(triggertuple)) {
@@ -784,11 +784,11 @@ void CommentTrigger(char *trigger, char *relname, char *comment) {
   }
 
   /*** Create the comments with the pg_trigger oid ***/
-  
+
   CreateComments(oid, comment);
-  
+
   /*** Complete the scan and close any opened relations ***/
-  
+
   heap_endscan(scan);
   heap_close(pg_trigger, AccessShareLock);
   heap_close(relation, AccessShareLock);
index e4607d93a558487652f1fadca199dcc25f6f0d60..0682cefecb9e8c98dd76ffb208e835481fe0d983 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.16 1999/12/16 22:19:41 wieck Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.17 2000/01/10 17:14:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -414,7 +414,7 @@ FuncIndexArgs(IndexElem *funcIndex,
    }
    *opOidP = tuple->t_data->t_oid;
 
-   MemSet(argTypes, 0, 8 * sizeof(Oid));
+   MemSet(argTypes, 0, FUNC_MAX_ARGS * sizeof(Oid));
 
    /*
     * process the function arguments
index 718e06dee47f2ca0eeaa455cce28d185022eb56b..47d2201c82aa30c75c8987ceda10a8d87ec8daf9 100644 (file)
@@ -50,7 +50,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
    HeapTuple   langTup;
    HeapTuple   procTup;
 
-   Oid         typev[8];
+   Oid         typev[FUNC_MAX_ARGS];
    char        nulls[Natts_pg_language];
    Datum       values[Natts_pg_language];
    Relation    rel;
@@ -136,7 +136,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
        CatalogIndexInsert(idescs, Num_pg_language_indices, rel, tup);
        CatalogCloseIndices(Num_pg_language_indices, idescs);
    }
-   
+
    heap_close(rel, RowExclusiveLock);
 }
 
index 07b552dedd70c75d7ef5bcb74541aaa42e3aec11..4a327fde284b570341d41ca9a9da349b3f78d3ec 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/Attic/remove.c,v 1.42 1999/12/16 22:19:41 wieck Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/Attic/remove.c,v 1.43 2000/01/10 17:14:32 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -163,7 +163,7 @@ SingleOpOperatorRemove(Oid typeOid)
          DeleteComments(tup->t_data->t_oid);
 
          heap_delete(rel, &tup->t_self, NULL);
-         
+
        }
 
        heap_endscan(scan);
@@ -315,13 +315,13 @@ RemoveFunction(char *functionName,        /* function name to be removed */
 {
    Relation    relation;
    HeapTuple   tup;
-   Oid         argList[8];
+   Oid         argList[FUNC_MAX_ARGS];
    char       *userName;
    char       *typename;
    int         i;
 
 
-   MemSet(argList, 0, 8 * sizeof(Oid));
+   MemSet(argList, 0, FUNC_MAX_ARGS * sizeof(Oid));
    for (i = 0; i < nargs; i++)
    {
        typename = strVal(lfirst(argNameList));
@@ -444,7 +444,7 @@ RemoveAggregate(char *aggName, char *aggType)
                 aggName);
        }
    }
-   
+
    /*** Remove any comments related to this aggregate ***/
 
    DeleteComments(tup->t_data->t_oid);
index b0196c90deeb45db1b23a2cee8dee722e6c1e641..c8dfd504e7b32f97193d92f9f96771036672612f 100644 (file)
@@ -41,7 +41,7 @@ void
 CreateTrigger(CreateTrigStmt *stmt)
 {
    int16       tgtype;
-   int16       tgattr[8] = {0};
+   int16       tgattr[FUNC_MAX_ARGS] = {0};
    Datum       values[Natts_pg_trigger];
    char        nulls[Natts_pg_trigger];
    Relation    rel;
@@ -53,7 +53,7 @@ CreateTrigger(CreateTrigStmt *stmt)
    Relation    idescs[Num_pg_trigger_indices];
    Relation    ridescs[Num_pg_class_indices];
    MemoryContext oldcxt;
-   Oid         fargtypes[8];
+   Oid         fargtypes[FUNC_MAX_ARGS];
    int         found = 0;
    int         i;
    char        constrtrigname[NAMEDATALEN];
@@ -144,7 +144,7 @@ CreateTrigger(CreateTrigStmt *stmt)
    }
    heap_endscan(tgscan);
 
-   MemSet(fargtypes, 0, 8 * sizeof(Oid));
+   MemSet(fargtypes, 0, FUNC_MAX_ARGS * sizeof(Oid));
    tuple = SearchSysCacheTuple(PROCNAME,
                                PointerGetDatum(stmt->funcname),
                                Int32GetDatum(0),
@@ -306,7 +306,7 @@ DropTrigger(DropTrigStmt *stmt)
 
          heap_delete(tgrel, &tuple->t_self, NULL);
          tgfound++;
-         
+
        }
        else
            found++;
@@ -368,7 +368,7 @@ RelationRemoveTriggers(Relation rel)
      /*** Delete any comments associated with this trigger ***/
 
      DeleteComments(tup->t_data->t_oid);
-     
+
      heap_delete(tgrel, &tup->t_self, NULL);
 
    }
@@ -473,7 +473,7 @@ RelationBuildTriggers(Relation relation)
        build->tgdeferrable = pg_trigger->tgdeferrable;
        build->tginitdeferred = pg_trigger->tginitdeferred;
        build->tgnargs = pg_trigger->tgnargs;
-       memcpy(build->tgattr, &(pg_trigger->tgattr), 8 * sizeof(int16));
+       memcpy(build->tgattr, &(pg_trigger->tgattr), FUNC_MAX_ARGS * sizeof(int16));
        val = (struct varlena *) fastgetattr(&tuple,
                                             Anum_pg_trigger_tgargs,
                                             tgrel->rd_att, &isnull);
@@ -992,7 +992,7 @@ deferredTriggerCheckState(Oid tgoid, int32 itemstate)
    trigstate = (DeferredTriggerStatus)
            palloc(sizeof(DeferredTriggerStatusData));
    trigstate->dts_tgoid        = tgoid;
-   trigstate->dts_tgisdeferred = 
+   trigstate->dts_tgisdeferred =
            ((itemstate & TRIGGER_DEFERRED_INITDEFERRED) != 0);
    deftrig_trigstates = lappend(deftrig_trigstates, trigstate);
 
@@ -1008,7 +1008,7 @@ deferredTriggerCheckState(Oid tgoid, int32 itemstate)
  * Add a new trigger event to the queue.
  * ----------
  */
-static void 
+static void
 deferredTriggerAddEvent(DeferredTriggerEvent event)
 {
    deftrig_events = lappend(deftrig_events, event);
@@ -1040,14 +1040,14 @@ deferredTriggerGetPreviousEvent(Oid relid, ItemPointer ctid)
        if (previous->dte_event & TRIGGER_DEFERRED_CANCELED)
            continue;
 
-       if (ItemPointerGetBlockNumber(ctid) == 
+       if (ItemPointerGetBlockNumber(ctid) ==
                    ItemPointerGetBlockNumber(&(previous->dte_newctid)) &&
                    ItemPointerGetOffsetNumber(ctid) ==
                    ItemPointerGetOffsetNumber(&(previous->dte_newctid)))
            return previous;
    }
 
-   elog(ERROR, 
+   elog(ERROR,
        "deferredTriggerGetPreviousEvent(): event for tuple %s not found",
        tidout(ctid));
    return NULL;
@@ -1107,26 +1107,26 @@ deferredTriggerExecute(DeferredTriggerEvent event, int itemno)
        case TRIGGER_EVENT_INSERT:
            SaveTriggerData.tg_trigtuple = &newtuple;
            SaveTriggerData.tg_newtuple  = NULL;
-           SaveTriggerData.tg_trigger   = 
+           SaveTriggerData.tg_trigger   =
                    rel->trigdesc->tg_after_row[TRIGGER_EVENT_INSERT][itemno];
            break;
 
        case TRIGGER_EVENT_UPDATE:
            SaveTriggerData.tg_trigtuple = &oldtuple;
            SaveTriggerData.tg_newtuple  = &newtuple;
-           SaveTriggerData.tg_trigger   = 
+           SaveTriggerData.tg_trigger   =
                    rel->trigdesc->tg_after_row[TRIGGER_EVENT_UPDATE][itemno];
            break;
 
        case TRIGGER_EVENT_DELETE:
            SaveTriggerData.tg_trigtuple = &oldtuple;
            SaveTriggerData.tg_newtuple  = NULL;
-           SaveTriggerData.tg_trigger   = 
+           SaveTriggerData.tg_trigger   =
                    rel->trigdesc->tg_after_row[TRIGGER_EVENT_DELETE][itemno];
            break;
 
        default:
-   } 
+   }
 
    /* ----------
     * Call the trigger and throw away an eventually returned
@@ -1195,10 +1195,10 @@ deferredTriggerInvokeEvents(bool immediate_only)
         * ----------
         */
        event = (DeferredTriggerEvent) lfirst(el);
-       if (event->dte_event & (TRIGGER_DEFERRED_DONE | 
+       if (event->dte_event & (TRIGGER_DEFERRED_DONE |
                                TRIGGER_DEFERRED_CANCELED))
            continue;
-   
+
        /* ----------
         * Check each trigger item in the event.
         * ----------
@@ -1215,7 +1215,7 @@ deferredTriggerInvokeEvents(bool immediate_only)
             * ----------
             */
            if (immediate_only && deferredTriggerCheckState(
-                               event->dte_item[i].dti_tgoid, 
+                               event->dte_item[i].dti_tgoid,
                                event->dte_item[i].dti_state))
            {
                still_deferred_ones = true;
@@ -1273,7 +1273,7 @@ DeferredTriggerBeginXact(void)
    DeferredTriggerStatus   stat;
 
    if (deftrig_cxt != NULL)
-       elog(FATAL, 
+       elog(FATAL,
            "DeferredTriggerBeginXact() called while inside transaction");
 
    /* ----------
@@ -1286,12 +1286,12 @@ DeferredTriggerBeginXact(void)
 
    deftrig_all_isset       = deftrig_dfl_all_isset;
    deftrig_all_isdeferred  = deftrig_dfl_all_isdeferred;
-   
+
    deftrig_trigstates      = NIL;
    foreach (l, deftrig_dfl_trigstates)
    {
        dflstat = (DeferredTriggerStatus) lfirst(l);
-       stat    = (DeferredTriggerStatus) 
+       stat    = (DeferredTriggerStatus)
                                palloc(sizeof(DeferredTriggerStatusData));
 
        stat->dts_tgoid        = dflstat->dts_tgoid;
@@ -1530,7 +1530,7 @@ DeferredTriggerSetState(ConstraintsSetStmt *stmt)
             */
            pg_trigger = (Form_pg_trigger) GETSTRUCT(&tuple);
            if (stmt->deferred & !pg_trigger->tgdeferrable)
-               elog(ERROR, "Constraint '%s' is not deferrable", 
+               elog(ERROR, "Constraint '%s' is not deferrable",
                                    (char *)lfirst(l));
 
            constr_oid = tuple.t_data->t_oid;
@@ -1582,7 +1582,7 @@ DeferredTriggerSetState(ConstraintsSetStmt *stmt)
                state->dts_tgoid        = (Oid) lfirst(l);
                state->dts_tgisdeferred = stmt->deferred;
 
-               deftrig_dfl_trigstates = 
+               deftrig_dfl_trigstates =
                                    lappend(deftrig_dfl_trigstates, state);
            }
        }
@@ -1618,7 +1618,7 @@ DeferredTriggerSetState(ConstraintsSetStmt *stmt)
                state->dts_tgoid        = (Oid) lfirst(l);
                state->dts_tgisdeferred = stmt->deferred;
 
-               deftrig_trigstates = 
+               deftrig_trigstates =
                                    lappend(deftrig_trigstates, state);
            }
        }
@@ -1652,7 +1652,7 @@ DeferredTriggerSaveEvent(Relation rel, int event,
    TriggerData             SaveTriggerData;
 
    if (deftrig_cxt == NULL)
-       elog(ERROR, 
+       elog(ERROR,
            "DeferredTriggerSaveEvent() called outside of transaction");
 
    /* ----------
@@ -1681,7 +1681,7 @@ DeferredTriggerSaveEvent(Relation rel, int event,
        ItemPointerSetInvalid(&(newctid));
 
    /* ----------
-    * Create a new event 
+    * Create a new event
     * ----------
     */
    oldcxt = MemoryContextSwitchTo((MemoryContext) deftrig_cxt);
@@ -1691,7 +1691,7 @@ DeferredTriggerSaveEvent(Relation rel, int event,
 
    new_size  = sizeof(DeferredTriggerEventData) +
                ntriggers * sizeof(DeferredTriggerEventItem);
-               
+
    new_event = (DeferredTriggerEvent) palloc(new_size);
    new_event->dte_event    = event & TRIGGER_EVENT_OPMASK;
    new_event->dte_relid    = rel->rd_id;
@@ -1702,10 +1702,10 @@ DeferredTriggerSaveEvent(Relation rel, int event,
    for (i = 0; i < ntriggers; i++)
    {
        new_event->dte_item[i].dti_tgoid = triggers[i]->tgoid;
-       new_event->dte_item[i].dti_state = 
-           ((triggers[i]->tgdeferrable) ? 
+       new_event->dte_item[i].dti_state =
+           ((triggers[i]->tgdeferrable) ?
                        TRIGGER_DEFERRED_DEFERRABLE : 0)    |
-           ((triggers[i]->tginitdeferred) ? 
+           ((triggers[i]->tginitdeferred) ?
                        TRIGGER_DEFERRED_INITDEFERRED : 0)  |
            ((rel->trigdesc->n_before_row[event] > 0) ?
                        TRIGGER_DEFERRED_HAS_BEFORE : 0);
@@ -1729,7 +1729,7 @@ DeferredTriggerSaveEvent(Relation rel, int event,
            if (oldtup->t_data->t_xmin != GetCurrentTransactionId())
                prev_event = NULL;
            else
-               prev_event = 
+               prev_event =
                    deferredTriggerGetPreviousEvent(rel->rd_id, &oldctid);
 
            /* ----------
@@ -1759,7 +1759,7 @@ DeferredTriggerSaveEvent(Relation rel, int event,
                    case F_RI_FKEY_SETDEFAULT_UPD:
                        is_ri_trigger = true;
                        break;
-                   
+
                    default:
                        is_ri_trigger = false;
                        break;
@@ -1776,7 +1776,7 @@ DeferredTriggerSaveEvent(Relation rel, int event,
                CurrentTriggerData = &SaveTriggerData;
                key_unchanged = RI_FKey_keyequal_upd();
                CurrentTriggerData = NULL;
-               
+
                if (key_unchanged)
                {
                    /* ----------
@@ -1789,7 +1789,7 @@ DeferredTriggerSaveEvent(Relation rel, int event,
 
                    if (prev_event)
                    {
-                       if (prev_event->dte_event & 
+                       if (prev_event->dte_event &
                                    TRIGGER_DEFERRED_ROW_INSERTED)
                        {
                            /* ----------
@@ -1797,9 +1797,9 @@ DeferredTriggerSaveEvent(Relation rel, int event,
                             * So any key value is considered changed.
                             * ----------
                             */
-                           new_event->dte_event |= 
+                           new_event->dte_event |=
                                            TRIGGER_DEFERRED_ROW_INSERTED;
-                           new_event->dte_event |= 
+                           new_event->dte_event |=
                                            TRIGGER_DEFERRED_KEY_CHANGED;
                            new_event->dte_item[i].dti_state |=
                                            TRIGGER_DEFERRED_KEY_CHANGED;
index 80910db11469ebc41c1daea392aed1423b9f2321..bd546597733dbb87350b8370b3c7bc87e192ee8c 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.64 1999/11/12 06:39:34 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.65 2000/01/10 17:14:34 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -656,7 +656,7 @@ ExecMakeFunctionResult(Node *node,
                       bool *isNull,
                       bool *isDone)
 {
-   Datum       argV[MAXFMGRARGS];
+   Datum       argV[FUNC_MAX_ARGS];
    FunctionCachePtr fcache;
    Func       *funcNode = NULL;
    Oper       *operNode = NULL;
@@ -690,7 +690,7 @@ ExecMakeFunctionResult(Node *node,
    {
        bool        argDone;
 
-       if (fcache->nargs > MAXFMGRARGS)
+       if (fcache->nargs > FUNC_MAX_ARGS)
            elog(ERROR, "ExecMakeFunctionResult: too many arguments");
 
        /*
index 22d108527647a448fa389e0c48a7b394b382c9b2..00b7aca8dee2a7cef30b7b4a1914141d8be1dcda 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/libpq/Attic/be-pqexec.c,v 1.25 2000/01/05 18:23:47 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/libpq/Attic/be-pqexec.c,v 1.26 2000/01/10 17:14:35 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -57,7 +57,7 @@ PQfn(int fnid,
     int nargs)
 {
    char       *retval;         /* XXX - should be datum, maybe ? */
-   char       *arg[8];
+   char       *arg[FUNC_MAX_ARGS];
    int         i;
 
    /* ----------------
@@ -304,8 +304,8 @@ pqtest_PQfn(char *q)
                v,
                f,
                offsets;
-   char       *fields[8];
-   PQArgBlock  pqargs[7];
+   char       *fields[FUNC_MAX_ARGS];
+   PQArgBlock  pqargs[FUNC_MAX_ARGS];
    int         res;
    char       *pqres;
 
@@ -313,7 +313,7 @@ pqtest_PQfn(char *q)
     *  parse q into fields
     * ----------------
     */
-   i = strparse(q, fields, &offsets, 8);
+   i = strparse(q, fields, &offsets, FUNC_MAX_ARGS);
    printf("pqtest_PQfn: strparse returns %d fields\n", i);     /* debug */
    if (i == 0)
        return -1;
@@ -331,7 +331,7 @@ pqtest_PQfn(char *q)
     *  build a PQArgBlock
     * ----------------
     */
-   for (j = 1; j < i && j < 8; j++)
+   for (j = 1; j < i && j < FUNC_MAX_ARGS; j++)
    {
        k = j - 1;
        v = atoi(fields[j]);
index 95315d6c8244c17a6c7163269f9818b7fe5d088c..6ddc090bb0b221199f16ef579c919bc35b509464 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.26 1999/12/10 07:37:35 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.27 2000/01/10 17:14:36 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -142,7 +142,7 @@ can_coerce_type(int nargs, Oid *input_typeids, Oid *func_typeids)
    HeapTuple   ftup;
    int         i;
    Type        tp;
-   Oid         oid_array[MAXFARGS];
+   Oid         oid_array[FUNC_MAX_ARGS];
 
    /* run through argument list... */
    for (i = 0; i < nargs; i++)
@@ -170,7 +170,7 @@ can_coerce_type(int nargs, Oid *input_typeids, Oid *func_typeids)
             */
            else if (input_typeids[i] != UNKNOWNOID)
            {
-               MemSet(oid_array, 0, MAXFARGS * sizeof(Oid));
+               MemSet(oid_array, 0, FUNC_MAX_ARGS * sizeof(Oid));
                oid_array[0] = input_typeids[i];
 
                /*
index 2a197237841c410d2d4f49124d9f1d87512fd8a1..1f63f6bc669a5c0c13bd5e6b74ebc2001ad986f4 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.65 1999/12/16 22:19:48 wieck Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.66 2000/01/10 17:14:36 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -236,7 +236,7 @@ ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs,
    Oid         relid;
    int         nargs = length(fargs);
    Func       *funcnode;
-   Oid         oid_array[MAXFARGS];
+   Oid         oid_array[FUNC_MAX_ARGS];
    Oid        *true_oid_array;
    Node       *retval;
    bool        retset;
@@ -435,7 +435,7 @@ ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs,
     * transform relation name arguments into varnodes of the appropriate
     * form.
     */
-   MemSet(oid_array, 0, MAXFARGS * sizeof(Oid));
+   MemSet(oid_array, 0, FUNC_MAX_ARGS * sizeof(Oid));
 
    nargs = 0;
    foreach(i, fargs)
@@ -463,7 +463,7 @@ ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs,
                    refname);
 #endif
            }
-                                        
+
            relname = rte->relname;
 
            vnum = refnameRangeTablePosn(pstate, rte->refname, NULL);
@@ -496,12 +496,12 @@ ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs,
        }
 
        /* Most of the rest of the parser just assumes that functions do not
-        * have more than MAXFARGS parameters.  We have to test here to protect
+        * have more than FUNC_MAX_ARGS parameters.  We have to test here to protect
         * against array overruns, etc.
         */
-       if (nargs >= MAXFARGS)
+       if (nargs >= FUNC_MAX_ARGS)
            elog(ERROR, "Cannot pass more than %d arguments to a function",
-                MAXFARGS);
+                FUNC_MAX_ARGS);
 
        oid_array[nargs++] = toid;
    }
@@ -710,8 +710,8 @@ func_get_candidates(char *funcname, int nargs)
                    current_candidate = (CandidateList)
                        palloc(sizeof(struct _CandidateList));
                    current_candidate->args = (Oid *)
-                       palloc(MAXFARGS * sizeof(Oid));
-                   MemSet(current_candidate->args, 0, MAXFARGS * sizeof(Oid));
+                       palloc(FUNC_MAX_ARGS * sizeof(Oid));
+                   MemSet(current_candidate->args, 0, FUNC_MAX_ARGS * sizeof(Oid));
                    for (i = 0; i < nargs; i++)
                        current_candidate->args[i] = pgProcP->proargtypes[i];
 
@@ -1067,9 +1067,9 @@ argtype_inherit(int nargs, Oid *oid_array)
 {
    Oid         relid;
    int         i;
-   InhPaths    arginh[MAXFARGS];
+   InhPaths    arginh[FUNC_MAX_ARGS];
 
-   for (i = 0; i < MAXFARGS; i++)
+   for (i = 0; i < FUNC_MAX_ARGS; i++)
    {
        if (i < nargs)
        {
@@ -1203,7 +1203,7 @@ gen_cross_product(InhPaths *arginh, int nargs)
    Oid        *oneres;
    int         i,
                j;
-   int         cur[MAXFARGS];
+   int         cur[FUNC_MAX_ARGS];
 
    nanswers = 1;
    for (i = 0; i < nargs; i++)
@@ -1217,8 +1217,8 @@ gen_cross_product(InhPaths *arginh, int nargs)
    /* compute the cross product from right to left */
    for (;;)
    {
-       oneres = (Oid *) palloc(MAXFARGS * sizeof(Oid));
-       MemSet(oneres, 0, MAXFARGS * sizeof(Oid));
+       oneres = (Oid *) palloc(FUNC_MAX_ARGS * sizeof(Oid));
+       MemSet(oneres, 0, FUNC_MAX_ARGS * sizeof(Oid));
 
        for (i = nargs - 1; i >= 0 && cur[i] > arginh[i].nsupers; i--)
            continue;
@@ -1508,7 +1508,7 @@ ParseComplexProjection(ParseState *pstate,
 void
 func_error(char *caller, char *funcname, int nargs, Oid *argtypes, char *msg)
 {
-   char        p[(NAMEDATALEN + 2) * MAXFMGRARGS],
+   char        p[(NAMEDATALEN + 2) * FUNC_MAX_ARGS],
               *ptr;
    int         i;
 
index a5e130b85431c90be6a4894dcb928a1bf87ff18f..503f544e9edf6fe6842bdcf7f4f589261533291b 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.50 1999/12/10 07:37:35 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.51 2000/01/10 17:14:36 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -318,14 +318,14 @@ SizeTargetExpr(ParseState *pstate,
               int32 attrtypmod)
 {
    char       *funcname;
-   Oid         oid_array[MAXFARGS];
+   Oid         oid_array[FUNC_MAX_ARGS];
    HeapTuple   ftup;
    int         i;
 
    funcname = typeidTypeName(attrtype);
    oid_array[0] = attrtype;
    oid_array[1] = INT4OID;
-   for (i = 2; i < MAXFARGS; i++)
+   for (i = 2; i < FUNC_MAX_ARGS; i++)
        oid_array[i] = InvalidOid;
 
    /* attempt to find with arguments exactly as specified... */
index 8a921ac906a523b34cad34f27061116fb54ba47c..95c1ccbafcebbd3748392249c082f2a81a13ef2f 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/tcop/fastpath.c,v 1.32 2000/01/10 16:13:13 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/tcop/fastpath.c,v 1.33 2000/01/10 17:14:37 momjian Exp $
  *
  * NOTES
  *   This cruft is the server side of PQfn.
@@ -116,7 +116,7 @@ SendFunctionResult(Oid fid,     /* function id */
 /*
  * This structure saves enough state so that one can avoid having to
  * do catalog lookups over and over again. (Each RPC can require up
- * to MAXFMGRARGS+2 lookups, which is quite tedious.)
+ * to FUNC_MAX_ARGS+2 lookups, which is quite tedious.)
  *
  * The previous incarnation of this code just assumed that any argument
  * of size <= 4 was by value; this is not correct. There is no cheap
@@ -127,8 +127,8 @@ struct fp_info
 {
    Oid         funcid;
    int         nargs;
-   bool        argbyval[MAXFMGRARGS];
-   int32       arglen[MAXFMGRARGS];    /* signed (for varlena) */
+   bool        argbyval[FUNC_MAX_ARGS];
+   int32       arglen[FUNC_MAX_ARGS];  /* signed (for varlena) */
    bool        retbyval;
    int32       retlen;         /* signed (for varlena) */
    TransactionId xid;
@@ -278,7 +278,7 @@ HandleFunctionRequest()
    int         argsize;
    int         nargs;
    int         tmp;
-   char       *arg[8];
+   char       *arg[FUNC_MAX_ARGS];
    char       *retval;
    int         i;
    uint32      palloced;
@@ -317,7 +317,7 @@ HandleFunctionRequest()
     * need to remember, so that we pfree() it after the call.
     */
    palloced = 0x0;
-   for (i = 0; i < 8; ++i)
+   for (i = 0; i < FUNC_MAX_ARGS; ++i)
    {
        if (i >= nargs)
            arg[i] = (char *) NULL;
index d15c7a4393020af57cc6288da37e46d359fa622f..faeb3804419534ebf4f057622ee14330fa77c6c1 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/regproc.c,v 1.48 2000/01/10 16:13:14 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/regproc.c,v 1.49 2000/01/10 17:14:38 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -238,7 +238,6 @@ oidvectortypes(Oid *oidArray)
    HeapTuple   typetup;
    text       *result;
    int         num;
-   Oid        *sp;
 
    if (oidArray == NULL)
    {
@@ -247,16 +246,16 @@ oidvectortypes(Oid *oidArray)
        return result;
    }
 
-   result = (text *) palloc(NAMEDATALEN * 8 + 8 + VARHDRSZ);
+   result = (text *) palloc(NAMEDATALEN * FUNC_MAX_ARGS +
+                            FUNC_MAX_ARGS + VARHDRSZ);
    *VARDATA(result) = '\0';
 
-   sp = oidArray;
-   for (num = 8; num != 0; num--, sp++)
+   for (num = 0; num < FUNC_MAX_ARGS; num++)
    {
-       if (*sp != InvalidOid)
+       if (oidArray[num] != InvalidOid)
        {
            typetup = SearchSysCacheTuple(TYPEOID,
-                                         ObjectIdGetDatum(*sp),
+                                         ObjectIdGetDatum(oidArray[num]),
                                          0, 0, 0);
            if (HeapTupleIsValid(typetup))
            {
index 3424155dfb3c031926758211f2173d3afa9d01ca..5755926e9d88950a2f7bb3555ffdcc8efa9729d1 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.45 2000/01/09 00:26:20 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.46 2000/01/10 17:14:38 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -253,7 +253,7 @@ intltsel(Oid opid,
        rtype = ((Form_pg_operator) GETSTRUCT(oprtuple))->oprright;
 
        /* Convert the constant to a uniform comparison scale. */
-       if (! convert_to_scale(value, 
+       if (! convert_to_scale(value,
                               ((flag & SEL_RIGHT) ? rtype : ltype),
                               &val))
        {
@@ -310,7 +310,7 @@ intltsel(Oid opid,
             * stats are out of date and return a default...
             */
            *result = DEFAULT_INEQ_SEL;
-        }
+   }
        else if (val <= low || val >= high)
        {
            /* If given value is outside the statistical range, return a
@@ -512,10 +512,10 @@ convert_to_scale(Datum value, Oid typid,
            /* See whether there is a registered type-conversion function,
             * namely a procedure named "float8" with the right signature.
             */
-           Oid         oid_array[MAXFARGS];
+           Oid         oid_array[FUNC_MAX_ARGS];
            HeapTuple   ftup;
 
-           MemSet(oid_array, 0, MAXFARGS * sizeof(Oid));
+           MemSet(oid_array, 0, FUNC_MAX_ARGS * sizeof(Oid));
            oid_array[0] = typid;
            ftup = SearchSysCacheTuple(PROCNAME,
                                       PointerGetDatum("float8"),
index 6506f4a5192348222c99513382d7db0a64a77f7e..4dd03f02679dcbe718a25a08d1cd07d5f8f132e1 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.33 1999/11/22 17:56:33 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.34 2000/01/10 17:14:39 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -44,9 +44,9 @@ fmgr_pl(char *arg0,...)
        values.data[0] = arg0;
        if (n_arguments > 1)
        {
-           if (n_arguments > MAXFMGRARGS)
+           if (n_arguments > FUNC_MAX_ARGS)
                elog(ERROR, "fmgr_pl: function %u: too many arguments (%d > %d)",
-                    fmgr_pl_finfo->fn_oid, n_arguments, MAXFMGRARGS);
+                    fmgr_pl_finfo->fn_oid, n_arguments, FUNC_MAX_ARGS);
            va_start(pvar, arg0);
            for (i = 1; i < n_arguments; i++)
                values.data[i] = va_arg(pvar, char *);
@@ -165,22 +165,93 @@ fmgr_c(FmgrInfo *finfo,
                                      values->data[6], values->data[7]);
            break;
        case 9:
+           returnValue = (*user_fn) (values->data[0], values->data[1],
+                                     values->data[2], values->data[3],
+                                     values->data[4], values->data[5],
+                                     values->data[6], values->data[7],
+                                     values->data[8]);
+           break;
+       case 10:
+           returnValue = (*user_fn) (values->data[0], values->data[1],
+                                     values->data[2], values->data[3],
+                                     values->data[4], values->data[5],
+                                     values->data[6], values->data[7],
+                                     values->data[8], values->data[9]);
+           break;
+       case 11:
+           returnValue = (*user_fn) (values->data[0], values->data[1],
+                                     values->data[2], values->data[3],
+                                     values->data[4], values->data[5],
+                                     values->data[6], values->data[7],
+                                     values->data[8], values->data[9],
+                                     values->data[10]);
+           break;
+       case 12:
+           returnValue = (*user_fn) (values->data[0], values->data[1],
+                                     values->data[2], values->data[3],
+                                     values->data[4], values->data[5],
+                                     values->data[6], values->data[7],
+                                     values->data[8], values->data[9],
+                                     values->data[10], values->data[11]);
+           break;
+       case 13:
+           returnValue = (*user_fn) (values->data[0], values->data[1],
+                                     values->data[2], values->data[3],
+                                     values->data[4], values->data[5],
+                                     values->data[6], values->data[7],
+                                     values->data[8], values->data[9],
+                                     values->data[10], values->data[11],
+                                     values->data[12]);
+           break;
+       case 14:
+           returnValue = (*user_fn) (values->data[0], values->data[1],
+                                     values->data[2], values->data[3],
+                                     values->data[4], values->data[5],
+                                     values->data[6], values->data[7],
+                                     values->data[8], values->data[9],
+                                     values->data[10], values->data[11],
+                                     values->data[12], values->data[13]);
+           break;
+       case 15:
+           returnValue = (*user_fn) (values->data[0], values->data[1],
+                                     values->data[2], values->data[3],
+                                     values->data[4], values->data[5],
+                                     values->data[6], values->data[7],
+                                     values->data[8], values->data[9],
+                                     values->data[10], values->data[11],
+                                     values->data[12], values->data[13],
+                                     values->data[14]);
+           break;
+       case 16:
+           returnValue = (*user_fn) (values->data[0], values->data[1],
+                                     values->data[2], values->data[3],
+                                     values->data[4], values->data[5],
+                                     values->data[6], values->data[7],
+                                     values->data[8], values->data[9],
+                                     values->data[10], values->data[11],
+                                     values->data[12], values->data[13],
+                                     values->data[14], values->data[15]);
+           break;
+       case 17:
 
            /*
-            * XXX Note that functions with >8 arguments can only be
+            * XXX Note that functions with >FUNC_MAX_ARGS arguments can only be
             * called from inside the system, not from the user level,
-            * since the catalogs only store 8 argument types for user
+            * since the catalogs only store FUNC_MAX_ARGS argument types for user
             * type-checking!
             */
            returnValue = (*user_fn) (values->data[0], values->data[1],
                                      values->data[2], values->data[3],
                                      values->data[4], values->data[5],
                                      values->data[6], values->data[7],
-                                     values->data[8]);
+                                     values->data[8], values->data[9],
+                                     values->data[10], values->data[11],
+                                     values->data[12], values->data[13],
+                                     values->data[14], values->data[15]);
            break;
        default:
            elog(ERROR, "fmgr_c: function %u: too many arguments (%d > %d)",
-                finfo->fn_oid, n_arguments, MAXFMGRARGS);
+                finfo->fn_oid, n_arguments, FUNC_MAX_ARGS);
            break;
    }
    return returnValue;
@@ -323,9 +394,9 @@ fmgr(Oid procedureId,...)
    fmgr_info(procedureId, &finfo);
    pronargs = finfo.fn_nargs;
 
-   if (pronargs > MAXFMGRARGS)
+   if (pronargs > FUNC_MAX_ARGS)
        elog(ERROR, "fmgr: function %u: too many arguments (%d > %d)",
-            procedureId, pronargs, MAXFMGRARGS);
+            procedureId, pronargs, FUNC_MAX_ARGS);
 
    va_start(pvar, procedureId);
    for (i = 0; i < pronargs; ++i)
@@ -364,10 +435,10 @@ fmgr_ptr(FmgrInfo *finfo,...)
    va_start(pvar, finfo);
    n_arguments = va_arg(pvar, int);
    local_finfo->fn_nargs = n_arguments;
-   if (n_arguments > MAXFMGRARGS)
+   if (n_arguments > FUNC_MAX_ARGS)
    {
        elog(ERROR, "fmgr_ptr: function %u: too many arguments (%d > %d)",
-            func_id, n_arguments, MAXFMGRARGS);
+            func_id, n_arguments, FUNC_MAX_ARGS);
    }
    for (i = 0; i < n_arguments; ++i)
        values.data[i] = va_arg(pvar, char *);
index 3bfe2f0ab66ec7af2d702c88753cab93d29ffbad..60ed1e8704050ed60fc51b0fd9bb3e9233ff81b0 100644 (file)
@@ -21,7 +21,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.130 2000/01/10 16:13:16 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.131 2000/01/10 17:14:40 momjian Exp $
  *
  * Modifications - 6/10/96 - [email protected] - version 1.13.dhb
  *
@@ -129,7 +129,7 @@ usage(const char *progname)
 
 #ifdef HAVE_GETOPT_LONG
    fprintf(stderr,
-   
+
    "    -a, --data-only         dump out only the data, no schema\n"
    "    -c, --clean             clean(drop) schema prior to create\n"
    "    -d, --insert-proper     dump data as proper insert strings\n"
@@ -146,11 +146,11 @@ usage(const char *progname)
    "    -v, --verbose           verbose\n"
    "    -x, --no-acl            do not dump ACL's (grant/revoke)\n"
    "    -?, --help              show this help message\n"
-   
+
    ); /* fprintf */
 #else
    fprintf(stderr,
-   
+
    "    -a                      dump out only the data, no schema\n"
    "    -c                      clean(drop) schema prior to create\n"
    "    -d                      dump data as proper insert strings\n"
@@ -167,10 +167,10 @@ usage(const char *progname)
    "    -v                      verbose\n"
    "    -x                      do not dump ACL's (grant/revoke)\n"
    "    -?                      show this help message\n"
-   
+
    ); /* fprintf */
 #endif
-   
+
    fprintf(stderr,
        "\nIf dbname is not supplied, then the DATABASE environment variable value is used.\n\n");
 
@@ -566,7 +566,7 @@ main(int argc, char **argv)
        {"verbose", no_argument, NULL, 'v'},
        {"no-acl", no_argument, NULL, 'x'},
        {"help", no_argument, NULL, '?'},
-   };        
+   };
    int     optindex;
 #endif
 
@@ -667,7 +667,7 @@ main(int argc, char **argv)
                 "%s: The -z option(dump ACLs) is now the default, continuing.\n",
                    progname);
                break;
-           case '?':   
+           case '?':
            default:
                usage(progname);
                break;
@@ -681,7 +681,7 @@ main(int argc, char **argv)
                progname);
        exit(2);
    }
-       
+
    /* open the output file */
    if (filename == NULL)
        g_fout = stdout;
@@ -1069,7 +1069,7 @@ clearFuncInfo(FuncInfo *fun, int numFuncs)
            free(fun[i].proname);
        if (fun[i].usename)
            free(fun[i].usename);
-       for (a = 0; a < 8; ++a)
+       for (a = 0; a < FUNC_MAX_ARGS ; ++a)
            if (fun[i].argtypes[a])
                free(fun[i].argtypes[a]);
        if (fun[i].prorettype)
@@ -1122,8 +1122,8 @@ clearTableInfo(TableInfo *tblinfo, int numTables)
            free(tblinfo[i].typnames);
        if (tblinfo[i].notnull)
            free(tblinfo[i].notnull);
-        if (tblinfo[i].primary_key)
-            free(tblinfo[i].primary_key);
+   if (tblinfo[i].primary_key)
+       free(tblinfo[i].primary_key);
    }
    free(tblinfo);
 }
@@ -1611,48 +1611,48 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
        else
            tblinfo[i].check_expr = NULL;
 
-        /* Get primary key */
-        if (strcmp(PQgetvalue(res, i, i_relhasindex), "t")==0)
-        {
-            PGresult * res2;
-            char str[INDEX_MAX_KEYS * NAMEDATALEN + 3] = "";
-            int j;
+   /* Get primary key */
+   if (strcmp(PQgetvalue(res, i, i_relhasindex), "t")==0)
+   {
+       PGresult * res2;
+       char str[INDEX_MAX_KEYS * NAMEDATALEN + 3] = "";
+       int j;
 
            resetPQExpBuffer(query);
            appendPQExpBuffer(query,
-                    "SELECT a.attname "
-                    "FROM pg_index i, pg_class c, pg_attribute a "
-                    "WHERE i.indisprimary AND i.indrelid = %s "
-                    "  AND i.indexrelid = c.oid AND a.attnum > 0 AND a.attrelid = c.oid "
-                    "ORDER BY a.attnum ",
-                    tblinfo[i].oid);
-            res2 = PQexec(g_conn, query->data);
+           "SELECT a.attname "
+           "FROM pg_index i, pg_class c, pg_attribute a "
+           "WHERE i.indisprimary AND i.indrelid = %s "
+           "  AND i.indexrelid = c.oid AND a.attnum > 0 AND a.attrelid = c.oid "
+           "ORDER BY a.attnum ",
+           tblinfo[i].oid);
+       res2 = PQexec(g_conn, query->data);
            if (!res2 || PQresultStatus(res2) != PGRES_TUPLES_OK)
            {
                fprintf(stderr, "getTables(): SELECT (for PRIMARY KEY) failed.  Explanation from backend: %s",
-                        PQerrorMessage(g_conn));
+           PQerrorMessage(g_conn));
                exit_nicely(g_conn);
            }
-            
-            for (j = 0; j < PQntuples(res2); j++)
-            {
-                if (strlen(str)>0)
-                    strcat(str, ", ");
-                strcat(str, fmtId(PQgetvalue(res2, j, 0), force_quotes));
-            }
-
-            if (strlen(str)>0) {
-                tblinfo[i].primary_key = strdup(str);
-                if (tblinfo[i].primary_key == NULL) {
-                    perror("strdup");
-                    exit(1);
-                }
-            }
-            else
-                tblinfo[i].primary_key = NULL;
-        }
-        else
-            tblinfo[i].primary_key = NULL;
+
+       for (j = 0; j < PQntuples(res2); j++)
+       {
+       if (strlen(str)>0)
+           strcat(str, ", ");
+       strcat(str, fmtId(PQgetvalue(res2, j, 0), force_quotes));
+       }
+
+       if (strlen(str)>0) {
+       tblinfo[i].primary_key = strdup(str);
+       if (tblinfo[i].primary_key == NULL) {
+           perror("strdup");
+           exit(1);
+       }
+       }
+       else
+       tblinfo[i].primary_key = NULL;
+   }
+   else
+       tblinfo[i].primary_key = NULL;
 
        /* Get Triggers */
        if (tblinfo[i].ntrig > 0)
@@ -2022,7 +2022,7 @@ getIndices(int *numIndices)
     */
 
    appendPQExpBuffer(query,
-            "SELECT t1.relname as indexrelname, t2.relname as indrelname, "
+       "SELECT t1.relname as indexrelname, t2.relname as indrelname, "
            "i.indproc, i.indkey, i.indclass, "
            "a.amname as indamname, i.indisunique "
            "from pg_index i, pg_class t1, pg_class t2, pg_am a "
@@ -2849,14 +2849,14 @@ dumpTables(FILE *fout, TableInfo *tblinfo, int numTables,
                        tblinfo[i].check_expr[k]);
            }
 
-            /* PRIMARY KEY */
-            if (tblinfo[i].primary_key) {
-                if (actual_atts + tblinfo[i].ncheck > 0)
-                    appendPQExpBuffer(q, ",\n\t");
-                appendPQExpBuffer(q, "PRIMARY KEY (%s)", tblinfo[i].primary_key);
-            }
+       /* PRIMARY KEY */
+       if (tblinfo[i].primary_key) {
+       if (actual_atts + tblinfo[i].ncheck > 0)
+           appendPQExpBuffer(q, ",\n\t");
+       appendPQExpBuffer(q, "PRIMARY KEY (%s)", tblinfo[i].primary_key);
+       }
 
-            appendPQExpBuffer(q, "\n)");
+       appendPQExpBuffer(q, "\n)");
 
            if (numParents > 0)
            {
index b34d4b964275fbcc6660eba9d87dbe2f52697475..cd06288500aaaeb242a03facd6a664863cc6ae11 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_dump.h,v 1.43 1999/12/27 15:42:44 momjian Exp $
+ * $Id: pg_dump.h,v 1.44 2000/01/10 17:14:40 momjian Exp $
  *
  * Modifications - 6/12/96 - [email protected] - version 1.13.dhb.2
  *
@@ -61,7 +61,7 @@ typedef struct _funcInfo
    char       *proowner;
    int         lang;
    int         nargs;
-   char       *argtypes[8];    /* should be derived from obj/fmgr.h
+   char       *argtypes[FUNC_MAX_ARGS];    /* should be derived from obj/fmgr.h
                                 * instead of hardwired */
    char       *prorettype;
    int         retset;         /* 1 if the function returns a set, 0
index cfa54d81fe9a8f648fe8c43558cada72433675fe..7106d1c19403661eb98878b9d6c8fa37df0ed3e6 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: funcindex.h,v 1.7 1999/02/13 23:20:50 momjian Exp $
+ * $Id: funcindex.h,v 1.8 2000/01/10 17:14:42 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -16,7 +16,7 @@
 typedef struct
 {
    int         nargs;
-   Oid         arglist[8];
+   Oid         arglist[FUNC_MAX_ARGS];
    Oid         procOid;
    NameData    funcName;
 } FuncIndexInfo;
index c5a55a5fb368cc830f7770d1114bb72f5964d2b1..c731bea4425f456bba7739f0c96ac4d84958c946 100644 (file)
 #define INDEXSCAN_PATCH 
 
 /*
- * Maximum number of columns in an index.
+ * Maximum number of columns in an index and maximum number of args
+ * to a function. They must be the same value.
  */
 #define INDEX_MAX_KEYS     8
+#define FUNC_MAX_ARGS      INDEX_MAX_KEYS
 
 /*
  * Enables debugging print statements in the date/time support routines.
index 04b9c44ec0e1890c3043f2b0f2ea928472ce7778..73262d433754b035bc8bdb9bec4b98583f74cf94 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: parse_func.h,v 1.20 1999/12/10 07:37:33 tgl Exp $
+ * $Id: parse_func.h,v 1.21 2000/01/10 17:14:43 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -15,9 +15,6 @@
 
 #include "parser/parse_node.h"
 
-
-#define MAXFARGS 8             /* max # args to a c or postquel function */
-
 /*
  * This structure is used to explore the inheritance hierarchy above
  * nodes in the type tree in order to disambiguate among polymorphic
index 689d5d029504883d3c38864b4352414bf0027ab5..84bbe0950e0bba6ea1a3d05bd9267e63cd2d3fac 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: rel.h,v 1.30 1999/11/16 04:14:03 momjian Exp $
+ * $Id: rel.h,v 1.31 2000/01/10 17:14:44 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -51,7 +51,7 @@ typedef struct Trigger
    bool        tgdeferrable;
    bool        tginitdeferred;
    int16       tgnargs;
-   int16       tgattr[8];
+   int16       tgattr[FUNC_MAX_ARGS];
    char      **tgargs;
 } Trigger;
 
index ef5911c60365ef9a3b93cc65c495ada6286df2eb..9d509e2c3896d2fe1b4154b0f04c27da8347dfe0 100644 (file)
@@ -3,7 +3,7 @@
  *           procedural language
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.14 1999/12/20 01:41:32 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.15 2000/01/10 17:14:45 momjian Exp $
  *
  *   This software is copyrighted by Jan Wieck - Hamburg.
  *
@@ -114,7 +114,7 @@ plpgsql_compile(Oid fn_oid, int functype)
    PLpgSQL_row *row;
    PLpgSQL_rec *rec;
    int         i;
-   int         arg_varnos[MAXFMGRARGS];
+   int         arg_varnos[FUNC_MAX_ARGS];
 
    /* ----------
     * Initialize the compiler
index 9d0573bcd7fa3dcfb5c173a72e47757a177aa901..4b82abdc3ec9e4b507f2e5cde2977ff82310ce01 100644 (file)
@@ -3,7 +3,7 @@
  *           procedural language
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/pl/plpgsql/src/plpgsql.h,v 1.4 1999/07/17 20:18:47 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/pl/plpgsql/src/plpgsql.h,v 1.5 2000/01/10 17:14:45 momjian Exp $
  *
  *   This software is copyrighted by Jan Wieck - Hamburg.
  *
@@ -377,7 +377,7 @@ typedef struct PLpgSQL_function
    bool        fn_retset;
 
    int         fn_nargs;
-   int         fn_argvarnos[MAXFMGRARGS];
+   int         fn_argvarnos[FUNC_MAX_ARGS];
    int         found_varno;
    int         new_varno;
    int         old_varno;
index 8db608b0da16d7bfca7c7ee70149f73b73ba0c56..cf89817d4549b5d352a88abe2095ea68bc88d065 100644 (file)
@@ -3,7 +3,7 @@
  *           procedural language (PL)
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.16 2000/01/05 18:23:54 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.17 2000/01/10 17:14:46 momjian Exp $
  *
  *   This software is copyrighted by Jan Wieck - Hamburg.
  *
@@ -67,10 +67,10 @@ typedef struct pltcl_proc_desc
    Oid         result_in_elem;
    int         result_in_len;
    int         nargs;
-   FmgrInfo    arg_out_func[MAXFMGRARGS];
-   Oid         arg_out_elem[MAXFMGRARGS];
-   int         arg_out_len[MAXFMGRARGS];
-   int         arg_is_rel[MAXFMGRARGS];
+   FmgrInfo    arg_out_func[FUNC_MAX_ARGS];
+   Oid         arg_out_elem[FUNC_MAX_ARGS];
+   int         arg_out_len[FUNC_MAX_ARGS];
+   int         arg_is_rel[FUNC_MAX_ARGS];
 }          pltcl_proc_desc;