Packages patch - Mailing list pgsql-patches

From Bill Studenmund
Subject Packages patch
Date
Msg-id Pine.NEB.4.33.0110160621260.1551-100000@vespasia.home-net.internetconnect.net
Whole thread Raw
List pgsql-patches
Below please find the current version of the packages patch. It is
relative to the head as of 9 AM PDT October 17.

Please let me know if pine messes up the diffs; I'll resend them as an
attachment if needed.

Take care,

Bill

Index: src/backend/access/common/tupdesc.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/access/common/tupdesc.c,v
retrieving revision 1.75
diff -u -r1.75 tupdesc.c
--- src/backend/access/common/tupdesc.c    2001/06/25 21:11:43    1.75
+++ src/backend/access/common/tupdesc.c    2001/10/17 16:41:05
@@ -502,7 +502,7 @@
     Form_pg_attribute att;

     att = desc->attrs[attnum - 1];
-    att->atttypid = TypeShellMake(relname);
+    att->atttypid = TypeShellMake(relname, STANDARDPackageId);
     att->attlen = sizeof(Oid);
     att->attbyval = true;
     att->attalign = 'i';
Index: src/backend/catalog/Makefile
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/catalog/Makefile,v
retrieving revision 1.37
diff -u -r1.37 Makefile
--- src/backend/catalog/Makefile    2001/08/25 18:52:41    1.37
+++ src/backend/catalog/Makefile    2001/10/17 16:41:06
@@ -11,8 +11,8 @@
 include $(top_builddir)/src/Makefile.global

 OBJS = catalog.o heap.o index.o indexing.o aclchk.o \
-       pg_aggregate.o pg_largeobject.o pg_operator.o pg_proc.o \
-       pg_type.o
+       pg_aggregate.o pg_largeobject.o pg_operator.o pg_package.o \
+       pg_packglobal.o pg_proc.o pg_type.o

 BKIFILES = postgres.bki postgres.description

@@ -31,7 +31,8 @@
     pg_operator.h pg_opclass.h pg_am.h pg_amop.h pg_amproc.h \
     pg_language.h pg_largeobject.h pg_aggregate.h pg_statistic.h \
     pg_rewrite.h pg_trigger.h pg_listener.h pg_description.h \
-    pg_database.h pg_shadow.h pg_group.h indexing.h \
+    pg_database.h pg_shadow.h pg_group.h \
+    pg_package.h pg_packglobal.h indexing.h \
     )

 pg_includes := $(sort -I$(top_srcdir)/src/include -I$(top_builddir)/src/include)
Index: src/backend/catalog/aclchk.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/catalog/aclchk.c,v
retrieving revision 1.51
diff -u -r1.51 aclchk.c
--- src/backend/catalog/aclchk.c    2001/06/18 16:13:21    1.51
+++ src/backend/catalog/aclchk.c    2001/10/17 16:41:06
@@ -24,6 +24,7 @@
 #include "catalog/pg_aggregate.h"
 #include "catalog/pg_group.h"
 #include "catalog/pg_operator.h"
+#include "catalog/pg_package.h"
 #include "catalog/pg_proc.h"
 #include "catalog/pg_shadow.h"
 #include "catalog/pg_type.h"
@@ -542,9 +543,19 @@
     ReleaseSysCache(tuple);
     /* caution: usename is inaccessible beyond this point... */

-    tuple = SearchSysCache(cacheid,
-                           PointerGetDatum(name),
-                           0, 0, 0);
+    if (cacheid == PROCNAME)
+    {
+        tuple = SearchSysCache(cacheid,
+                               PointerGetDatum(name),
+                               ObjectIdGetDatum(STANDARDPackageId),
+                               0, 0);
+    }
+    else
+    {
+        tuple = SearchSysCache(cacheid,
+                               PointerGetDatum(name),
+                               0, 0, 0);
+    }
     switch (cacheid)
     {
         case RELNAME:
@@ -620,6 +631,8 @@

 /*
  * Ownership check for a function (specified by name and argument types).
+ *
+ * Applies to functions in the STANDARD package.
  */
 bool
 pg_func_ownercheck(Oid userid,
@@ -657,11 +670,12 @@

     tuple = SearchSysCache(PROCNAME,
                            PointerGetDatum(funcname),
+                           ObjectIdGetDatum(STANDARDPackageId),
                            Int32GetDatum(nargs),
-                           PointerGetDatum(arglist),
-                           0);
+                           PointerGetDatum(arglist));
     if (!HeapTupleIsValid(tuple))
-        func_error("pg_func_ownercheck", funcname, nargs, arglist, NULL);
+        func_error("pg_func_ownercheck", funcname, STANDARDPackageId, 0,
+                   nargs, arglist, NULL);

     owner_id = ((Form_pg_proc) GETSTRUCT(tuple))->proowner;

@@ -671,8 +685,58 @@
 }

 /*
+ * Ownership check for a package. (specified by name).
+ */
+bool
+pg_pack_ownercheck(Oid userid,
+                   char *packname)
+{
+    HeapTuple    tuple;
+    AclId        owner_id;
+    char       *usename;
+
+    tuple = SearchSysCache(SHADOWSYSID,
+                           PointerGetDatum(userid),
+                           0, 0, 0);
+    if (!HeapTupleIsValid(tuple))
+        elog(ERROR, "pg_pack_ownercheck: invalid user id %u",
+             (unsigned) userid);
+    usename = NameStr(((Form_pg_shadow) GETSTRUCT(tuple))->usename);
+
+    /*
+     * Superusers bypass all permission-checking.
+     */
+    if (((Form_pg_shadow) GETSTRUCT(tuple))->usesuper)
+    {
+#ifdef ACLDEBUG
+        elog(DEBUG, "pg_pack_ownercheck: user \"%s\" is superuser",
+             usename);
+#endif
+        ReleaseSysCache(tuple);
+        return true;
+    }
+
+    ReleaseSysCache(tuple);
+    /* caution: usename is inaccessible beyond this point... */
+
+    tuple = SearchSysCache(PACKAGENAME,
+                           PointerGetDatum(packname),
+                           0, 0, 0);
+    if (!HeapTupleIsValid(tuple))
+         elog(ERROR, "pg_pack_ownercheck: package \"%s\" not found", packname);
+
+    owner_id = ((Form_pg_package) GETSTRUCT(tuple))->packowner;
+
+    ReleaseSysCache(tuple);
+
+    return userid == owner_id;
+}
+
+/*
  * Ownership check for an aggregate function (specified by name and
  * argument type).
+ *
+ * Applies to aggregates in the STANDARD package.
  */
 bool
 pg_aggr_ownercheck(Oid userid,
@@ -709,8 +773,9 @@

     tuple = SearchSysCache(AGGNAME,
                            PointerGetDatum(aggname),
+                           ObjectIdGetDatum(STANDARDPackageId),
                            ObjectIdGetDatum(basetypeID),
-                           0, 0);
+                           0);
     if (!HeapTupleIsValid(tuple))
         agg_error("pg_aggr_ownercheck", aggname, basetypeID);

Index: src/backend/catalog/heap.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/catalog/heap.c,v
retrieving revision 1.177
diff -u -r1.177 heap.c
--- src/backend/catalog/heap.c    2001/10/06 23:21:43    1.177
+++ src/backend/catalog/heap.c    2001/10/17 16:41:08
@@ -657,6 +657,21 @@
 static void
 AddNewRelationType(char *typeName, Oid new_rel_oid, Oid new_type_oid)
 {
+    DefElem       *inputName;
+    DefElem       *outputName;
+
+    inputName = makeNode(DefElem);
+    inputName->defname = "";
+    inputName->arg = (Node *)makeString("oidin");
+    inputName->package = STANDARDPackageId;
+    inputName->packexact = true;
+
+    outputName = makeNode(DefElem);
+    outputName->defname = "";
+    outputName->arg = (Node *)makeString("oidout");
+    outputName->package = STANDARDPackageId;
+    outputName->packexact = true;
+
     /*
      * The sizes are set to oid size because it makes implementing sets
      * MUCH easier, and no one (we hope) uses these fields to figure out
@@ -667,16 +682,17 @@
      * true makes sets much easier, and it isn't used by anything else.
      */
     TypeCreate(typeName,        /* type name */
+               STANDARDPackageId, /* containing package */
                new_type_oid,    /* preassigned oid for type */
                new_rel_oid,        /* relation oid */
                sizeof(Oid),        /* internal size */
                -1,                /* external size */
                'c',                /* type-type (catalog) */
                ',',                /* default array delimiter */
-               "oidin",            /* input procedure */
-               "oidout",        /* output procedure */
-               "oidin",            /* receive procedure */
-               "oidout",        /* send procedure */
+               inputName,        /* input procedure */
+               outputName,        /* output procedure */
+               inputName,        /* receive procedure */
+               outputName,        /* send procedure */
                NULL,            /* array element type - irrelevant */
                NULL,            /* default type value - none */
                true,            /* passed by value */
Index: src/backend/catalog/indexing.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/catalog/indexing.c,v
retrieving revision 1.82
diff -u -r1.82 indexing.c
--- src/backend/catalog/indexing.c    2001/08/21 16:36:01    1.82
+++ src/backend/catalog/indexing.c    2001/10/17 16:41:08
@@ -32,7 +32,7 @@
  */

 char       *Name_pg_aggregate_indices[Num_pg_aggregate_indices] =
-{AggregateNameTypeIndex, AggregateOidIndex};
+{AggregateNamePackTypeIndex, AggregateOidIndex};
 char       *Name_pg_am_indices[Num_pg_am_indices] =
 {AmNameIndex, AmOidIndex};
 char       *Name_pg_amop_indices[Num_pg_amop_indices] =
@@ -61,6 +61,10 @@
 {OpclassAmNameIndex, OpclassOidIndex};
 char       *Name_pg_operator_indices[Num_pg_operator_indices] =
 {OperatorOidIndex, OperatorNameIndex};
+char       *Name_pg_package_indices[Num_pg_package_indices] =
+{PackageOidIndex, PackageNameIndex};
+char       *Name_pg_packglobal_indices[Num_pg_packglobal_indices] =
+{PackageGlobalIndex};
 char       *Name_pg_proc_indices[Num_pg_proc_indices] =
 {ProcedureOidIndex, ProcedureNameIndex};
 char       *Name_pg_relcheck_indices[Num_pg_relcheck_indices] =
Index: src/backend/catalog/pg_aggregate.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/catalog/pg_aggregate.c,v
retrieving revision 1.39
diff -u -r1.39 pg_aggregate.c
--- src/backend/catalog/pg_aggregate.c    2001/08/10 15:49:39    1.39
+++ src/backend/catalog/pg_aggregate.c    2001/10/17 16:41:08
@@ -46,8 +46,9 @@
  */
 void
 AggregateCreate(char *aggName,
-                char *aggtransfnName,
-                char *aggfinalfnName,
+                Oid   packId,
+                struct DefElem *aggtransfnName,
+                struct DefElem *aggfinalfnName,
                 char *aggbasetypeName,
                 char *aggtranstypeName,
                 char *agginitval)
@@ -67,6 +68,7 @@
     NameData    aname;
     TupleDesc    tupDesc;
     int            i;
+    char       *p;

     MemSet(fnArgs, 0, FUNC_MAX_ARGS * sizeof(Oid));

@@ -96,8 +98,9 @@
     /* make sure there is no existing agg of same name and base type */
     if (SearchSysCacheExists(AGGNAME,
                              PointerGetDatum(aggName),
+                             ObjectIdGetDatum(packId),
                              ObjectIdGetDatum(basetype),
-                             0, 0))
+                             0))
         elog(ERROR,
              "aggregate function \"%s\" with base type %s already exists",
              aggName, aggbasetypeName);
@@ -116,22 +119,21 @@
     {
         fnArgs[1] = basetype;
         nargs = 2;
+        p = aggbasetypeName;
     }
     else
+    {
         nargs = 1;
-    tup = SearchSysCache(PROCNAME,
-                         PointerGetDatum(aggtransfnName),
-                         Int32GetDatum(nargs),
-                         PointerGetDatum(fnArgs),
-                         0);
-    if (!HeapTupleIsValid(tup))
-        func_error("AggregateCreate", aggtransfnName, nargs, fnArgs, NULL);
+        p = NULL;
+    }
+    tup = GetFuncFromDefElem(aggtransfnName, nargs, fnArgs, "AggregateCreate",
+                             aggtranstypeName, p);
     transfn = tup->t_data->t_oid;
     Assert(OidIsValid(transfn));
     proc = (Form_pg_proc) GETSTRUCT(tup);
     if (proc->prorettype != transtype)
         elog(ERROR, "return type of transition function %s is not %s",
-             aggtransfnName, aggtranstypeName);
+             ((TypeName *)aggtransfnName->arg)->name, aggtranstypeName);

     /*
      * If the transfn is strict and the initval is NULL, make sure input
@@ -152,13 +154,8 @@
     {
         fnArgs[0] = transtype;
         fnArgs[1] = 0;
-        tup = SearchSysCache(PROCNAME,
-                             PointerGetDatum(aggfinalfnName),
-                             Int32GetDatum(1),
-                             PointerGetDatum(fnArgs),
-                             0);
-        if (!HeapTupleIsValid(tup))
-            func_error("AggregateCreate", aggfinalfnName, 1, fnArgs, NULL);
+        tup = GetFuncFromDefElem(aggfinalfnName, 1, fnArgs,
+                                 "AggregateCreate", aggtranstypeName, NULL);
         finalfn = tup->t_data->t_oid;
         Assert(OidIsValid(finalfn));
         proc = (Form_pg_proc) GETSTRUCT(tup);
@@ -183,6 +180,7 @@
     }
     namestrcpy(&aname, aggName);
     values[Anum_pg_aggregate_aggname - 1] = NameGetDatum(&aname);
+    values[Anum_pg_aggregate_aggpack - 1] = ObjectIdGetDatum(packId);
     values[Anum_pg_aggregate_aggowner - 1] = Int32GetDatum(GetUserId());
     values[Anum_pg_aggregate_aggtransfn - 1] = ObjectIdGetDatum(transfn);
     values[Anum_pg_aggregate_aggfinalfn - 1] = ObjectIdGetDatum(finalfn);
@@ -218,7 +216,7 @@
 }

 Datum
-AggNameGetInitVal(char *aggName, Oid basetype, bool *isNull)
+AggIdGetInitVal(Oid aggId, bool *isNull)
 {
     HeapTuple    tup;
     Oid            transtype,
@@ -228,16 +226,14 @@
     char       *strInitVal;
     Datum        initVal;

-    Assert(PointerIsValid(aggName));
     Assert(PointerIsValid(isNull));

-    tup = SearchSysCache(AGGNAME,
-                         PointerGetDatum(aggName),
-                         ObjectIdGetDatum(basetype),
-                         0, 0);
+    tup = SearchSysCache(AGGOID,
+                         ObjectIdGetDatum(aggId),
+                         0, 0, 0);
     if (!HeapTupleIsValid(tup))
-        elog(ERROR, "AggNameGetInitVal: cache lookup failed for aggregate '%s'",
-             aggName);
+        elog(ERROR, "AggIdGetInitVal: cache lookup failed for aggregate '%u'",
+             aggId);
     transtype = ((Form_pg_aggregate) GETSTRUCT(tup))->aggtranstype;

     /*
@@ -261,7 +257,7 @@
                          ObjectIdGetDatum(transtype),
                          0, 0, 0);
     if (!HeapTupleIsValid(tup))
-        elog(ERROR, "AggNameGetInitVal: cache lookup failed on aggregate transition function return type %u",
transtype);
+        elog(ERROR, "AggIdGetInitVal: cache lookup failed on aggregate transition function return type %u",
transtype);

     typinput = ((Form_pg_type) GETSTRUCT(tup))->typinput;
     typelem = ((Form_pg_type) GETSTRUCT(tup))->typelem;
Index: src/backend/catalog/pg_operator.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/catalog/pg_operator.c,v
retrieving revision 1.61
diff -u -r1.61 pg_operator.c
--- src/backend/catalog/pg_operator.c    2001/08/10 15:49:39    1.61
+++ src/backend/catalog/pg_operator.c    2001/10/17 16:41:09
@@ -43,23 +43,26 @@

 static Oid OperatorShellMakeWithOpenRelation(Relation pg_operator_desc,
                                   char *operatorName,
+                                  Oid packId,
                                   Oid leftObjectId,
                                   Oid rightObjectId);

 static Oid OperatorShellMake(char *operatorName,
+                  Oid packId,
                   char *leftTypeName,
                   char *rightTypeName);

 static void OperatorDef(char *operatorName,
+            Oid packId,
             char *leftTypeName,
             char *rightTypeName,
-            char *procedureName,
+            struct DefElem *procedureName,
             uint16 precedence,
             bool isLeftAssociative,
             char *commutatorName,
             char *negatorName,
-            char *restrictionName,
-            char *oinName,
+            struct DefElem *restrictionName,
+            struct DefElem *joinName,
             bool canHash,
             char *leftSortName,
             char *rightSortName);
@@ -222,6 +225,7 @@
 static Oid
 OperatorShellMakeWithOpenRelation(Relation pg_operator_desc,
                                   char *operatorName,
+                                  Oid packId,
                                   Oid leftObjectId,
                                   Oid rightObjectId)
 {
@@ -249,6 +253,7 @@
     i = 0;
     namestrcpy(&oname, operatorName);
     values[i++] = NameGetDatum(&oname);
+    values[i++] = ObjectIdGetDatum(packId);
     values[i++] = Int32GetDatum(GetUserId());
     values[i++] = UInt16GetDatum(0);
     values[i++] = CharGetDatum('b');    /* assume it's binary */
@@ -308,6 +313,7 @@
  */
 static Oid
 OperatorShellMake(char *operatorName,
+                  Oid   packId,
                   char *leftTypeName,
                   char *rightTypeName)
 {
@@ -343,6 +349,7 @@
      */
     operatorObjectId = OperatorShellMakeWithOpenRelation(pg_operator_desc,
                                                          operatorName,
+                                                         packId,
                                                          leftObjectId,
                                                          rightObjectId);

@@ -418,6 +425,7 @@
  * --------------------------------
  *        "X" indicates an optional argument (i.e. one that can be NULL)
  *        operatorName;            -- operator name
+ *        packId;                    -- containing package
  *        leftTypeName;            -- X left type name
  *        rightTypeName;            -- X right type name
  *        procedureName;            -- procedure name for operator code
@@ -433,15 +441,16 @@
  */
 static void
 OperatorDef(char *operatorName,
+            Oid   packId,
             char *leftTypeName,
             char *rightTypeName,
-            char *procedureName,
+            struct DefElem *procedureName,
             uint16 precedence,
             bool isLeftAssociative,
             char *commutatorName,
             char *negatorName,
-            char *restrictionName,
-            char *joinName,
+            struct DefElem *restrictionName,
+            struct DefElem *joinName,
             bool canHash,
             char *leftSortName,
             char *rightSortName)
@@ -469,6 +478,7 @@
     NameData    oname;
     TupleDesc    tupDesc;
     ScanKeyData    opKey[3];
+    char       *typenames[2];

     operatorObjectId = OperatorGet(operatorName,
                                    leftTypeName,
@@ -524,29 +534,29 @@
      * created so we don't have to worry about deleting them later.
      */
     MemSet(typeId, 0, FUNC_MAX_ARGS * sizeof(Oid));
+    typenames[1] = NULL;
     if (!leftTypeName)
     {
         typeId[0] = rightTypeId;
+        typenames[0] = rightTypeName;
         nargs = 1;
     }
     else if (!rightTypeName)
     {
         typeId[0] = leftTypeId;
+        typenames[0] = leftTypeName;
         nargs = 1;
     }
     else
     {
         typeId[0] = leftTypeId;
         typeId[1] = rightTypeId;
+        typenames[0] = leftTypeName;
+        typenames[1] = rightTypeName;
         nargs = 2;
     }
-    tup = SearchSysCache(PROCNAME,
-                         PointerGetDatum(procedureName),
-                         Int32GetDatum(nargs),
-                         PointerGetDatum(typeId),
-                         0);
-    if (!HeapTupleIsValid(tup))
-        func_error("OperatorDef", procedureName, nargs, typeId, NULL);
+    tup = GetFuncFromDefElem(procedureName, nargs, typeId, "OperatorDef",
+                             typenames[0], typenames[1]);

     values[Anum_pg_operator_oprcode - 1] = ObjectIdGetDatum(tup->t_data->t_oid);
     values[Anum_pg_operator_oprresult - 1] = ObjectIdGetDatum(((Form_pg_proc)
@@ -567,15 +577,12 @@
         typeId[2] = 0;            /* args list (opaque type) */
         typeId[3] = INT4OID;    /* varRelid */

-        restOid = GetSysCacheOid(PROCNAME,
-                                 PointerGetDatum(restrictionName),
-                                 Int32GetDatum(4),
-                                 PointerGetDatum(typeId),
-                                 0);
-        if (!OidIsValid(restOid))
-            func_error("OperatorDef", restrictionName, 4, typeId, NULL);
+        tup = GetFuncFromDefElem(restrictionName, 4, typeId, "OperatorDef",
+                                 "restriction function parameters", NULL);

+        restOid = tup->t_data->t_oid;
         values[Anum_pg_operator_oprrest - 1] = ObjectIdGetDatum(restOid);
+        ReleaseSysCache(tup);
     }
     else
         values[Anum_pg_operator_oprrest - 1] = ObjectIdGetDatum(InvalidOid);
@@ -592,15 +599,12 @@
         typeId[1] = OIDOID;        /* operator OID */
         typeId[2] = 0;            /* args list (opaque type) */

-        joinOid = GetSysCacheOid(PROCNAME,
-                                 PointerGetDatum(joinName),
-                                 Int32GetDatum(3),
-                                 PointerGetDatum(typeId),
-                                 0);
-        if (!OidIsValid(joinOid))
-            func_error("OperatorDef", joinName, 3, typeId, NULL);
+        tup = GetFuncFromDefElem(joinName, 3, typeId, "OperatorDef",
+                                 "join function parameters", NULL);

+        joinOid = tup->t_data->t_oid;
         values[Anum_pg_operator_oprjoin - 1] = ObjectIdGetDatum(joinOid);
+        ReleaseSysCache(tup);
     }
     else
         values[Anum_pg_operator_oprjoin - 1] = ObjectIdGetDatum(InvalidOid);
@@ -611,6 +615,7 @@
     i = 0;
     namestrcpy(&oname, operatorName);
     values[i++] = NameGetDatum(&oname);
+    values[i++] = ObjectIdGetDatum(packId);
     values[i++] = Int32GetDatum(GetUserId());
     values[i++] = UInt16GetDatum(precedence);
     values[i++] = CharGetDatum(leftTypeName ? (rightTypeName ? 'b' : 'r') : 'l');
@@ -700,6 +705,7 @@
             {
                 /* not in catalogs, different from operator */
                 other_oid = OperatorShellMake(name[j],
+                                              packId,
                                               otherLeftTypeName,
                                               otherRightTypeName);
                 if (!OidIsValid(other_oid))
@@ -994,6 +1000,7 @@
  *
  * "X" indicates an optional argument (i.e. one that can be NULL)
  *        operatorName;            -- operator name
+ *        packId;                    -- owning package
  *        leftTypeName;            -- X left type name
  *        rightTypeName;            -- X right type name
  *        procedureName;            -- procedure for operator
@@ -1009,15 +1016,16 @@
  */
 void
 OperatorCreate(char *operatorName,
+               Oid packId,
                char *leftTypeName,
                char *rightTypeName,
-               char *procedureName,
+               struct DefElem *procedureName,
                uint16 precedence,
                bool isLeftAssociative,
                char *commutatorName,
                char *negatorName,
-               char *restrictionName,
-               char *joinName,
+               struct DefElem *restrictionName,
+               struct DefElem *joinName,
                bool canHash,
                char *leftSortName,
                char *rightSortName)
@@ -1044,6 +1052,7 @@
      * already exist.
      */
     OperatorDef(operatorName,
+                packId,
                 leftTypeName,
                 rightTypeName,
                 procedureName,
Index: src/backend/catalog/pg_package.c
===================================================================
RCS file: pg_package.c
diff -N pg_package.c
--- /dev/null    Wed Oct 17 08:50:28 2001
+++ pg_package.c    Wed Oct 17 11:41:09 2001
@@ -0,0 +1,170 @@
+/*-------------------------------------------------------------------------
+ *
+ * pg_package.c
+ *      routines to support manipulation of the pg_package relation
+ *
+ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ *
+ * IDENTIFICATION
+ *      $Header: /home/projects/pgsql/cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.42 2000/04/12 17:14:56 momjian
Exp$ 
+ *
+ *-------------------------------------------------------------------------
+ */
+#include "postgres.h"
+
+#include "access/heapam.h"
+#include "catalog/catname.h"
+#include "catalog/indexing.h"
+#include "catalog/pg_package.h"
+#include "miscadmin.h"
+#include "optimizer/planner.h"
+#include "parser/parse_type.h"
+#include "tcop/tcopprot.h"
+#include "utils/builtins.h"
+#include "utils/fmgrtab.h"
+#include "utils/lsyscache.h"
+#include "utils/sets.h"
+#include "utils/syscache.h"
+
+
+/* ----------------------------------------------------------------
+ *        PackageCreate
+ * ----------------------------------------------------------------
+ *
+ *    We are passed in the name of the package under test, and if we are
+ *    part of an, "OR REPLACE" clause.
+ */
+void
+PackageCreate(char *packageName, int orreplace)
+{
+    int            i, alreadyexists = 0;
+    Relation    rel;
+    HeapTuple    tup;
+    char        nulls[Natts_pg_package];
+    Datum        values[Natts_pg_package];
+    NameData    packname;
+    TupleDesc    tupDesc;
+
+    /* ----------------
+     *    See if a relation (table, sequence, index) of the same name
+     * already exists
+     * ----------------
+     */
+
+    rel = heap_openr(RelationRelationName, RowExclusiveLock);
+    tup = SearchSysCache(RELNAME,
+                         PointerGetDatum(packageName),
+                         0, 0, 0);
+
+    if (HeapTupleIsValid(tup))
+    {
+        heap_close(rel, RowExclusiveLock);
+        elog(ERROR, "Relation named  %s already exists", packageName);
+    }
+    heap_close(rel, RowExclusiveLock);
+
+    /* ----------------
+     *    See if the package already exists
+     * ----------------
+     */
+
+    rel = heap_openr(PackageRelationName, RowExclusiveLock);
+    tup = SearchSysCache(PACKAGENAME,
+                         PointerGetDatum(packageName),
+                         0, 0, 0);
+
+    if (HeapTupleIsValid(tup))
+    {
+        if (orreplace == 0)
+        {
+            heap_close(rel, RowExclusiveLock);
+            elog(ERROR, "Package %s already exists and 'OR REPLACE'"
+                " not specified", packageName);
+        }
+        alreadyexists = 1;
+    }
+
+    /*
+     * Make sure we can create/update packages
+     */
+
+    if (alreadyexists)
+    {
+        ReleaseSysCache(tup);
+        heap_close(rel, RowExclusiveLock);
+        return;
+    }
+
+    /*
+     * All seems OK; prepare the tuple to be inserted into pg_package.
+     */
+
+    for (i = 0; i < Natts_pg_package; ++i)
+    {
+        nulls[i] = ' ';
+        values[i] = (Datum) NULL;
+    }
+
+    i = 0;
+    namestrcpy(&packname, packageName);
+    values[i++] = NameGetDatum(&packname);
+    values[i++] = Int32GetDatum(GetUserId());
+
+    tupDesc = rel->rd_att;
+    tup = heap_formtuple(tupDesc,
+                         values,
+                         nulls);
+
+    heap_insert(rel, tup);
+
+    if (RelationGetForm(rel)->relhasindex)
+    {
+        Relation    idescs[Num_pg_package_indices];
+
+        CatalogOpenIndices(Num_pg_package_indices, Name_pg_package_indices, idescs);
+        CatalogIndexInsert(idescs, Num_pg_package_indices, rel, tup);
+        CatalogCloseIndices(Num_pg_package_indices, idescs);
+    }
+    heap_close(rel, RowExclusiveLock);
+    CommandCounterIncrement();
+    return;
+}
+
+/*
+ *    PackageNameFromID
+ *        Get a package's name from its ID
+ *
+ *    Return 0 if found, and store the name in name. Return 1 if not found.
+ */
+int
+PackageNameFromID(Oid packID, Name name)
+{
+    HeapTuple    tuple;
+
+    tuple = SearchSysCache(PACKAGEOID,
+                           ObjectIdGetDatum(packID),
+                           0, 0, 0);
+    if (!HeapTupleIsValid(tuple))
+        return 1;
+
+    namecpy(name, &(((Form_pg_package) GETSTRUCT(tuple))->packname));
+
+    ReleaseSysCache(tuple);
+
+    return 0;
+}
+
+/*
+ *    PackageIdFromName
+ *        Get a package's Oid from its name. Return 0 if not found.
+ */
+Oid
+PackageIdFromName(char *packname)
+{
+
+    return GetSysCacheOid(PACKAGENAME,
+                          PointerGetDatum(packname),
+                          0, 0, 0);
+}
Index: src/backend/catalog/pg_packglobal.c
===================================================================
RCS file: pg_packglobal.c
diff -N pg_packglobal.c
--- /dev/null    Wed Oct 17 08:50:28 2001
+++ pg_packglobal.c    Wed Oct 17 11:41:09 2001
@@ -0,0 +1,102 @@
+/*-------------------------------------------------------------------------
+ *
+ * pg_packglobal.c
+ *      routines to support manipulation of the pg_packglobal relation
+ *
+ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ *
+ * IDENTIFICATION
+ *      $Header: /home/projects/pgsql/cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.42 2000/04/12 17:14:56 momjian
Exp$ 
+ *
+ *-------------------------------------------------------------------------
+ */
+#include "postgres.h"
+
+#include "access/heapam.h"
+#include "catalog/catname.h"
+#include "catalog/indexing.h"
+#include "catalog/pg_packglobal.h"
+#include "miscadmin.h"
+#include "parser/parse_type.h"
+#include "utils/builtins.h"
+#include "utils/syscache.h"
+
+
+/* ----------------------------------------------------------------
+ *        PackageGlobalCreate
+ * ----------------------------------------------------------------
+ *
+ *    We are passed in the name of the package under test, and if we are
+ *    part of an, "OR REPLACE" clause.
+ */
+void
+PackageGlobalCreate(Oid packId, Oid langId, int4 seqno, char *vname,
+                    char *vtype)
+{
+    int            i;
+    Relation    rel;
+    HeapTuple    tup;
+    char        nulls[Natts_pg_packglobal];
+    char        replaces[Natts_pg_packglobal];
+    Datum        values[Natts_pg_packglobal];
+    NameData    vName;
+    TupleDesc    tupDesc;
+
+    for (i = 0; i < Natts_pg_packglobal; ++i)
+    {
+        nulls[i] = ' ';
+        replaces[i] = 'r';
+        values[i] = (Datum) NULL;
+    }
+
+    i = 0;
+    namestrcpy(&vName, vname);
+    values[i++] = ObjectIdGetDatum(packId);
+    values[i++] = ObjectIdGetDatum(langId);
+    values[i++] = UInt32GetDatum(seqno);
+    values[i++] = NameGetDatum(&vName);
+    values[i++] = DirectFunctionCall1(textin, CStringGetDatum(vtype));
+
+
+
+    rel = heap_openr(PackGlobalRelationName, RowExclusiveLock);
+    tup = SearchSysCache(PACKAGEGLOBAL,
+                         ObjectIdGetDatum(packId),
+                         ObjectIdGetDatum(langId),
+                         UInt32GetDatum(seqno),
+                         0);
+
+    if (HeapTupleIsValid(tup))
+    {
+        tup = heap_modifytuple(tup,
+                               rel,
+                               values,
+                               nulls,
+                               replaces);
+
+        heap_update(rel, &tup->t_self, tup, NULL);
+    }
+    else
+    {
+        tupDesc = rel->rd_att;
+        tup = heap_formtuple(tupDesc,
+                             values,
+                             nulls);
+
+        heap_insert(rel, tup);
+    }
+
+    if (RelationGetForm(rel)->relhasindex)
+    {
+        Relation    idescs[Num_pg_packglobal_indices];
+
+        CatalogOpenIndices(Num_pg_packglobal_indices,
+                           Name_pg_packglobal_indices, idescs);
+        CatalogIndexInsert(idescs, Num_pg_packglobal_indices, rel, tup);
+        CatalogCloseIndices(Num_pg_packglobal_indices, idescs);
+    }
+    heap_close(rel, RowExclusiveLock);
+    return;
+}
Index: src/backend/catalog/pg_proc.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/catalog/pg_proc.c,v
retrieving revision 1.61
diff -u -r1.61 pg_proc.c
--- src/backend/catalog/pg_proc.c    2001/10/06 23:21:43    1.61
+++ src/backend/catalog/pg_proc.c    2001/10/17 16:41:09
@@ -41,6 +41,7 @@
  */
 Oid
 ProcedureCreate(char *procedureName,
+                Oid packId,
                 bool replace,
                 bool returnsSet,
                 char *returnTypeName,
@@ -176,7 +177,7 @@
         {
             elog(NOTICE, "ProcedureCreate: type %s is not yet defined",
                  returnTypeName);
-            typeObjectId = TypeShellMake(returnTypeName);
+            typeObjectId = TypeShellMake(returnTypeName, packId);
             if (!OidIsValid(typeObjectId))
                 elog(ERROR, "could not create type %s",
                      returnTypeName);
@@ -207,7 +208,8 @@

     if (languageObjectId == SQLlanguageId)
     {
-        querytree_list = pg_parse_and_rewrite(prosrc, typev, parameterCount);
+        querytree_list = pg_parse_and_rewrite(prosrc, packId, typev,
+                                              parameterCount);
         /* typecheck return value */
         checkretval(typeObjectId, querytree_list);
     }
@@ -270,6 +272,7 @@
     i = 0;
     namestrcpy(&procname, procedureName);
     values[i++] = NameGetDatum(&procname);
+    values[i++] = ObjectIdGetDatum(packId);
     values[i++] = Int32GetDatum(GetUserId());
     values[i++] = ObjectIdGetDatum(languageObjectId);
     /* XXX isinherited is always false for now */
@@ -296,9 +299,9 @@
     /* Check for pre-existing definition */
     oldtup = SearchSysCache(PROCNAME,
                             PointerGetDatum(procedureName),
+                            ObjectIdGetDatum(packId),
                             UInt16GetDatum(parameterCount),
-                            PointerGetDatum(typev),
-                            0);
+                            PointerGetDatum(typev));

     if (HeapTupleIsValid(oldtup))
     {
Index: src/backend/catalog/pg_type.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/catalog/pg_type.c,v
retrieving revision 1.64
diff -u -r1.64 pg_type.c
--- src/backend/catalog/pg_type.c    2001/10/12 00:07:14    1.64
+++ src/backend/catalog/pg_type.c    2001/10/17 16:41:10
@@ -26,7 +26,7 @@


 static Oid TypeShellMakeWithOpenRelation(Relation pg_type_desc,
-                              char *typeName);
+                              char *typeName, Oid packId);

 /* ----------------------------------------------------------------
  *        TypeGetWithOpenRelation
@@ -138,7 +138,7 @@
  * ----------------------------------------------------------------
  */
 static Oid
-TypeShellMakeWithOpenRelation(Relation pg_type_desc, char *typeName)
+TypeShellMakeWithOpenRelation(Relation pg_type_desc, char *typeName, Oid packId)
 {
     int            i;
     HeapTuple    tup;
@@ -163,23 +163,24 @@
     i = 0;
     namestrcpy(&name, typeName);
     values[i++] = NameGetDatum(&name);    /* 1 */
-    values[i++] = ObjectIdGetDatum(InvalidOid); /* 2 */
-    values[i++] = Int16GetDatum(0);        /* 3 */
+    values[i++] = ObjectIdGetDatum(packId); /* 2 */
+    values[i++] = ObjectIdGetDatum(InvalidOid); /* 3 */
     values[i++] = Int16GetDatum(0);        /* 4 */
-    values[i++] = BoolGetDatum(false);    /* 5 */
-    values[i++] = CharGetDatum(0);        /* 6 */
-    values[i++] = BoolGetDatum(false);    /* 7 */
-    values[i++] = CharGetDatum(0);        /* 8 */
-    values[i++] = ObjectIdGetDatum(InvalidOid); /* 9 */
+    values[i++] = Int16GetDatum(0);        /* 5 */
+    values[i++] = BoolGetDatum(false);    /* 6 */
+    values[i++] = CharGetDatum(0);        /* 7 */
+    values[i++] = BoolGetDatum(false);    /* 8 */
+    values[i++] = CharGetDatum(0);        /* 9 */
     values[i++] = ObjectIdGetDatum(InvalidOid); /* 10 */
     values[i++] = ObjectIdGetDatum(InvalidOid); /* 11 */
     values[i++] = ObjectIdGetDatum(InvalidOid); /* 12 */
     values[i++] = ObjectIdGetDatum(InvalidOid); /* 13 */
     values[i++] = ObjectIdGetDatum(InvalidOid); /* 14 */
-    values[i++] = CharGetDatum('i');    /* 15 */
-    values[i++] = CharGetDatum('p');    /* 16 */
+    values[i++] = ObjectIdGetDatum(InvalidOid); /* 15 */
+    values[i++] = CharGetDatum('i');    /* 16 */
+    values[i++] = CharGetDatum('p');    /* 17 */
     values[i++] = DirectFunctionCall1(textin,
-                                      CStringGetDatum(typeName));        /* 17 */
+                                      CStringGetDatum(typeName));        /* 18 */

     /*
      * create a new type tuple with FormHeapTuple
@@ -225,7 +226,7 @@
  * ----------------------------------------------------------------
  */
 Oid
-TypeShellMake(char *typeName)
+TypeShellMake(char *typeName, Oid packId)
 {
     Relation    pg_type_desc;
     Oid            typoid;
@@ -240,7 +241,7 @@
     /*
      * insert the shell tuple
      */
-    typoid = TypeShellMakeWithOpenRelation(pg_type_desc, typeName);
+    typoid = TypeShellMakeWithOpenRelation(pg_type_desc, typeName, packId);

     /*
      * close pg_type and return the tuple's oid.
@@ -263,16 +264,17 @@
  */
 Oid
 TypeCreate(char *typeName,
+           Oid packId,
            Oid assignedTypeOid,
            Oid relationOid,        /* only for 'c'atalog typeTypes */
            int16 internalSize,
            int16 externalSize,
            char typeType,
            char typDelim,
-           char *inputProcedure,
-           char *outputProcedure,
-           char *receiveProcedure,
-           char *sendProcedure,
+           struct DefElem *inputProcedure,
+           struct DefElem *outputProcedure,
+           struct DefElem *receiveProcedure,
+           struct DefElem *sendProcedure,
            char *elementTypeName,
            char *defaultTypeValue,        /* internal rep */
            bool passedByValue,
@@ -289,8 +291,8 @@
     char        nulls[Natts_pg_type];
     char        replaces[Natts_pg_type];
     Datum        values[Natts_pg_type];
-    char       *procname;
-    char       *procs[4];
+    DefElem       *procname;
+    DefElem       *procs[4];
     bool        defined;
     NameData    name;
     TupleDesc    tupDesc;
@@ -347,15 +349,16 @@
     i = 0;
     namestrcpy(&name, typeName);
     values[i++] = NameGetDatum(&name);    /* 1 */
-    values[i++] = Int32GetDatum(GetUserId());    /* 2 */
-    values[i++] = Int16GetDatum(internalSize);    /* 3 */
-    values[i++] = Int16GetDatum(externalSize);    /* 4 */
-    values[i++] = BoolGetDatum(passedByValue);    /* 5 */
-    values[i++] = CharGetDatum(typeType);        /* 6 */
-    values[i++] = BoolGetDatum(true);    /* 7 */
-    values[i++] = CharGetDatum(typDelim);        /* 8 */
-    values[i++] = ObjectIdGetDatum(typeType == 'c' ? relationOid : InvalidOid); /* 9 */
-    values[i++] = ObjectIdGetDatum(elementObjectId);    /* 10 */
+    values[i++] = ObjectIdGetDatum(packId);        /* 2 */
+    values[i++] = Int32GetDatum(GetUserId());    /* 3 */
+    values[i++] = Int16GetDatum(internalSize);    /* 4 */
+    values[i++] = Int16GetDatum(externalSize);    /* 5 */
+    values[i++] = BoolGetDatum(passedByValue);    /* 6 */
+    values[i++] = CharGetDatum(typeType);        /* 7 */
+    values[i++] = BoolGetDatum(true);    /* 8 */
+    values[i++] = CharGetDatum(typDelim);        /* 9 */
+    values[i++] = ObjectIdGetDatum(typeType == 'c' ? relationOid : InvalidOid); /* 10 */
+    values[i++] = ObjectIdGetDatum(elementObjectId);    /* 11 */

     procs[0] = inputProcedure;
     procs[1] = outputProcedure;
@@ -365,9 +368,14 @@
     for (j = 0; j < 4; ++j)
     {
         Oid            procOid;
+        Oid            thisPack;
+        char       *fn;

         procname = procs[j];
+        fn = ((TypeName *)procname->arg)->name;
+        thisPack = procname->package;

+        proc_look_loop:
         /*
          * First look for a 1-argument func with all argtypes 0. This is
          * valid for all four kinds of procedure.
@@ -375,10 +383,10 @@
         MemSet(argList, 0, FUNC_MAX_ARGS * sizeof(Oid));

         procOid = GetSysCacheOid(PROCNAME,
-                                 PointerGetDatum(procname),
+                                 PointerGetDatum(fn),
+                                 ObjectIdGetDatum(thisPack),
                                  Int32GetDatum(1),
-                                 PointerGetDatum(argList),
-                                 0);
+                                 PointerGetDatum(argList));

         if (!OidIsValid(procOid))
         {
@@ -407,27 +415,36 @@
                     argList[2] = INT4OID;
                 }
                 procOid = GetSysCacheOid(PROCNAME,
-                                         PointerGetDatum(procname),
+                                         PointerGetDatum(fn),
+                                         ObjectIdGetDatum(thisPack),
                                          Int32GetDatum(nargs),
-                                         PointerGetDatum(argList),
-                                         0);
+                                         PointerGetDatum(argList));
             }
             if (!OidIsValid(procOid))
-                func_error("TypeCreate", procname, 1, argList, NULL);
+            {
+                if ((thisPack != STANDARDPackageId) &&
+                    (procname->packexact == false))
+                {
+                    thisPack = STANDARDPackageId;
+                    goto proc_look_loop;
+                }
+                func_error("TypeCreate", fn, procname->package,
+                           procname->packexact, 1, argList, NULL);
+            }
         }

-        values[i++] = ObjectIdGetDatum(procOid);        /* 11 - 14 */
+        values[i++] = ObjectIdGetDatum(procOid);        /* 12 - 15 */
     }

     /*
      * set default alignment
      */
-    values[i++] = CharGetDatum(alignment);        /* 15 */
+    values[i++] = CharGetDatum(alignment);        /* 16 */

     /*
      * set default storage for TOAST
      */
-    values[i++] = CharGetDatum(storage);        /* 16 */
+    values[i++] = CharGetDatum(storage);        /* 17 */

     /*
      * initialize the default value for this type.
@@ -437,7 +454,7 @@
                                         CStringGetDatum(defaultTypeValue));
     else
         nulls[i] = 'n';
-    i++;                        /* 17 */
+    i++;                        /* 18 */

     /*
      * open pg_type and begin a scan for the type name.
Index: src/backend/commands/comment.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/commands/comment.c,v
retrieving revision 1.33
diff -u -r1.33 comment.c
--- src/backend/commands/comment.c    2001/10/03 20:54:20    1.33
+++ src/backend/commands/comment.c    2001/10/17 16:41:10
@@ -53,6 +53,7 @@
 static void CommentRewrite(char *rule, char *comment);
 static void CommentType(char *type, char *comment);
 static void CommentAggregate(char *aggregate, List *arguments, char *comment);
+static void CommentPackage(char *package, char *comment);
 static void CommentProc(char *function, List *arguments, char *comment);
 static void CommentOperator(char *opname, List *arguments, char *comment);
 static void CommentTrigger(char *trigger, char *relation, char *comments);
@@ -99,6 +100,9 @@
         case AGGREGATE:
             CommentAggregate(objname, objlist, comment);
             break;
+        case (PACKAGE):
+            CommentPackage(objname, comment);
+            break;
         case FUNCTION:
             CommentProc(objname, objlist, comment);
             break;
@@ -603,8 +607,9 @@

     oid = GetSysCacheOid(AGGNAME,
                          PointerGetDatum(aggregate),
+                         ObjectIdGetDatum(STANDARDPackageId),
                          ObjectIdGetDatum(baseoid),
-                         0, 0);
+                         0);
     if (!OidIsValid(oid))
         agg_error("CommentAggregate", aggregate, baseoid);

@@ -621,6 +626,48 @@
 }

 /*------------------------------------------------------------------
+ * CommentPackage --
+ *
+ * This routine is used to add/drop any user-comments a user might
+ * have regarding a PACKAGE. The package is specified by name
+ * and, if found, and the user has appropriate permissions, a
+ * comment will be added/dropped using the CreateComments() routine.
+ * The package's name and the comments are the paramters to this routine.
+ *------------------------------------------------------------------
+*/
+
+static void
+CommentPackage(char *package, char *comment)
+{
+    Oid            oid, classoid;
+
+    /* First, validate user */
+
+    if (!pg_pack_ownercheck(GetUserId(), package))
+        elog(ERROR, "you are not permitted to comment on package '%s'",
+             package);
+
+    /* Next, find the package's oid */
+
+    oid = GetSysCacheOid(PACKAGENAME,
+                         PointerGetDatum(package),
+                         0, 0, 0);
+    if (!OidIsValid(oid))
+        elog(ERROR, "package '%s' does not exist", package);
+
+    /* pg_package doesn't have a hard-coded OID, so must look it up */
+
+    classoid = GetSysCacheOid(RELNAME,
+                              PointerGetDatum(PackageRelationName),
+                              0, 0, 0);
+    Assert(OidIsValid(classoid));
+
+    /* Call CreateComments() to create/drop the comments */
+
+    CreateComments(oid, classoid, 0, comment);
+}
+
+/*------------------------------------------------------------------
  * CommentProc --
  *
  * This routine is used to allow a user to provide comments on an
@@ -675,11 +722,12 @@

     oid = GetSysCacheOid(PROCNAME,
                          PointerGetDatum(function),
+                         ObjectIdGetDatum(STANDARDPackageId),
                          Int32GetDatum(argcount),
-                         PointerGetDatum(argoids),
-                         0);
+                         PointerGetDatum(argoids));
     if (!OidIsValid(oid))
-        func_error("CommentProc", function, argcount, argoids, NULL);
+        func_error("CommentProc", function, STANDARDPackageId, TRUE, argcount,
+                   argoids, NULL);

     /* Call CreateComments() to create/drop the comments */

Index: src/backend/commands/creatinh.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/commands/creatinh.c,v
retrieving revision 1.80
diff -u -r1.80 creatinh.c
--- src/backend/commands/creatinh.c    2001/08/16 20:38:53    1.80
+++ src/backend/commands/creatinh.c    2001/10/17 16:41:11
@@ -20,6 +20,7 @@
 #include "catalog/indexing.h"
 #include "catalog/heap.h"
 #include "catalog/pg_inherits.h"
+#include "catalog/pg_package.h"
 #include "catalog/pg_type.h"
 #include "commands/creatinh.h"
 #include "miscadmin.h"
@@ -68,6 +69,13 @@
      * as parser should have done this already).
      */
     StrNCpy(relname, stmt->relname, NAMEDATALEN);
+
+    /*
+     * Make sure there's not already a package of the same name.
+     */
+    if (PackageIdFromName(relname) != 0)
+        elog(ERROR, "name invalid, there is already a package named '%s'",
+             relname);

     /*
      * Look up inheritance ancestors and generate relation schema,
Index: src/backend/commands/define.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/commands/define.c,v
retrieving revision 1.62
diff -u -r1.62 define.c
--- src/backend/commands/define.c    2001/10/13 01:35:25    1.62
+++ src/backend/commands/define.c    2001/10/17 16:41:12
@@ -43,6 +43,8 @@
 #include "catalog/pg_aggregate.h"
 #include "catalog/pg_language.h"
 #include "catalog/pg_operator.h"
+#include "catalog/pg_package.h"
+#include "catalog/pg_packglobal.h"
 #include "catalog/pg_proc.h"
 #include "catalog/pg_type.h"
 #include "commands/defrem.h"
@@ -325,6 +327,7 @@
      * to do so, go ahead and create the function.
      */
     ProcedureCreate(stmt->funcname,
+                    stmt->package,
                     stmt->replace,
                     returnsSet,
                     prorettype,
@@ -343,6 +346,280 @@



+/*
+ * CreatePackage
+ * Execute a CREATE [OR REPLACE] PACKAGE utility statement.
+ *
+ */
+void
+CreatePackage(PackageStmt *stmt)
+{
+    List           *p,
+                   *q,
+                   *r,
+                   *early_names;
+    ProcedureStmt  *command;
+    DefineStmt       *def;
+    DefElem           *defelem;
+    Relation        rel;
+    HeapTuple        tup;
+    Oid                packId,
+                    langId;
+    char            langname[NAMEDATALEN];
+
+    /* can't change "standard" */
+    if (!strcmp(stmt->packname, "standard"))
+        elog(ERROR, "Can't change or replace system package 'standard'");
+
+    /* look for package */
+    rel = heap_openr(PackageRelationName, RowExclusiveLock);
+    tup = SearchSysCache(PACKAGENAME,
+                         PointerGetDatum(stmt->packname),
+                         0, 0, 0);
+
+    /*
+     * During parsing, we should have added the package tuple if it
+     * didn't exist. So we should have just found it.
+     */
+    if (!HeapTupleIsValid(tup))
+        elog(ERROR, "Package %s disapeared during processing. Aborting.",
+             stmt->packname);
+
+    packId = tup->t_data->t_oid;
+    ReleaseSysCache(tup);
+    DoRemovePackage(packId, stmt->packname);
+    CommandCounterIncrement();
+
+    /*
+     * Now scan the types in the package to see if they use input
+     * and output routines in the package. If so, add the names
+     * to the early_names list. Once we have the list of names,
+     * we scan the list of functions for those names. When we find them,
+     * we add them and remove their entries from the list of functions.
+     */
+    early_names = NULL;
+    foreach(p, stmt->types)
+    {
+        def = lfirst(p);
+
+        foreach(q, def->definition)
+        {
+            defelem = lfirst(q);
+
+            if (defelem->packexact == false)
+                defelem->package = packId;
+
+            if ((defelem->package == packId) &&
+                ((strcasecmp(defelem->defname, "input") == 0) ||
+                (strcasecmp(defelem->defname, "output") == 0) ||
+                (strcasecmp(defelem->defname, "send") == 0) ||
+                (strcasecmp(defelem->defname, "receive") == 0)))
+            {
+                /*
+                 * We found a procedure name within this package's context.
+                 * Add the name to the candidate list
+                 */
+                char *nam = defGetString(defelem);
+
+                /* see if it's there already */
+                foreach (r, early_names)
+                {
+                    if (strcasecmp(nam, lfirst(r)) == 0)
+                        goto q_loop_again;
+                    /* simulates a continue on the loop on q */
+                }
+                early_names = lappend(early_names, pstrdup(nam));
+            }
+            q_loop_again: ;
+        }
+
+    }
+
+    /*
+     * We now are ready to add the new package body. We first create
+     * any language global variables. Next we add language initialization
+     * routines (the begin/end part of an oracle package), followed by
+     * any "early" routines. Then we add any type definitions. Next we
+     * add the normal functions, followed by the aggregates. The last
+     * step is to add the operators. Between each of these steps, we call
+     * CommandCounterIncrement() so that latter steps can see the changes
+     * made so far.
+     *
+     * This order was chosen for two reasons. The ordering of "early" function,
+     * type, function, and operators & aggregates lets one package add new
+     * types to postgres. The early functions are type input and output
+     * routines, letting the type addition succeed. Once the type
+     * addition(s) succeed(s), the functions can use it/them as input
+     * and return types. We then can build aggregates and operators based
+     * on the new type and support functions.
+     *
+     * The ordering of language globals followed by initialization routines
+     * ensures that as functions are added, they can operate - if an SQL
+     * function is in the package, it will be parsed during package
+     * addition, which may cause routines in the package to be called.
+     */
+
+    /* Add globals */
+    foreach(p, stmt->variables)
+    {
+        CreateStmt *n = lfirst(p);
+        int            seqno;
+
+        /* elog(DEBUG, "Global node %p", n); */
+        case_translate_language_name(n->relname, langname);
+
+        langId = GetSysCacheOid(LANGNAME,
+                                PointerGetDatum(langname),
+                                0, 0, 0);
+
+        if (!OidIsValid(langId))
+        {
+            heap_close(rel, RowExclusiveLock);
+            elog(ERROR, "CreatePackageBody: no such language %s", langname);
+        }
+
+        if ((langId == INTERNALlanguageId) || (langId == ClanguageId) ||
+            (langId == SQLlanguageId))
+        {
+            heap_close(rel, RowExclusiveLock);
+            elog(ERROR, "CreatePackageBody: language '%s' does not support"
+                 " global variables\n\tDECLARE clause invalid", langname);
+        }
+
+        if (SearchSysCacheExists(PACKAGEGLOBAL,
+                                 ObjectIdGetDatum(packId),
+                                 ObjectIdGetDatum(langId),
+                                 UInt32GetDatum(1),
+                                 0))
+        {
+            heap_close(rel, RowExclusiveLock);
+            elog(ERROR, "CreatePackageBody: language '%s' has multiple"
+                 " global variable\n\tDECLARE clauses", langname);
+        }
+
+        seqno = 1;
+        foreach(q, n->tableElts)
+        {
+            PackageGlobal  *m = lfirst(q);
+
+            PackageGlobalCreate(packId, langId, seqno++, m->name,
+                                m->typetext);
+        }
+    }
+
+    /* Now for the language initialization routines */
+    if (stmt->initfuncs != NIL)
+    {
+        char        funcname[NAMEDATALEN];
+        Value       *rettype = makeString("int4");
+
+        foreach(p, stmt->initfuncs)
+        {
+            command = lfirst(p);
+            case_translate_language_name(command->language, langname);
+
+            if (!strcmp(langname, "sql") || !strcmp(langname, "C") ||
+                !strcmp(langname, "internal"))
+            {
+                heap_close(rel, RowExclusiveLock);
+                elog(ERROR, "CreatePackageBody: language '%s' does not support"
+                     " package body routines", langname);
+            }
+
+            snprintf(funcname, NAMEDATALEN, "__packinit_%s", langname);
+            command->package = packId;
+            command->funcname = funcname;
+            command->returnType = (Node *)rettype;
+            CreateFunction(command);
+        }
+    }
+
+    /* Now for the early functions */
+    foreach(p, early_names)
+    {
+        char   *nam = lfirst(p);
+
+        foreach(q, stmt->functions)
+        {
+            command = lfirst(q);
+
+            if (strcasecmp(nam, command->funcname) == 0)
+            {
+                command->package = packId;
+                CreateFunction(command);
+
+                stmt->functions = lremove(command, stmt->functions);
+                /* Now do a continue on the foreach(q ) loop. */
+                goto next_early_name;
+            }
+        }
+        next_early_name: ;
+    }
+    CommandCounterIncrement();
+
+    /* Now do the types */
+    foreach(p, stmt->types)
+    {
+        def = lfirst(p);
+
+        /* we adjusted the package contexts of the elements above */
+        DefineType(def->defname, packId, def->definition);
+    }
+    CommandCounterIncrement();
+
+    /* Add functions */
+    foreach(p, stmt->functions)
+    {
+        command = lfirst(p);
+        /* Since SQL commands are parsed now, make all functions added up
+         * to now visable before parsing */
+        case_translate_language_name(command->language, langname);
+        if (strcmp(langname, "sql") == 0)
+            CommandCounterIncrement();
+        command->package = packId;
+        CreateFunction(command);
+    }
+    CommandCounterIncrement();
+
+    /* Now for some aggregates */
+    foreach(p, stmt->aggregates)
+    {
+        def = lfirst(p);
+
+        foreach(q, def->definition)
+        {
+            defelem = lfirst(q);
+
+            if (defelem->packexact == false)
+                defelem->package = packId;
+        }
+
+        DefineAggregate(def->defname, packId, def->definition);
+    }
+    CommandCounterIncrement();
+
+    /* and finally, operators */
+    foreach(p, stmt->operators)
+    {
+        def = lfirst(p);
+
+        foreach(q, def->definition)
+        {
+            defelem = lfirst(q);
+
+            if (defelem->packexact == false)
+                defelem->package = packId;
+        }
+
+        DefineOperator(def->defname, packId, def->definition);
+    }
+    CommandCounterIncrement();
+
+    heap_close(rel, RowExclusiveLock);
+}
+
+
+
 /* --------------------------------
  * DefineOperator
  *
@@ -350,26 +627,27 @@
  *        parameter list generated by the parser and then has
  *        OperatorCreate() do all the actual work.
  *
- * 'parameters' is a list of DefElem
+ * 'parameters' is a list of DefElem and packId is the owning package
  * --------------------------------
  */
 void
 DefineOperator(char *oprName,
+               Oid packId,
                List *parameters)
 {
     uint16        precedence = 0; /* operator precedence */
     bool        canHash = false;/* operator hashes */
     bool        isLeftAssociative = true;        /* operator is left
                                                  * associative */
-    char       *functionName = NULL;    /* function for operator */
+    DefElem       *functionName = NULL;    /* function for operator */
     char       *typeName1 = NULL;        /* first type name */
     char       *typeName2 = NULL;        /* second type name */
     char       *commutatorName = NULL;    /* optional commutator operator
                                          * name */
     char       *negatorName = NULL;        /* optional negator operator name */
-    char       *restrictionName = NULL; /* optional restrict. sel.
+    DefElem       *restrictionName = NULL; /* optional restrict. sel.
                                          * procedure */
-    char       *joinName = NULL;/* optional join sel. procedure name */
+    DefElem       *joinName = NULL;/* optional join sel. procedure name */
     char       *sortName1 = NULL;        /* optional first sort operator */
     char       *sortName2 = NULL;        /* optional second sort operator */
     List       *pl;
@@ -396,7 +674,7 @@
                 elog(ERROR, "setof type not implemented for rightarg");
         }
         else if (strcasecmp(defel->defname, "procedure") == 0)
-            functionName = defGetString(defel);
+            functionName = defel;
         else if (strcasecmp(defel->defname, "precedence") == 0)
         {
             /* NOT IMPLEMENTED (never worked in v4.2) */
@@ -412,9 +690,9 @@
         else if (strcasecmp(defel->defname, "negator") == 0)
             negatorName = defGetString(defel);
         else if (strcasecmp(defel->defname, "restrict") == 0)
-            restrictionName = defGetString(defel);
+            restrictionName = defel;
         else if (strcasecmp(defel->defname, "join") == 0)
-            joinName = defGetString(defel);
+            joinName = defel;
         else if (strcasecmp(defel->defname, "hashes") == 0)
             canHash = TRUE;
         else if (strcasecmp(defel->defname, "sort1") == 0)
@@ -446,6 +724,7 @@
      * now have OperatorCreate do all the work..
      */
     OperatorCreate(oprName,        /* operator name */
+                   packId,        /* containing package */
                    typeName1,    /* first type name */
                    typeName2,    /* second type name */
                    functionName,/* function for operator */
@@ -468,10 +747,10 @@
  * ------------------
  */
 void
-DefineAggregate(char *aggName, List *parameters)
+DefineAggregate(char *aggName, Oid packId, List *parameters)
 {
-    char       *transfuncName = NULL;
-    char       *finalfuncName = NULL;
+    DefElem       *transfuncName = NULL;
+    DefElem       *finalfuncName = NULL;
     char       *baseType = NULL;
     char       *transType = NULL;
     char       *initval = NULL;
@@ -486,11 +765,11 @@
          * spellings for sfunc, stype, initcond.
          */
         if (strcasecmp(defel->defname, "sfunc") == 0)
-            transfuncName = defGetString(defel);
+            transfuncName = defel;
         else if (strcasecmp(defel->defname, "sfunc1") == 0)
-            transfuncName = defGetString(defel);
+            transfuncName = defel;
         else if (strcasecmp(defel->defname, "finalfunc") == 0)
-            finalfuncName = defGetString(defel);
+            finalfuncName = defel;
         else if (strcasecmp(defel->defname, "basetype") == 0)
             baseType = defGetString(defel);
         else if (strcasecmp(defel->defname, "stype") == 0)
@@ -520,6 +799,7 @@
      * Most of the argument-checking is done inside of AggregateCreate
      */
     AggregateCreate(aggName,    /* aggregate name */
+                    packId,        /* containing package */
                     transfuncName,        /* step function name */
                     finalfuncName,        /* final function name */
                     baseType,    /* type of data being aggregated */
@@ -532,15 +812,15 @@
  *        Registers a new type.
  */
 void
-DefineType(char *typeName, List *parameters)
+DefineType(char *typeName, Oid packId, List *parameters)
 {
     int16        internalLength = -1;        /* int2 */
     int16        externalLength = -1;        /* int2 */
     char       *elemName = NULL;
-    char       *inputName = NULL;
-    char       *outputName = NULL;
-    char       *sendName = NULL;
-    char       *receiveName = NULL;
+    DefElem       *inputName = NULL;
+    DefElem       *outputName = NULL;
+    DefElem       *sendName = NULL;
+    DefElem       *receiveName = NULL;
     char       *defaultValue = NULL;
     bool        byValue = false;
     char        delimiter = DEFAULT_TYPDELIM;
@@ -567,11 +847,11 @@
         else if (strcasecmp(defel->defname, "externallength") == 0)
             externalLength = defGetTypeLength(defel);
         else if (strcasecmp(defel->defname, "input") == 0)
-            inputName = defGetString(defel);
+            inputName = defel;
         else if (strcasecmp(defel->defname, "output") == 0)
-            outputName = defGetString(defel);
+            outputName = defel;
         else if (strcasecmp(defel->defname, "send") == 0)
-            sendName = defGetString(defel);
+            sendName = defel;
         else if (strcasecmp(defel->defname, "delimiter") == 0)
         {
             char       *p = defGetString(defel);
@@ -579,7 +859,7 @@
             delimiter = p[0];
         }
         else if (strcasecmp(defel->defname, "receive") == 0)
-            receiveName = defGetString(defel);
+            receiveName = defel;
         else if (strcasecmp(defel->defname, "element") == 0)
             elemName = defGetString(defel);
         else if (strcasecmp(defel->defname, "default") == 0)
@@ -646,6 +926,7 @@
      * now have TypeCreate do all the real work.
      */
     TypeCreate(typeName,        /* type name */
+               packId,            /* containing package */
                InvalidOid,        /* preassigned type oid (not done here) */
                InvalidOid,        /* relation oid (n/a here) */
                internalLength,    /* internal size */
@@ -668,20 +949,35 @@
      */
     shadow_type = makeArrayTypeName(typeName);

+    /* Make name nodes */
+    inputName = makeNode(DefElem);
+    inputName->defname = "";
+    inputName->arg = (Node *)makeString("array_in");
+    inputName->package = STANDARDPackageId;
+    inputName->packexact = true;
+
+    outputName = makeNode(DefElem);
+    outputName->defname = "";
+    outputName->arg = (Node *)makeString("array_out");
+    outputName->package = STANDARDPackageId;
+    outputName->packexact = true;
+
+
     /* alignment must be 'i' or 'd' for arrays */
     alignment = (alignment == 'd') ? 'd' : 'i';

     TypeCreate(shadow_type,        /* type name */
+               packId,            /* containing package */
                InvalidOid,        /* preassigned type oid (not done here) */
                InvalidOid,        /* relation oid (n/a here) */
                -1,                /* internal size */
                -1,                /* external size */
                'b',                /* type-type (base type) */
                DEFAULT_TYPDELIM,/* array element delimiter */
-               "array_in",        /* input procedure */
-               "array_out",        /* output procedure */
-               "array_in",        /* receive procedure */
-               "array_out",        /* send procedure */
+               inputName,        /* input procedure */
+               outputName,        /* output procedure */
+               inputName,        /* receive procedure */
+               outputName,        /* send procedure */
                typeName,        /* element type name */
                NULL,            /* never a default type value */
                false,            /* never passed by value */
Index: src/backend/commands/indexcmds.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/commands/indexcmds.c,v
retrieving revision 1.58
diff -u -r1.58 indexcmds.c
--- src/backend/commands/indexcmds.c    2001/10/04 22:06:46    1.58
+++ src/backend/commands/indexcmds.c    2001/10/17 16:41:12
@@ -282,18 +282,30 @@
      * of input types, and the executor is not currently set up to support
      * that.  So, check to make sure that the selected function has
      * exact-match or binary-compatible input types.
+     *
+     * Note that func_get_detail will only look in one package, so if we
+     * dont find the function and we were not given a specific package
+     * context and we are not in STANDARD, then try again in STANDARD.
      */
-    fdresult = func_get_detail(funcIndex->name, funcIndex->args,
-                               nargs, argTypes,
+    fdresult = func_get_detail(funcIndex->name, funcIndex->packId,
+                               funcIndex->args, nargs, argTypes,
                                &funcid, &rettype, &retset,
                                &true_typeids);
+    if (fdresult != FUNCDETAIL_NORMAL &&
+        (funcIndex->package_exact == FALSE) &&
+        (funcIndex->packId != STANDARDPackageId))
+            i = func_get_detail(funcIndex->name, STANDARDPackageId,
+                                funcIndex->args, nargs,
+                                argTypes, &funcid, &rettype, &retset,
+                                &true_typeids);
     if (fdresult != FUNCDETAIL_NORMAL)
     {
         if (fdresult == FUNCDETAIL_COERCION)
             elog(ERROR, "DefineIndex: functional index must use a real function, not a type coercion"
                  "\n\tTry specifying the index opclass you want to use, instead");
         else
-            func_error("DefineIndex", funcIndex->name, nargs, argTypes, NULL);
+            func_error("DefineIndex", funcIndex->name, funcIndex->packId,
+                       funcIndex->package_exact, nargs, argTypes, NULL);
     }

     if (retset)
@@ -303,7 +315,8 @@
     {
         if (argTypes[i] != true_typeids[i] &&
             !IS_BINARY_COMPATIBLE(argTypes[i], true_typeids[i]))
-            func_error("DefineIndex", funcIndex->name, nargs, argTypes,
+            func_error("DefineIndex", funcIndex->name, funcIndex->packId,
+                       funcIndex->package_exact, nargs, argTypes,
                        "Index function must be binary-compatible with table datatype");
     }

Index: src/backend/commands/proclang.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/commands/proclang.c,v
retrieving revision 1.28
diff -u -r1.28 proclang.c
--- src/backend/commands/proclang.c    2001/06/13 21:44:40    1.28
+++ src/backend/commands/proclang.c    2001/10/17 16:41:12
@@ -90,9 +90,9 @@
     memset(typev, 0, sizeof(typev));
     procTup = SearchSysCache(PROCNAME,
                              PointerGetDatum(stmt->plhandler),
+                             ObjectIdGetDatum(STANDARDPackageId),
                              Int32GetDatum(0),
-                             PointerGetDatum(typev),
-                             0);
+                             PointerGetDatum(typev));
     if (!HeapTupleIsValid(procTup))
         elog(ERROR, "PL handler function %s() doesn't exist",
              stmt->plhandler);
Index: src/backend/commands/remove.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/commands/remove.c,v
retrieving revision 1.63
diff -u -r1.63 remove.c
--- src/backend/commands/remove.c    2001/10/03 20:54:20    1.63
+++ src/backend/commands/remove.c    2001/10/17 16:41:13
@@ -16,7 +16,11 @@

 #include "access/heapam.h"
 #include "catalog/catname.h"
+#include "catalog/pg_aggregate.h"
 #include "catalog/pg_language.h"
+#include "catalog/pg_operator.h"
+#include "catalog/pg_package.h"
+#include "catalog/pg_packglobal.h"
 #include "catalog/pg_proc.h"
 #include "catalog/pg_type.h"
 #include "commands/comment.h"
@@ -26,6 +30,7 @@
 #include "parser/parse_expr.h"
 #include "parser/parse_func.h"
 #include "utils/acl.h"
+#include "utils/fmgroids.h"
 #include "utils/builtins.h"
 #include "utils/syscache.h"

@@ -87,6 +92,18 @@
             elog(ERROR, "RemoveOperator: operator '%s': permission denied",
                  operatorName);

+        if (((FormData_pg_operator *)GETSTRUCT(tup))->oprpack
+            != STANDARDPackageId)
+        {
+            NameData    package;
+            heap_close(relation, RowExclusiveLock);
+            PackageNameFromID(((FormData_pg_operator *)GETSTRUCT(tup))->oprpack,
+                              &package);
+            elog(ERROR, "RemoveOperator: operator '%s' defined as part of package '%s'"
+                 "\n\t\tCan only be removed via DROP PACKAGE",
+                 operatorName, NameStr(package));
+        }
+
         /* Delete any comments associated with this operator */
         DeleteComments(tup->t_data->t_oid, RelationGetRelid(relation));

@@ -254,6 +271,18 @@
     if (!HeapTupleIsValid(tup))
         elog(ERROR, "RemoveType: type '%s' does not exist", typeName);

+    if (((FormData_pg_type *)GETSTRUCT(tup))->typpack
+        != STANDARDPackageId)
+    {
+        NameData    package;
+        heap_close(relation, RowExclusiveLock);
+        PackageNameFromID(((FormData_pg_type *)GETSTRUCT(tup))->typpack,
+                          &package);
+        elog(ERROR, "RemoveType: type '%s' defined as part of package '%s'"
+             "\n\t\tCan only be removed via DROP PACKAGE",
+             typeName, NameStr(package));
+    }
+
     /* Delete any comments associated with this type */
     DeleteComments(tup->t_data->t_oid, RelationGetRelid(relation));

@@ -328,12 +357,13 @@

     tup = SearchSysCache(PROCNAME,
                          PointerGetDatum(functionName),
+                         ObjectIdGetDatum(STANDARDPackageId),
                          Int32GetDatum(nargs),
-                         PointerGetDatum(argList),
-                         0);
+                         PointerGetDatum(argList));

     if (!HeapTupleIsValid(tup))
-        func_error("RemoveFunction", functionName, nargs, argList, NULL);
+        func_error("RemoveFunction", functionName, STANDARDPackageId, FALSE,
+                   nargs, argList, NULL);

     if (((Form_pg_proc) GETSTRUCT(tup))->prolang == INTERNALlanguageId)
     {
@@ -351,6 +381,160 @@
     heap_close(relation, RowExclusiveLock);
 }

+/*
+ * RemovePackageBody
+ *     Handle DROP PACKAGE command
+ *
+ * Look up the package name, and if found, call DoRemovePackage()
+ * to handle the internals deletion. Then remove the package name.
+ */
+void
+RemovePackage(char *packname)
+{
+    Relation        rel;
+    HeapTuple        tup;
+    Oid                packId;
+
+    if (!strcmp(packname, "standard"))
+        elog(ERROR, "Can't DROP system package 'standard'");
+
+    rel = heap_openr(PackageRelationName, RowExclusiveLock);
+
+    tup = SearchSysCache(PACKAGENAME,
+                         PointerGetDatum(packname),
+                         0, 0, 0);
+
+    if (!HeapTupleIsValid(tup))
+        elog(ERROR, "Package %s not found", packname);
+
+    packId = tup->t_data->t_oid;
+
+    /* permissions checks are in DoRemovePackageBody() */
+    DoRemovePackage(packId, packname);
+
+    DeleteComments(packId, RelationGetRelid(rel));
+
+    simple_heap_delete(rel, &tup->t_self);
+
+    ReleaseSysCache(tup);
+
+    heap_close(rel, RowExclusiveLock);
+}
+
+/*
+ * DoRemovePackage
+ *     Removes a package contents
+ * Performs internals of package deletion. Does NOT delete package name
+ * from pg_package as this routine may be called in response to the
+ * SQL commands DROP PACKAGE and CREATE OR UPDATE PACKAGE.
+ *
+ * Package name row in pg_package should be locked while calling this
+ * routine.
+ */
+void
+DoRemovePackage(Oid packId, char *packname)
+{
+    Relation        rel;
+    HeapTuple        tup;
+    HeapScanDesc    scan;
+    ScanKeyData        key[1];
+
+    /* Do permissions checks here */
+    if (!pg_pack_ownercheck(GetUserId(), packname))
+    {
+        elog(ERROR, "DoRemovePackage: package '%s': permission denied",
+            packname);
+    }
+
+    /* First clean out pg_proc */
+    rel = heap_openr(ProcedureRelationName, RowExclusiveLock);
+    scan = heap_beginscan(rel, 0, SnapshotNow, 0, (ScanKey) NULL);
+    while (HeapTupleIsValid(tup = heap_getnext(scan, 0)))
+    {
+        Form_pg_proc    p;
+        p = (Form_pg_proc) GETSTRUCT(tup);
+        if (p->propack == packId)
+        {
+            DeleteComments(tup->t_data->t_oid, RelationGetRelid(rel));
+            heap_delete(rel, &tup->t_self, NULL);
+        }
+    }
+    heap_endscan(scan);
+    heap_close(rel, RowExclusiveLock);
+
+    /* now pg_packglobal */
+    ScanKeyEntryInitialize(&key[0],
+                            (bits16) 0x0,
+                            (AttrNumber) 1,
+                            (RegProcedure) F_OIDEQ,
+                            ObjectIdGetDatum(packId));
+    rel = heap_openr(PackGlobalRelationName, RowExclusiveLock);
+    scan = heap_beginscan(rel, 0, SnapshotNow, 1, key);
+    while (HeapTupleIsValid(tup = heap_getnext(scan, 0)))
+    {
+        Form_pg_packglobal    p;
+        p = (Form_pg_packglobal) GETSTRUCT(tup);
+        if (p->pglobalid == packId)
+        {
+            DeleteComments(tup->t_data->t_oid, RelationGetRelid(rel));
+            heap_delete(rel, &tup->t_self, NULL);
+        }
+    }
+    heap_endscan(scan);
+    heap_close(rel, RowExclusiveLock);
+
+    /* next pg_aggregate */
+    rel = heap_openr(AggregateRelationName, RowExclusiveLock);
+
+    scan = heap_beginscan(rel, 0, SnapshotNow, 0, (ScanKey) NULL);
+    while (HeapTupleIsValid(tup = heap_getnext(scan, 0)))
+    {
+        Form_pg_aggregate    p;
+        p = (Form_pg_aggregate) GETSTRUCT(tup);
+        if (p->aggpack == packId)
+        {
+            DeleteComments(tup->t_data->t_oid, RelationGetRelid(rel));
+            heap_delete(rel, &tup->t_self, NULL);
+        }
+    }
+    heap_endscan(scan);
+    heap_close(rel, RowExclusiveLock);
+
+    /* then pg_operator */
+    rel = heap_openr(OperatorRelationName, RowExclusiveLock);
+
+    scan = heap_beginscan(rel, 0, SnapshotNow, 0, (ScanKey) NULL);
+    while (HeapTupleIsValid(tup = heap_getnext(scan, 0)))
+    {
+        Form_pg_operator    p;
+        p = (Form_pg_operator) GETSTRUCT(tup);
+        if (p->oprpack == packId)
+        {
+            DeleteComments(tup->t_data->t_oid, RelationGetRelid(rel));
+            heap_delete(rel, &tup->t_self, NULL);
+        }
+    }
+    heap_endscan(scan);
+    heap_close(rel, RowExclusiveLock);
+
+    /* and finally pg_type */
+    rel = heap_openr(TypeRelationName, RowExclusiveLock);
+
+    scan = heap_beginscan(rel, 0, SnapshotNow, 0, (ScanKey) NULL);
+    while (HeapTupleIsValid(tup = heap_getnext(scan, 0)))
+    {
+        Form_pg_type    p;
+        p = (Form_pg_type) GETSTRUCT(tup);
+        if (p->typpack == packId)
+        {
+            DeleteComments(tup->t_data->t_oid, RelationGetRelid(rel));
+            heap_delete(rel, &tup->t_self, NULL);
+        }
+    }
+    heap_endscan(scan);
+    heap_close(rel, RowExclusiveLock);
+}
+
 void
 RemoveAggregate(char *aggName, char *aggType)
 {
@@ -391,8 +575,9 @@

     tup = SearchSysCache(AGGNAME,
                          PointerGetDatum(aggName),
+                         ObjectIdGetDatum(STANDARDPackageId),
                          ObjectIdGetDatum(basetypeID),
-                         0, 0);
+                         0);

     if (!HeapTupleIsValid(tup))
         agg_error("RemoveAggregate", aggName, basetypeID);
Index: src/backend/commands/trigger.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/commands/trigger.c,v
retrieving revision 1.96
diff -u -r1.96 trigger.c
--- src/backend/commands/trigger.c    2001/08/23 23:06:37    1.96
+++ src/backend/commands/trigger.c    2001/10/17 16:41:14
@@ -165,9 +165,20 @@
     MemSet(fargtypes, 0, FUNC_MAX_ARGS * sizeof(Oid));
     tuple = SearchSysCache(PROCNAME,
                            PointerGetDatum(stmt->funcname),
+                           ObjectIdGetDatum(stmt->package),
                            Int32GetDatum(0),
-                           PointerGetDatum(fargtypes),
-                           0);
+                           PointerGetDatum(fargtypes));
+    /* If we don't find the right thing in a package, check standard */
+    if ((!HeapTupleIsValid(tuple) ||
+        ((Form_pg_proc) GETSTRUCT(tuple))->pronargs != 0) &&
+        (stmt->package != STANDARDPackageId) && (stmt->packexact == false))
+    {
+        tuple = SearchSysCache(PROCNAME,
+                               PointerGetDatum(stmt->funcname),
+                               ObjectIdGetDatum(STANDARDPackageId),
+                               Int32GetDatum(0),
+                               PointerGetDatum(fargtypes));
+    }
     if (!HeapTupleIsValid(tuple))
         elog(ERROR, "CreateTrigger: function %s() does not exist",
              stmt->funcname);
Index: src/backend/executor/functions.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/executor/functions.c,v
retrieving revision 1.45
diff -u -r1.45 functions.c
--- src/backend/executor/functions.c    2001/03/22 06:16:12    1.45
+++ src/backend/executor/functions.c    2001/10/17 16:41:14
@@ -70,7 +70,7 @@

 /* non-export function prototypes */
 static execution_state *init_execution_state(char *src,
-                     Oid *argOidVect, int nargs);
+                     Oid packId, Oid *argOidVect, int nargs);
 static void init_sql_fcache(FmgrInfo *finfo);
 static void postquel_start(execution_state *es);
 static TupleTableSlot *postquel_getnext(execution_state *es);
@@ -82,7 +82,7 @@


 static execution_state *
-init_execution_state(char *src, Oid *argOidVect, int nargs)
+init_execution_state(char *src, Oid packId, Oid *argOidVect, int nargs)
 {
     execution_state *newes;
     execution_state *nextes;
@@ -94,7 +94,7 @@
     nextes = newes;
     preves = (execution_state *) NULL;

-    queryTree_list = pg_parse_and_rewrite(src, argOidVect, nargs);
+    queryTree_list = pg_parse_and_rewrite(src, packId, argOidVect, nargs);

     foreach(qtl_item, queryTree_list)
     {
@@ -243,7 +243,8 @@
              foid);
     src = DatumGetCString(DirectFunctionCall1(textout, tmp));

-    fcache->func_state = init_execution_state(src, argOidVect, nargs);
+    fcache->func_state = init_execution_state(src, procedureStruct->propack,
+                                              argOidVect, nargs);

     pfree(src);

Index: src/backend/executor/nodeAgg.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/executor/nodeAgg.c,v
retrieving revision 1.77
diff -u -r1.77 nodeAgg.c
--- src/backend/executor/nodeAgg.c    2001/03/22 06:16:12    1.77
+++ src/backend/executor/nodeAgg.c    2001/10/17 16:41:15
@@ -849,7 +849,8 @@
         char       *aggname = aggref->aggname;
         HeapTuple    aggTuple;
         Form_pg_aggregate aggform;
-        Oid            transfn_oid,
+        Oid            aggId = aggref->aggId,
+                    transfn_oid,
                     finalfn_oid;

         /* Mark Aggref node with its associated index in the result array */
@@ -858,10 +859,9 @@
         /* Fill in the peraggstate data */
         peraggstate->aggref = aggref;

-        aggTuple = SearchSysCache(AGGNAME,
-                                  PointerGetDatum(aggname),
-                                  ObjectIdGetDatum(aggref->basetype),
-                                  0, 0);
+        aggTuple = SearchSysCache(AGGOID,
+                                  ObjectIdGetDatum(aggId),
+                                  0, 0, 0);
         if (!HeapTupleIsValid(aggTuple))
             elog(ERROR, "ExecAgg: cache lookup failed for aggregate %s(%s)",
                  aggname,
@@ -877,9 +877,8 @@
                         &peraggstate->transtypeByVal);

         peraggstate->initValue =
-            AggNameGetInitVal(aggname,
-                              aggform->aggbasetype,
-                              &peraggstate->initValueIsNull);
+            AggIdGetInitVal(aggId,
+                            &peraggstate->initValueIsNull);

         peraggstate->transfn_oid = transfn_oid = aggform->aggtransfn;
         peraggstate->finalfn_oid = finalfn_oid = aggform->aggfinalfn;
Index: src/backend/executor/spi.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/executor/spi.c,v
retrieving revision 1.58
diff -u -r1.58 spi.c
--- src/backend/executor/spi.c    2001/10/05 17:28:12    1.58
+++ src/backend/executor/spi.c    2001/10/17 16:41:16
@@ -29,7 +29,7 @@
 static int    _SPI_connected = -1;
 static int    _SPI_curid = -1;

-static int    _SPI_execute(char *src, int tcount, _SPI_plan *plan);
+static int    _SPI_execute(char *src, Oid packId, int tcount, _SPI_plan *plan);
 static int    _SPI_pquery(QueryDesc *queryDesc, EState *state, int tcount);

 static int _SPI_execute_plan(_SPI_plan *plan,
@@ -199,6 +199,12 @@
 int
 SPI_exec(char *src, int tcount)
 {
+    return SPI_pack_exec(src, STANDARDPackageId, tcount);
+}
+
+int
+SPI_pack_exec(char *src, Oid packId, int tcount)
+{
     int            res;

     if (src == NULL || tcount < 0)
@@ -208,7 +214,7 @@
     if (res < 0)
         return res;

-    res = _SPI_execute(src, tcount, NULL);
+    res = _SPI_execute(src, packId, tcount, NULL);

     _SPI_end_call(true);
     return res;
@@ -241,6 +247,12 @@
 void *
 SPI_prepare(char *src, int nargs, Oid *argtypes)
 {
+    return SPI_pack_prepare(src, STANDARDPackageId, nargs, argtypes);
+}
+
+void *
+SPI_pack_prepare(char *src, Oid packId, int nargs, Oid *argtypes)
+{
     _SPI_plan  *plan;

     if (src == NULL || nargs < 0 || (nargs > 0 && argtypes == NULL))
@@ -257,7 +269,7 @@
     plan->argtypes = argtypes;
     plan->nargs = nargs;

-    SPI_result = _SPI_execute(src, 0, plan);
+    SPI_result = _SPI_execute(src, packId, 0, plan);

     if (SPI_result >= 0)        /* copy plan to procedure context */
         plan = _SPI_copy_plan(plan, _SPI_CPLAN_PROCXT);
@@ -857,7 +869,7 @@
  */

 static int
-_SPI_execute(char *src, int tcount, _SPI_plan *plan)
+_SPI_execute(char *src, Oid packId, int tcount, _SPI_plan *plan)
 {
     List       *queryTree_list;
     List       *planTree_list;
@@ -886,7 +898,7 @@
         argtypes = plan->argtypes;
     }

-    queryTree_list = pg_parse_and_rewrite(src, argtypes, nargs);
+    queryTree_list = pg_parse_and_rewrite(src, packId, argtypes, nargs);

     _SPI_current->qtlist = queryTree_list;

Index: src/backend/nodes/copyfuncs.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v
retrieving revision 1.157
diff -u -r1.157 copyfuncs.c
--- src/backend/nodes/copyfuncs.c    2001/10/02 21:39:35    1.157
+++ src/backend/nodes/copyfuncs.c    2001/10/17 16:41:18
@@ -869,6 +869,7 @@
      * copy remainder of node
      */
     newnode->aggname = pstrdup(from->aggname);
+    newnode->aggId = from->aggId;
     newnode->basetype = from->basetype;
     newnode->aggtype = from->aggtype;
     Node_Copy(from, newnode, target);
Index: src/backend/nodes/equalfuncs.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v
retrieving revision 1.105
diff -u -r1.105 equalfuncs.c
--- src/backend/nodes/equalfuncs.c    2001/10/02 21:39:35    1.105
+++ src/backend/nodes/equalfuncs.c    2001/10/17 16:41:19
@@ -221,7 +221,7 @@
 static bool
 _equalAggref(Aggref *a, Aggref *b)
 {
-    if (strcmp(a->aggname, b->aggname) != 0)
+    if (a->aggId != b->aggId)
         return false;
     if (a->basetype != b->basetype)
         return false;
Index: src/backend/nodes/outfuncs.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/nodes/outfuncs.c,v
retrieving revision 1.145
diff -u -r1.145 outfuncs.c
--- src/backend/nodes/outfuncs.c    2001/08/21 16:36:02    1.145
+++ src/backend/nodes/outfuncs.c    2001/10/17 16:41:20
@@ -25,6 +25,7 @@
 #include "nodes/relation.h"
 #include "parser/parse.h"
 #include "utils/datum.h"
+#include "utils/syscache.h"


 #define booltostr(x)  ((x) ? "true" : "false")
@@ -154,6 +155,8 @@
 _outFuncCall(StringInfo str, FuncCall *node)
 {
     appendStringInfo(str, "FUNCTION ");
+    if ((node->package != STANDARDPackageId) && (node->package_exact != true))
+        appendStringInfo(str, "from package # %d", (int)node->package);
     _outToken(str, node->funcname);
     appendStringInfo(str, " :args ");
     _outNode(str, node->args);
@@ -782,8 +785,8 @@
 {
     appendStringInfo(str, " AGGREG :aggname ");
     _outToken(str, node->aggname);
-    appendStringInfo(str, " :basetype %u :aggtype %u :target ",
-                     node->basetype, node->aggtype);
+    appendStringInfo(str, " :aggid %u :basetype %u :aggtype %u :target ",
+                     node->aggId, node->basetype, node->aggtype);
     _outNode(str, node->target);

     appendStringInfo(str, " :aggstar %s :aggdistinct %s ",
Index: src/backend/nodes/readfuncs.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/nodes/readfuncs.c,v
retrieving revision 1.112
diff -u -r1.112 readfuncs.c
--- src/backend/nodes/readfuncs.c    2001/07/03 16:52:48    1.112
+++ src/backend/nodes/readfuncs.c    2001/10/17 16:41:21
@@ -1157,6 +1157,10 @@
     token = pg_strtok(&length); /* get aggname */
     local_node->aggname = debackslash(token, length);

+    token = pg_strtok(&length); /* eat :aggId */
+    token = pg_strtok(&length); /* get aggId */
+    local_node->aggId = atooid(token);
+
     token = pg_strtok(&length); /* eat :basetype */
     token = pg_strtok(&length); /* get basetype */
     local_node->basetype = atooid(token);
Index: src/backend/parser/analyze.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/parser/analyze.c,v
retrieving revision 1.201
diff -u -r1.201 analyze.c
--- src/backend/parser/analyze.c    2001/10/12 00:07:14    1.201
+++ src/backend/parser/analyze.c    2001/10/17 16:41:25
@@ -85,6 +85,7 @@
 static void transformFKConstraints(ParseState *pstate,
                                    CreateStmtContext *cxt);
 static Node *transformTypeRefs(ParseState *pstate, Node *stmt);
+static Node *transformPackageRefs(ParseState *pstate, Node *stmt);

 static void transformTypeRefsList(ParseState *pstate, List *l);
 static void transformTypeRef(ParseState *pstate, TypeName *tn);
@@ -282,6 +283,12 @@
             result->utilityStmt = transformTypeRefs(pstate, parseTree);
             break;

+        case T_PackageStmt:
+            result = makeNode(Query);
+            result->commandType = CMD_UTILITY;
+            result->utilityStmt = transformPackageRefs(pstate, parseTree);
+            break;
+
         default:

             /*
@@ -1459,6 +1466,8 @@
         fk_trigger->trigname = fkconstraint->constr_name;
         fk_trigger->relname = cxt->relname;
         fk_trigger->funcname = "RI_FKey_check_ins";
+        fk_trigger->package = STANDARDPackageId;
+        fk_trigger->packexact = TRUE;
         fk_trigger->before = false;
         fk_trigger->row = true;
         fk_trigger->actions[0] = 'i';
@@ -1513,6 +1522,8 @@
         fk_trigger = (CreateTrigStmt *) makeNode(CreateTrigStmt);
         fk_trigger->trigname = fkconstraint->constr_name;
         fk_trigger->relname = fkconstraint->pktable_name;
+        fk_trigger->package = STANDARDPackageId;
+        fk_trigger->packexact = TRUE;
         fk_trigger->before = false;
         fk_trigger->row = true;
         fk_trigger->actions[0] = 'd';
@@ -1585,6 +1596,8 @@
         fk_trigger = (CreateTrigStmt *) makeNode(CreateTrigStmt);
         fk_trigger->trigname = fkconstraint->constr_name;
         fk_trigger->relname = fkconstraint->pktable_name;
+        fk_trigger->package = STANDARDPackageId;
+        fk_trigger->packexact = TRUE;
         fk_trigger->before = false;
         fk_trigger->row = true;
         fk_trigger->actions[0] = 'u';
@@ -2582,6 +2595,44 @@
     qry->utilityStmt = (Node *) stmt;

     return qry;
+}
+
+/*
+ * Transform uses of %TYPE in a CREATE PACKAGE statement.
+ *
+ * Itteratively call transformTypeRefs() to deal with the define nodes
+ * in the package. initfuncs aren't touched as they don't contain
+ * %TYPE statements transformTypeRefs() would change. variables aren't
+ * touched as their contents are language specific, and languages need
+ * to be able to deal with %TYPE clauses already.
+ */
+static Node *
+transformPackageRefs(ParseState *pstate, Node *stmt)
+{
+    PackageStmt       *ps = (PackageStmt *) stmt;
+    List           *ele;
+
+    foreach(ele, ps->functions)
+    {
+        (void)transformTypeRefs(pstate, (Node *) lfirst(ele));
+    }
+
+    foreach(ele, ps->types)
+    {
+        (void)transformTypeRefs(pstate, (Node *) lfirst(ele));
+    }
+
+    foreach(ele, ps->aggregates)
+    {
+        (void)transformTypeRefs(pstate, (Node *) lfirst(ele));
+    }
+
+    foreach(ele, ps->operators)
+    {
+        (void)transformTypeRefs(pstate, (Node *) lfirst(ele));
+    }
+
+    return stmt;
 }

 /*
Index: src/backend/parser/gram.y
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/parser/gram.y,v
retrieving revision 2.262
diff -u -r2.262 gram.y
--- src/backend/parser/gram.y    2001/10/10 00:02:42    2.262
+++ src/backend/parser/gram.y    2001/10/17 16:41:29
@@ -51,6 +51,7 @@
 #include <ctype.h>

 #include "access/htup.h"
+#include "catalog/pg_package.h"
 #include "catalog/pg_type.h"
 #include "nodes/params.h"
 #include "nodes/parsenodes.h"
@@ -69,6 +70,7 @@
 extern List *parsetree;            /* final parse result is delivered here */

 static bool QueryIsRule = FALSE;
+static Oid    packageId;
 static Oid    *param_type_info;
 static int    pfunc_num_args;

@@ -91,6 +93,8 @@
 static Node *makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg);
 static Node *doNegate(Node *n);
 static void doNegateFloat(Value *v);
+static char *checkForPackname(char *, Oid *, bool *);
+static Node *checkForPacknameInNode(Node *innode, Oid *pack, bool *isExact);

 %}

@@ -129,14 +133,15 @@
         AlterGroupStmt, AlterSchemaStmt, AlterTableStmt, AlterUserStmt,
         AnalyzeStmt,
         ClosePortalStmt, ClusterStmt, CommentStmt, ConstraintsSetStmt,
-        CopyStmt, CreateAsStmt, CreateGroupStmt, CreatePLangStmt,
-        CreateSchemaStmt, CreateSeqStmt, CreateStmt, CreateTrigStmt,
-        CreateUserStmt, CreatedbStmt, CursorStmt, DefineStmt, DeleteStmt,
-        DropGroupStmt, DropPLangStmt, DropSchemaStmt, DropStmt, DropTrigStmt,
+        CopyStmt, CreateAsStmt, CreateGroupStmt, CreatePackageStmt,
+        CreatePLangStmt, CreateSchemaStmt, CreateSeqStmt, CreateStmt,
+        CreateTrigStmt, CreateUserStmt, CreatedbStmt, CursorStmt,
+        DefineStmt, DeleteStmt, DropGroupStmt, DropPLangStmt,
+        DropSchemaStmt, DropStmt, DropTrigStmt,
         DropUserStmt, DropdbStmt, ExplainStmt, FetchStmt,
         GrantStmt, IndexStmt, InsertStmt, ListenStmt, LoadStmt, LockStmt,
         NotifyStmt, OptimizableStmt, ProcedureStmt, ReindexStmt,
-        RemoveAggrStmt, RemoveFuncStmt, RemoveOperStmt,
+        RemoveAggrStmt, RemoveFuncStmt, RemoveOperStmt, RemovePackageStmt,
         RenameStmt, RevokeStmt, RuleActionStmt, RuleActionStmtOrEmpty,
         RuleStmt, SelectStmt, TransactionStmt, TruncateStmt,
         UnlistenStmt, UpdateStmt, VacuumStmt, VariableResetStmt,
@@ -193,10 +198,16 @@
         from_clause, from_list, opt_array_bounds,
         expr_list, attrs, target_list, update_target_list,
         def_list, opt_indirection, group_clause, TriggerFuncArgs,
-        select_limit, opt_select_limit
+        select_limit, opt_select_limit, pack_global_list

 %type <typnam>    func_arg, func_return, func_type, aggr_argtype

+%type <node>    pack_body, pack_func, pack_init_func,
+                pack_globals, pack_global, pack_type, pack_op, pack_agg
+
+%type <ival>    opt_package
+%type <str>        CreatePackageStart
+
 %type <boolean>    opt_arg, TriggerForOpt, TriggerForType, OptTemp, OptWithOids

 %type <list>    for_update_clause, opt_for_update_clause, update_list
@@ -313,7 +324,7 @@
         NATIONAL, NATURAL, NCHAR, NEXT, NO, NOT, NULLIF, NULL_P, NUMERIC,
         OF, OLD, ON, ONLY, OPTION, OR, ORDER, OUTER_P, OVERLAPS,
         PARTIAL, POSITION, PRECISION, PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, PUBLIC,
-        READ, REFERENCES, RELATIVE, REVOKE, RIGHT, ROLLBACK,
+        READ, REFERENCES, RELATIVE, REPLACE, REVOKE, RIGHT, ROLLBACK,
         SCHEMA, SCROLL, SECOND_P, SELECT, SESSION, SESSION_USER, SET, SOME, SUBSTRING,
         TABLE, TEMPORARY, THEN, TIME, TIMESTAMP,
         TO, TRAILING, TRANSACTION, TRIM, TRUE_P,
@@ -341,7 +352,7 @@
  * - Todd A. Brandys 1998-01-01?
  */
 %token    ABORT_TRANS, ACCESS, AFTER, AGGREGATE, ANALYSE, ANALYZE,
-        BACKWARD, BEFORE, BINARY, BIT,
+        BACKWARD, BEFORE, BINARY, BIT, BODY,
         CACHE, CHECKPOINT, CLUSTER, COMMENT, COPY, CREATEDB, CREATEUSER, CYCLE,
         DATABASE, DELIMITERS, DO,
         EACH, ENCODING, EXCLUSIVE, EXPLAIN,
@@ -350,7 +361,7 @@
         LANCOMPILER, LIMIT, LISTEN, LOAD, LOCATION, LOCK_P,
         MAXVALUE, MINVALUE, MODE, MOVE,
         NEW, NOCREATEDB, NOCREATEUSER, NONE, NOTHING, NOTIFY, NOTNULL,
-        OFFSET, OIDS, OPERATOR, OWNER, PASSWORD, PROCEDURAL,
+        OFFSET, OIDS, OPERATOR, OWNER, PACKAGE, PASSWORD, PROCEDURAL,
         REINDEX, RENAME, RESET, RETURNS, ROW, RULE,
         SEQUENCE, SETOF, SHARE, SHOW, START, STATEMENT,
         STATISTICS, STDIN, STDOUT, SYSID,
@@ -365,7 +376,7 @@

 /* Special keywords, not in the query language - see the "lex" file */
 %token <str>    IDENT, FCONST, SCONST, BITCONST, Op
-%token <ival>    ICONST, PARAM
+%token <ival>    ICONST, PACKID, PARAM

 /* these are not real. they are here so that they get generated as #define's*/
 %token            OP
@@ -478,6 +489,8 @@
         | VariableResetStmt
         | ConstraintsSetStmt
         | CheckPointStmt
+        | CreatePackageStmt
+        | RemovePackageStmt
         | /*EMPTY*/
             { $$ = (Node *)NULL; }
         ;
@@ -1724,13 +1737,21 @@

 CreateTrigStmt:  CREATE TRIGGER name TriggerActionTime TriggerEvents ON
                 relation_name TriggerForSpec EXECUTE PROCEDURE
-                name '(' TriggerFuncArgs ')'
+                opt_package name '(' TriggerFuncArgs ')'
                 {
                     CreateTrigStmt *n = makeNode(CreateTrigStmt);
                     n->trigname = $3;
                     n->relname = $7;
-                    n->funcname = $11;
-                    n->args = $13;
+                    if ($11 == 0)
+                        n->funcname = checkForPackname($12, &n->package,
+                                                       &n->packexact);
+                    else
+                    {
+                        n->funcname = $12;
+                        n->package = $11;
+                        n->packexact = TRUE;
+                    }
+                    n->args = $14;
                     n->before = $4;
                     n->row = $8;
                     memcpy (n->actions, $5, 4);
@@ -1748,13 +1769,22 @@
         | CREATE CONSTRAINT TRIGGER name AFTER TriggerEvents ON
                 relation_name OptConstrFromTable
                 ConstraintAttributeSpec
-                FOR EACH ROW EXECUTE PROCEDURE name '(' TriggerFuncArgs ')'
+                FOR EACH ROW EXECUTE PROCEDURE opt_package name
+                '(' TriggerFuncArgs ')'
                 {
                     CreateTrigStmt *n = makeNode(CreateTrigStmt);
                     n->trigname = $4;
                     n->relname = $8;
-                    n->funcname = $16;
-                    n->args = $18;
+                    if ($16 == 0)
+                        n->funcname = checkForPackname($17, &n->package,
+                                                       &n->packexact);
+                    else
+                    {
+                        n->funcname = $17;
+                        n->package = $16;
+                        n->packexact = TRUE;
+                    }
+                    n->args = $19;
                     n->before = FALSE;
                     n->row = TRUE;
                     memcpy (n->actions, $6, 4);
@@ -1845,6 +1875,9 @@
                 }
         ;

+opt_package:    PACKID        { $$ = $1; }
+            |    /* EMPTY */    { $$ = 0; }
+
 OptConstrFromTable:            /* Empty */
                 {
                     $$ = "";
@@ -1916,6 +1949,7 @@
                     n->defType = AGGREGATE;
                     n->defname = $3;
                     n->definition = $4;
+                    n->package = STANDARDPackageId;
                     $$ = (Node *)n;
                 }
         | CREATE OPERATOR all_Op definition
@@ -1924,6 +1958,7 @@
                     n->defType = OPERATOR;
                     n->defname = $3;
                     n->definition = $4;
+                    n->package = STANDARDPackageId;
                     $$ = (Node *)n;
                 }
         | CREATE TYPE_P name definition
@@ -1932,6 +1967,7 @@
                     n->defType = TYPE_P;
                     n->defname = $3;
                     n->definition = $4;
+                    n->package = STANDARDPackageId;
                     $$ = (Node *)n;
                 }
         ;
@@ -1947,8 +1983,17 @@
                 {
                     $$ = makeNode(DefElem);
                     $$->defname = $1;
-                    $$->arg = (Node *)$3;
+                    $$->arg = checkForPacknameInNode((Node *)$3, &$$->package,
+                                                     &$$->packexact);
                 }
+        | ColLabel '=' PACKID def_arg
+                {
+                    $$ = makeNode(DefElem);
+                    $$->defname = $1;
+                    $$->arg = (Node *)$4;
+                    $$->package = $3;
+                    $$->packexact = TRUE;
+                }
         | ColLabel
                 {
                     $$ = makeNode(DefElem);
@@ -2014,7 +2059,7 @@
  *               <objname> | AGGREGATE <aggname> (<aggtype>) | FUNCTION
  *         <funcname> (arg1, arg2, ...) | OPERATOR <op>
  *         (leftoperand_typ rightoperand_typ) | TRIGGER <triggername> ON
- *         <relname> ] IS 'text'
+ *         <relname> | PACKAGE <packagename> ] IS 'text'
  *
  *****************************************************************************/

@@ -2093,6 +2138,7 @@

 comment_type:    DATABASE { $$ = DATABASE; }
         | INDEX { $$ = INDEX; }
+        | PACKAGE {$$ = PACKAGE; }
         | RULE { $$ = RULE; }
         | SEQUENCE { $$ = SEQUENCE; }
         | TABLE { $$ = TABLE; }
@@ -2430,10 +2476,20 @@
 func_index:  func_name '(' name_list ')' opt_class
                 {
                     $$ = makeNode(IndexElem);
-                    $$->name = $1;
+                    $$->name = checkForPackname($1, &$$->packId,
+                                                &$$->package_exact);
                     $$->args = $3;
                     $$->class = $5;
                 }
+            | PACKID func_name '(' name_list ')' opt_class
+                {
+                    $$ = makeNode(IndexElem);
+                    $$->packId = $1;
+                    $$->package_exact = TRUE;
+                    $$->name = $2;
+                    $$->args = $4;
+                    $$->class = $6;
+                }
           ;

 index_elem:  attr_name opt_class
@@ -2506,6 +2562,7 @@
                 {
                     ProcedureStmt *n = makeNode(ProcedureStmt);
                     n->replace = $2;
+                    n->package = STANDARDPackageId;
                     n->funcname = $4;
                     n->argTypes = $5;
                     n->returnType = (Node *) $7;
@@ -2596,9 +2653,203 @@
  *
  *        QUERY:
  *
+ *        CREATE [OR REPLACE] PACKAGE <packname> as [
+ *            FUNCTION {CREATE FUNCTION syntax from 'FUNCTION' on } |
+ *            BODY as <filename or code in language as appropriate>
+ *                language <lang> [optional WITH clauses] |
+ *            TYPE {CREATE TYPE syntax following 'TYPE' } |
+ *            AGGREGATE {CREATE AGGREGATE syntax following 'AGGREGATE' } |
+ *            OPERATOR {CREATE OPERATOR syntax from 'OPERATOR' on } |
+ *            DECLARE name 'initializer' [, name 'initializer']
+ *                LANGUAGE 'langname
+ *            ]*
+ *
+ *
+ *****************************************************************************/
+
+
+/*
+ * We perform the mechanics of adding the package name to pg_package
+ * during parsing so that parts of the package can correctly use
+ * packname.funcname syntax. As the created package entry is part of this
+ * transaction, it goes away if we fail due to an error
+ */
+CreatePackageStart:    CREATE opt_or_replace PACKAGE name AS
+                        {
+                            PackageCreate($4, $2);
+                            $$ = $4;
+                        };
+
+CreatePackageStmt:     CreatePackageStart pack_body
+                    {
+                        PackageStmt *n = (PackageStmt *)$2;
+                        n->packname = $1;
+                        $$ = (Node *)n;
+                    };
+
+/*
+ * A pack_body can consist of any order of pack_init_func, pack_func,
+ * pack_globals, pack_type, pack_op, and pack_agg.
+ *
+ * So pack_body consists of a PackageStmt node. For the first sub
+ * element we find, we init the node and put the found node on the right
+ * list. There after, we add found nodes to the right list.
+ */
+pack_body:         pack_func
+                        {
+                            PackageStmt *n = makeNode(PackageStmt);
+                            n->functions = makeList1($1);
+                            $$ = (Node *)n;
+                        }
+                    | pack_init_func
+                        {
+                            PackageStmt *n = makeNode(PackageStmt);
+                            n->initfuncs = makeList1($1);
+                            $$ = (Node *)n;
+                        }
+                    | pack_globals
+                        {
+                            PackageStmt *n = makeNode(PackageStmt);
+                            n->variables = makeList1($1);
+                            $$ = (Node *)n;
+                        }
+                    | pack_type
+                        {
+                            PackageStmt *n = makeNode(PackageStmt);
+                            n->types = makeList1($1);
+                            $$ = (Node *)n;
+                        }
+                    | pack_op
+                        {
+                            PackageStmt *n = makeNode(PackageStmt);
+                            n->operators = makeList1($1);
+                            $$ = (Node *)n;
+                        }
+                    | pack_agg
+                        {
+                            PackageStmt *n = makeNode(PackageStmt);
+                            n->aggregates = makeList1($1);
+                            $$ = (Node *)n;
+                        }
+                    | pack_body pack_func
+                        {
+                            PackageStmt *n = (PackageStmt *)$1;
+                            n->functions = lappend(n->functions, $2);
+                            $$ = $1;
+                        }
+                    | pack_body pack_init_func
+                        {
+                            PackageStmt *n = (PackageStmt *)$1;
+                            n->initfuncs = lappend(n->initfuncs, $2);
+                            $$ = $1;
+                        }
+                    | pack_body pack_globals
+                        {
+                            PackageStmt *n = (PackageStmt *)$1;
+                            n->variables = lappend(n->variables, $2);
+                            $$ = $1;
+                        }
+                    | pack_body pack_type
+                        {
+                            PackageStmt *n = (PackageStmt *)$1;
+                            n->types = lappend(n->types, $2);
+                            $$ = $1;
+                        }
+                    | pack_body pack_op
+                        {
+                            PackageStmt *n = (PackageStmt *)$1;
+                            n->operators = lappend(n->operators, $2);
+                            $$ = $1;
+                        }
+                    | pack_body pack_agg
+                        {
+                            PackageStmt *n = (PackageStmt *)$1;
+                            n->aggregates = lappend(n->aggregates, $2);
+                            $$ = $1;
+                        }
+                    ;
+
+pack_func: FUNCTION func_name func_args RETURNS func_return
+                AS func_as LANGUAGE ColId_or_Sconst opt_with
+                {
+                    ProcedureStmt *n = makeNode(ProcedureStmt);
+                    n->funcname = $2;
+                    n->argTypes = $3;
+                    n->returnType = (Node *)$5;
+                    n->withClause = $10;
+                    n->as = $7;
+                    n->language = $9;
+                    $$ = (Node *)n;
+                };
+
+pack_init_func:    BODY AS func_as LANGUAGE ColId_or_Sconst opt_with
+                {
+                    ProcedureStmt *n = makeNode(ProcedureStmt);
+                    n->funcname = NULL; /* will be filled in later */
+                    n->argTypes = NULL;
+                    n->returnType = (Node *)NULL;
+                    n->withClause = $6;
+                    n->as = $3;
+                    n->language = $5;
+                    $$ = (Node *)n;
+                };
+
+pack_globals:  DECLARE pack_global_list LANGUAGE ColId_or_Sconst
+                {
+                    CreateStmt *n = makeNode(CreateStmt);
+                    n->tableElts = $2;
+                    n->relname = $4;
+                    $$ = (Node *)n;
+                }
+
+pack_global_list:    pack_global                         { $$ = makeList1($1); }
+                |    pack_global_list ',' pack_global { $$ = lappend($1, $3); }
+                ;
+
+pack_global:   ColId Sconst
+                {
+                    PackageGlobal *n = makeNode(PackageGlobal);
+                    n->name = $1;
+                    n->typetext = $2;
+                    $$ = (Node *)n;
+                };
+
+pack_type:     TYPE_P name definition
+                {
+                    DefineStmt *n = makeNode(DefineStmt);
+                    n->defType = TYPE_P;
+                    n->defname = $2;
+                    n->definition = $3;
+                    $$ = (Node *)n;
+                };
+
+pack_op:       OPERATOR all_Op definition
+                {
+                    DefineStmt *n = makeNode(DefineStmt);
+                    n->defType = OPERATOR;
+                    n->defname = $2;
+                    n->definition = $3;
+                    $$ = (Node *)n;
+                };
+
+pack_agg:      AGGREGATE func_name definition
+                {
+                    DefineStmt *n = makeNode(DefineStmt);
+                    n->defType = AGGREGATE;
+                    n->defname = $2;
+                    n->definition = $3;
+                    $$ = (Node *)n;
+                };
+
+
+/*****************************************************************************
+ *
+ *     QUERY:
+ *
  *        DROP FUNCTION funcname (arg1, arg2, ...)
  *        DROP AGGREGATE aggname (aggtype)
  *        DROP OPERATOR opname (leftoperand_typ rightoperand_typ)
+ *        DROP PACKAGE packame
  *
  *****************************************************************************/

@@ -2611,6 +2862,14 @@
                 }
         ;

+RemovePackageStmt: DROP PACKAGE name
+                {
+                    RemovePackageStmt *n = makeNode(RemovePackageStmt);
+                    n->packname = $3;
+                    $$ = (Node *)n;
+                }
+        ;
+
 RemoveAggrStmt:  DROP AGGREGATE func_name '(' aggr_argtype ')'
                 {
                         RemoveAggrStmt *n = makeNode(RemoveAggrStmt);
@@ -4404,6 +4663,8 @@
                     List *largs = $2;
                     List *rargs = $6;
                     n->funcname = xlateSqlFunc("overlaps");
+                    n->package = STANDARDPackageId;
+                    n->package_exact = TRUE;
                     if (length(largs) == 1)
                         largs = lappend(largs, $2);
                     else if (length(largs) != 2)
@@ -4479,6 +4740,8 @@
                 {
                     FuncCall *n = makeNode(FuncCall);
                     n->funcname = "timezone";
+                    n->package = STANDARDPackageId;
+                    n->package_exact = TRUE;
                     n->args = makeList2($5, $1);
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
@@ -4544,6 +4807,8 @@
                 {
                     FuncCall *n = makeNode(FuncCall);
                     n->funcname = "like_escape";
+                    n->package = STANDARDPackageId;
+                    n->package_exact = TRUE;
                     n->args = makeList2($3, $5);
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
@@ -4555,6 +4820,8 @@
                 {
                     FuncCall *n = makeNode(FuncCall);
                     n->funcname = "like_escape";
+                    n->package = STANDARDPackageId;
+                    n->package_exact = TRUE;
                     n->args = makeList2($4, $6);
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
@@ -4566,6 +4833,8 @@
                 {
                     FuncCall *n = makeNode(FuncCall);
                     n->funcname = "like_escape";
+                    n->package = STANDARDPackageId;
+                    n->package_exact = TRUE;
                     n->args = makeList2($3, $5);
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
@@ -4577,6 +4846,8 @@
                 {
                     FuncCall *n = makeNode(FuncCall);
                     n->funcname = "like_escape";
+                    n->package = STANDARDPackageId;
+                    n->package_exact = TRUE;
                     n->args = makeList2($4, $6);
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
@@ -4832,26 +5103,53 @@
                 {    $$ = $1; }
         | func_name '(' ')'
                 {
+                    /* Note we can't use the opt_package construct here -
+                     * it generates lots of s/r conficts */
                     FuncCall *n = makeNode(FuncCall);
-                    n->funcname = $1;
+                    n->funcname = checkForPackname($1, &n->package,
+                                                   &n->package_exact);
                     n->args = NIL;
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
                     $$ = (Node *)n;
                 }
+        | PACKID func_name '(' ')'
+                {
+                    FuncCall *n = makeNode(FuncCall);
+                    n->funcname = $2;
+                    n->package = $1;
+                    n->package_exact = TRUE;
+                    n->args = NIL;
+                    n->agg_star = FALSE;
+                    n->agg_distinct = FALSE;
+                    $$ = (Node *)n;
+                }
         | func_name '(' expr_list ')'
                 {
                     FuncCall *n = makeNode(FuncCall);
-                    n->funcname = $1;
+                    n->funcname = checkForPackname($1, &n->package,
+                                                   &n->package_exact);
                     n->args = $3;
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
                     $$ = (Node *)n;
                 }
+        | PACKID func_name '(' expr_list ')'
+                {
+                    FuncCall *n = makeNode(FuncCall);
+                    n->funcname = $2;
+                    n->package = $1;
+                    n->package_exact = TRUE;
+                    n->args = $4;
+                    n->agg_star = FALSE;
+                    n->agg_distinct = FALSE;
+                    $$ = (Node *)n;
+                }
         | func_name '(' ALL expr_list ')'
                 {
                     FuncCall *n = makeNode(FuncCall);
-                    n->funcname = $1;
+                    n->funcname = checkForPackname($1, &n->package,
+                                                   &n->package_exact);
                     n->args = $4;
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
@@ -4861,15 +5159,42 @@
                      */
                     $$ = (Node *)n;
                 }
+        | PACKID func_name '(' ALL expr_list ')'
+                {
+                    FuncCall *n = makeNode(FuncCall);
+                    n->funcname = $2;
+                    n->package = $1;
+                    n->package_exact = TRUE;
+                    n->args = $5;
+                    n->agg_star = FALSE;
+                    n->agg_distinct = FALSE;
+                    /* Ideally we'd mark the FuncCall node to indicate
+                     * "must be an aggregate", but there's no provision
+                     * for that in FuncCall at the moment.
+                     */
+                    $$ = (Node *)n;
+                }
         | func_name '(' DISTINCT expr_list ')'
                 {
                     FuncCall *n = makeNode(FuncCall);
-                    n->funcname = $1;
+                    n->funcname = checkForPackname($1, &n->package,
+                                                   &n->package_exact);
                     n->args = $4;
                     n->agg_star = FALSE;
                     n->agg_distinct = TRUE;
                     $$ = (Node *)n;
                 }
+        | PACKID func_name '(' DISTINCT expr_list ')'
+                {
+                    FuncCall *n = makeNode(FuncCall);
+                    n->funcname = $2;
+                    n->package = $1;
+                    n->package_exact = TRUE;
+                    n->args = $5;
+                    n->agg_star = FALSE;
+                    n->agg_distinct = TRUE;
+                    $$ = (Node *)n;
+                }
         | func_name '(' '*' ')'
                 {
                     /*
@@ -4889,12 +5214,33 @@

                     star->val.type = T_Integer;
                     star->val.val.ival = 1;
-                    n->funcname = $1;
+                    n->funcname = checkForPackname($1, &n->package,
+                                                   &n->package_exact);
                     n->args = makeList1(star);
                     n->agg_star = TRUE;
                     n->agg_distinct = FALSE;
                     $$ = (Node *)n;
                 }
+        | PACKID func_name '(' '*' ')'
+                {
+                    /*
+                     * For now, we transform AGGREGATE(*) into AGGREGATE(1).
+                     *
+                     * See comment for non-PACKID version above
+                     */
+                    FuncCall *n = makeNode(FuncCall);
+                    A_Const *star = makeNode(A_Const);
+
+                    star->val.type = T_Integer;
+                    star->val.val.ival = 1;
+                    n->funcname = $2;
+                    n->package = $1;
+                    n->package_exact = TRUE;
+                    n->args = makeList1(star);
+                    n->agg_star = TRUE;
+                    n->agg_distinct = FALSE;
+                    $$ = (Node *)n;
+                }
         | CURRENT_DATE opt_empty_parentheses
                 {
                     /*
@@ -5037,6 +5383,8 @@
                 {
                     FuncCall *n = makeNode(FuncCall);
                     n->funcname = "current_user";
+                    n->package = STANDARDPackageId;
+                    n->package_exact = TRUE;
                     n->args = NIL;
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
@@ -5046,6 +5394,8 @@
                 {
                     FuncCall *n = makeNode(FuncCall);
                     n->funcname = "session_user";
+                    n->package = STANDARDPackageId;
+                    n->package_exact = TRUE;
                     n->args = NIL;
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
@@ -5055,6 +5405,8 @@
                 {
                     FuncCall *n = makeNode(FuncCall);
                     n->funcname = "current_user";
+                    n->package = STANDARDPackageId;
+                    n->package_exact = TRUE;
                     n->args = NIL;
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
@@ -5064,6 +5416,8 @@
                 {
                     FuncCall *n = makeNode(FuncCall);
                     n->funcname = "date_part";
+                    n->package = STANDARDPackageId;
+                    n->package_exact = TRUE;
                     n->args = $3;
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
@@ -5074,6 +5428,8 @@
                     /* position(A in B) is converted to position(B, A) */
                     FuncCall *n = makeNode(FuncCall);
                     n->funcname = "position";
+                    n->package = STANDARDPackageId;
+                    n->package_exact = TRUE;
                     n->args = $3;
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
@@ -5086,6 +5442,8 @@
                      */
                     FuncCall *n = makeNode(FuncCall);
                     n->funcname = "substring";
+                    n->package = STANDARDPackageId;
+                    n->package_exact = TRUE;
                     n->args = $3;
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
@@ -5098,6 +5456,8 @@
                      */
                     FuncCall *n = makeNode(FuncCall);
                     n->funcname = "btrim";
+                    n->package = STANDARDPackageId;
+                    n->package_exact = TRUE;
                     n->args = $4;
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
@@ -5107,6 +5467,8 @@
                 {
                     FuncCall *n = makeNode(FuncCall);
                     n->funcname = "ltrim";
+                    n->package = STANDARDPackageId;
+                    n->package_exact = TRUE;
                     n->args = $4;
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
@@ -5116,6 +5478,8 @@
                 {
                     FuncCall *n = makeNode(FuncCall);
                     n->funcname = "rtrim";
+                    n->package = STANDARDPackageId;
+                    n->package_exact = TRUE;
                     n->args = $4;
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
@@ -5125,6 +5489,8 @@
                 {
                     FuncCall *n = makeNode(FuncCall);
                     n->funcname = "btrim";
+                    n->package = STANDARDPackageId;
+                    n->package_exact = TRUE;
                     n->args = $3;
                     n->agg_star = FALSE;
                     n->agg_distinct = FALSE;
@@ -5638,6 +6004,7 @@
         | BACKWARD                        { $$ = "backward"; }
         | BEFORE                        { $$ = "before"; }
         | BEGIN_TRANS                    { $$ = "begin"; }
+        | BODY                            { $$ = "body"; }
         | BY                            { $$ = "by"; }
         | CACHE                            { $$ = "cache"; }
         | CASCADE                        { $$ = "cascade"; }
@@ -5702,6 +6069,7 @@
         | OPERATOR                        { $$ = "operator"; }
         | OPTION                        { $$ = "option"; }
         | OWNER                            { $$ = "owner"; }
+        | PACKAGE                        { $$ = "package"; }
         | PARTIAL                        { $$ = "partial"; }
         | PASSWORD                        { $$ = "password"; }
         | PENDANT                        { $$ = "pendant"; }
@@ -6146,9 +6514,10 @@
 } /* xlateSqlType() */


-void parser_init(Oid *typev, int nargs)
+void parser_init(Oid packId, Oid *typev, int nargs)
 {
     QueryIsRule = FALSE;
+    packageId = packId;
     /*
      * Keep enough information around to fill out the type of param nodes
      * used in postquel functions
@@ -6234,4 +6603,47 @@
         strcpy(newval+1, oldval);
         v->val.str = newval;
     }
+}
+
+static Node *
+checkForPacknameInNode(Node *innode, Oid *pack, bool *isExact)
+{
+    char  **name;
+
+    if (nodeTag(innode) == T_String)
+        name = &strVal(innode);
+    else if (nodeTag(innode) == T_TypeName)
+        name = &((TypeName *) innode)->name;
+    else
+    {
+        *pack = packageId;
+        *isExact = FALSE;
+        return innode;
+    }
+
+    *name = checkForPackname(*name, pack, isExact);
+    return innode;
+}
+
+
+static char *
+checkForPackname(char *name, Oid *pack, bool *isExact)
+{
+    char   *p,
+            scratch[NAMEDATALEN];
+
+    if ((p = strchr(name, '.')) != NULL)
+    {
+        StrNCpy(scratch, name, p - name + 1);   /* +1 for trailing '\0' */
+        if ((*pack = PackageIdFromName(scratch)) != 0)
+        {
+            *isExact = TRUE;
+            return p + 1;
+        }
+    }
+
+    *pack = packageId;
+    *isExact = FALSE;
+
+    return name;
 }
Index: src/backend/parser/keywords.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/parser/keywords.c,v
retrieving revision 1.99
diff -u -r1.99 keywords.c
--- src/backend/parser/keywords.c    2001/10/10 00:02:42    1.99
+++ src/backend/parser/keywords.c    2001/10/17 16:41:29
@@ -51,6 +51,7 @@
     {"between", BETWEEN},
     {"binary", BINARY},
     {"bit", BIT},
+    {"body", BODY},
     {"both", BOTH},
     {"by", BY},
     {"cache", CACHE},
@@ -199,6 +200,7 @@
     {"outer", OUTER_P},
     {"overlaps", OVERLAPS},
     {"owner", OWNER},
+    {"package", PACKAGE},
     {"partial", PARTIAL},
     {"password", PASSWORD},
     {"path", PATH_P},
Index: src/backend/parser/parse_agg.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/parser/parse_agg.c,v
retrieving revision 1.45
diff -u -r1.45 parse_agg.c
--- src/backend/parser/parse_agg.c    2001/08/09 18:28:17    1.45
+++ src/backend/parser/parse_agg.c    2001/10/17 16:41:29
@@ -187,22 +187,23 @@


 Aggref *
-ParseAgg(ParseState *pstate, char *aggname, Oid basetype,
+ParseAgg(ParseState *pstate, Oid aggId, Oid basetype,
          List *args, bool agg_star, bool agg_distinct,
          int precedence)
 {
     HeapTuple    aggtuple;
     Form_pg_aggregate aggform;
     Aggref       *aggref;
+    char       *aggname;

-    aggtuple = SearchSysCache(AGGNAME,
-                              PointerGetDatum(aggname),
-                              ObjectIdGetDatum(basetype),
-                              0, 0);
+    aggtuple = SearchSysCache(AGGOID,
+                              ObjectIdGetDatum(aggId),
+                              0, 0, 0);
     /* shouldn't happen --- caller should have checked already */
     if (!HeapTupleIsValid(aggtuple))
-        agg_error("ParseAgg", aggname, basetype);
+        elog(ERROR, "Aggregate %d does not exist", aggId);
     aggform = (Form_pg_aggregate) GETSTRUCT(aggtuple);
+    aggname = pstrdup(aggform->aggname.data);

     /*
      * There used to be a really ugly hack for count(*) here.
@@ -220,6 +221,7 @@

     aggref = makeNode(Aggref);
     aggref->aggname = pstrdup(aggname);
+    aggref->aggId = aggId;
     aggref->basetype = aggform->aggbasetype;
     aggref->aggtype = aggform->aggfinaltype;
     aggref->target = lfirst(args);
Index: src/backend/parser/parse_coerce.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/parser/parse_coerce.c,v
retrieving revision 2.63
diff -u -r2.63 parse_coerce.c
--- src/backend/parser/parse_coerce.c    2001/10/04 17:52:24    2.63
+++ src/backend/parser/parse_coerce.c    2001/10/17 16:41:30
@@ -128,6 +128,8 @@
         FuncCall   *n = makeNode(FuncCall);

         n->funcname = typeidTypeName(targetTypeId);
+        n->package = STANDARDPackageId;
+        n->package_exact = TRUE;
         n->args = makeList1(node);
         n->agg_star = false;
         n->agg_distinct = false;
@@ -241,9 +243,9 @@

         ftup = SearchSysCache(PROCNAME,
                               PointerGetDatum(typeidTypeName(targetTypeId)),
+                              ObjectIdGetDatum(STANDARDPackageId),
                               Int32GetDatum(1),
-                              PointerGetDatum(oid_array),
-                              0);
+                              PointerGetDatum(oid_array));
         if (!HeapTupleIsValid(ftup))
             return false;
         /* Make sure the function's result type is as expected, too */
@@ -297,9 +299,9 @@
     /* attempt to find with arguments exactly as specified... */
     if (SearchSysCacheExists(PROCNAME,
                              PointerGetDatum(funcname),
+                             ObjectIdGetDatum(STANDARDPackageId),
                              Int32GetDatum(2),
-                             PointerGetDatum(oid_array),
-                             0))
+                             PointerGetDatum(oid_array)))
     {
         A_Const    *cons = makeNode(A_Const);
         FuncCall   *func = makeNode(FuncCall);
@@ -308,6 +310,8 @@
         cons->val.val.ival = atttypmod;

         func->funcname = funcname;
+        func->package = STANDARDPackageId;
+        func->package_exact = TRUE;
         func->args = makeList2(node, cons);
         func->agg_star = false;
         func->agg_distinct = false;
Index: src/backend/parser/parse_expr.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/parser/parse_expr.c,v
retrieving revision 1.103
diff -u -r1.103 parse_expr.c
--- src/backend/parser/parse_expr.c    2001/10/08 21:46:59    1.103
+++ src/backend/parser/parse_expr.c    2001/10/17 16:41:30
@@ -288,7 +288,9 @@
                                            fn->args,
                                            fn->agg_star,
                                            fn->agg_distinct,
-                                           precedence);
+                                           precedence,
+                                           fn->package,
+                                           fn->package_exact);
                 break;
             }
         case T_SubLink:
Index: src/backend/parser/parse_func.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/parser/parse_func.c,v
retrieving revision 1.111
diff -u -r1.111 parse_func.c
--- src/backend/parser/parse_func.c    2001/10/04 22:06:46    1.111
+++ src/backend/parser/parse_func.c    2001/10/17 16:41:31
@@ -21,6 +21,7 @@
 #include "catalog/indexing.h"
 #include "catalog/pg_aggregate.h"
 #include "catalog/pg_inherits.h"
+#include "catalog/pg_package.h"
 #include "catalog/pg_proc.h"
 #include "nodes/makefuncs.h"
 #include "parser/parse_agg.h"
@@ -41,7 +42,7 @@
 static Oid **argtype_inherit(int nargs, Oid *argtypes);

 static int    find_inheritors(Oid relid, Oid **supervec);
-static CandidateList func_get_candidates(char *funcname, int nargs);
+static CandidateList func_get_candidates(char *funcname, Oid packId, int nargs);
 static Oid **gen_cross_product(InhPaths *arginh, int nargs);
 static void make_arguments(ParseState *pstate,
                int nargs,
@@ -55,8 +56,10 @@
 static FieldSelect *setup_field_select(Node *input, char *attname, Oid relid);
 static Oid *func_select_candidate(int nargs, Oid *input_typeids,
                       CandidateList candidates);
-static int    agg_get_candidates(char *aggname, Oid typeId, CandidateList *candidates);
-static Oid    agg_select_candidate(Oid typeid, CandidateList candidates);
+static int    agg_get_candidates(char *aggname, Oid packId, Oid typeId,
+                               CandidateList *candidates);
+static Oid    agg_select_candidate(Oid typeid, CandidateList candidates,
+                                 Oid *aggId);


 /*
@@ -79,7 +82,9 @@
         retval = ParseFuncOrColumn(pstate, strVal(lfirst(attr->attrs)),
                                    makeList1(param),
                                    false, false,
-                                   precedence);
+                                   precedence,
+                                   STANDARDPackageId,
+                                   TRUE);
     }
     else
     {
@@ -90,7 +95,9 @@
         retval = ParseFuncOrColumn(pstate, strVal(lfirst(attr->attrs)),
                                    makeList1(ident),
                                    false, false,
-                                   precedence);
+                                   precedence,
+                                   STANDARDPackageId,
+                                   TRUE);
     }

     /* Do more attributes follow this one? */
@@ -99,7 +106,9 @@
         retval = ParseFuncOrColumn(pstate, strVal(lfirst(mutator_iter)),
                                    makeList1(retval),
                                    false, false,
-                                   precedence);
+                                   precedence,
+                                   STANDARDPackageId,
+                                   TRUE);
     }

     return retval;
@@ -123,11 +132,12 @@
 Node *
 ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs,
                   bool agg_star, bool agg_distinct,
-                  int precedence)
+                  int precedence, Oid packId, bool packexact)
 {
     Oid            rettype = InvalidOid;
     Oid            argrelid = InvalidOid;
     Oid            funcid = InvalidOid;
+    Oid            originalPackId = packId;
     List       *i = NIL;
     Node       *first_arg = NULL;
     char       *refname;
@@ -242,46 +252,58 @@
             !(IsA(first_arg, Ident) && ((Ident *) first_arg)->isRel);
     }

+could_be_agg_loop:
     if (could_be_agg)
     {
-        Oid            basetype = exprType(lfirst(fargs));
+        Oid            basetype = exprType(lfirst(fargs)),
+                    foundAgg;
         int            ncandidates;
         CandidateList candidates;
+        HeapTuple    tup;

         /* try for exact match first... */
-        if (SearchSysCacheExists(AGGNAME,
-                                 PointerGetDatum(funcname),
-                                 ObjectIdGetDatum(basetype),
-                                 0, 0))
-            return (Node *) ParseAgg(pstate, funcname, basetype,
-                                     fargs, agg_star, agg_distinct,
-                                     precedence);
+        if (HeapTupleIsValid(tup = SearchSysCache(AGGNAME,
+                                                  PointerGetDatum(funcname),
+                                                  ObjectIdGetDatum(packId),
+                                                  ObjectIdGetDatum(basetype),
+                                                  0)))
+        {
+            foundAgg = tup->t_data->t_oid;
+            ReleaseSysCache(tup);
+            return (Node *) ParseAgg(pstate, foundAgg, basetype, fargs,
+                                     agg_star, agg_distinct, precedence);
+        }

         /* check for aggregate-that-accepts-any-type (eg, COUNT) */
-        if (SearchSysCacheExists(AGGNAME,
-                                 PointerGetDatum(funcname),
-                                 ObjectIdGetDatum(0),
-                                 0, 0))
-            return (Node *) ParseAgg(pstate, funcname, 0,
-                                     fargs, agg_star, agg_distinct,
-                                     precedence);
+        if (HeapTupleIsValid(tup = SearchSysCache(AGGNAME,
+                                                  PointerGetDatum(funcname),
+                                                  ObjectIdGetDatum(packId),
+                                                  ObjectIdGetDatum(0),
+                                                  0)))
+        {
+            foundAgg = tup->t_data->t_oid;
+            ReleaseSysCache(tup);
+            return (Node *) ParseAgg(pstate, foundAgg, 0, fargs, agg_star,
+                                     agg_distinct, precedence);
+        }

         /*
          * No exact match yet, so see if there is another entry in the
          * aggregate table that is compatible. - thomas 1998-12-05
          */
-        ncandidates = agg_get_candidates(funcname, basetype, &candidates);
+        ncandidates = agg_get_candidates(funcname, packId, basetype,
+                                         &candidates);
         if (ncandidates > 0)
         {
-            Oid            type;
+            Oid            type, aggId;

-            type = agg_select_candidate(basetype, candidates);
+            type = agg_select_candidate(basetype, candidates, &aggId);
             if (OidIsValid(type))
             {
                 lfirst(fargs) = coerce_type(pstate, lfirst(fargs),
                                             basetype, type, -1);
                 basetype = type;
-                return (Node *) ParseAgg(pstate, funcname, basetype,
+                return (Node *) ParseAgg(pstate, aggId, basetype,
                                          fargs, agg_star, agg_distinct,
                                          precedence);
             }
@@ -295,6 +317,11 @@

         if (must_be_agg)
         {
+            if ((packId != STANDARDPackageId) && (packexact == false))
+            {
+                packId = STANDARDPackageId;
+                goto could_be_agg_loop;
+            }

             /*
              * No matching agg, but we had '*' or DISTINCT, so a plain
@@ -309,121 +336,126 @@
      * If we dropped through to here it's really a function (or a set,
      * which is implemented as a function). Extract arg type info and
      * transform relation name arguments into varnodes of the appropriate
-     * form.
+     * form. Do it only once in case we are doing an inexact matching.
      */
-    MemSet(oid_array, 0, FUNC_MAX_ARGS * sizeof(Oid));
-
-    argn = 0;
-    foreach(i, fargs)
+    if (packId == originalPackId)
     {
-        Node       *arg = lfirst(i);
+        MemSet(oid_array, 0, FUNC_MAX_ARGS * sizeof(Oid));

-        if (IsA(arg, Ident) && ((Ident *) arg)->isRel)
+        argn = 0;
+        foreach(i, fargs)
         {
-            RangeTblEntry *rte;
-            int            vnum;
-            Node       *rteorjoin;
-            int            sublevels_up;
+            Node       *arg = lfirst(i);

-            /*
-             * a relation
-             */
-            refname = ((Ident *) arg)->name;
-
-            rteorjoin = refnameRangeOrJoinEntry(pstate, refname,
-                                                &sublevels_up);
-
-            if (rteorjoin == NULL)
-                rte = addImplicitRTE(pstate, refname);
-            else if (IsA(rteorjoin, RangeTblEntry))
-                rte = (RangeTblEntry *) rteorjoin;
-            else if (IsA(rteorjoin, JoinExpr))
+            if (IsA(arg, Ident) && ((Ident *) arg)->isRel)
             {
+                RangeTblEntry *rte;
+                int            vnum;
+                Node       *rteorjoin;
+                int            sublevels_up;

                 /*
-                 * The relation name refers to a join.  We can't support
-                 * functions on join tuples (since we don't have a named
-                 * type for the join tuples), so error out.
+                 * a relation
                  */
-                if (nargs == 1)
+                refname = ((Ident *) arg)->name;
+
+                rteorjoin = refnameRangeOrJoinEntry(pstate, refname,
+                                                    &sublevels_up);
+
+                if (rteorjoin == NULL)
+                    rte = addImplicitRTE(pstate, refname);
+                else if (IsA(rteorjoin, RangeTblEntry))
+                    rte = (RangeTblEntry *) rteorjoin;
+                else if (IsA(rteorjoin, JoinExpr))
                 {
+
                     /*
-                     * We have f(x) or more likely x.f where x is a join
-                     * and f is not one of the attribute names of the join
-                     * (else we'd have recognized it above).  Give an
-                     * appropriately vague error message.  Would be nicer
-                     * to know which syntax was used...
+                     * The relation name refers to a join.  We can't support
+                     * functions on join tuples (since we don't have a named
+                     * type for the join tuples), so error out.
                      */
-                    elog(ERROR, "No such attribute or function %s.%s",
-                         refname, funcname);
+                    if (nargs == 1)
+                    {
+                        /*
+                         * We have f(x) or more likely x.f where x is a join
+                         * and f is not one of the attribute names of the join
+                         * (else we'd have recognized it above).  Give an
+                         * appropriately vague error message.  Would be nicer
+                         * to know which syntax was used...
+                         */
+                        elog(ERROR, "No such attribute or function %s.%s",
+                             refname, funcname);
+                    }
+                    else
+                    {
+                        /*
+                         * There are multiple arguments, so it must be a
+                         * function call.
+                         */
+                        elog(ERROR,
+                             "Cannot pass result of join %s to a function",
+                             refname);
+                    }
+                    rte = NULL;        /* keep compiler quiet */
                 }
                 else
                 {
-                    /*
-                     * There are multiple arguments, so it must be a function
-                     * call.
-                     */
-                    elog(ERROR, "Cannot pass result of join %s to a function",
-                         refname);
+                    elog(ERROR, "ParseFuncOrColumn: unexpected node type %d",
+                         nodeTag(rteorjoin));
+                    rte = NULL;        /* keep compiler quiet */
                 }
-                rte = NULL;        /* keep compiler quiet */
-            }
-            else
-            {
-                elog(ERROR, "ParseFuncOrColumn: unexpected node type %d",
-                     nodeTag(rteorjoin));
-                rte = NULL;        /* keep compiler quiet */
-            }

-            vnum = RTERangeTablePosn(pstate, rte, &sublevels_up);
+                vnum = RTERangeTablePosn(pstate, rte, &sublevels_up);

-            /*
-             * The parameter to be passed to the function is the whole tuple
-             * from the relation.  We build a special VarNode to reflect
-             * this -- it has varno set to the correct range table entry,
-             * but has varattno == 0 to signal that the whole tuple is the
-             * argument.  Also, it has typmod set to sizeof(Pointer) to
-             * signal that the runtime representation will be a pointer
-             * not an Oid.
-             */
-            if (rte->relname == NULL)
-            {
                 /*
-                 * RTE is a subselect; must fail for lack of a specific type
+                 * The parameter to be passed to the function is the whole tuple
+                 * from the relation.  We build a special VarNode to reflect
+                 * this -- it has varno set to the correct range table entry,
+                 * but has varattno == 0 to signal that the whole tuple is the
+                 * argument.  Also, it has typmod set to sizeof(Pointer) to
+                 * signal that the runtime representation will be a pointer
+                 * not an Oid.
                  */
-                if (nargs == 1)
+                if (rte->relname == NULL)
                 {
                     /*
-                     * Here, we probably have an unrecognized attribute of a
-                     * sub-select; again can't tell if it was x.f or f(x)
+                     * RTE is a subselect; must fail for lack of a specific type
                      */
-                    elog(ERROR, "No such attribute or function %s.%s",
-                         refname, funcname);
-                }
-                else
-                {
-                    elog(ERROR, "Cannot pass result of sub-select %s to a function",
-                         refname);
+                    if (nargs == 1)
+                    {
+                        /*
+                         * Here, we probably have an unrecognized attribute of a
+                         * sub-select; again can't tell if it was x.f or f(x)
+                         */
+                        elog(ERROR, "No such attribute or function %s.%s",
+                             refname, funcname);
+                    }
+                    else
+                    {
+                        elog(ERROR,
+                            "Cannot pass result of sub-select %s to a function",
+                             refname);
+                    }
                 }
-            }

-            toid = typenameTypeId(rte->relname);
+                toid = typenameTypeId(rte->relname);

-            /* replace it in the arg list */
-            lfirst(i) = makeVar(vnum,
-                                InvalidAttrNumber,
-                                toid,
-                                sizeof(Pointer),
-                                sublevels_up);
-        }
-        else if (!attisset)
-            toid = exprType(arg);
-        else
-        {
+                /* replace it in the arg list */
+                lfirst(i) = makeVar(vnum,
+                                    InvalidAttrNumber,
+                                    toid,
+                                    sizeof(Pointer),
+                                    sublevels_up);
+            }
+            else if (!attisset)
+                toid = exprType(arg);
+            else
+            {
             /* if attisset is true, we already set toid for the single arg */
-        }
+            }

-        oid_array[argn++] = toid;
+            oid_array[argn++] = toid;
+        }
     }

     /*
@@ -458,7 +490,7 @@
          * function's return value.  it also returns the true argument types
          * to the function.
          */
-        fdresult = func_get_detail(funcname, fargs, nargs, oid_array,
+        fdresult = func_get_detail(funcname, packId, fargs, nargs, oid_array,
                                    &funcid, &rettype, &retset,
                                    &true_oid_array);
         if (fdresult == FUNCDETAIL_COERCION)
@@ -473,6 +505,16 @@
         if (fdresult != FUNCDETAIL_NORMAL)
         {
             /*
+             * Check and see if we should check in STANDARD before giving
+             * up.
+             */
+            if ((packId != STANDARDPackageId) && (packexact == false))
+            {
+                packId = STANDARDPackageId;
+                goto could_be_agg_loop;
+            }
+
+            /*
              * Oops.  Time to die.
              *
              * If there is a single argument of complex type, we might be
@@ -491,7 +533,8 @@
             }

             /* Else generate a detailed complaint */
-            func_error(NULL, funcname, nargs, oid_array,
+            func_error(NULL, funcname, originalPackId, packexact, nargs,
+                       oid_array,
                        "Unable to identify a function that satisfies the "
                        "given argument types"
                        "\n\tYou may need to add explicit typecasts");
@@ -549,6 +592,7 @@

 static int
 agg_get_candidates(char *aggname,
+                   Oid packId,
                    Oid typeId,
                    CandidateList *candidates)
 {
@@ -558,7 +602,7 @@
     HeapTuple    tup;
     Form_pg_aggregate agg;
     int            ncandidates = 0;
-    ScanKeyData aggKey[1];
+    ScanKeyData aggKey[2];

     *candidates = NULL;

@@ -567,11 +611,16 @@
                            F_NAMEEQ,
                            NameGetDatum(aggname));

+    ScanKeyEntryInitialize(&aggKey[1], 0,
+                           Anum_pg_aggregate_aggpack,
+                           F_OIDEQ,
+                           ObjectIdGetDatum(packId));
+
     pg_aggregate_desc = heap_openr(AggregateRelationName, AccessShareLock);
     pg_aggregate_scan = heap_beginscan(pg_aggregate_desc,
                                        0,
                                        SnapshotSelf,    /* ??? */
-                                       1,
+                                       2,
                                        aggKey);

     while (HeapTupleIsValid(tup = heap_getnext(pg_aggregate_scan, 0)))
@@ -582,6 +631,7 @@
         current_candidate->args = (Oid *) palloc(sizeof(Oid));

         current_candidate->args[0] = agg->aggbasetype;
+        current_candidate->oid = tup->t_data->t_oid;
         current_candidate->next = *candidates;
         *candidates = current_candidate;
         ncandidates++;
@@ -598,9 +648,12 @@
  * Try to choose only one candidate aggregate function from a list of
  * possible matches.  Return value is Oid of input type of aggregate
  * if successful, else InvalidOid.
+ *
+ * If we return a valid type, we store the oid of the respective match
+ * in *aggId
  */
 static Oid
-agg_select_candidate(Oid typeid, CandidateList candidates)
+agg_select_candidate(Oid typeid, CandidateList candidates, Oid *aggId)
 {
     CandidateList current_candidate;
     CandidateList last_candidate;
@@ -629,7 +682,10 @@
         }
     }
     if (ncandidates == 1)
+    {
+        *aggId = last_candidate->oid;
         return last_candidate->args[0];
+    }

     /*
      * If no luck that way, look for candidates which allow coercion and
@@ -671,7 +727,10 @@
         last_candidate->next = NULL;

     if (ncandidates == 1)
+    {
+        *aggId = candidates->oid;
         return candidates->args[0];
+    }

     return InvalidOid;
 }    /* agg_select_candidate() */
@@ -682,11 +741,11 @@
  * funcname taking nargs arguments exists
  */
 static CandidateList
-func_get_candidates(char *funcname, int nargs)
+func_get_candidates(char *funcname, Oid packId, int nargs)
 {
     Relation    heapRelation;
     Relation    idesc;
-    ScanKeyData skey;
+    ScanKeyData skey[2];
     HeapTupleData tuple;
     IndexScanDesc sd;
     RetrieveIndexResult indexRes;
@@ -696,15 +755,21 @@
     int            i;

     heapRelation = heap_openr(ProcedureRelationName, AccessShareLock);
-    ScanKeyEntryInitialize(&skey,
+    ScanKeyEntryInitialize(&skey[0],
                            (bits16) 0x0,
                            (AttrNumber) Anum_pg_proc_proname,
                            (RegProcedure) F_NAMEEQ,
                            (Datum) funcname);

+    ScanKeyEntryInitialize(&skey[1],
+                           (bits16) 0x0,
+                           (AttrNumber) Anum_pg_proc_propack,
+                           (RegProcedure) F_OIDEQ,
+                           ObjectIdGetDatum(packId));
+
     idesc = index_openr(ProcedureNameIndex);

-    sd = index_beginscan(idesc, false, 1, &skey);
+    sd = index_beginscan(idesc, false, 2, skey);

     do
     {
@@ -725,6 +790,7 @@
                 {
                     current_candidate = (CandidateList)
                         palloc(sizeof(struct _CandidateList));
+                    current_candidate->oid = tuple.t_data->t_oid;
                     current_candidate->args = (Oid *)
                         palloc(FUNC_MAX_ARGS * sizeof(Oid));
                     MemSet(current_candidate->args, 0, FUNC_MAX_ARGS * sizeof(Oid));
@@ -775,6 +841,7 @@
         {
             matching_candidate = (CandidateList)
                 palloc(sizeof(struct _CandidateList));
+            matching_candidate->oid = current_candidate->oid;
             matching_candidate->args = current_typeids;
             matching_candidate->next = *candidates;
             *candidates = matching_candidate;
@@ -1115,6 +1182,7 @@
  */
 FuncDetailCode
 func_get_detail(char *funcname,
+                Oid packId,
                 List *fargs,
                 int nargs,
                 Oid *argtypes,
@@ -1129,9 +1197,9 @@
     /* attempt to find with arguments exactly as specified... */
     ftup = SearchSysCache(PROCNAME,
                           PointerGetDatum(funcname),
+                          ObjectIdGetDatum(packId),
                           Int32GetDatum(nargs),
-                          PointerGetDatum(argtypes),
-                          0);
+                          PointerGetDatum(argtypes));

     if (HeapTupleIsValid(ftup))
     {
@@ -1194,7 +1262,7 @@
          * candidates...
          */

-        function_typeids = func_get_candidates(funcname, nargs);
+        function_typeids = func_get_candidates(funcname, packId, nargs);

         /* found something, so let's look through them... */
         if (function_typeids != NULL)
@@ -1224,9 +1292,9 @@
                     *true_typeids = current_function_typeids->args;
                     ftup = SearchSysCache(PROCNAME,
                                           PointerGetDatum(funcname),
+                                          ObjectIdGetDatum(packId),
                                           Int32GetDatum(nargs),
-                                          PointerGetDatum(*true_typeids),
-                                          0);
+                                          PointerGetDatum(*true_typeids));
                     Assert(HeapTupleIsValid(ftup));
                     break;
                 }
@@ -1246,9 +1314,9 @@
                         /* was able to choose a best candidate */
                         ftup = SearchSysCache(PROCNAME,
                                               PointerGetDatum(funcname),
+                                              ObjectIdGetDatum(packId),
                                               Int32GetDatum(nargs),
-                                          PointerGetDatum(*true_typeids),
-                                              0);
+                                              PointerGetDatum(*true_typeids));
                         Assert(HeapTupleIsValid(ftup));
                         break;
                     }
@@ -1690,10 +1758,14 @@
  * argument types
  */
 void
-func_error(char *caller, char *funcname, int nargs, Oid *argtypes, char *msg)
+func_error(char *caller, char *funcname, Oid packId, bool isexact, int nargs,
+           Oid *argtypes, char *msg)
 {
     char        p[(NAMEDATALEN + 2) * FUNC_MAX_ARGS],
-               *ptr;
+               *ptr,
+                packstr[NAMEDATALEN + 2],
+                m[NAMEDATALEN + 33],
+               *mp;
     int            i;

     ptr = p;
@@ -1715,16 +1787,139 @@
         ptr += strlen(ptr);
     }

+    mp = "does not exist";
+    if (isexact)
+    {
+        if (PackageNameFromID(packId, (NameData *)packstr))
+            strcpy(packstr, "Invalid");
+        strcat(packstr, ".");
+    }
+    else
+    {
+        if (packId != STANDARDPackageId)
+        {
+            mp = m;
+            /* use packstr as temporary storage */
+            if (PackageNameFromID(packId, (NameData *)packstr))
+            {
+                snprintf(m, NAMEDATALEN+33,
+                        "not found in invalid package context");
+            }
+            else
+            {
+                snprintf(m, NAMEDATALEN+33,
+                        "not found from package context '%s'",
+                        packstr);
+            }
+        }
+        packstr[0] = '\0';
+    }
+
     if (caller == NULL)
     {
-        elog(ERROR, "Function '%s(%s)' does not exist%s%s",
-             funcname, p,
+        elog(ERROR, "Function '%s%s(%s)' %s%s%s",
+             packstr, funcname, p, mp,
              ((msg != NULL) ? "\n\t" : ""), ((msg != NULL) ? msg : ""));
     }
     else
     {
-        elog(ERROR, "%s: function '%s(%s)' does not exist%s%s",
-             caller, funcname, p,
+        elog(ERROR, "%s: function '%s%s(%s)' %s%s%s",
+             caller, packstr, funcname, p, mp,
              ((msg != NULL) ? "\n\t" : ""), ((msg != NULL) ? msg : ""));
     }
+}
+
+/*
+ * GetFuncFromDefElem
+ *     Get a pg_proc heap tuple from a DefElem node
+ *
+ *     We are given a DefElem node and info about the function signature.
+ *     Handle looking in the package context, and then looking in standard
+ *     if permissable. Handle printing error message if not found.
+ */
+HeapTuple
+GetFuncFromDefElem(DefElem *node, int nargs, Oid *fnArgs, char *caller,
+                   char *type1, char *type2)
+{
+    HeapTuple    tup;
+    char        packstr[NAMEDATALEN + 2],
+                typestr[2 * NAMEDATALEN + 7],
+                m[NAMEDATALEN+33],
+               *mp,
+               *funcname;
+
+    if (nodeTag(node->arg) == T_String)
+        funcname = strVal(node->arg);
+    else if (nodeTag(node->arg) == T_TypeName)
+        funcname = ((TypeName *) node->arg)->name;
+    else
+        funcname = NULL;
+
+    tup = SearchSysCache(PROCNAME,
+                         PointerGetDatum(funcname),
+                         ObjectIdGetDatum(node->package),
+                         Int32GetDatum(nargs),
+                         PointerGetDatum(fnArgs));
+
+    if ((!HeapTupleIsValid(tup) ||
+        ((Form_pg_proc) GETSTRUCT(tup))->pronargs != nargs)
+        && (node->packexact == false) && (node->package != STANDARDPackageId))
+    {
+        tup = SearchSysCache(PROCNAME,
+                             PointerGetDatum(funcname),
+                             ObjectIdGetDatum(STANDARDPackageId),
+                             Int32GetDatum(nargs),
+                             PointerGetDatum(fnArgs));
+    }
+
+    if (HeapTupleIsValid(tup) &&
+        ((Form_pg_proc) GETSTRUCT(tup))->pronargs == nargs)
+        return tup;
+
+    mp = "does not exist";
+    if (node->packexact)
+    {
+        if (PackageNameFromID(node->package, (NameData *)packstr))
+            strcpy(packstr, "Invalid");
+        strcat(packstr, ".");
+    }
+    else
+    {
+        if (node->package != STANDARDPackageId)
+        {
+            mp = m;
+            /* use packstr as temporary storage */
+            if (PackageNameFromID(node->package, (NameData *)packstr))
+            {
+                snprintf(m, NAMEDATALEN+33,
+                         "not found in invalid package context");
+            }
+            else
+            {
+                snprintf(m, NAMEDATALEN+33,
+                         "not found from package context '%s'",
+                         packstr);
+            }
+        }
+        packstr[0] = '\0';
+    }
+
+    if (type1 == NULL)
+    {
+        typestr[0] = '\0';
+    }
+    else if (type2 == NULL)
+    {
+        snprintf(typestr, 2 * NAMEDATALEN + 7, "'%s'", type1);
+    }
+    else
+    {
+        snprintf(typestr, 2 * NAMEDATALEN + 7, "'%s','%s'", type1, type2);
+    }
+
+    elog(ERROR, "%s%sFunction '%s%s'(%s) %s",
+         ((caller != NULL) ? caller : ""), ((caller != NULL) ? ": " : ""),
+         packstr, funcname, typestr, mp);
+
+    return NULL;
 }
Index: src/backend/parser/parse_type.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/parser/parse_type.c,v
retrieving revision 1.36
diff -u -r1.36 parse_type.c
--- src/backend/parser/parse_type.c    2001/10/09 04:15:38    1.36
+++ src/backend/parser/parse_type.c    2001/10/17 16:41:32
@@ -289,7 +289,7 @@
     buf = (char *) palloc(strlen(str) + 16);
     sprintf(buf, "SELECT (NULL::%s)", str);

-    raw_parsetree_list = parser(buf, NULL, 0);
+    raw_parsetree_list = parser(buf, STANDARDPackageId, NULL, 0);

     /*
      * Make sure we got back exactly what we expected and no more;
Index: src/backend/parser/parser.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/parser/parser.c,v
retrieving revision 1.49
diff -u -r1.49 parser.c
--- src/backend/parser/parser.c    2001/03/22 03:59:42    1.49
+++ src/backend/parser/parser.c    2001/10/17 16:41:32
@@ -49,7 +49,7 @@
  * Returns a list of raw (un-analyzed) parse trees.
  */
 List *
-parser(char *str, Oid *typev, int nargs)
+parser(char *str, Oid packId, Oid *typev, int nargs)
 {
     int            yyresult;

@@ -58,7 +58,7 @@
     have_lookahead = false;

     scanner_init();
-    parser_init(typev, nargs);
+    parser_init(packId, typev, nargs);
     parse_expr_init();

     yyresult = yyparse();
Index: src/backend/parser/scan.l
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/parser/scan.l,v
retrieving revision 1.90
diff -u -r1.90 scan.l
--- src/backend/parser/scan.l    2001/09/07 23:17:14    1.90
+++ src/backend/parser/scan.l    2001/10/17 16:41:34
@@ -25,6 +25,7 @@
 #include "miscadmin.h"
 #include "nodes/parsenodes.h"
 #include "nodes/pg_list.h"
+#include "catalog/pg_package.h"
 #include "parser/gramparse.h"
 #include "parser/keywords.h"
 #include "parser/parse.h"
@@ -489,6 +490,66 @@
                     return FCONST;
                 }

+
+{identifier}\.{identifier}    {
+                    ScanKeyword       *keyword;
+                    int                i, retval;
+
+                    /* Break into two words */
+                    for (i = 0; yytext[i] != '.'; i++)
+                        ;
+                    yytext[i] = '\0';
+
+                    /* Is it a keyword? */
+                    keyword = ScanKeywordLookup((char*) yytext);
+                    if (keyword != NULL)
+                    {
+                        retval = keyword->value;
+                        yytext[i] = '.';
+                        goto exiting;
+                    }
+
+                    /*
+                     * No.  Convert the identifier to lower case, and truncate
+                     * if necessary.
+                     *
+                     * Note: here we use a locale-dependent case conversion,
+                     * which seems appropriate under SQL99 rules, whereas
+                     * the keyword comparison was NOT locale-dependent.
+                     */
+                    for (i = 0; yytext[i]; i++)
+                    {
+                        if (isupper((unsigned char) yytext[i]))
+                            yytext[i] = tolower((unsigned char) yytext[i]);
+                    }
+                    if (i >= NAMEDATALEN)
+                    {
+#ifdef MULTIBYTE
+                        int len;
+                        len = pg_mbcliplen(yytext,i,NAMEDATALEN-1);
+                        elog(NOTICE, "identifier \"%s\" will be truncated to \"%.*s\"",
+                             yytext, len, yytext);
+                        yytext[len] = '\0';
+#else
+                        elog(NOTICE, "identifier \"%s\" will be truncated to \"%.*s\"",
+                             yytext, NAMEDATALEN-1, yytext);
+                        yytext[NAMEDATALEN-1] = '\0';
+#endif
+                    }
+                    if ((yylval.ival = PackageIdFromName((char*)yytext)))
+                    {
+                        retval = PACKID;
+                        ++i;
+                    }
+                    else
+                    {
+                        yylval.str = pstrdup((char*) yytext);
+                        yytext[i] = '.';
+                        retval = IDENT;
+                    }
+exiting:            yyless(i);
+                    return retval;
+                }

 {identifier}    {
                     ScanKeyword       *keyword;
Index: src/backend/tcop/postgres.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/tcop/postgres.c,v
retrieving revision 1.234
diff -u -r1.234 postgres.c
--- src/backend/tcop/postgres.c    2001/09/27 16:29:12    1.234
+++ src/backend/tcop/postgres.c    2001/10/17 16:41:38
@@ -61,6 +61,7 @@
 #include "utils/guc.h"
 #include "utils/memutils.h"
 #include "utils/ps_status.h"
+#include "utils/syscache.h"
 #ifdef MULTIBYTE
 #include "mb/pg_wchar.h"
 #endif
@@ -126,7 +127,8 @@
 static int    InteractiveBackend(StringInfo inBuf);
 static int    SocketBackend(StringInfo inBuf);
 static int    ReadCommand(StringInfo inBuf);
-static List *pg_parse_query(char *query_string, Oid *typev, int nargs);
+static List *pg_parse_query(char *query_string, Oid packId, Oid *typev,
+                            int nargs);
 static List *pg_analyze_and_rewrite(Node *parsetree);
 static void start_xact_command(void);
 static void finish_xact_command(void);
@@ -340,6 +342,7 @@
  */
 List *
 pg_parse_and_rewrite(char *query_string,        /* string to execute */
+                     Oid packId,/* package we're in */
                      Oid *typev,/* parameter types */
                      int nargs) /* number of parameters */
 {
@@ -350,7 +353,7 @@
     /*
      * (1) parse the request string into a list of raw parse trees.
      */
-    raw_parsetree_list = pg_parse_query(query_string, typev, nargs);
+    raw_parsetree_list = pg_parse_query(query_string, packId, typev, nargs);

     /*
      * (2) Do parse analysis and rule rewrite.
@@ -381,7 +384,7 @@
  * commands are not processed any further than the raw parse stage.
  */
 static List *
-pg_parse_query(char *query_string, Oid *typev, int nargs)
+pg_parse_query(char *query_string, Oid packId, Oid *typev, int nargs)
 {
     List       *raw_parsetree_list;

@@ -391,7 +394,7 @@
     if (Show_parser_stats)
         ResetUsage();

-    raw_parsetree_list = parser(query_string, typev, nargs);
+    raw_parsetree_list = parser(query_string, packId, typev, nargs);

     if (Show_parser_stats)
     {
@@ -649,7 +652,7 @@
      * Do basic parsing of the query or queries (this should be safe even
      * if we are in aborted transaction state!)
      */
-    parsetree_list = pg_parse_query(query_string, NULL, 0);
+    parsetree_list = pg_parse_query(query_string, STANDARDPackageId, NULL, 0);

     /*
      * Switch back to execution context to enter the loop.
Index: src/backend/tcop/utility.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/tcop/utility.c,v
retrieving revision 1.120
diff -u -r1.120 utility.c
--- src/backend/tcop/utility.c    2001/10/12 00:07:14    1.120
+++ src/backend/tcop/utility.c    2001/10/17 16:41:39
@@ -499,13 +499,17 @@
                 {
                     case OPERATOR:
                         DefineOperator(stmt->defname,    /* operator name */
+                                       stmt->package,    /* owning package */
                                        stmt->definition);        /* rest */
                         break;
                     case TYPE_P:
-                        DefineType(stmt->defname, stmt->definition);
+                        DefineType(stmt->defname,
+                                   stmt->package,    /* owning package */
+                                   stmt->definition);
                         break;
                     case AGGREGATE:
                         DefineAggregate(stmt->defname,    /* aggregate name */
+                                        stmt->package,    /* owning package */
                                         stmt->definition);        /* rest */
                         break;
                 }
@@ -528,6 +532,12 @@
             CreateFunction((ProcedureStmt *) parsetree);
             break;

+        case T_PackageStmt: /* CREATE [OR REPLACE] PACKAGE */
+            set_ps_display(commandTag = "CREATE");
+
+            CreatePackage((PackageStmt *) parsetree);
+            break;
+
         case T_IndexStmt:        /* CREATE INDEX */
             {
                 IndexStmt  *stmt = (IndexStmt *) parsetree;
@@ -587,6 +597,16 @@
                 set_ps_display(commandTag = "DROP");

                 RemoveFunction(stmt->funcname, stmt->args);
+            }
+            break;
+
+        case T_RemovePackageStmt:
+            {
+                RemovePackageStmt *stmt = (RemovePackageStmt *) parsetree;
+
+                set_ps_display(commandTag = "DROP");
+
+                RemovePackage(stmt->packname);
             }
             break;

Index: src/backend/utils/Gen_fmgrtab.sh
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/utils/Gen_fmgrtab.sh,v
retrieving revision 1.20
diff -u -r1.20 Gen_fmgrtab.sh
--- src/backend/utils/Gen_fmgrtab.sh    2001/05/22 12:06:51    1.20
+++ src/backend/utils/Gen_fmgrtab.sh    2001/10/17 16:41:40
@@ -99,7 +99,7 @@
     -e 's/[     ]*).*$//' | \
 $AWK '
 /^#/        { print; next; }
-$4 == "12"    { print; next; }' > $CPPTMPFILE
+$5 == "12"    { print; next; }' > $CPPTMPFILE

 if [ $? -ne 0 ]; then
     cleanup
@@ -232,7 +232,7 @@
     Bool["f"] = "false"
 }
 { printf ("  { %d, \"%s\", %d, %s, %s, %s },\n"), \
-    $1, $(NF-1), $9, Bool[$8], Bool[$10], $(NF-1)
+    $1, $(NF-1), $10, Bool[$9], Bool[$11], $(NF-1)
 }' $RAWFILE >> "$$-$TABLEFILE"

 if [ $? -ne 0 ]; then
Index: src/backend/utils/adt/regproc.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/utils/adt/regproc.c,v
retrieving revision 1.63
diff -u -r1.63 regproc.c
--- src/backend/utils/adt/regproc.c    2001/08/21 16:36:04    1.63
+++ src/backend/utils/adt/regproc.c    2001/10/17 16:41:40
@@ -18,6 +18,7 @@
 #include "access/heapam.h"
 #include "catalog/catname.h"
 #include "catalog/indexing.h"
+#include "catalog/pg_package.h"
 #include "catalog/pg_proc.h"
 #include "miscadmin.h"
 #include "utils/builtins.h"
@@ -42,7 +43,7 @@
     char       *pro_name_or_oid = PG_GETARG_CSTRING(0);
     RegProcedure result = InvalidOid;
     int            matches = 0;
-    ScanKeyData skey[1];
+    ScanKeyData skey[2];

     if (pro_name_or_oid[0] == '-' && pro_name_or_oid[1] == '\0')
         PG_RETURN_OID(InvalidOid);
@@ -69,15 +70,34 @@
         RetrieveIndexResult indexRes;
         HeapTupleData tuple;
         Buffer        buffer;
+        Oid            pack = STANDARDPackageId;
+        char       *name = pro_name_or_oid,
+                   *p;

+        if (((p = strchr(name, '.')) != NULL) && ((p - name) < NAMEDATALEN))
+        {
+            char    scratch[NAMEDATALEN];
+
+            StrNCpy(scratch, name, p - name + 1);   /* +1 for trailing \0 */
+            if ((pack = PackageIdFromName(scratch)) == 0)
+                return InvalidOid;
+            name = p + 1;
+        }
+
         ScanKeyEntryInitialize(&skey[0], 0x0,
                                (AttrNumber) 1,
                                (RegProcedure) F_NAMEEQ,
-                               CStringGetDatum(pro_name_or_oid));
+                               CStringGetDatum(name));
+
+        ScanKeyEntryInitialize(&skey[1],
+                               (bits16) 0x0,
+                               (AttrNumber) 2,
+                               (RegProcedure) F_OIDEQ,
+                               ObjectIdGetDatum(pack));

         hdesc = heap_openr(ProcedureRelationName, AccessShareLock);
         idesc = index_openr(ProcedureNameIndex);
-        sd = index_beginscan(idesc, false, 1, skey);
+        sd = index_beginscan(idesc, false, 2, skey);

         while ((indexRes = index_getnext(sd, ForwardScanDirection)))
         {
@@ -101,6 +121,10 @@
     }
     else
     {
+        /*
+         * Don't worry about packages here - only standard is permitted in
+         * bootstrap
+         */
         Relation    proc;
         HeapScanDesc procscan;
         HeapTuple    proctup;
@@ -110,8 +134,14 @@
                                (RegProcedure) F_NAMEEQ,
                                CStringGetDatum(pro_name_or_oid));

+        ScanKeyEntryInitialize(&skey[1],
+                               (bits16) 0x0,
+                               (AttrNumber) 2,
+                               (RegProcedure) F_OIDEQ,
+                               ObjectIdGetDatum(STANDARDPackageId));
+
         proc = heap_openr(ProcedureRelationName, AccessShareLock);
-        procscan = heap_beginscan(proc, 0, SnapshotNow, 1, skey);
+        procscan = heap_beginscan(proc, 0, SnapshotNow, 2, skey);

         while (HeapTupleIsValid(proctup = heap_getnext(procscan, 0)))
         {
@@ -157,10 +187,24 @@

     if (HeapTupleIsValid(proctup))
     {
-        char       *s;
+        char       *s,
+                   *t;
+        NameData    packname;

         s = NameStr(((Form_pg_proc) GETSTRUCT(proctup))->proname);
-        StrNCpy(result, s, NAMEDATALEN);
+
+        /* check for being outside of "STANDARD" */
+        if (((Form_pg_proc) GETSTRUCT(proctup))->propack !=
+            STANDARDPackageId)
+        {
+            PackageNameFromID(((Form_pg_proc) GETSTRUCT(proctup))->propack,
+                              &packname);
+            t = NameStr(packname);
+            snprintf(result, NAMEDATALEN, "%s.%s", t, s);
+        }
+        else
+            StrNCpy(result, s, NAMEDATALEN);
+
         ReleaseSysCache(proctup);
     }
     else
Index: src/backend/utils/adt/sets.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/utils/adt/sets.c,v
retrieving revision 1.39
diff -u -r1.39 sets.c
--- src/backend/utils/adt/sets.c    2001/10/02 21:39:35    1.39
+++ src/backend/utils/adt/sets.c    2001/10/17 16:41:40
@@ -51,6 +51,7 @@
     char        repl[Natts_pg_proc];

     setoid = ProcedureCreate(procname,    /* changed below, after oid known */
+                             STANDARDPackageId, /* owning package */
                              false,        /* don't replace */
                              true,        /* returnsSet */
                              typename,    /* returnTypeName */
Index: src/backend/utils/cache/syscache.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/utils/cache/syscache.c,v
retrieving revision 1.65
diff -u -r1.65 syscache.c
--- src/backend/utils/cache/syscache.c    2001/08/21 16:36:05    1.65
+++ src/backend/utils/cache/syscache.c    2001/10/17 16:41:40
@@ -34,6 +34,8 @@
 #include "catalog/pg_language.h"
 #include "catalog/pg_opclass.h"
 #include "catalog/pg_operator.h"
+#include "catalog/pg_package.h"
+#include "catalog/pg_packglobal.h"
 #include "catalog/pg_proc.h"
 #include "catalog/pg_rewrite.h"
 #include "catalog/pg_shadow.h"
@@ -94,13 +96,23 @@

 static struct cachedesc cacheinfo[] = {
     {AggregateRelationName,        /* AGGNAME */
-        AggregateNameTypeIndex,
+        AggregateNamePackTypeIndex,
         0,
-        2,
+        3,
         {
             Anum_pg_aggregate_aggname,
+            Anum_pg_aggregate_aggpack,
             Anum_pg_aggregate_aggbasetype,
+            0
+    }},
+    {AggregateRelationName,     /* AGGOID */
+        AggregateOidIndex,
+        0,
+        1,
+        {
+            ObjectIdAttributeNumber,
             0,
+            0,
             0
     }},
     {AccessMethodRelationName,    /* AMNAME */
@@ -263,15 +275,45 @@
             0,
             0
     }},
+    {PackageRelationName,       /* PACKAGENAME */
+        PackageNameIndex,
+        0,
+        1,
+        {
+            Anum_pg_package_packname,
+            0,
+            0,
+            0
+    }},
+    {PackageRelationName,       /* PACKAGEOID */
+        PackageOidIndex,
+        0,
+        1,
+        {
+            ObjectIdAttributeNumber,
+            0,
+            0,
+            0
+    }},
+    {PackGlobalRelationName,    /* PACKAGEGLOBAL */
+        PackageGlobalIndex,
+        0,
+        3,
+        {
+            Anum_pg_packglobal_pglobalid,
+            Anum_pg_packglobal_pgloballang,
+            Anum_pg_packglobal_pglobalseq,
+            0
+    }},
     {ProcedureRelationName,        /* PROCNAME */
         ProcedureNameIndex,
         0,
-        3,
+        4,
         {
             Anum_pg_proc_proname,
+            Anum_pg_proc_propack,
             Anum_pg_proc_pronargs,
-            Anum_pg_proc_proargtypes,
-            0
+            Anum_pg_proc_proargtypes
     }},
     {ProcedureRelationName,        /* PROCOID */
         ProcedureOidIndex,
Index: src/backend/utils/fmgr/fmgr.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v
retrieving revision 1.55
diff -u -r1.55 fmgr.c
--- src/backend/utils/fmgr/fmgr.c    2001/10/06 23:21:44    1.55
+++ src/backend/utils/fmgr/fmgr.c    2001/10/17 16:41:42
@@ -156,6 +156,7 @@
         /*
          * Fast path for builtin functions: don't bother consulting pg_proc
          */
+        finfo->fn_pack = STANDARDPackageId;
         finfo->fn_nargs = fbp->nargs;
         finfo->fn_strict = fbp->strict;
         finfo->fn_retset = fbp->retset;
@@ -174,6 +175,7 @@
     procedureStruct = (Form_pg_proc) GETSTRUCT(procedureTuple);

     finfo->fn_nargs = procedureStruct->pronargs;
+    finfo->fn_pack = procedureStruct->propack;
     finfo->fn_strict = procedureStruct->proisstrict;
     finfo->fn_retset = procedureStruct->proretset;

Index: src/bin/pg_dump/Makefile
===================================================================
RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/Makefile,v
retrieving revision 1.31
diff -u -r1.31 Makefile
--- src/bin/pg_dump/Makefile    2001/03/24 13:21:14    1.31
+++ src/bin/pg_dump/Makefile    2001/10/17 16:41:43
@@ -14,7 +14,7 @@
 include $(top_builddir)/src/Makefile.global

 OBJS= pg_backup_archiver.o pg_backup_db.o pg_backup_custom.o pg_backup_files.o \
-       pg_backup_null.o pg_backup_tar.o
+       pg_backup_null.o pg_backup_package.o pg_backup_tar.o

 ifdef STRDUP
 OBJS+=$(top_builddir)/src/utils/strdup.o
@@ -34,8 +34,8 @@

 all: submake pg_dump pg_restore pg_dumpall

-pg_dump: pg_dump.o common.o $(OBJS) $(libpq_builddir)/libpq.a
-    $(CC) $(CFLAGS) pg_dump.o common.o $(OBJS) $(libpq) $(LDFLAGS) $(LIBS) -o $@
+pg_dump: pg_dump.o pg_packages.o common.o $(OBJS) $(libpq_builddir)/libpq.a
+    $(CC) $(CFLAGS) pg_dump.o pg_packages.o common.o $(OBJS) $(libpq) $(LDFLAGS) $(LIBS) -o $@

 pg_restore: pg_restore.o $(OBJS) $(libpq_builddir)/libpq.a
     $(CC) $(CFLAGS) pg_restore.o $(OBJS) $(libpq) $(LDFLAGS) $(LIBS) -o $@
Index: src/bin/pg_dump/common.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/common.c,v
retrieving revision 1.58
diff -u -r1.58 common.c
--- src/bin/pg_dump/common.c    2001/10/03 20:54:21    1.58
+++ src/bin/pg_dump/common.c    2001/10/17 16:41:43
@@ -42,6 +42,9 @@
 #include "strdup.h"
 #endif

+/* XXX Need a better place for this */
+#define STANDARDPackageId 10
+
 static char **findParentsByOid(TableInfo *tbinfo, int numTables,
                  InhInfo *inhinfo, int numInherits,
                  const char *oid,
@@ -58,14 +61,22 @@
  *
  * Can return various special cases for oid 0.
  *
+ * if depoid is non-null, strdup the right dependence oid and store it there.
+ * For non-package types, this oid is just the oid passed in. But for
+ * types in a package, it's the oid of the package.
+ *
  * NOTE:  should hash this, but just do linear search for now
  */

 char *
-findTypeByOid(TypeInfo *tinfo, int numTypes, const char *oid, OidOptions opts)
+findTypeByOid(TypeInfo *tinfo, int numTypes, PackInfo *pinfo, int numPacks,
+              const char **depoid, const char *oid, OidOptions opts)
 {
-    int            i;
+    int            i, j;

+    if (depoid != NULL)
+        *depoid = NULL;
+
     if (strcmp(oid, "0") == 0)
     {
         if ((opts & zeroAsOpaque) != 0)
@@ -80,6 +91,8 @@
     {
         if (strcmp(tinfo[i].oid, oid) == 0)
         {
+            if ((atooid(oid) > g_last_builtin_oid) && (depoid != NULL))
+                *depoid = strdup(oid);
             if ((opts & useBaseTypeName) != 0)
                 return (char *) fmtId(tinfo[i].typname, false);
             else
@@ -87,6 +100,18 @@
         }
     }

+    for (j = 0; j < numPacks; j++)
+        for (i = 0; i < pinfo[j].numTypes; i++)
+            if (strcmp(pinfo[j].packTypes[i].oid, oid) == 0)
+            {
+                if (depoid != NULL)
+                    *depoid = strdup(pinfo[j].oid);
+                if ((opts & useBaseTypeName) != 0)
+                    return (char *) fmtId(pinfo[j].packTypes[i].typname, false);
+                else
+                    return pinfo[j].packTypes[i].typedefn;
+            }
+
     /* no suitable type name was found */
     return (NULL);
 }
@@ -100,9 +125,10 @@
  *
  */
 char *
-findOprByOid(OprInfo *oprinfo, int numOprs, const char *oid)
+findOprByOid(OprInfo *oprinfo, int numOprs, PackInfo *pinfo, int numPacks,
+             const char *oid)
 {
-    int            i;
+    int            i, j;

     for (i = 0; i < numOprs; i++)
     {
@@ -110,6 +136,13 @@
             return oprinfo[i].oprname;
     }

+    for (j = 0; j < numPacks; j++)
+        for (i = 0; i < pinfo[j].numOprs; i++)
+        {
+            if (strcmp(pinfo[j].packOprs[i].oid, oid) == 0)
+                return pinfo[j].packOprs[i].oprname;
+        }
+
     /* should never get here */
     write_msg(NULL, "failed sanity check, operator with oid %s not found\n", oid);

@@ -281,6 +314,7 @@
     int            numAggregates;
     int            numOperators;
     int            numIndexes;
+    int            numPackages;
     TypeInfo   *tinfo = NULL;
     FuncInfo   *finfo = NULL;
     AggInfo    *agginfo = NULL;
@@ -288,22 +322,28 @@
     InhInfo    *inhinfo = NULL;
     OprInfo    *oprinfo = NULL;
     IndInfo    *indinfo = NULL;
+    PackInfo   *packinfo = NULL;

     if (g_verbose)
+        fprintf(stderr, "%s reading package information %s\n",
+                   g_comment_start, g_comment_end);
+    packinfo = getPackages(&numPackages, &g_has_packages);
+
+    if (g_verbose)
         write_msg(NULL, "reading user-defined types\n");
-    tinfo = getTypes(&numTypes);
+    tinfo = getTypes(&numTypes, STANDARDPackageId);

     if (g_verbose)
         write_msg(NULL, "reading user-defined functions\n");
-    finfo = getFuncs(&numFuncs);
+    finfo = getFuncs(&numFuncs, STANDARDPackageId);

     if (g_verbose)
         write_msg(NULL, "reading user-defined aggregate functions\n");
-    agginfo = getAggregates(&numAggregates);
+    agginfo = getAggregates(&numAggregates, STANDARDPackageId);

     if (g_verbose)
         write_msg(NULL, "reading user-defined operators\n");
-    oprinfo = getOperators(&numOperators);
+    oprinfo = getOperators(&numOperators, STANDARDPackageId);

     if (g_verbose)
         write_msg(NULL, "reading user-defined tables\n");
@@ -332,11 +372,28 @@
         dumpDBComment(fout);
     }

+    if (!tablename && !dataOnly)
+    {
+        if (g_verbose)
+            write_msg(NULL, "dumping out user-defined procedural languages\n");
+        dumpProcLangs(fout, finfo, numFuncs, tinfo, numTypes, packinfo,
+                      numPackages);
+    }
+
+    if (!tablename && fout && g_has_packages)
+    {
+        if (g_verbose)
+            write_msg(NULL, "dumping out user-defined packages \n");
+        dumpPackages(fout, packinfo, numPackages, finfo, numFuncs,
+                     tinfo, numTypes);
+    }
+
     if (!tablename && fout)
     {
         if (g_verbose)
             write_msg(NULL, "dumping out user-defined types\n");
-        dumpTypes(fout, finfo, numFuncs, tinfo, numTypes);
+        dumpTypes(fout, finfo, numFuncs, tinfo, numTypes,
+                  packinfo, numPackages, 0);
     }

     if (g_verbose)
@@ -355,29 +412,25 @@
     if (!tablename && !dataOnly)
     {
         if (g_verbose)
-            write_msg(NULL, "dumping out user-defined procedural languages\n");
-        dumpProcLangs(fout, finfo, numFuncs, tinfo, numTypes);
-    }
-
-    if (!tablename && !dataOnly)
-    {
-        if (g_verbose)
             write_msg(NULL, "dumping out user-defined functions\n");
-        dumpFuncs(fout, finfo, numFuncs, tinfo, numTypes);
+        dumpFuncs(fout, finfo, numFuncs, tinfo, numTypes, packinfo,
+                  numPackages);
     }

     if (!tablename && !dataOnly)
     {
         if (g_verbose)
             write_msg(NULL, "dumping out user-defined aggregate functions\n");
-        dumpAggs(fout, agginfo, numAggregates, tinfo, numTypes);
+        dumpAggs(fout, agginfo, numAggregates, tinfo, numTypes, packinfo,
+                 numPackages, 0);
     }

     if (!tablename && !dataOnly)
     {
         if (g_verbose)
             write_msg(NULL, "dumping out user-defined operators\n");
-        dumpOprs(fout, oprinfo, numOperators, tinfo, numTypes);
+        dumpOprs(fout, oprinfo, numOperators, tinfo, numTypes, packinfo,
+                 numPackages, 0);
     }

     *numTablesPtr = numTables;
@@ -568,18 +621,56 @@
  *      finds the index (in finfo) of the function with the given name
  *    returns -1 if not found
  *
+ *    If oid is not NULL, strdup the oid of the found function and store
+ *    it at *oid.
+ *
+ *      also handle the case of a function being in a package. In that case,
+ *    if oid != NULL, we make sure it is in the package, strdup the package
+ *    oid to *oid, and then return -2.
+ *
  * NOTE:  should hash this, but just do linear search for now
  */

 int
-findFuncByName(FuncInfo *finfo, int numFuncs, const char *name)
+findFuncByName(FuncInfo *finfo, int numFuncs, PackInfo *pinfo, int numPacks,
+               const char **oid, const char *name)
 {
     int            i;
+    char       *p;
+    char        scratch[NAMEDATALEN];
+
+    if ((p = strchr(name, '.')) != NULL)
+    {
+        StrNCpy(scratch, name, p - name + 1);
+        name = p + 1;

+        for (i = 0; i < numPacks; i++)
+            if (strcmp(scratch, pinfo[i].packname) == 0)
+            {
+                int    j;
+
+                for (j = 0; j < pinfo[i].numFuncs; j++)
+                    if (strcmp(name, pinfo[i].packFuncs[j].proname) == 0)
+                    {
+                        if (oid != NULL)
+                            *oid = strdup(pinfo[i].packFuncs[j].oid);
+                        return -2;
+                    }
+
+                return -1;
+            }
+
+        return -1;
+    }
+
     for (i = 0; i < numFuncs; i++)
     {
         if (strcmp(finfo[i].proname, name) == 0)
+        {
+            if (oid != NULL)
+                *oid = strdup(finfo[i].oid);
             return i;
+        }
     }
     return -1;
 }
Index: src/bin/pg_dump/pg_backup.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_backup.h,v
retrieving revision 1.15
diff -u -r1.15 pg_backup.h
--- src/bin/pg_dump/pg_backup.h    2001/10/03 21:58:28    1.15
+++ src/bin/pg_dump/pg_backup.h    2001/10/17 16:41:43
@@ -60,7 +60,8 @@
     archCustom = 1,
     archFiles = 2,
     archTar = 3,
-    archNull = 4
+    archNull = 4,
+    archPackage = 5
 } ArchiveFormat;

 /*
@@ -192,5 +193,8 @@
 extern int    archprintf(Archive *AH, const char *fmt, ...)
 /* This extension allows gcc to check the format string */
 __attribute__((format(printf, 2, 3)));
+
+/* Use routine for archPackage archiver */
+extern void Package_Emit(Archive *out, Archive *gatherer);

 #endif
Index: src/bin/pg_dump/pg_backup_archiver.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.c,v
retrieving revision 1.33
diff -u -r1.33 pg_backup_archiver.c
--- src/bin/pg_dump/pg_backup_archiver.c    2001/09/21 21:58:30    1.33
+++ src/bin/pg_dump/pg_backup_archiver.c    2001/10/17 16:41:45
@@ -1654,6 +1654,10 @@
             InitArchiveFmt_Tar(AH);
             break;

+        case archPackage:
+            InitArchiveFmt_Package(AH);
+            break;
+
         default:
             die_horribly(AH, modulename, "unrecognized file format '%d'\n", fmt);
     }
Index: src/bin/pg_dump/pg_backup_archiver.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.h,v
retrieving revision 1.37
diff -u -r1.37 pg_backup_archiver.h
--- src/bin/pg_dump/pg_backup_archiver.h    2001/08/22 20:23:23    1.37
+++ src/bin/pg_dump/pg_backup_archiver.h    2001/10/17 16:41:45
@@ -303,6 +303,7 @@
 extern void InitArchiveFmt_Custom(ArchiveHandle *AH);
 extern void InitArchiveFmt_Files(ArchiveHandle *AH);
 extern void InitArchiveFmt_Null(ArchiveHandle *AH);
+extern void InitArchiveFmt_Package(ArchiveHandle *AH);
 extern void InitArchiveFmt_Tar(ArchiveHandle *AH);

 extern int    isValidTarHeader(char *header);
Index: src/bin/pg_dump/pg_backup_package.c
===================================================================
RCS file: pg_backup_package.c
diff -N pg_backup_package.c
--- /dev/null    Wed Oct 17 08:50:28 2001
+++ pg_backup_package.c    Wed Oct 17 11:41:45 2001
@@ -0,0 +1,216 @@
+/*-------------------------------------------------------------------------
+ *
+ * pg_backup_package.c
+ *
+ *    Implementation of an archive that is never saved; it is used by
+ *    dumpPackages() to gather the different components of a package
+ *    (functions, variables, types, operators, and aggregates) so that
+ *    it can generate one TOC entry for the whole package.
+ *
+ *    Based on pg_backup_null.c
+ *
+ *    See the headers to pg_restore for more details.
+ *
+ * Copyright (c) 2001, Zembu Inc.
+ *
+ * Copyright (c) 2000, Philip Warner
+ *        Rights are granted to use this software in any way so long
+ *        as this notice is not removed.
+ *
+ *    The author is not responsible for loss or damages that may
+ *    result from it's use.
+ *
+ *
+ * IDENTIFICATION
+ *        $Header: /home/projects/pgsql/cvsroot/pgsql/src/bin/pg_dump/pg_backup_null.c,v 1.6 2001/03/24 23:11:14 tgl
Exp$ 
+ *
+ *
+ *-------------------------------------------------------------------------
+ */
+
+#include "pg_backup.h"
+#include "pg_backup_archiver.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>                /* for dup */
+
+static int    _WriteData(ArchiveHandle *AH, const void *data, int dLen);
+static void _EndData(ArchiveHandle *AH, TocEntry *te);
+static int    _WriteByte(ArchiveHandle *AH, const int i);
+static int    _WriteBuf(ArchiveHandle *AH, const void *buf, int len);
+static void _CloseArchive(ArchiveHandle *AH);
+static void _PrintTocData(ArchiveHandle *AH, TocEntry *te, RestoreOptions *ropt);
+
+/*
+ *    Initializer
+ */
+void
+InitArchiveFmt_Package(ArchiveHandle *AH)
+{
+    /* Assuming static functions, this can be copied for each format. */
+    AH->WriteDataPtr = _WriteData;
+    AH->EndDataPtr = _EndData;
+    AH->WriteBytePtr = _WriteByte;
+    AH->WriteBufPtr = _WriteBuf;
+    AH->ClosePtr = _CloseArchive;
+    AH->PrintTocDataPtr = _PrintTocData;
+
+    /*
+     * Now prevent reading...
+     */
+    if (AH->mode == archModeRead)
+        die_horribly(AH, NULL, "this format can not be read\n");
+
+}
+
+/*
+ * - Start a new TOC entry
+ */
+
+/*------
+ * Called by dumper via archiver from within a data dump routine
+ * As at V1.3, this is only called for COPY FROM dfata, and BLOB data
+ *------
+ */
+static int
+_WriteData(ArchiveHandle *AH, const void *data, int dLen)
+{
+    /* Just do nothing */
+    return dLen;
+}
+
+static void
+_EndData(ArchiveHandle *AH, TocEntry *te)
+{
+    /* Just do nothing */
+}
+
+/*------
+ * Called as part of a RestoreArchive call; for the NULL archive, this
+ * just sends the data for a given TOC entry to the output.
+ * Shouldn't be called.
+ *------
+ */
+static void
+_PrintTocData(ArchiveHandle *AH, TocEntry *te, RestoreOptions *ropt)
+{
+    if (te->dataDumper)
+    {
+        AH->currToc = te;
+        (*te->dataDumper) ((Archive *) AH, te->oid, te->dataDumperArg);
+        AH->currToc = NULL;
+    }
+}
+
+static int
+_WriteByte(ArchiveHandle *AH, const int i)
+{
+    /* Don't do anything */
+    return 0;
+}
+
+static int
+_WriteBuf(ArchiveHandle *AH, const void *buf, int len)
+{
+    /* Don't do anything */
+    return len;
+}
+
+static void
+_CloseArchive(ArchiveHandle *AH)
+{
+    /* Nothing to do */
+}
+
+/* Public */
+/*
+ * Package_Emit - Take all the TOC entries in the gatherer and make them into
+ *        one large TOC entry added to out.
+ *
+ *    Used by dumpPackage() so that we can re-use dumpOneFunc(), dumpTypes(),
+ *    dumpOprs(), and dumpAggs(). They just "archive" to an archive of this
+ *    type, and then this routine turns all of the archivings into one large
+ *    ArchiveEntry() call.
+ *
+ *    Also has two implicit behaviors. 1) After we ArchiveEntry() the package,
+ *    we free all of the TOC entries allocated so far. 2) Append a trailing
+ *    ';' to the create string before making the aggregate TOC entry. Saves
+ *    allocating a TOC entry just to add the ';'.
+ *
+ *    The only thing we look at in the second and subsequent TOC entries is
+ *    the defn string.
+ */
+void
+Package_Emit(Archive *out, Archive *gathererX)
+{
+    ArchiveHandle  *gatherer = (ArchiveHandle *)gathererX;
+    PQExpBuffer        q;
+    TocEntry       *te = gatherer->toc->next,
+                   *teOld;
+
+    q = createPQExpBuffer();
+
+    while (te != gatherer->toc)
+    {
+        appendPQExpBuffer(q, "%s", te->defn);
+        te = te->next;
+    }
+
+    appendPQExpBuffer(q, ";\n");
+
+    te = gatherer->toc->next;
+
+    ArchiveEntry(out, te->oid, te->name, te->desc, te->depOid, q->data,
+                 te->dropStmt, te->copyStmt, te->owner, te->dataDumper,
+                 te->dataDumperArg);
+
+    /* Start freeing, with the first te special as depOid is not copied */
+
+    if (te == gatherer->toc)    /* ArchiveEntry wasn't called on gatherer! */
+        return;
+
+    free(te->name);
+    free(te->desc);
+    free(te->oid);
+    free(te->defn);
+    free(te->dropStmt);
+    free(te->owner);
+    if (te->copyStmt)
+        free(te->copyStmt);
+    teOld = te;
+    te = te->next;
+    free(teOld);
+
+    while (te != gatherer->toc)
+    {
+        free(te->name);
+        free(te->desc);
+        free(te->oid);
+        free(te->defn);
+        free(te->dropStmt);
+        free(te->owner);
+        if (te->depOid)
+        {
+            int i;
+
+            for (i = 0; (*te->depOid)[i]; i++)
+                free((void *)((*te->depOid)[i]));
+
+            free(te->depOid);
+        }
+        if (te->copyStmt)
+            free(te->copyStmt);
+        teOld = te;
+        te = te->next;
+        free(teOld);
+    }
+
+    /*
+     * Now that we've deleted all of the new TOC entries, fix the pointers
+     * back up.
+     */
+
+    gatherer->toc->next = gatherer->toc;
+    gatherer->toc->prev = gatherer->toc;
+}
Index: src/bin/pg_dump/pg_dump.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v
retrieving revision 1.233
diff -u -r1.233 pg_dump.c
--- src/bin/pg_dump/pg_dump.c    2001/10/03 20:54:21    1.233
+++ src/bin/pg_dump/pg_dump.c    2001/10/17 16:41:48
@@ -10,6 +10,7 @@
  *    pg_dump will read the system catalogs in a database and
  *    dump out a script that reproduces
  *    the schema of the database in terms of
+ *          user-defined packages
  *          user-defined types
  *          user-defined functions
  *          tables
@@ -73,9 +74,6 @@
     /* only checks for 'opts == CONV_ALL' anyway. */
 } formatLiteralOptions;

-static void dumpComment(Archive *fout, const char *target, const char *oid,
-                        const char *classname, int subid,
-                        const char *((*deps)[]));
 static void dumpSequence(Archive *fout, TableInfo tbinfo, const bool schemaOnly, const bool dataOnly);
 static void dumpACL(Archive *fout, TableInfo tbinfo);
 static void dumpTriggers(Archive *fout, const char *tablename,
@@ -84,8 +82,6 @@
           TableInfo *tblinfo, int numTables);
 static void formatStringLiteral(PQExpBuffer buf, const char *str, const formatLiteralOptions opts);
 static void clearTableInfo(TableInfo *, int);
-static void dumpOneFunc(Archive *fout, FuncInfo *finfo, int i,
-            TypeInfo *tinfo, int numTypes);
 static Oid    findLastBuiltinOid_V71(const char *);
 static Oid    findLastBuiltinOid_V70(void);
 static void setMaxOid(Archive *fout);
@@ -108,6 +104,7 @@
 Oid            g_last_builtin_oid; /* value of the last builtin oid */
 Archive    *g_fout;                /* the script file */
 PGconn       *g_conn;                /* the database connection */
+bool        g_has_packages;        /* backend has package support */

 bool        force_quotes;        /* User wants to suppress double-quotes */
 bool        dumpData;            /* dump data using proper insert strings */
@@ -1301,7 +1298,7 @@
  *
  */
 TypeInfo   *
-getTypes(int *numTypes)
+getTypes(int *numTypes, Oid packId)
 {
     PGresult   *res;
     int            ntups;
@@ -1354,6 +1351,8 @@
                         "format_type(pg_type.oid, NULL) as typedefn "
                         "from pg_type");
     }
+    if (g_has_packages)
+        appendPQExpBuffer(query, " where typpack = '%u'::oid", packId);

     res = PQexec(g_conn, query->data);
     if (!res ||
@@ -1390,6 +1389,7 @@
     for (i = 0; i < ntups; i++)
     {
         tinfo[i].oid = strdup(PQgetvalue(res, i, i_oid));
+        /* tinfo[i].numericoid = atoi(tinfo[i].oid); */
         tinfo[i].typowner = strdup(PQgetvalue(res, i, i_typowner));
         tinfo[i].typname = strdup(PQgetvalue(res, i, i_typname));
         tinfo[i].typlen = strdup(PQgetvalue(res, i, i_typlen));
@@ -1432,6 +1432,8 @@
             tinfo[i].isDefined = 0;
         else
             tinfo[i].isDefined = 1;
+
+        tinfo[i].dumped = 0;
     }

     *numTypes = ntups;
@@ -1451,7 +1453,7 @@
  *    numOprs is set to the number of operators read in
  */
 OprInfo    *
-getOperators(int *numOprs)
+getOperators(int *numOprs, Oid packId)
 {
     PGresult   *res;
     int            ntups;
@@ -1485,6 +1487,8 @@
                       "oprcanhash, oprlsortop, oprrsortop, "
     "(select usename from pg_user where oprowner = usesysid) as usename "
                       "from pg_operator");
+    if (g_has_packages)
+        appendPQExpBuffer(query, " where oprpack = '%u'::oid", packId);

     res = PQexec(g_conn, query->data);
     if (!res ||
@@ -1813,7 +1817,7 @@
  * numAggs is set to the number of aggregates read in
  */
 AggInfo    *
-getAggregates(int *numAggs)
+getAggregates(int *numAggs, Oid packId)
 {
     PGresult   *res;
     int            ntups;
@@ -1849,6 +1853,8 @@
             "(select usename from pg_user where aggowner = usesysid) as usename "
             "from pg_aggregate");
     }
+    if (g_has_packages)
+        appendPQExpBuffer(query, " where aggpack = '%u'::oid", packId);

     res = PQexec(g_conn, query->data);
     if (!res ||
@@ -1909,7 +1915,7 @@
  *
  */
 FuncInfo   *
-getFuncs(int *numFuncs)
+getFuncs(int *numFuncs, Oid packId)
 {
     PGresult   *res;
     int            ntups;
@@ -1952,6 +1958,8 @@
                 "where pg_proc.oid > '%u'::oid",
                       g_last_builtin_oid);
     }
+    if (g_has_packages)
+        appendPQExpBuffer(query, " and propack = '%u'::oid", packId);

     res = PQexec(g_conn, query->data);
     if (!res ||
@@ -2465,10 +2473,17 @@
                      * looking in FuncInfo*
                      */
                     resetPQExpBuffer(query);
+/*
+ * Keep just in case version 6.X didn't have regproc support, and we need to
+ * add something for that case.
                     appendPQExpBuffer(query,
                                       "SELECT proname from pg_proc "
                                       "where pg_proc.oid = '%s'::oid",
                                       tgfuncoid);
+ */
+                    appendPQExpBuffer(query,
+                                      "SELECT '%s'::regproc",
+                                      tgfuncoid);

                     r = PQexec(g_conn, query->data);
                     if (!r || PQresultStatus(r) != PGRES_TUPLES_OK)
@@ -2960,7 +2975,7 @@
  *------------------------------------------------------------------
 */

-static void
+void
 dumpComment(Archive *fout, const char *target, const char *oid,
             const char *classname, int subid,
             const char *((*deps)[]))
@@ -3079,8 +3094,8 @@
  *
  */
 void
-dumpTypes(Archive *fout, FuncInfo *finfo, int numFuncs,
-          TypeInfo *tinfo, int numTypes)
+dumpTypes(Archive *fout, FuncInfo *finfo, int numFuncs, TypeInfo *tinfo,
+          int numTypes, PackInfo *pinfo, int numPacks, int format)
 {
     int            i;
     PQExpBuffer q = createPQExpBuffer();
@@ -3108,33 +3123,51 @@
             (strcmp(tinfo[i].typinput, "array_in") == 0))
             continue;

+        /* skip it if it has already been dumped */
+        if (tinfo[i].dumped)
+            continue;
+        else
+            tinfo[i].dumped = 1;
+
         deps = malloc(sizeof(char*) * 10);
         depIdx = 0;

         /*
          * before we create a type, we need to create the input and output
          * functions for it, if they haven't been created already
+         *
+         * We get back a -2 if the function in question is in a package. In
+         * that case, make a dependency on the package. Note that
+         * findFuncByName() helps with this.
          */
-        funcInd = findFuncByName(finfo, numFuncs, tinfo[i].typinput);
+        funcInd = findFuncByName(finfo, numFuncs, pinfo, numPacks,
+                                 &((*deps)[depIdx]), tinfo[i].typinput);
         if (funcInd != -1)
         {
-            (*deps)[depIdx++] = strdup(finfo[funcInd].oid);
-            dumpOneFunc(fout, finfo, funcInd, tinfo, numTypes);
+            depIdx++;
+            if (funcInd != -2)
+                dumpOneFunc(fout, finfo, funcInd, tinfo, numTypes, pinfo,
+                            numPacks, 0);
         }

-        funcInd = findFuncByName(finfo, numFuncs, tinfo[i].typoutput);
+        funcInd = findFuncByName(finfo, numFuncs, pinfo, numPacks,
+                                 &((*deps)[depIdx]), tinfo[i].typoutput);
         if (funcInd != -1)
         {
-            (*deps)[depIdx++] = strdup(finfo[funcInd].oid);
-            dumpOneFunc(fout, finfo, funcInd, tinfo, numTypes);
+            depIdx++;
+            if (funcInd != -2)
+                dumpOneFunc(fout, finfo, funcInd, tinfo, numTypes, pinfo,
+                            numPacks, 0);
         }

         resetPQExpBuffer(delq);
         appendPQExpBuffer(delq, "DROP TYPE %s;\n", fmtId(tinfo[i].typname, force_quotes));

         resetPQExpBuffer(q);
+        if (format == 0)
+            appendPQExpBuffer(q, "CREATE ");
         appendPQExpBuffer(q,
-                          "CREATE TYPE %s "
+                          "TYPE %s "
                           "( internallength = %s, externallength = %s,",
                           fmtId(tinfo[i].typname, force_quotes),
                           (strcmp(tinfo[i].typlen, "-1") == 0) ?
@@ -3161,7 +3194,8 @@
         {
             char       *elemType;

-            elemType = findTypeByOid(tinfo, numTypes, tinfo[i].typelem, zeroAsOpaque);
+            elemType = findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL,
+                                     tinfo[i].typelem, zeroAsOpaque);
             if (elemType == NULL)
             {
                 write_msg(NULL, "notice: array type %s - type for elements (oid %s) is not dumped\n",
@@ -3194,15 +3228,23 @@
             appendPQExpBuffer(q, ", storage = main");

         if (tinfo[i].passedbyvalue)
-            appendPQExpBuffer(q, ", passedbyvalue);\n");
+            appendPQExpBuffer(q, ", passedbyvalue)");
         else
-            appendPQExpBuffer(q, ");\n");
+            appendPQExpBuffer(q, ")");

+        if (format == 0)
+            appendPQExpBuffer(q, ";\n");
+        else
+            appendPQExpBuffer(q, "\n");
+
         (*deps)[depIdx++] = NULL; /* End of List */

         ArchiveEntry(fout, tinfo[i].oid, tinfo[i].typname, "TYPE", deps,
                   q->data, delq->data, "", tinfo[i].usename, NULL, NULL);

+        if (format != 0)
+            continue;
+
         /*** Dump Type Comments ***/

         resetPQExpBuffer(q);
@@ -3222,7 +3264,7 @@
  */
 void
 dumpProcLangs(Archive *fout, FuncInfo *finfo, int numFuncs,
-              TypeInfo *tinfo, int numTypes)
+              TypeInfo *tinfo, int numTypes, PackInfo *pinfo, int numPacks)
 {
     PGresult   *res;
     PQExpBuffer query = createPQExpBuffer();
@@ -3281,7 +3323,7 @@
             exit_nicely();
         }

-        dumpOneFunc(fout, finfo, fidx, tinfo, numTypes);
+        dumpOneFunc(fout, finfo, fidx, tinfo, numTypes, pinfo, numPacks, 0);

         lanname = PQgetvalue(res, i, i_lanname);
         lancompiler = PQgetvalue(res, i, i_lancompiler);
@@ -3320,12 +3362,12 @@
  */
 void
 dumpFuncs(Archive *fout, FuncInfo *finfo, int numFuncs,
-          TypeInfo *tinfo, int numTypes)
+          TypeInfo *tinfo, int numTypes, PackInfo *pinfo, int numPacks)
 {
     int            i;

     for (i = 0; i < numFuncs; i++)
-        dumpOneFunc(fout, finfo, i, tinfo, numTypes);
+        dumpOneFunc(fout, finfo, i, tinfo, numTypes, pinfo, numPacks, 0);
 }

 /*
@@ -3333,11 +3375,15 @@
  *      dump out only one function,  the index of which is given in the third
  *    argument
  *
+ *  format indicates the context of the dump. 0 is a CREATE FUNCTION, and
+ * all other values are in a package body. 1 is a package function
+ * (FUNCTION), and 2 an initialization routine (BODY AS)
  */

-static void
+void
 dumpOneFunc(Archive *fout, FuncInfo *finfo, int i,
-            TypeInfo *tinfo, int numTypes)
+            TypeInfo *tinfo, int numTypes, PackInfo *pinfo, int numPacks,
+            int format)
 {
     PQExpBuffer q = createPQExpBuffer();
     PQExpBuffer fn = createPQExpBuffer();
@@ -3350,6 +3396,8 @@
     int            j;
     int            i_lanname;
     char        query[256];
+    const char *((*deps)[]);
+    int            depIdx = 0;

     char       *listSep;
     char       *listSepComma = ",";
@@ -3363,6 +3411,11 @@

     /* becomeUser(fout, finfo[i].usename); */

+    if (format == 0)
+        deps = malloc(sizeof(char*) * (finfo[i].nargs + 2));
+    else
+        deps = NULL;
+
     sprintf(query, "SELECT lanname FROM pg_language WHERE oid = '%u'::oid",
             finfo[i].lang);
     res = PQexec(g_conn, query);
@@ -3382,6 +3435,14 @@

     i_lanname = PQfnumber(res, "lanname");

+    if ((format == 0) && (finfo[i].lang > g_last_builtin_oid))
+    {
+        char    scratch[15];
+
+        snprintf(scratch, 15, "%u", finfo[i].lang);
+        (*deps)[depIdx++] = strdup(scratch);
+    }
+
     /*
      * See backend/commands/define.c for details of how the 'AS' clause is
      * used.
@@ -3410,35 +3471,47 @@
     PQclear(res);

     resetPQExpBuffer(fn);
-    appendPQExpBuffer(fn, "%s (", fmtId(finfo[i].proname, force_quotes));
-    for (j = 0; j < finfo[i].nargs; j++)
+    if (format != 2)
     {
-        char       *typname;
-
-        typname = findTypeByOid(tinfo, numTypes, finfo[i].argtypes[j], zeroAsOpaque);
-        if (typname == NULL)
+        appendPQExpBuffer(fn, "%s (", fmtId(finfo[i].proname, force_quotes));
+        for (j = 0; j < finfo[i].nargs; j++)
         {
-            write_msg(NULL, "WARNING: function \"%s\" not dumped\n",
-                      finfo[i].proname);
+            char       *typname;

-            write_msg(NULL, "reason: data type name of argument %d (oid %s) not found\n",
-                       j, finfo[i].argtypes[j]);
-            goto done;
+            if (format == 0)
+                typname = findTypeByOid(tinfo, numTypes, pinfo, numPacks,
+                                        &((*deps)[depIdx]),
+                                        finfo[i].argtypes[j], zeroAsOpaque);
+            else
+                typname = findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL,
+                                        finfo[i].argtypes[j], zeroAsOpaque);
+            if (typname == NULL)
+            {
+                write_msg(NULL, "WARNING: function \"%s\" not dumped\n",
+                          finfo[i].proname);
+
+                write_msg(NULL, "reason: data type name of argument %d (oid %s) not found\n",
+                           j, finfo[i].argtypes[j]);
+                goto done;
+            }
+            if ((format == 0) && ((*deps)[depIdx] != NULL))
+                depIdx++;
+
+            appendPQExpBuffer(fn, "%s%s",
+                              (j > 0) ? "," : "",
+                              typname);
+            appendPQExpBuffer(fnlist, "%s%s",
+                              (j > 0) ? "," : "",
+                              typname);
         }
-
-        appendPQExpBuffer(fn, "%s%s",
-                          (j > 0) ? "," : "",
-                          typname);
-        appendPQExpBuffer(fnlist, "%s%s",
-                          (j > 0) ? "," : "",
-                          typname);
+        appendPQExpBuffer(fn, ")");
     }
-    appendPQExpBuffer(fn, ")");

     resetPQExpBuffer(delqry);
     appendPQExpBuffer(delqry, "DROP FUNCTION %s;\n", fn->data);

-    rettypename = findTypeByOid(tinfo, numTypes, finfo[i].prorettype, zeroAsOpaque);
+    rettypename = findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL,
+                                finfo[i].prorettype, zeroAsOpaque);

     if (rettypename == NULL)
     {
@@ -3451,11 +3524,27 @@
     }

     resetPQExpBuffer(q);
-    appendPQExpBuffer(q, "CREATE FUNCTION %s ", fn->data);
-    appendPQExpBuffer(q, "RETURNS %s%s %s LANGUAGE ",
-                      (finfo[i].retset) ? "SETOF " : "",
-                      rettypename,
-                      asPart->data);
+    switch (format) {
+        case 0:
+            appendPQExpBuffer(q, "CREATE FUNCTION");
+            break;
+
+        case 1:
+            appendPQExpBuffer(q, "FUNCTION");
+            break;
+
+        case 2:
+            appendPQExpBuffer(q, "BODY");
+            break;
+    }
+    appendPQExpBuffer(q, " %s ", fn->data);
+    if (format != 2)
+    {
+        appendPQExpBuffer(q, "RETURNS %s%s",
+                          (finfo[i].retset) ? "SETOF " : "",
+                          rettypename);
+    }
+    appendPQExpBuffer(q, " %s LANGUAGE ", asPart->data);
     formatStringLiteral(q, func_lang, CONV_ALL);

     if (finfo[i].iscachable || finfo[i].isstrict)        /* OR in new attrs here */
@@ -3476,11 +3565,20 @@
         }
         appendPQExpBuffer(q, " )");
     }
+
+    if (format == 0)
+        appendPQExpBuffer(q, ";\n");
+    else
+        appendPQExpBuffer(q, "\n");

-    appendPQExpBuffer(q, ";\n");
+    if (format == 0)
+        (*deps)[depIdx++] = NULL; /* End of List */
+
+    ArchiveEntry(fout, finfo[i].oid, fn->data, "FUNCTION", deps, q->data,
+                 delqry->data, "", finfo[i].usename, NULL, NULL);

-    ArchiveEntry(fout, finfo[i].oid, fn->data, "FUNCTION", NULL, q->data, delqry->data,
-                 "", finfo[i].usename, NULL, NULL);
+    if (format != 0)    /* comments don't belong in the middle of a package */
+        return;

     /*** Dump Function Comments ***/

@@ -3505,7 +3603,8 @@
  */
 void
 dumpOprs(Archive *fout, OprInfo *oprinfo, int numOperators,
-         TypeInfo *tinfo, int numTypes)
+         TypeInfo *tinfo, int numTypes, PackInfo *pinfo, int numPacks,
+         int format)
 {
     int            i;
     PQExpBuffer q = createPQExpBuffer();
@@ -3550,7 +3649,7 @@
         if (strcmp(oprinfo[i].oprkind, "r") == 0 ||
             strcmp(oprinfo[i].oprkind, "b") == 0)
         {
-            name = findTypeByOid(tinfo, numTypes,
+            name = findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL,
                                  oprinfo[i].oprleft, zeroAsOpaque);
             if (name == NULL)
             {
@@ -3566,7 +3665,7 @@
         if (strcmp(oprinfo[i].oprkind, "l") == 0 ||
             strcmp(oprinfo[i].oprkind, "b") == 0)
         {
-            name = findTypeByOid(tinfo, numTypes,
+            name = findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL,
                                  oprinfo[i].oprright, zeroAsOpaque);
             if (name == NULL)
             {
@@ -3581,7 +3680,8 @@

         if (!(strcmp(oprinfo[i].oprcom, "0") == 0))
         {
-            name = findOprByOid(oprinfo, numOperators, oprinfo[i].oprcom);
+            name = findOprByOid(oprinfo, numOperators,
+                                pinfo, numPacks, oprinfo[i].oprcom);
             if (name == NULL)
             {
                 write_msg(NULL, "WARNING: operator \"%s\" (oid %s) not dumped\n",
@@ -3595,7 +3695,8 @@

         if (!(strcmp(oprinfo[i].oprnegate, "0") == 0))
         {
-            name = findOprByOid(oprinfo, numOperators, oprinfo[i].oprnegate);
+            name = findOprByOid(oprinfo, numOperators,
+                                pinfo, numPacks, oprinfo[i].oprnegate);
             if (name == NULL)
             {
                 write_msg(NULL, "WARNING: operator \"%s\" (oid %s) not dumped\n",
@@ -3615,7 +3716,8 @@

         if (!(strcmp(oprinfo[i].oprlsortop, "0") == 0))
         {
-            name = findOprByOid(oprinfo, numOperators, oprinfo[i].oprlsortop);
+            name = findOprByOid(oprinfo, numOperators,
+                                pinfo, numPacks, oprinfo[i].oprlsortop);
             if (name == NULL)
             {
                 write_msg(NULL, "WARNING: operator \"%s\" (oid %s) not dumped\n",
@@ -3629,7 +3731,8 @@

         if (!(strcmp(oprinfo[i].oprrsortop, "0") == 0))
         {
-            name = findOprByOid(oprinfo, numOperators, oprinfo[i].oprrsortop);
+            name = findOprByOid(oprinfo, numOperators,
+                                pinfo, numPacks, oprinfo[i].oprrsortop);
             if (name == NULL)
             {
                 write_msg(NULL, "WARNING: operator \"%s\" (oid %s) not dumped\n",
@@ -3643,14 +3746,17 @@

         resetPQExpBuffer(delq);
         appendPQExpBuffer(delq, "DROP OPERATOR %s (%s", oprinfo[i].oprname,
-        findTypeByOid(tinfo, numTypes, oprinfo[i].oprleft, zeroAsOpaque));
+                          findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL,
+                                        oprinfo[i].oprleft, zeroAsOpaque));
         appendPQExpBuffer(delq, ", %s);\n",
-                          findTypeByOid(tinfo, numTypes, oprinfo[i].oprright, zeroAsOpaque));
+                          findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL,
+                                        oprinfo[i].oprright, zeroAsOpaque));

         resetPQExpBuffer(q);
         appendPQExpBuffer(q,
-                          "CREATE OPERATOR %s "
-                          "(PROCEDURE = %s %s%s%s%s%s%s%s%s%s);\n",
+                          "%sOPERATOR %s "
+                          "(PROCEDURE = %s %s%s%s%s%s%s%s%s%s)%c\n",
+                          (format == 0) ? "CREATE " : "",
                           oprinfo[i].oprname,
                           oprinfo[i].oprcode,
                           leftarg->data,
@@ -3661,7 +3767,8 @@
           (strcmp(oprinfo[i].oprcanhash, "t") == 0) ? ",\n\tHASHES" : "",
                           join->data,
                           sort1->data,
-                          sort2->data);
+                          sort2->data,
+                          (format == 0) ? ';' : ' ');

         ArchiveEntry(fout, oprinfo[i].oid, oprinfo[i].oprname, "OPERATOR", NULL,
                 q->data, delq->data, "", oprinfo[i].usename, NULL, NULL);
@@ -3686,7 +3793,8 @@
  */
 void
 dumpAggs(Archive *fout, AggInfo *agginfo, int numAggs,
-         TypeInfo *tinfo, int numTypes)
+         TypeInfo *tinfo, int numTypes, PackInfo *pinfo, int numPacks,
+         int format)
 {
     int            i;
     PQExpBuffer q = createPQExpBuffer();
@@ -3706,7 +3814,7 @@

         resetPQExpBuffer(aggSig);
         appendPQExpBuffer(aggSig, "%s(%s)", agginfo[i].aggname,
-                          findTypeByOid(tinfo, numTypes,
+                          findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL,
                                         agginfo[i].aggbasetype,
                                         zeroAsStar + useBaseTypeName));

@@ -3723,7 +3831,8 @@
             continue;
         }

-        name = findTypeByOid(tinfo, numTypes, agginfo[i].aggbasetype,
+        name = findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL,
+                             agginfo[i].aggbasetype,
                              zeroAsAny + useBaseTypeName);
         if (name == NULL)
         {
@@ -3741,7 +3850,8 @@
         }
         appendPQExpBuffer(details, "BASETYPE = %s, ", name);

-        name = findTypeByOid(tinfo, numTypes, agginfo[i].aggtranstype,
+        name = findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL,
+                             agginfo[i].aggtranstype,
                              zeroAsOpaque + useBaseTypeName);
         if (name == NULL)
         {
@@ -3775,12 +3885,18 @@
         appendPQExpBuffer(delq, "DROP AGGREGATE %s;\n", aggSig->data);

         resetPQExpBuffer(q);
-        appendPQExpBuffer(q, "CREATE AGGREGATE %s ( %s );\n",
+        if (format == 0)
+            appendPQExpBuffer(q, "CREATE ");
+        appendPQExpBuffer(q, "AGGREGATE %s ( %s )%c\n",
                           agginfo[i].aggname,
-                          details->data);
+                          details->data,
+                          (format == 0) ? ';' : ' ');

         ArchiveEntry(fout, agginfo[i].oid, aggSig->data, "AGGREGATE", NULL,
                 q->data, delq->data, "", agginfo[i].usename, NULL, NULL);
+
+        if (format != 0)
+            continue;

         /*** Dump Aggregate Comments ***/

Index: src/bin/pg_dump/pg_dump.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_dump.h,v
retrieving revision 1.72
diff -u -r1.72 pg_dump.h
--- src/bin/pg_dump/pg_dump.h    2001/10/03 20:54:21    1.72
+++ src/bin/pg_dump/pg_dump.h    2001/10/17 16:41:49
@@ -56,6 +56,7 @@
     int            passedbyvalue;
     int            isArray;
     int            isDefined;
+    int            dumped;            /* 1 if dumped (as part of package dump */
 } TypeInfo;

 typedef struct _funcInfo
@@ -186,11 +187,43 @@
     char       *usename;
 } OprInfo;

+typedef struct _packGlobalInfo
+{
+    char       *oid;
+    char       *varname;            /* Name of this global */
+    char       *vartext;            /* Initialization text */
+    int            packId;                /* id of owning package */
+    int            langId;                /* assosciated language */
+    int            seq;                /* sequence number */
+} PackGlobInfo;
+
+typedef struct _packInfo
+{
+    char           *oid;
+    char           *packname;
+    char           *username;
+    PackGlobInfo   *packGlobals;    /* Now get contents of the package */
+    TypeInfo       *packTypes;
+    FuncInfo       *packFuncs;        /* init routines, funcs, and early funcs */
+    AggInfo           *packAggs;
+    OprInfo           *packOprs;
+                                    /* Done with pointers, now do ints */
+    int                packId;            /* parsed value, for efficiency */
+    int                numGlobals;
+    int                numTypes;
+    int                numFuncs;
+    int                numAggs;
+    int                numOprs;
+} PackInfo;
+
+
 /* global decls */
 extern bool force_quotes;        /* double-quotes for identifiers flag */
 extern bool g_verbose;            /* verbose flag */
 extern Oid    g_last_builtin_oid; /* value of the last builtin oid */
 extern Archive *g_fout;            /* the script file */
+extern bool g_has_packages;        /* system schema supports packages */
+extern PGconn *g_conn;            /* our connection */

 /* placeholders for comment starting and ending delimiters */
 extern char g_comment_start[10];
@@ -227,9 +260,13 @@
     useBaseTypeName = 1024
 } OidOptions;

-extern char *findTypeByOid(TypeInfo *tinfo, int numTypes, const char *oid, OidOptions opts);
-extern char *findOprByOid(OprInfo *oprinfo, int numOprs, const char *oid);
-extern int    findFuncByName(FuncInfo *finfo, int numFuncs, const char *name);
+extern char *findTypeByOid(TypeInfo *tinfo, int numTypes,
+                           PackInfo *pinfo, int numPacks, const char **depoid,
+                           const char *oid, OidOptions opts);
+extern char *findOprByOid(OprInfo *oprinfo, int numOprs,
+                           PackInfo *pinfo, int numPacks, const char *oid);
+extern int    findFuncByName(FuncInfo *finfo, int numFuncs, PackInfo *pinfo,
+                           int numPacks, const char **oid, const char *name);
 extern int    findTableByName(TableInfo *tbinfo, int numTables, const char *relname);

 extern void check_conn_and_db(void);
@@ -238,9 +275,11 @@
 /*
  * version specific routines
  */
-extern TypeInfo *getTypes(int *numTypes);
-extern FuncInfo *getFuncs(int *numFuncs);
-extern AggInfo *getAggregates(int *numAggregates);
+extern TypeInfo *getTypes(int *numTypes, Oid packId);
+extern FuncInfo *getFuncs(int *numFuncs, Oid packId);
+extern AggInfo *getAggregates(int *numAggregates, Oid packId);
+extern PackInfo *getPackages(int *numPackages, bool *hasPackages);
+extern PackGlobInfo *getPackageGlobals(int *numPackageGlobals);

 extern void clearAggInfo(AggInfo *, int);
 extern void clearFuncInfo(FuncInfo *, int);
@@ -249,22 +288,30 @@
 extern void clearOprInfo(OprInfo *, int);
 extern void clearTypeInfo(TypeInfo *, int);

-extern OprInfo *getOperators(int *numOperators);
+extern OprInfo *getOperators(int *numOperators, Oid packId);
 extern TableInfo *getTables(int *numTables, FuncInfo *finfo, int numFuncs);
 extern InhInfo *getInherits(int *numInherits);
 extern void getTableAttrs(TableInfo *tbinfo, int numTables);
 extern IndInfo *getIndexes(int *numIndexes);
 extern void dumpDBComment(Archive *outfile);
 extern void dumpTypes(Archive *fout, FuncInfo *finfo, int numFuncs,
-          TypeInfo *tinfo, int numTypes);
+                        TypeInfo *tinfo, int numTypes,
+                      PackInfo *pinfo, int numPacks, int format);
 extern void dumpProcLangs(Archive *fout, FuncInfo *finfo, int numFuncs,
-              TypeInfo *tinfo, int numTypes);
+                            TypeInfo *tinfo, int numTypes,
+                          PackInfo *pinfo, int numPacks);
 extern void dumpFuncs(Archive *fout, FuncInfo *finfo, int numFuncs,
-          TypeInfo *tinfo, int numTypes);
+                            TypeInfo *tinfo, int numTypes,
+                          PackInfo *pinfo, int numPacks);
+extern void dumpOneFunc(Archive *fout, FuncInfo *finfo, int i,
+                        TypeInfo *tinfo, int numTypes, PackInfo *pinfo,
+                        int numPacks, int format);
 extern void dumpAggs(Archive *fout, AggInfo *agginfo, int numAggregates,
-         TypeInfo *tinfo, int numTypes);
+                      TypeInfo *tinfo, int numTypes,
+                     PackInfo *pinfo, int numPacks, int format);
 extern void dumpOprs(Archive *fout, OprInfo *agginfo, int numOperators,
-         TypeInfo *tinfo, int numTypes);
+                      TypeInfo *tinfo, int numTypes,
+                     PackInfo *pinfo, int numPacks, int format);
 extern void dumpTables(Archive *fout, TableInfo *tbinfo, int numTables,
            IndInfo *indinfo, int numIndexes,
            InhInfo *inhinfo, int numInherits,
@@ -274,6 +321,15 @@
 extern void dumpIndexes(Archive *fout, IndInfo *indinfo, int numIndexes,
             TableInfo *tbinfo, int numTables, const char *tablename);
 extern const char *fmtId(const char *identifier, bool force_quotes);
+extern void dumpComment(Archive *fout, const char *target, const char *oid,
+                        const char *classname, int subid,
+                        const char *((*deps)[]));
+
+
+extern void dumpPackages(Archive *fout, PackInfo *pinfo, int numPacks,
+                         FuncInfo *finfo, int numFuncs, TypeInfo *tinfo,
+                         int numTypes);
+
 extern void exit_nicely(void);

 #endif     /* PG_DUMP_H */
Index: src/bin/pg_dump/pg_packages.c
===================================================================
RCS file: pg_packages.c
diff -N pg_packages.c
--- /dev/null    Wed Oct 17 08:50:28 2001
+++ pg_packages.c    Wed Oct 17 11:41:51 2001
@@ -0,0 +1,1256 @@
+/*-------------------------------------------------------------------------
+ *
+ * pg_packages.c
+ *    Helper routines for dumping out packages
+ *
+ * Copyright (c) 2001, Zembu Inc.
+ *
+ *-------------------------------------------------------------------------
+ */
+
+#include <ctype.h>
+
+#include "postgres.h"
+
+#include "libpq-fe.h"
+#ifndef HAVE_STRDUP
+#include "strdup.h"
+#endif
+
+#include "pg_dump.h"
+#include "catalog/pg_package.h"
+
+#define OBJECT_PACKAGE    1
+#define OBJECT_TYPE        2
+#define OBJECT_FUNCTION    3
+
+typedef struct {
+    int        oid;
+    int        level;
+    int        dependHead;        /* Index of head of chain of dependents */
+    int        dependCount;    /* Count of dependencies */
+    short    type;
+    short    status;
+    void   *datum;    /* The object represented */
+} Object;
+
+typedef struct {
+    int        depender;        /* object index w/ dependency */
+    int        dependee;        /* object index on which ^^ has dependence */
+    int        link;            /* Next Dependence in this depender chain */
+} Dependence;
+
+typedef struct {
+    Object       *objects;    /* packages + other things in our list */
+    Dependence *dependents; /* what needs what */
+    int            numObjects,
+                allocObjects,
+                numDependents,
+                allocDependents,
+                maxLevel;    /* largest level value set */
+} Stack;
+
+typedef struct {
+    int           *heads;        /* maxLevel + 1 ints which are list heads */
+    int           *links;        /* numObjects ints which are list elements */
+    int          **tails;        /* maxLevel + 1 int *s which point to list tails */
+} StackList;
+
+typedef struct {
+    PackInfo   *package;    /* array of PackInfo */
+    FuncInfo   *function;    /* array of FuncInfo */
+    TypeInfo   *type;        /* array of TypeInfo */
+    int            numPackage,
+                numFunction,
+                numType;    /* count of items above */
+} PackFuncTypeInfo;
+
+static PackGlobInfo *getPackGlobal(int *numGlobals, Oid packId);
+
+static Stack *newStack(void);
+static void freeStack(Stack *);
+static int findObject(int oid, Stack *theStack);
+static int addObject(int oid, int type, int level, void *datum,
+                      Stack *theStack);
+static int addDependence(int depends, int on, Stack *theStack);
+static void RaiseDependenceLevel(int index, int level, Stack *theStack);
+static Oid getTypeOid(char *name, PackFuncTypeInfo *theInfo,
+                      PackInfo **thePack, TypeInfo **theType);
+static Oid getFunctionOid(char *fname, PackFuncTypeInfo *theInfo,
+                          PackInfo **thePack, FuncInfo **theFunc);
+
+static void addFunctionDependencies(FuncInfo *theFunc, int item, int level,
+                                    int packId, PackFuncTypeInfo *theInfo,
+                                    Stack *theStack);
+static void addTypeDependencies(TypeInfo *theType, int item, int level,
+                                    int packId, PackFuncTypeInfo *theInfo,
+                                    Stack *theStack);
+static void addAggregateDependencies(AggInfo *theAgg, int item, int level,
+                                    int packId, PackFuncTypeInfo *theInfo,
+                                    Stack *theStack);
+static void addOperatorDependencies(OprInfo *theOpr, int item, int level,
+                                    int packId, PackFuncTypeInfo *theInfo,
+                                    Stack *theStack);
+static void addPackageDependencies(PackInfo *thePack, int item, int level,
+                                    PackFuncTypeInfo *theInfo, Stack *theStack);
+
+static void dumpPackage(Archive *fout, Archive *gatherer,
+                        int i, Stack *theStack,
+                        PackInfo *pinfo, int numPacks,
+                        FuncInfo *finfo, int numFuncs,
+                        TypeInfo *tinfo, int numTypes);
+
+static StackList *makeStackList(Stack *theStack);
+static void freeStackList(StackList * theList);
+static void makeDependList(int i, Stack *theStack, const char *((**deps)[]));
+
+/*
+ * getPackGlobal
+ *        get the package globals for a given package
+ */
+static PackGlobInfo *
+getPackGlobal(int *numGlobals, Oid packId)
+{
+    PGresult       *res;
+    int                ntups;
+    int                i;
+    PQExpBuffer        query = createPQExpBuffer();
+    PackGlobInfo   *pginfo;
+
+    int                i_oid;
+    int                i_langid;
+    int                i_seq;
+    int                i_varname;
+    int                i_vartext;
+
+    appendPQExpBuffer(query, "SELECT oid, pgloballang, pglobalseq, "
+            "pglobalvname, pglobalvtype from pg_packglobal where "
+            "pglobalid = %u order by pgloballang, pglobalseq;", packId);
+
+    res = PQexec(g_conn, query->data);
+    if (!res || PQresultStatus(res) != PGRES_TUPLES_OK)
+    {
+        write_msg(NULL, "getPackGlobal(): SELECT failed for package %u. "
+                "Explanation from backend:\n\t'%s'.\n", packId,
+                PQerrorMessage(g_conn));
+        exit_nicely();
+    }
+
+    ntups = PQntuples(res);
+    *numGlobals = ntups;
+
+    pginfo = (PackGlobInfo *) malloc(ntups * sizeof(PackGlobInfo));
+
+    i_oid = PQfnumber(res, "oid");
+    i_langid = PQfnumber(res, "pgloballang");
+    i_seq = PQfnumber(res, "pglobalseq");
+    i_varname = PQfnumber(res, "pglobalvname");
+    i_vartext = PQfnumber(res, "pglobalvtype");
+
+    for(i = 0; i < ntups; i++)
+    {
+        pginfo[i].oid = strdup(PQgetvalue(res, i, i_oid));
+        pginfo[i].varname = strdup(PQgetvalue(res, i, i_varname));
+        pginfo[i].vartext = strdup(PQgetvalue(res, i, i_vartext));
+        pginfo[i].packId = packId;
+        pginfo[i].langId = atooid(PQgetvalue(res, i, i_langid));
+        pginfo[i].seq = atooid(PQgetvalue(res, i, i_seq));
+    }
+
+    PQclear(res);
+
+    return pginfo;
+}
+
+/*
+ * getPackages:
+ *    determine if the backend was built with package support, and if so,
+ * read in all of the defined packages.
+ */
+PackInfo *
+getPackages(int *numP, bool *hasP)
+{
+    PQExpBuffer    q = createPQExpBuffer();
+    PGresult   *res;
+    int            i,
+                j,
+                numPacks;
+    PackInfo   *pinfo;
+
+    int            i_oid;
+    int            i_packname;
+    int            i_username;
+
+    appendPQExpBuffer(q, "SELECT oid from pg_class "
+                         "where relname = 'pg_package';");
+
+    res = PQexec(g_conn, q->data);
+    if (!res || PQresultStatus(res) != PGRES_TUPLES_OK)
+    {
+        write_msg(NULL, "getPackages(): SELECT to determine if packages"
+                        " present failed.\nExplanation from backend: '%s'.\n",
+                        PQerrorMessage(g_conn));
+        exit_nicely();
+    }
+
+    i = PQntuples(res);
+    if ((i < 0) || (i > 1))
+        write_msg(NULL, "Did not expect to find %d relations named 'pg_package'"
+                        " in pg_class.\nSkipping package support.\n", i);
+    if (i != 1)
+    {
+        write_msg(NULL, "Found no packages\n");
+        /* No packages or none we understand */
+        *hasP = false;
+        *numP = 0;
+        return NULL;
+    }
+
+    *hasP = true;
+
+    appendPQExpBuffer(q, "select pg_package.oid, packname, (select usename "
+            "from pg_user where packowner = usesysid) as usename "
+            "from pg_package where packname <> 'standard';");
+
+    res = PQexec(g_conn, q->data);
+    if (!res || PQresultStatus(res) != PGRES_TUPLES_OK)
+    {
+        write_msg(NULL, "getPackages(): SELECT failed. Explanation from "
+                "backend:'%s'.\n", PQerrorMessage(g_conn));
+        exit_nicely();
+    }
+
+    numPacks = PQntuples(res);
+    *numP = numPacks;
+
+    pinfo = (PackInfo *) malloc(numPacks * sizeof(PackInfo));
+
+    i_oid = PQfnumber(res, "oid");
+    i_packname = PQfnumber(res, "packname");
+    i_username = PQfnumber(res, "usename");
+
+    for (i = 0; i < numPacks; i++)
+    {
+        pinfo[i].oid = strdup(PQgetvalue(res, i, i_oid));
+        pinfo[i].packname = strdup(PQgetvalue(res, i, i_packname));
+        pinfo[i].username = strdup(PQgetvalue(res, i, i_username));
+
+        j = atooid(pinfo[i].oid);
+
+        pinfo[i].packId = j;
+        pinfo[i].packGlobals = getPackGlobal(&pinfo[i].numGlobals, j);
+        pinfo[i].packTypes = getTypes(&pinfo[i].numTypes, j);
+        pinfo[i].packFuncs = getFuncs(&pinfo[i].numFuncs, j);
+        pinfo[i].packAggs = getAggregates(&pinfo[i].numAggs, j);
+        pinfo[i].packOprs = getOperators(&pinfo[i].numOprs, j);
+    }
+
+    return pinfo;
+}
+
+/*
+ * Get ready to deal with dumping packages. The problem here is that
+ * a package's types, aggregates, and operators can depend on non-self
+ * functions, and its functions, aggregates, and operators can depend on
+ * non-self types. So we try to come up with an order in which to
+ * emit them. We do this by making a DAG, Directed Acyclic Graph, of
+ * the packages and things they depend on.
+ *
+ * The three structures (way) above contain all the info we need. An Object
+ * represents either a package, a type, or a function. It lists its
+ * OID, where it's stored, its type, its state (used to detect cycles in
+ * the dependencies), a pointer to the object, and its "level".
+ *
+ * "level" indicates the order in which this item must be emitted, with items
+ * of a higher "level" needing to be dumped before those of a lesser level.
+ * Items of equal level can be dumped in any order - they aren't dependent on
+ * each other.
+ *
+ * For now, if we detect a cycle in the dependencies, we emit a comment
+ * to the output stream and to stderr noting the cycle.
+ *
+ * To help reduce the chance of cycles, we do NOT emit dependencies for the
+ * return type of function. Postgres will make a type shell for them, which
+ * is fine. Thus if you follow the example from the docs on how to make a
+ * user-defined type, and a package uses that type, the right thing will
+ * happen.
+ *
+ * We shouldn't encounter cycles in the dependencies as each item we're dumping
+ * was CREATEd at one point, and all of its dependencies had to be present
+ * at that point.
+ */
+static Stack *
+newStack(void)
+{
+    Stack       *new;
+
+    if ((new = malloc(sizeof(Stack))) == NULL)
+        return NULL;
+
+    new->numObjects = 0;
+    new->numDependents = 0;
+    new->maxLevel = 0;
+
+    new->allocObjects = 32;
+    new->allocDependents = 32;
+
+    if ((new->objects = malloc(sizeof(Object) * 32)) == NULL)
+    {
+        free(new);
+        return NULL;
+    }
+
+    if ((new->dependents = malloc(sizeof(Dependence) * 32)) == NULL)
+    {
+        free(new->objects);
+        free(new);
+        return NULL;
+    }
+
+    return new;
+}
+
+static void
+freeStack(Stack *theStack)
+{
+    if (theStack == NULL)
+        return;
+
+    free(theStack->objects);
+    free(theStack->dependents);
+    free(theStack);
+}
+
+/*
+ * scan the dependency list for an oid, return its index if found. Return
+ * -1 if not.
+ */
+static int
+findObject(int oid, Stack *theStack)
+{
+    int        i;
+
+    for (i = 0; i < theStack->numObjects; i++)
+        if (theStack->objects[i].oid == oid)
+            return i;
+
+    return -1;
+}
+
+/*
+ * Add a new object to the list
+ */
+static int
+addObject(int oid, int type, int level, void *datum, Stack *theStack)
+{
+    int        i = theStack->numObjects++;
+
+    if (theStack->allocObjects == i)
+    {
+        theStack->allocObjects *= 2;
+        theStack->objects = realloc(theStack->objects,
+                                    theStack->allocObjects * sizeof(Object));
+    }
+
+    theStack->objects[i].oid = oid;
+    theStack->objects[i].type = type;
+    theStack->objects[i].level = level;
+    theStack->objects[i].datum = datum;
+    theStack->objects[i].status = 0;
+    theStack->objects[i].dependHead = -1;
+    theStack->objects[i].dependCount = 0;
+
+#if 0
+    write_msg(NULL, "%s Adding object id %d type %d oid %u level %d dat %p %s\n",
+                g_comment_start, i, type, oid, level, datum, g_comment_end);
+#endif
+
+    if (theStack->maxLevel < level)
+        theStack->maxLevel = level;
+
+    return i;
+}
+
+/*
+ * Add a dependency to the list
+ */
+static int
+addDependence(int depends, int on, Stack *theStack)
+{
+    int        i;
+
+    /* Do we already have this dependence? */
+    for (i = theStack->objects[depends].dependHead; i != -1;
+        i = theStack->dependents[i].link)
+        if (theStack->dependents[i].dependee == on)
+        {
+            return -1;
+        }
+
+    /* no. Add it */
+    i = theStack->numDependents++;
+
+    if (theStack->allocDependents == i)
+    {
+        theStack->allocDependents *= 2;
+        theStack->dependents = realloc(theStack->dependents,
+                                theStack->allocDependents * sizeof(Dependence));
+    }
+
+    if (depends == on)
+        abort();
+
+    theStack->dependents[i].depender = depends;
+    theStack->dependents[i].dependee = on;
+
+    /* Add to chain for this object */
+    theStack->objects[depends].dependCount++;
+    theStack->dependents[i].link = theStack->objects[depends].dependHead;
+    theStack->objects[depends].dependHead = i;
+
+    return i;
+}
+
+/*
+ * RaiseDependenceLevel
+ *    Given a dependee, raise its level to the passed-in level, and
+ *    adjust any of its dependees accordingly.
+ */
+static void
+RaiseDependenceLevel(int index, int level, Stack *theStack)
+{
+    if (theStack->objects[index].level < level)
+    {
+        /* Ok, we need to do something. raise this item, and itterate over
+         * its dependees */
+        int    i;
+        theStack->objects[index].level = level;
+        if (theStack->maxLevel < level)
+            theStack->maxLevel = level;
+        for (i = theStack->objects[index].dependHead; i != -1;
+            i = theStack->dependents[i].link)
+            RaiseDependenceLevel(theStack->dependents[i].dependee,
+                                 level + 1, theStack);
+    }
+}
+
+/*
+ * getTypeOid - scan for a type with the given oid text
+ */
+static Oid
+getTypeOid(char *oidText, PackFuncTypeInfo *theInfo, PackInfo **thePack,
+           TypeInfo **theType)
+{
+    int        i, j;
+
+    for(i = 0; i < theInfo->numType; i++)
+        if (strcmp(theInfo->type[i].oid, oidText) == 0)
+        {
+            if (thePack != NULL)
+                *thePack = NULL;
+            if (theType != NULL)
+                *theType = &theInfo->type[i];
+            return atooid(theInfo->type[i].oid);
+        }
+
+    for(j = 0; j < theInfo->numPackage; j++)
+    {
+        for(i = 0; i < theInfo->package[j].numTypes; i++)
+            if (strcmp(theInfo->package[j].packTypes[i].oid, oidText) == 0)
+            {
+                if (thePack != NULL)
+                    *thePack = &theInfo->package[j];
+                if (theType != NULL)
+                    *theType = &theInfo->package[j].packTypes[i];
+                return atooid(theInfo->package[j].packTypes[i].oid);
+            }
+    }
+    return 0;
+}
+
+/*
+ * getFunctionOid - get the oid and entry for a function given its name
+ *
+ * A little easier than getTypeOid as we are given the package name if it's
+ * not "standard"
+ */
+static Oid
+getFunctionOid(char *fname, PackFuncTypeInfo *theInfo, PackInfo **thePack,
+           FuncInfo **theFunc)
+{
+    int            i, numFuncs;
+    char       *p;
+    char        scratch[NAMEDATALEN];
+    FuncInfo   *ourFuncs;
+
+    if ((p = strchr(fname, '.')) != NULL)
+    {
+        StrNCpy(scratch, fname, p - fname + 1);
+        fname = p + 1;
+
+        for (i = 0; i < theInfo->numPackage; i++)
+            if (!strcmp(scratch, theInfo->package[i].packname))
+            {
+                ourFuncs = theInfo->package[i].packFuncs;
+                numFuncs = theInfo->package[i].numFuncs;
+                if (thePack != NULL)
+                    *thePack = &theInfo->package[i];
+                break;
+            }
+
+        if (i == theInfo->numPackage)
+            return 0;
+    }
+    else
+    {
+        if (thePack != NULL)
+            *thePack = NULL;
+        ourFuncs = theInfo->function;
+        numFuncs = theInfo->numFunction;
+    }
+
+    for(i = 0; i < numFuncs; i++)
+        if (!strcmp(fname, ourFuncs[i].proname))
+        {
+            if (theFunc != NULL)
+                *theFunc = &ourFuncs[i];
+            return atooid(ourFuncs[i].oid);
+        }
+    return 0;
+}
+
+/*
+ * Now for the routines which do the work of adding dependencies.
+ *
+ * There is one function for each item which can have a dependency -
+ * function, type, aggregate, or operator. If the item being analyzed is
+ * in a package (the only case for aggregates and operators), the whole
+ * package has a dependency on any found items.
+ *
+ * Items in a package don't register dependencies against the package they
+ * are in.
+ */
+/*
+ * addFunctionDependencies
+ *        add dependencies for a function
+ *
+ * theFunc is a pointer to this function, item is its index in
+ * theStack->objects, level is the level at which it is (dependencies at +1),
+ * packId is the index of the package it's in (-1 == standard), theInfo is
+ * the global info, and theStack is our build stack
+ */
+static void
+addFunctionDependencies(FuncInfo *theFunc, int item, int level, int packId,
+                        PackFuncTypeInfo *theInfo, Stack *theStack)
+{
+    int i;
+
+    if (theFunc->argtypes == NULL)
+        return;        /* no arg types, can't add dependencies */
+
+    for (i = 0; i < theFunc->nargs; i++)
+    {
+        Oid            theType;
+        int            index;
+        PackInfo    *whichPack;
+        TypeInfo    *whichType;
+
+        if ((theType = getTypeOid(theFunc->argtypes[i], theInfo, &whichPack,
+                                  &whichType)))
+        {
+            Oid        dependee;
+
+            if (theType < g_last_builtin_oid)
+                break;
+            if ((packId != -1) &&
+                (theStack->objects[packId].datum == whichPack))
+                /* We're in a package, and this type is in the same one */
+                break;
+
+            dependee = (whichPack != NULL) ? whichPack->packId : theType;
+
+            if ((index = findObject(dependee, theStack)) >= 0)
+            {
+                int    j;
+
+                j = addDependence(item, index, theStack);
+                if (theStack->objects[index].status == 0)
+                {
+                    /* Emit warning about cycle in data, and move on */
+                }
+                else
+                    RaiseDependenceLevel(index, level+1, theStack);
+            }
+            else
+            {
+                int    j;
+
+                j = addObject(dependee, (whichPack != NULL) ? OBJECT_PACKAGE
+                              : OBJECT_TYPE, level + 1, whichType, theStack);
+                addDependence(item, j, theStack);
+                if (whichPack != NULL)
+                    addPackageDependencies(whichPack, j, level + 1, theInfo,
+                                           theStack);
+                else
+                    addTypeDependencies(whichType, j, level + 1, -1, theInfo,
+                                        theStack);
+            }
+        }    /* getTypeOid */
+    }        /* for(i ... */
+    theStack->objects[item].status = 1;
+    /* All done - functions generate dependencies only via their arguments */
+}
+
+
+/*
+ * addTypeDependencies
+ *        add dependencies for a type
+ *
+ * theType is a pointer to this type, item is its index in
+ * theStack->objects, level is the level at which it is (dependencies at +1),
+ * packId is the index of the package it's in (-1 == standard), theInfo is
+ * the global info, and theStack is our build stack
+ */
+static void
+addTypeDependencies(TypeInfo *theType, int item, int level, int packId,
+                    PackFuncTypeInfo *theInfo, Stack *theStack)
+{
+    int i;
+
+    /* Types add dependencies via their in, out, send, and receive routines */
+    for (i = 0; i < 4; i++)
+    {
+        Oid            theFunc;
+        int            index;
+        PackInfo   *whichPack;
+        FuncInfo   *whichFunc;
+        char       *theName;
+
+        switch (i)
+        {
+            case 0:        theName = theType->typinput;    break;
+            case 1:        theName = theType->typoutput;    break;
+            case 2:        theName = theType->typsend;        break;
+            case 3:        theName = theType->typreceive;    break;
+        }
+
+        if ((theName == NULL) || (theName[0] == '\0'))
+            break;
+
+        if ((theFunc = getFunctionOid(theName, theInfo, &whichPack,
+                                  &whichFunc)))
+        {
+            Oid        dependee;
+
+            if (theFunc < g_last_builtin_oid)
+                break;
+            if ((packId != -1) &&
+                (theStack->objects[packId].datum == whichPack))
+                /* We're in a package, and this type is in the same one */
+                break;
+
+            dependee = (whichPack != NULL) ? whichPack->packId : theFunc;
+
+            if ((index = findObject(dependee, theStack)) >= 0)
+            {
+                int    j;
+
+                j = addDependence(item, index, theStack);
+                if (theStack->objects[index].status == 0)
+                {
+                    /* Emit warning about cycle in data, and move on */
+                }
+                else
+                {
+                    RaiseDependenceLevel(index, level+1, theStack);
+                }
+            }
+            else
+            {
+                int    j;
+
+                j = addObject(dependee, (whichPack != NULL) ? OBJECT_PACKAGE
+                              : OBJECT_FUNCTION, level + 1, whichFunc,
+                              theStack);
+                addDependence(item, j, theStack);
+                if (whichPack != NULL)
+                    addPackageDependencies(whichPack, j, level + 1, theInfo,
+                                           theStack);
+                else
+                    addFunctionDependencies(whichFunc, j, level + 1, -1,
+                                            theInfo, theStack);
+            }
+        }    /* getTypeOid */
+    }        /* for(i ... */
+    theStack->objects[item].status = 1;
+    /* All done - types generate dependencies only via in/out/send/rec */
+}
+
+
+/*
+ * addAggregateDependencies
+ *        add dependencies for an aggregate
+ *
+ * theAgg is a pointer to this aggregate, item is its index in
+ * theStack->objects, level is the level at which it is (dependencies at +1),
+ * packId is the index of the package it's in (-1 == standard), theInfo is
+ * the global info, and theStack is our build stack
+ */
+static void
+addAggregateDependencies(AggInfo *theAgg, int item, int level, int packId,
+                         PackFuncTypeInfo *theInfo, Stack *theStack)
+{
+    int i;
+
+    /*
+     * Aggregates add dependencies via aggtransfn1, aggtransfn2, aggfinalfn
+     */
+    for (i = 0; i < 2; i++)
+    {
+        Oid            theFunc;
+        int            index;
+        PackInfo   *whichPack;
+        FuncInfo   *whichFunc;
+        char       *theName;
+
+        switch (i)
+        {
+            case 0:        theName = theAgg->aggtransfn;        break;
+            case 1:        theName = theAgg->aggfinalfn;        break;
+        }
+
+        if ((theName == NULL) || (theName[0] == '\0'))
+            break;
+
+        if ((theFunc = getFunctionOid(theName, theInfo, &whichPack,
+                                  &whichFunc)))
+        {
+            Oid        dependee;
+
+            if (theFunc < g_last_builtin_oid)
+                break;
+            if ((packId != -1) &&
+                (theStack->objects[packId].datum == whichPack))
+                /* We're in a package, and this func is in the same one */
+                break;
+
+            dependee = (whichPack != NULL) ? whichPack->packId : theFunc;
+
+            if ((index = findObject(dependee, theStack)) >= 0)
+            {
+                int    j;
+
+                j = addDependence(item, index, theStack);
+                if (theStack->objects[index].status == 0)
+                {
+                    /* Emit warning about cycle in data, and move on */
+                }
+                else
+                    RaiseDependenceLevel(index, level+1, theStack);
+            }
+            else
+            {
+                int    j;
+
+                j = addObject(dependee, (whichPack != NULL) ? OBJECT_PACKAGE
+                              : OBJECT_FUNCTION, level + 1, whichFunc,
+                              theStack);
+                addDependence(item, j, theStack);
+                if (whichPack != NULL)
+                    addPackageDependencies(whichPack, j, level + 1, theInfo,
+                                           theStack);
+                else
+                    addFunctionDependencies(whichFunc, j, level + 1, -1,
+                                            theInfo, theStack);
+            }
+        }    /* getTypeOid */
+    }        /* for(i ... */
+    theStack->objects[item].status = 1;
+    /* All done */
+}
+
+
+/*
+ * addOperatorDependencies
+ *        add dependencies for an operator
+ *
+ * theOpr is a pointer to this operator, item is its index in
+ * theStack->objects, level is the level at which it is (dependencies at +1),
+ * packId is the index of the package it's in (-1 == standard), theInfo is
+ * the global info, and theStack is our build stack
+ */
+static void
+addOperatorDependencies(OprInfo *theOpr, int item, int level, int packId,
+                    PackFuncTypeInfo *theInfo, Stack *theStack)
+{
+    int i;
+
+    /*
+     * Operators add dependencies via oprcode, oprrest, oprjoin
+     */
+    for (i = 0; i < 3; i++)
+    {
+        Oid            theFunc;
+        int            index;
+        PackInfo   *whichPack;
+        FuncInfo   *whichFunc;
+        char       *theName;
+
+        switch (i)
+        {
+            case 0:        theName = theOpr->oprcode;        break;
+            case 1:        theName = theOpr->oprrest;        break;
+            case 2:        theName = theOpr->oprjoin;        break;
+        }
+
+        if ((theName == NULL) || (theName[0] == '\0'))
+            break;
+
+        if ((theFunc = getFunctionOid(theName, theInfo, &whichPack,
+                                  &whichFunc)))
+        {
+            Oid        dependee;
+
+            if (theFunc < g_last_builtin_oid)
+                break;
+            if ((packId != -1) &&
+                (theStack->objects[packId].datum == whichPack))
+                /* We're in a package, and this func is in the same one */
+                break;
+
+            dependee = (whichPack != NULL) ? whichPack->packId : theFunc;
+
+            if ((index = findObject(dependee, theStack)) >= 0)
+            {
+                int    j;
+
+                j = addDependence(item, index, theStack);
+                if (theStack->objects[index].status == 0)
+                {
+                    /* Emit warning about cycle in data, and move on */
+                }
+                else
+                    RaiseDependenceLevel(index, level+1, theStack);
+            }
+            else
+            {
+                int    j;
+
+                j = addObject(dependee, (whichPack != NULL) ? OBJECT_PACKAGE
+                              : OBJECT_FUNCTION, level + 1, whichFunc,
+                              theStack);
+                addDependence(item, j, theStack);
+                if (whichPack != NULL)
+                    addPackageDependencies(whichPack, j, level + 1, theInfo,
+                                           theStack);
+                else
+                    addFunctionDependencies(whichFunc, j, level + 1, -1,
+                                            theInfo, theStack);
+            }
+        }    /* getTypeOid */
+    }        /* for(i ... */
+    theStack->objects[item].status = 1;
+    /* All done - types generate dependencies only via in/out/send/rec */
+}
+
+/*
+ * addPackageDependencies
+ *        add dependencies for a package
+ *
+ * theOpr is a pointer to this operator, item is its index in
+ * theStack->objects, level is the level at which it is (dependencies at +1),
+ * theInfo is the global info, and theStack is our build stack
+ */
+static void
+addPackageDependencies(PackInfo *thePack, int item, int level,
+                       PackFuncTypeInfo *theInfo, Stack *theStack)
+{
+    int        i;
+
+    for (i = 0; i < thePack->numTypes; i++)
+        addTypeDependencies(&thePack->packTypes[i], item, level, item,
+                            theInfo, theStack);
+    for (i = 0; i < thePack->numFuncs; i++)
+        addFunctionDependencies(&thePack->packFuncs[i], item, level, item,
+                                theInfo, theStack);
+    for (i = 0; i < thePack->numAggs; i++)
+        addAggregateDependencies(&thePack->packAggs[i], item, level, item,
+                                theInfo, theStack);
+    for (i = 0; i < thePack->numOprs; i++)
+        addOperatorDependencies(&thePack->packOprs[i], item, level, item,
+                                theInfo, theStack);
+    theStack->objects[item].status = 1;
+}
+
+/*
+ * makeDependList
+ *        Make a depend structure for use w/ ArchiveElement listing the
+ *        dependnecies for an object.
+ */
+static
+void makeDependList(int i, Stack *theStack, const char *((**deps)[]))
+{
+    int        j, k;
+    char    buffer[16];
+
+    if (theStack->objects[i].dependCount == 0)
+    {
+        *deps = NULL;
+        return;
+    }
+
+    *deps = calloc(theStack->objects[i].dependCount + 1, sizeof(char *));
+    if (*deps == NULL)
+    {
+        write_msg(NULL, "makeDependList: couldn't calloc() memory");
+        exit_nicely();
+    }
+
+    for(j = theStack->objects[i].dependHead, k = 0; j != -1;
+        j = theStack->dependents[j].link)
+    {
+        snprintf(buffer, 16, "%u",
+                 theStack->objects[theStack->dependents[j].dependee].oid);
+        (**deps)[k++] = strdup(buffer);
+    }
+    (**deps)[k] = NULL;
+}
+
+/*
+ * makeStackList
+ *        make a StackList structure from a given Stack
+ *
+ *        This routine builds a set of tail queues, one for each "level" of
+ *    object in theStack. Thus there are maxLevel + 1 queues. The queues consist
+ *    of three parts: the "heads", the "links", and the "tails". There is one
+ *    heads entry for each queue, and each entry contains the index into
+ *    theStack->objects of the first object in this queue's list. There is one
+ *    entry in links for each element in theStack->objects, and it points to the
+ *    next object in this queue, with -1 indicating the end of the list. There
+ *    is one tails element for each queue, and it is a pointer to the last
+ *    index integer in this queue (the one needing updating when we're appending
+ *    to the end of the list).
+ *
+ *        To begin, we allocate the needed space, and initialize all of tails
+ *    pointers to point to the corresponding entry in the heads array. We then
+ *    walk the objects array in theStack, and note the level of each element.
+ *    We then add that element's offset to the queue for that array. As we know
+ *    that the queues won't be scanned until we're done, we don't actually
+ *    terminate the end of the list with a -1.
+ *
+ *        When we are all done, we go throuh and add the terminating -1's we
+ *    didn't add above. This makes terminating the list go as O(maxLevel) rather
+ *    than O(numObjects).
+ */
+static StackList *makeStackList(Stack *theStack)
+{
+    StackList       *theList;
+    int               *heads;
+    int               *links;
+    int              **tails;
+    int                i, lev;
+
+    theList = malloc(sizeof(StackList));
+    heads = malloc(sizeof(int) * (theStack->maxLevel + 1));
+    links = malloc(sizeof(int) * (theStack->numObjects));
+    tails = malloc(sizeof(int *) * (theStack->maxLevel + 1));
+
+    theList->heads = heads;
+    theList->links = links;
+    theList->tails = tails;
+
+    /* Initialize the queues */
+    for (i = 0; i <= theStack->maxLevel; i++)
+        tails[i] = &heads[i];
+
+    /* add the elements */
+    for (i = 0; i < theStack->numObjects; i++)
+    {
+        lev = theStack->objects[i].level;
+        *tails[lev] = i;
+        tails[lev] = &links[i];
+    }
+
+    /* terminate the queues */
+    for (i = 0; i <= theStack->maxLevel; i++)
+        *tails[i] = -1;
+
+    return theList;
+}
+
+static void
+freeStackList(StackList * theList)
+{
+    free(theList->heads);
+    free(theList->links);
+    free(theList->tails);
+    free(theList);
+}
+
+/*
+ * dumpPackage
+ *        actually store this package
+ *
+ *        First we store the package globals. Next we store the types.
+ *    Third comes the functions. Then we do the aggregates and operators.
+ *
+ *    thePack is a pointer to one of the packages in pinfo. It's just easier
+ *    to directly use the pointer rather than know which index it is.
+ */
+static void
+dumpPackage(Archive *fout, Archive *gatherer, int index, Stack *theStack,
+            PackInfo *pinfo, int numPacks, FuncInfo *finfo, int numFuncs,
+            TypeInfo *tinfo, int numTypes)
+{
+    int            i, j, k;
+    PQExpBuffer    q, del;
+    char        lang[NAMEDATALEN];
+    PackInfo   *thePack = theStack->objects[index].datum;
+    const char *((*deps)[]);
+
+    makeDependList(index, theStack, &deps);
+
+    q = createPQExpBuffer();
+    del = createPQExpBuffer();
+
+    appendPQExpBuffer(q, "CREATE PACKAGE %s AS\n", thePack->packname);
+    appendPQExpBuffer(del, "DROP PACKAGE %s;\n", thePack->packname);
+
+    ArchiveEntry(gatherer, thePack->oid, thePack->packname, "PACKAGE",
+                 deps, q->data, del->data, "", thePack->username, NULL, NULL);
+
+    resetPQExpBuffer(q);
+    resetPQExpBuffer(del);
+
+    /*
+     * Do package globals
+     */
+    j = 1;    /* first sequence # will be 1 also */
+    k = 0;    /* Flag first time through. */
+    for (i = 0; i <= thePack->numGlobals; i++)
+    {
+        PackGlobInfo   *glo = &thePack->packGlobals[i];
+
+        /*
+         * We look to see if we're at the very end, or we're in the middle
+         * and this sequence is not past the last one. If so, we need to
+         * terminate the last run.
+         */
+        if ((i == thePack->numGlobals) || ((glo->seq <= j) && (k != 0)))
+        {
+            if (k != 0)        /* close the existing declaration */
+                appendPQExpBuffer(q, " LANGUAGE '%s'\n", lang);
+            k = 0;
+            if (i == thePack->numGlobals)
+            {
+                ArchiveEntry(gatherer, "0", "None", "GLBL", NULL, q->data,
+                             "", "", "", NULL, NULL);
+                break;
+            }
+        }
+
+        /* This is either the first time, or we're in a new sequence */
+        if (k == 0)
+        {
+            PGresult   *res;
+            int            nlangs;
+
+            appendPQExpBuffer(del, "SELECT lanname FROM pg_language "
+                              "where oid = %u", glo->langId);
+
+            res = PQexec(g_conn, del->data);
+            if (!res ||
+                PQresultStatus(res) != PGRES_TUPLES_OK)
+            {
+                write_msg(NULL, "dumpPackage(): SELECT for procedural language"
+                                " failed. Explanation from backend: '%s'.\n",
+                                PQerrorMessage(g_conn));
+                exit_nicely();
+            }
+            nlangs = PQntuples(res);
+
+            if (nlangs != 1)
+            {
+                write_msg(NULL, "dumpPackage(): procedural language %u not "
+                                " found\n", glo->langId);
+                exit_nicely();
+            }
+            strcpy(lang, PQgetvalue(res, 0, PQfnumber(res, "lanname")));
+            resetPQExpBuffer(del);
+
+            appendPQExpBuffer(q, "DECLARE ");
+        }    /* done getting language name right */
+
+        j = glo->seq;
+
+        if (k != 0)
+            appendPQExpBuffer(q, ", ");
+
+        appendPQExpBuffer(q, "%s '%s'", glo->varname, glo->vartext);
+
+        k = 1;
+    }
+
+    /*
+     * Do types
+     */
+    for (i = 0; i < thePack->numTypes; i++)
+    {
+        TypeInfo   *ty = &thePack->packTypes[i];
+
+        dumpTypes(gatherer, finfo, numFuncs, ty, 1, pinfo, numPacks, 1);
+    }
+
+    /*
+     * Do functions
+     */
+    for (i = 0; i < thePack->numFuncs; i++)
+    {
+        FuncInfo   *fy = &thePack->packFuncs[i];
+        int            format;
+
+
+        if (!strncmp(fy->proname, "__packinit_", 11))
+            format = 2;
+        else
+            format = 1;
+
+        dumpOneFunc(gatherer, fy, 0, tinfo, numTypes, pinfo, numPacks, format);
+    }
+
+    /*
+     * Do aggregates
+     */
+    for (i = 0; i < thePack->numAggs; i++)
+    {
+        AggInfo      *ag = &thePack->packAggs[i];
+
+        dumpAggs(gatherer, ag, 1, tinfo, numTypes, pinfo, numPacks, 1);
+    }
+
+    /*
+     * Do operators
+     */
+#if 1
+    for (i = 0; i < thePack->numOprs; i++)
+    {
+        OprInfo   *op = &thePack->packOprs[i];
+
+        dumpOprs(gatherer, op, 1, tinfo, numTypes, pinfo, numPacks, 1);
+    }
+#else
+    dumpOprs(gatherer, thePack->packOprs, thePack->numOprs, tinfo, numTypes,
+             pinfo, numPacks, 1);
+#endif
+    Package_Emit(fout, gatherer);
+
+    /*
+     * Dump package comments, if any
+     */
+
+    resetPQExpBuffer(q);
+    appendPQExpBuffer(q, "PACKAGE %s", thePack->packname);
+    dumpComment(fout, q->data, thePack->oid, "pg_package", 0, NULL);
+}
+
+/*
+ * dumPackages
+ *        writes out to fout the queries to recreate all the user-defined packages
+ *
+ *        Rather complicated as the things in a package can depend on
+ *    types and functions in other packages or in standard. Also types &
+ *    functions in standard can depend on other packages, or other types &
+ *    functions in standard. Also, we put the complexity of figuring out when
+ *    we need to emit an object (package, function, or type) here rather than
+ *    spread it out in dumpTypes() and dumpOneFunc().
+ *
+ *        The approach is to build a list of Objects (packages, types, and
+ *    functions), and their dependencies. Each Object has the underlying object's
+ *    type, status (1 == fully explored), oid, addres, and "level". "level" is
+ *    an indication of how many successive things depend on this object. An
+ *    object which is depended on by another object must have a level value
+ *    greater than the object that depends on it. In this implimentation, an
+ *    object which is depended on by other objects will have a level value
+ *    one greater than the maximum level value for the objects which depend on
+ *    it. Objects which are not depended on by other objects have a level of
+ *    zero. We also maintain the largets level value seen in the set of Objects.
+ *
+ *        When it comes time to emit the packages and dependents, we make a
+ *    list for each level value, from maxLevel to 0. We scan the list of
+ *    objects, and add each one to the list for its level. We then dump
+ *    all objects on the maxLevel list, then the maxLevel - 1 list, and so
+ *    on until we emit the level 0 list. This way we ensure that all objects
+ *    are dumped before any object that depends on them.
+ */
+void
+dumpPackages(Archive *fout, PackInfo *pinfo, int numPacks, FuncInfo *finfo,
+             int numFuncs, TypeInfo *tinfo, int numTypes)
+{
+    Stack               *theStack;
+    StackList           *theList;
+    PackFuncTypeInfo   *theInfo;
+    int                    i, j;
+    Archive               *gatherer;
+
+    theStack = newStack();
+
+    theInfo = malloc(sizeof(PackFuncTypeInfo));
+    theInfo->package = pinfo;
+    theInfo->function = finfo;
+    theInfo->type = tinfo;
+    theInfo->numPackage = numPacks;
+    theInfo->numFunction = numFuncs;
+    theInfo->numType = numTypes;
+
+#if 0
+    write_msg(NULL, "%s Starting package dump %s\n",
+                    g_comment_start, g_comment_end);
+#endif
+    for (i = 0; i < numPacks; i++)
+    {
+        if (findObject(pinfo[i].packId, theStack) == -1)
+        {
+            j = addObject(pinfo[i].packId, OBJECT_PACKAGE, 0,
+                              &pinfo[i], theStack);
+            addPackageDependencies(&pinfo[i], j, 0, theInfo, theStack);
+        }
+    }
+#if 0
+    write_msg(NULL, "%s done scan, now for StackList making %s\n",
+                    g_comment_start, g_comment_end);
+#endif
+
+    /* now make the link list */
+    theList = makeStackList(theStack);
+
+    gatherer = CreateArchive("", archPackage, 0);
+
+    for (i = theStack->maxLevel; i >= 0; i--)
+        for (j = theList->heads[i]; j != -1; j = theList->links[j])
+        {
+            switch (theStack->objects[j].type)
+            {
+                case OBJECT_PACKAGE:
+                    dumpPackage(fout, gatherer, j, theStack,
+                                pinfo, numPacks, finfo, numFuncs,
+                                tinfo, numTypes);
+                    break;
+
+                case OBJECT_TYPE:
+                    dumpTypes(fout, finfo, numFuncs,
+                              theStack->objects[j].datum, 1, pinfo, numPacks,
+                              0);
+                    break;
+
+                case OBJECT_FUNCTION:
+                    dumpOneFunc(fout, theStack->objects[j].datum, 0,
+                                tinfo, numTypes, pinfo, numPacks, 0);
+                    break;
+
+            }
+        }
+
+    free(theInfo);
+    freeStack(theStack);
+    freeStackList(theList);
+}
Index: src/include/fmgr.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/fmgr.h,v
retrieving revision 1.15
diff -u -r1.15 fmgr.h
--- src/include/fmgr.h    2001/10/06 23:21:44    1.15
+++ src/include/fmgr.h    2001/10/17 16:41:53
@@ -41,6 +41,7 @@
                                  * called */
     Oid            fn_oid;            /* OID of function (NOT of handler, if
                                  * any) */
+    Oid            fn_pack;        /* OID of package contining fn_oid */
     short        fn_nargs;        /* 0..FUNC_MAX_ARGS, or -1 if variable arg
                                  * count */
     bool        fn_strict;        /* function is "strict" (NULL in => NULL
@@ -155,6 +156,9 @@
         if ((Pointer) (ptr) != PG_GETARG_POINTER(n)) \
             pfree(ptr); \
     } while (0)
+
+/* Macro for fetching bits of fcinfo */
+#define PG_GET_PACKID(n)    (fcinfo->flinfo->fn_pack)

 /* Macros for fetching arguments of standard types */

Index: src/include/catalog/catname.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/catalog/catname.h,v
retrieving revision 1.20
diff -u -r1.20 catname.h
--- src/include/catalog/catname.h    2001/08/25 18:52:42    1.20
+++ src/include/catalog/catname.h    2001/10/17 16:41:54
@@ -31,6 +31,8 @@
 #define  ListenerRelationName "pg_listener"
 #define  OperatorClassRelationName "pg_opclass"
 #define  OperatorRelationName "pg_operator"
+#define  PackageRelationName "pg_package"
+#define  PackGlobalRelationName "pg_packglobal"
 #define  ProcedureRelationName "pg_proc"
 #define  RelationRelationName "pg_class"
 #define  RewriteRelationName "pg_rewrite"
Index: src/include/catalog/indexing.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/catalog/indexing.h,v
retrieving revision 1.53
diff -u -r1.53 indexing.h
--- src/include/catalog/indexing.h    2001/08/21 16:36:05    1.53
+++ src/include/catalog/indexing.h    2001/10/17 16:41:54
@@ -36,6 +36,8 @@
 #define Num_pg_largeobject_indices    1
 #define Num_pg_opclass_indices        2
 #define Num_pg_operator_indices        2
+#define Num_pg_package_indices        2
+#define Num_pg_packglobal_indices    1
 #define Num_pg_proc_indices            2
 #define Num_pg_relcheck_indices        1
 #define Num_pg_rewrite_indices        2
@@ -50,7 +52,7 @@
 #define AccessMethodOperatorIndex    "pg_amop_opc_opr_index"
 #define AccessMethodStrategyIndex    "pg_amop_opc_strategy_index"
 #define AccessMethodProcedureIndex    "pg_amproc_opc_procnum_index"
-#define AggregateNameTypeIndex        "pg_aggregate_name_type_index"
+#define AggregateNamePackTypeIndex    "pg_aggregate_name_pack_type_index"
 #define AggregateOidIndex            "pg_aggregate_oid_index"
 #define AmNameIndex                    "pg_am_name_index"
 #define AmOidIndex                    "pg_am_oid_index"
@@ -74,7 +76,10 @@
 #define OpclassOidIndex                "pg_opclass_oid_index"
 #define OperatorNameIndex            "pg_operator_oprname_l_r_k_index"
 #define OperatorOidIndex            "pg_operator_oid_index"
-#define ProcedureNameIndex            "pg_proc_proname_narg_type_index"
+#define PackageNameIndex            "pg_package_name_index"
+#define PackageOidIndex                "pg_package_oid_index"
+#define PackageGlobalIndex            "pg_packglobal_index"
+#define ProcedureNameIndex            "pg_proc_proname_pack_narg_type_index"
 #define ProcedureOidIndex            "pg_proc_oid_index"
 #define RelCheckIndex                "pg_relcheck_rcrelid_index"
 #define RewriteOidIndex                "pg_rewrite_oid_index"
@@ -106,6 +111,8 @@
 extern char *Name_pg_largeobject_indices[];
 extern char *Name_pg_opclass_indices[];
 extern char *Name_pg_operator_indices[];
+extern char *Name_pg_package_indices[];
+extern char *Name_pg_packglobal_indices[];
 extern char *Name_pg_proc_indices[];
 extern char *Name_pg_relcheck_indices[];
 extern char *Name_pg_rewrite_indices[];
@@ -150,7 +157,7 @@
  * that is just like in a normal 'create index' SQL command.
  */

-DECLARE_UNIQUE_INDEX(pg_aggregate_name_type_index on pg_aggregate using btree(aggname name_ops, aggbasetype oid_ops));
+DECLARE_UNIQUE_INDEX(pg_aggregate_name_pack_type_index on pg_aggregate using btree(aggname name_ops, aggpack oid_ops,
aggbasetypeoid_ops)); 
 DECLARE_UNIQUE_INDEX(pg_aggregate_oid_index on pg_aggregate using btree(oid oid_ops));
 DECLARE_UNIQUE_INDEX(pg_am_name_index on pg_am using btree(amname name_ops));
 DECLARE_UNIQUE_INDEX(pg_am_oid_index on pg_am using btree(oid oid_ops));
@@ -178,8 +185,11 @@
 DECLARE_UNIQUE_INDEX(pg_opclass_oid_index on pg_opclass using btree(oid oid_ops));
 DECLARE_UNIQUE_INDEX(pg_operator_oid_index on pg_operator using btree(oid oid_ops));
 DECLARE_UNIQUE_INDEX(pg_operator_oprname_l_r_k_index on pg_operator using btree(oprname name_ops, oprleft oid_ops,
oprrightoid_ops, oprkind char_ops)); 
+DECLARE_UNIQUE_INDEX(pg_package_oid_index on pg_package using btree(oid oid_ops));
+DECLARE_UNIQUE_INDEX(pg_package_name_index on pg_package using btree(packname name_ops));
+DECLARE_UNIQUE_INDEX(pg_packglobal_index on pg_packglobal using btree(pglobalid oid_ops, pgloballang oid_ops,
pglobalseqint4_ops)); 
 DECLARE_UNIQUE_INDEX(pg_proc_oid_index on pg_proc using btree(oid oid_ops));
-DECLARE_UNIQUE_INDEX(pg_proc_proname_narg_type_index on pg_proc using btree(proname name_ops, pronargs int2_ops,
proargtypesoidvector_ops)); 
+DECLARE_UNIQUE_INDEX(pg_proc_proname_pack_narg_type_index on pg_proc using btree(proname name_ops, propack oid_ops,
pronargsint2_ops, proargtypes oidvector_ops)); 
 /* This following index is not used for a cache and is not unique */
 DECLARE_INDEX(pg_relcheck_rcrelid_index on pg_relcheck using btree(rcrelid oid_ops));
 DECLARE_UNIQUE_INDEX(pg_rewrite_oid_index on pg_rewrite using btree(oid oid_ops));
Index: src/include/catalog/pg_aggregate.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/catalog/pg_aggregate.h,v
retrieving revision 1.32
diff -u -r1.32 pg_aggregate.h
--- src/include/catalog/pg_aggregate.h    2001/09/28 08:09:13    1.32
+++ src/include/catalog/pg_aggregate.h    2001/10/17 16:41:54
@@ -32,6 +32,7 @@
  *        cpp turns this into typedef struct FormData_pg_aggregate
  *
  *    aggname                name of the aggregate
+ *    aggpack                package containing the aggregate
  *    aggowner            owner (creator) of the aggregate
  *    aggtransfn            transition function
  *    aggfinalfn            final function
@@ -44,6 +45,7 @@
 CATALOG(pg_aggregate)
 {
     NameData    aggname;
+    Oid            aggpack;
     int4        aggowner;
     regproc        aggtransfn;
     regproc        aggfinalfn;
@@ -65,15 +67,16 @@
  * ----------------
  */

-#define Natts_pg_aggregate                8
+#define Natts_pg_aggregate                9
 #define Anum_pg_aggregate_aggname        1
-#define Anum_pg_aggregate_aggowner        2
-#define Anum_pg_aggregate_aggtransfn    3
-#define Anum_pg_aggregate_aggfinalfn    4
-#define Anum_pg_aggregate_aggbasetype    5
-#define Anum_pg_aggregate_aggtranstype    6
-#define Anum_pg_aggregate_aggfinaltype    7
-#define Anum_pg_aggregate_agginitval    8
+#define Anum_pg_aggregate_aggpack        2
+#define Anum_pg_aggregate_aggowner        3
+#define Anum_pg_aggregate_aggtransfn    4
+#define Anum_pg_aggregate_aggfinalfn    5
+#define Anum_pg_aggregate_aggbasetype    6
+#define Anum_pg_aggregate_aggtranstype    7
+#define Anum_pg_aggregate_aggfinaltype    8
+#define Anum_pg_aggregate_agginitval    9


 /* ----------------
@@ -81,88 +84,89 @@
  * ---------------
  */

-DATA(insert OID = 0 ( avg    PGUID int8_accum    numeric_avg        20     1231 1700 "{0,0,0}" ));
-DATA(insert OID = 0 ( avg    PGUID int4_avg_accum int8_avg        23     1016 1700 "{0,0}" ));
-DATA(insert OID = 0 ( avg    PGUID int2_avg_accum int8_avg        21     1016 1700 "{0,0}" ));
-DATA(insert OID = 0 ( avg    PGUID numeric_accum  numeric_avg    1700 1231 1700 "{0,0,0}" ));
-DATA(insert OID = 0 ( avg    PGUID float4_accum    float8_avg        700  1022 701 "{0,0,0}" ));
-DATA(insert OID = 0 ( avg    PGUID float8_accum    float8_avg        701  1022 701 "{0,0,0}" ));
-DATA(insert OID = 0 ( avg    PGUID interval_accum interval_avg    1186 1187 1186 "{0 second,0 second}" ));
-
-DATA(insert OID = 0 ( sum    PGUID int8_sum            -    20 1700 1700 _null_ ));
-DATA(insert OID = 0 ( sum    PGUID int4_sum            -    23   20   20 _null_ ));
-DATA(insert OID = 0 ( sum    PGUID int2_sum            -    21   20   20 _null_ ));
-DATA(insert OID = 0 ( sum    PGUID float4pl            -  700    700  700 _null_ ));
-DATA(insert OID = 0 ( sum    PGUID float8pl            -  701    701  701 _null_ ));
-DATA(insert OID = 0 ( sum    PGUID cash_pl            -  790    790  790 _null_ ));
-DATA(insert OID = 0 ( sum    PGUID interval_pl        - 1186 1186 1186 _null_ ));
-DATA(insert OID = 0 ( sum    PGUID numeric_add        - 1700 1700 1700 _null_ ));
-
-DATA(insert OID = 0 ( max    PGUID int8larger        -    20     20   20 _null_ ));
-DATA(insert OID = 0 ( max    PGUID int4larger        -    23     23   23 _null_ ));
-DATA(insert OID = 0 ( max    PGUID int2larger        -    21     21   21 _null_ ));
-DATA(insert OID = 0 ( max    PGUID oidlarger            -    26     26   26 _null_ ));
-DATA(insert OID = 0 ( max    PGUID float4larger        -  700    700  700 _null_ ));
-DATA(insert OID = 0 ( max    PGUID float8larger        -  701    701  701 _null_ ));
-DATA(insert OID = 0 ( max    PGUID int4larger        -  702    702  702 _null_ ));
-DATA(insert OID = 0 ( max    PGUID date_larger        - 1082 1082 1082 _null_ ));
-DATA(insert OID = 0 ( max    PGUID time_larger        - 1083 1083 1083 _null_ ));
-DATA(insert OID = 0 ( max    PGUID timetz_larger        - 1266 1266 1266 _null_ ));
-DATA(insert OID = 0 ( max    PGUID cashlarger        -  790    790  790 _null_ ));
-DATA(insert OID = 0 ( max    PGUID timestamp_larger    - 1114 1114 1114 _null_ ));
-DATA(insert OID = 0 ( max    PGUID timestamptz_larger - 1184 1184 1184 _null_ ));
-DATA(insert OID = 0 ( max    PGUID interval_larger    - 1186 1186 1186 _null_ ));
-DATA(insert OID = 0 ( max    PGUID text_larger        -    25     25   25 _null_ ));
-DATA(insert OID = 0 ( max    PGUID numeric_larger    - 1700 1700 1700 _null_ ));
-
-DATA(insert OID = 0 ( min    PGUID int8smaller        -    20     20   20 _null_ ));
-DATA(insert OID = 0 ( min    PGUID int4smaller        -    23     23   23 _null_ ));
-DATA(insert OID = 0 ( min    PGUID int2smaller        -    21     21   21 _null_ ));
-DATA(insert OID = 0 ( min    PGUID oidsmaller        -    26     26   26 _null_ ));
-DATA(insert OID = 0 ( min    PGUID float4smaller        -  700    700  700 _null_ ));
-DATA(insert OID = 0 ( min    PGUID float8smaller        -  701    701  701 _null_ ));
-DATA(insert OID = 0 ( min    PGUID int4smaller        -  702    702  702 _null_ ));
-DATA(insert OID = 0 ( min    PGUID date_smaller        - 1082 1082 1082 _null_ ));
-DATA(insert OID = 0 ( min    PGUID time_smaller        - 1083 1083 1083 _null_ ));
-DATA(insert OID = 0 ( min    PGUID timetz_smaller    - 1266 1266 1266 _null_ ));
-DATA(insert OID = 0 ( min    PGUID cashsmaller        -  790    790  790 _null_ ));
-DATA(insert OID = 0 ( min    PGUID timestamp_smaller - 1114 1114 1114 _null_ ));
-DATA(insert OID = 0 ( min    PGUID timestamptz_smaller - 1184 1184 1184 _null_ ));
-DATA(insert OID = 0 ( min    PGUID interval_smaller    - 1186 1186 1186 _null_ ));
-DATA(insert OID = 0 ( min    PGUID text_smaller        -    25     25   25 _null_ ));
-DATA(insert OID = 0 ( min    PGUID numeric_smaller    - 1700 1700 1700 _null_ ));
+DATA(insert OID = 0 ( avg    10 PGUID int8_accum    numeric_avg        20     1231 1700 "{0,0,0}" ));
+DATA(insert OID = 0 ( avg    10 PGUID int4_avg_accum int8_avg        23     1016 1700 "{0,0}" ));
+DATA(insert OID = 0 ( avg    10 PGUID int2_avg_accum int8_avg        21     1016 1700 "{0,0}" ));
+DATA(insert OID = 0 ( avg    10 PGUID numeric_accum  numeric_avg    1700 1231 1700 "{0,0,0}" ));
+DATA(insert OID = 0 ( avg    10 PGUID float4_accum    float8_avg        700  1022 701 "{0,0,0}" ));
+DATA(insert OID = 0 ( avg    10 PGUID float8_accum    float8_avg        701  1022 701 "{0,0,0}" ));
+DATA(insert OID = 0 ( avg    10 PGUID interval_accum interval_avg    1186 1187 1186 "{0 second,0 second}" ));
+
+DATA(insert OID = 0 ( sum    10 PGUID int8_sum            -    20 1700 1700 _null_ ));
+DATA(insert OID = 0 ( sum    10 PGUID int4_sum            -    23   20   20 _null_ ));
+DATA(insert OID = 0 ( sum    10 PGUID int2_sum            -    21   20   20 _null_ ));
+DATA(insert OID = 0 ( sum    10 PGUID float4pl            -  700    700  700 _null_ ));
+DATA(insert OID = 0 ( sum    10 PGUID float8pl            -  701    701  701 _null_ ));
+DATA(insert OID = 0 ( sum    10 PGUID cash_pl            -  790    790  790 _null_ ));
+DATA(insert OID = 0 ( sum    10 PGUID interval_pl        - 1186 1186 1186 _null_ ));
+DATA(insert OID = 0 ( sum    10 PGUID numeric_add        - 1700 1700 1700 _null_ ));
+
+DATA(insert OID = 0 ( max    10 PGUID int8larger        -    20     20   20 _null_ ));
+DATA(insert OID = 0 ( max    10 PGUID int4larger        -    23     23   23 _null_ ));
+DATA(insert OID = 0 ( max    10 PGUID int2larger        -    21     21   21 _null_ ));
+DATA(insert OID = 0 ( max    10 PGUID oidlarger            -    26     26   26 _null_ ));
+DATA(insert OID = 0 ( max    10 PGUID float4larger        -  700    700  700 _null_ ));
+DATA(insert OID = 0 ( max    10 PGUID float8larger        -  701    701  701 _null_ ));
+DATA(insert OID = 0 ( max    10 PGUID int4larger        -  702    702  702 _null_ ));
+DATA(insert OID = 0 ( max    10 PGUID date_larger        - 1082 1082 1082 _null_ ));
+DATA(insert OID = 0 ( max    10 PGUID time_larger        - 1083 1083 1083 _null_ ));
+DATA(insert OID = 0 ( max    10 PGUID timetz_larger        - 1266 1266 1266 _null_ ));
+DATA(insert OID = 0 ( max    10 PGUID cashlarger        -  790    790  790 _null_ ));
+DATA(insert OID = 0 ( max    10 PGUID timestamp_larger    - 1114 1114 1114 _null_ ));
+DATA(insert OID = 0 ( max    10 PGUID timestamptz_larger - 1184 1184 1184 _null_ ));
+DATA(insert OID = 0 ( max    10 PGUID interval_larger    - 1186 1186 1186 _null_ ));
+DATA(insert OID = 0 ( max    10 PGUID text_larger        -    25     25   25 _null_ ));
+DATA(insert OID = 0 ( max    10 PGUID numeric_larger    - 1700 1700 1700 _null_ ));
+
+DATA(insert OID = 0 ( min    10 PGUID int8smaller        -    20     20   20 _null_ ));
+DATA(insert OID = 0 ( min    10 PGUID int4smaller        -    23     23   23 _null_ ));
+DATA(insert OID = 0 ( min    10 PGUID int2smaller        -    21     21   21 _null_ ));
+DATA(insert OID = 0 ( min    10 PGUID oidsmaller        -    26     26   26 _null_ ));
+DATA(insert OID = 0 ( min    10 PGUID float4smaller        -  700    700  700 _null_ ));
+DATA(insert OID = 0 ( min    10 PGUID float8smaller        -  701    701  701 _null_ ));
+DATA(insert OID = 0 ( min    10 PGUID int4smaller        -  702    702  702 _null_ ));
+DATA(insert OID = 0 ( min    10 PGUID date_smaller        - 1082 1082 1082 _null_ ));
+DATA(insert OID = 0 ( min    10 PGUID time_smaller        - 1083 1083 1083 _null_ ));
+DATA(insert OID = 0 ( min    10 PGUID timetz_smaller    - 1266 1266 1266 _null_ ));
+DATA(insert OID = 0 ( min    10 PGUID cashsmaller        -  790    790  790 _null_ ));
+DATA(insert OID = 0 ( min    10 PGUID timestamp_smaller - 1114 1114 1114 _null_ ));
+DATA(insert OID = 0 ( min    10 PGUID timestamptz_smaller - 1184 1184 1184 _null_ ));
+DATA(insert OID = 0 ( min    10 PGUID interval_smaller    - 1186 1186 1186 _null_ ));
+DATA(insert OID = 0 ( min    10 PGUID text_smaller        -    25     25   25 _null_ ));
+DATA(insert OID = 0 ( min    10 PGUID numeric_smaller    - 1700 1700 1700 _null_ ));

 /*
  * Using int8inc for count() is cheating a little, since it really only
  * takes 1 parameter not 2, but nodeAgg.c won't complain ...
  */
-DATA(insert OID = 0 ( count PGUID int8inc            - 0 20 20 0 ));
+DATA(insert OID = 0 ( count 10 PGUID int8inc            - 0 20 20 0 ));

-DATA(insert OID = 0 ( variance    PGUID int8_accum    numeric_variance    20     1231 1700 "{0,0,0}" ));
-DATA(insert OID = 0 ( variance    PGUID int4_accum    numeric_variance    23     1231 1700 "{0,0,0}" ));
-DATA(insert OID = 0 ( variance    PGUID int2_accum    numeric_variance    21     1231 1700 "{0,0,0}" ));
-DATA(insert OID = 0 ( variance    PGUID float4_accum    float8_variance        700  1022 701 "{0,0,0}" ));
-DATA(insert OID = 0 ( variance    PGUID float8_accum    float8_variance        701  1022 701 "{0,0,0}" ));
-DATA(insert OID = 0 ( variance    PGUID numeric_accum  numeric_variance    1700 1231 1700 "{0,0,0}" ));
-
-DATA(insert OID = 0 ( stddev    PGUID int8_accum    numeric_stddev        20     1231 1700 "{0,0,0}" ));
-DATA(insert OID = 0 ( stddev    PGUID int4_accum    numeric_stddev        23     1231 1700 "{0,0,0}" ));
-DATA(insert OID = 0 ( stddev    PGUID int2_accum    numeric_stddev        21     1231 1700 "{0,0,0}" ));
-DATA(insert OID = 0 ( stddev    PGUID float4_accum    float8_stddev        700  1022 701 "{0,0,0}" ));
-DATA(insert OID = 0 ( stddev    PGUID float8_accum    float8_stddev        701  1022 701 "{0,0,0}" ));
-DATA(insert OID = 0 ( stddev    PGUID numeric_accum  numeric_stddev        1700 1231 1700 "{0,0,0}" ));
+DATA(insert OID = 0 ( variance    10 PGUID int8_accum    numeric_variance    20     1231 1700 "{0,0,0}" ));
+DATA(insert OID = 0 ( variance    10 PGUID int4_accum    numeric_variance    23     1231 1700 "{0,0,0}" ));
+DATA(insert OID = 0 ( variance    10 PGUID int2_accum    numeric_variance    21     1231 1700 "{0,0,0}" ));
+DATA(insert OID = 0 ( variance    10 PGUID float4_accum    float8_variance        700  1022 701 "{0,0,0}" ));
+DATA(insert OID = 0 ( variance    10 PGUID float8_accum    float8_variance        701  1022 701 "{0,0,0}" ));
+DATA(insert OID = 0 ( variance    10 PGUID numeric_accum  numeric_variance    1700 1231 1700 "{0,0,0}" ));
+
+DATA(insert OID = 0 ( stddev    10 PGUID int8_accum    numeric_stddev        20     1231 1700 "{0,0,0}" ));
+DATA(insert OID = 0 ( stddev    10 PGUID int4_accum    numeric_stddev        23     1231 1700 "{0,0,0}" ));
+DATA(insert OID = 0 ( stddev    10 PGUID int2_accum    numeric_stddev        21     1231 1700 "{0,0,0}" ));
+DATA(insert OID = 0 ( stddev    10 PGUID float4_accum    float8_stddev        700  1022 701 "{0,0,0}" ));
+DATA(insert OID = 0 ( stddev    10 PGUID float8_accum    float8_stddev        701  1022 701 "{0,0,0}" ));
+DATA(insert OID = 0 ( stddev    10 PGUID numeric_accum  numeric_stddev        1700 1231 1700 "{0,0,0}" ));

 /*
  * prototypes for functions in pg_aggregate.c
  */
+struct DefElem;
 extern void AggregateCreate(char *aggName,
-                char *aggtransfnName,
-                char *aggfinalfnName,
+                Oid aggPack,
+                struct DefElem *aggtransfnName,
+                struct DefElem *aggfinalfnName,
                 char *aggbasetypeName,
                 char *aggtranstypeName,
                 char *agginitval);

-extern Datum AggNameGetInitVal(char *aggName, Oid basetype,
-                  bool *isNull);
+extern Datum AggIdGetInitVal(Oid aggId, bool *isNull);

 #endif     /* PG_AGGREGATE_H */
Index: src/include/catalog/pg_attribute.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/catalog/pg_attribute.h,v
retrieving revision 1.76
diff -u -r1.76 pg_attribute.h
--- src/include/catalog/pg_attribute.h    2001/08/26 16:56:00    1.76
+++ src/include/catalog/pg_attribute.h    2001/10/17 16:41:54
@@ -224,40 +224,42 @@
  */
 #define Schema_pg_type \
 { 1247, {"typname"},       19, DEFAULT_ATTSTATTARGET, NAMEDATALEN,    1, 0, -1, -1, false, 'p', false, 'i', false,
false}, \ 
-{ 1247, {"typowner"},       23, 0,    4,    2, 0, -1, -1, true, 'p', false, 'i', false, false }, \
-{ 1247, {"typlen"},           21, 0,    2,    3, 0, -1, -1, true, 'p', false, 's', false, false }, \
-{ 1247, {"typprtlen"},       21, 0,    2,    4, 0, -1, -1, true, 'p', false, 's', false, false }, \
-{ 1247, {"typbyval"},       16, 0,    1,    5, 0, -1, -1, true, 'p', false, 'c', false, false }, \
-{ 1247, {"typtype"},       18, 0,    1,    6, 0, -1, -1, true, 'p', false, 'c', false, false }, \
-{ 1247, {"typisdefined"},  16, 0,    1,    7, 0, -1, -1, true, 'p', false, 'c', false, false }, \
-{ 1247, {"typdelim"},       18, 0,    1,    8, 0, -1, -1, true, 'p', false, 'c', false, false }, \
-{ 1247, {"typrelid"},       26, 0,    4,    9, 0, -1, -1, true, 'p', false, 'i', false, false }, \
-{ 1247, {"typelem"},       26, 0,    4, 10, 0, -1, -1, true, 'p', false, 'i', false, false }, \
-{ 1247, {"typinput"},       24, 0,    4, 11, 0, -1, -1, true, 'p', false, 'i', false, false }, \
-{ 1247, {"typoutput"},       24, 0,    4, 12, 0, -1, -1, true, 'p', false, 'i', false, false }, \
-{ 1247, {"typreceive"},    24, 0,    4, 13, 0, -1, -1, true, 'p', false, 'i', false, false }, \
-{ 1247, {"typsend"},       24, 0,    4, 14, 0, -1, -1, true, 'p', false, 'i', false, false }, \
-{ 1247, {"typalign"},       18, 0,    1, 15, 0, -1, -1, true, 'p', false, 'c', false, false }, \
-{ 1247, {"typstorage"},    18, 0,    1, 16, 0, -1, -1, true, 'p', false, 'c', false, false }, \
-{ 1247, {"typdefault"},    25, 0,  -1, 17, 0, -1, -1, false    , 'x', false, 'i', false, false }
+{ 1247, {"typpack"},       26, 0,    4,    2, 0, -1, -1, true, 'p', false, 'i', false, false }, \
+{ 1247, {"typowner"},       23, 0,    4,    3, 0, -1, -1, true, 'p', false, 'i', false, false }, \
+{ 1247, {"typlen"},           21, 0,    2,    4, 0, -1, -1, true, 'p', false, 's', false, false }, \
+{ 1247, {"typprtlen"},       21, 0,    2,    5, 0, -1, -1, true, 'p', false, 's', false, false }, \
+{ 1247, {"typbyval"},       16, 0,    1,    6, 0, -1, -1, true, 'p', false, 'c', false, false }, \
+{ 1247, {"typtype"},       18, 0,    1,    7, 0, -1, -1, true, 'p', false, 'c', false, false }, \
+{ 1247, {"typisdefined"},  16, 0,    1,    8, 0, -1, -1, true, 'p', false, 'c', false, false }, \
+{ 1247, {"typdelim"},       18, 0,    1,    9, 0, -1, -1, true, 'p', false, 'c', false, false }, \
+{ 1247, {"typrelid"},       26, 0,    4, 10, 0, -1, -1, true, 'p', false, 'i', false, false }, \
+{ 1247, {"typelem"},       26, 0,    4, 11, 0, -1, -1, true, 'p', false, 'i', false, false }, \
+{ 1247, {"typinput"},       24, 0,    4, 12, 0, -1, -1, true, 'p', false, 'i', false, false }, \
+{ 1247, {"typoutput"},       24, 0,    4, 13, 0, -1, -1, true, 'p', false, 'i', false, false }, \
+{ 1247, {"typreceive"},    24, 0,    4, 14, 0, -1, -1, true, 'p', false, 'i', false, false }, \
+{ 1247, {"typsend"},       24, 0,    4, 15, 0, -1, -1, true, 'p', false, 'i', false, false }, \
+{ 1247, {"typalign"},       18, 0,    1, 16, 0, -1, -1, true, 'p', false, 'c', false, false }, \
+{ 1247, {"typstorage"},    18, 0,    1, 17, 0, -1, -1, true, 'p', false, 'c', false, false }, \
+{ 1247, {"typdefault"},    25, 0,  -1, 18, 0, -1, -1, false    , 'x', false, 'i', false, false }

 DATA(insert ( 1247 typname            19 DEFAULT_ATTSTATTARGET NAMEDATALEN   1 0 -1 -1 f p f i f f));
-DATA(insert ( 1247 typowner            23 0  4   2 0 -1 -1 t p f i f f));
-DATA(insert ( 1247 typlen            21 0  2   3 0 -1 -1 t p f s f f));
-DATA(insert ( 1247 typprtlen        21 0  2   4 0 -1 -1 t p f s f f));
-DATA(insert ( 1247 typbyval            16 0  1   5 0 -1 -1 t p f c f f));
-DATA(insert ( 1247 typtype            18 0  1   6 0 -1 -1 t p f c f f));
-DATA(insert ( 1247 typisdefined        16 0  1   7 0 -1 -1 t p f c f f));
-DATA(insert ( 1247 typdelim            18 0  1   8 0 -1 -1 t p f c f f));
-DATA(insert ( 1247 typrelid            26 0  4   9 0 -1 -1 t p f i f f));
-DATA(insert ( 1247 typelem            26 0  4  10 0 -1 -1 t p f i f f));
-DATA(insert ( 1247 typinput            24 0  4  11 0 -1 -1 t p f i f f));
-DATA(insert ( 1247 typoutput        24 0  4  12 0 -1 -1 t p f i f f));
-DATA(insert ( 1247 typreceive        24 0  4  13 0 -1 -1 t p f i f f));
-DATA(insert ( 1247 typsend            24 0  4  14 0 -1 -1 t p f i f f));
-DATA(insert ( 1247 typalign            18 0  1  15 0 -1 -1 t p f c f f));
-DATA(insert ( 1247 typstorage        18 0  1  16 0 -1 -1 t p f c f f));
-DATA(insert ( 1247 typdefault        25 0 -1  17 0 -1 -1 f x f i f f));
+DATA(insert ( 1247 typpack             26 0  4   2 0 -1 -1 t p f i f f));
+DATA(insert ( 1247 typowner            23 0  4   3 0 -1 -1 t p f i f f));
+DATA(insert ( 1247 typlen            21 0  2   4 0 -1 -1 t p f s f f));
+DATA(insert ( 1247 typprtlen        21 0  2   5 0 -1 -1 t p f s f f));
+DATA(insert ( 1247 typbyval            16 0  1   6 0 -1 -1 t p f c f f));
+DATA(insert ( 1247 typtype            18 0  1   7 0 -1 -1 t p f c f f));
+DATA(insert ( 1247 typisdefined        16 0  1   8 0 -1 -1 t p f c f f));
+DATA(insert ( 1247 typdelim            18 0  1   9 0 -1 -1 t p f c f f));
+DATA(insert ( 1247 typrelid            26 0  4  10 0 -1 -1 t p f i f f));
+DATA(insert ( 1247 typelem            26 0  4  11 0 -1 -1 t p f i f f));
+DATA(insert ( 1247 typinput            24 0  4  12 0 -1 -1 t p f i f f));
+DATA(insert ( 1247 typoutput        24 0  4  13 0 -1 -1 t p f i f f));
+DATA(insert ( 1247 typreceive        24 0  4  14 0 -1 -1 t p f i f f));
+DATA(insert ( 1247 typsend            24 0  4  15 0 -1 -1 t p f i f f));
+DATA(insert ( 1247 typalign            18 0  1  16 0 -1 -1 t p f c f f));
+DATA(insert ( 1247 typstorage        18 0  1  17 0 -1 -1 t p f c f f));
+DATA(insert ( 1247 typdefault        25 0 -1  18 0 -1 -1 f x f i f f));
 DATA(insert ( 1247 ctid                27 0  6  -1 0 -1 -1 f p f i f f));
 DATA(insert ( 1247 oid                26 0  4  -2 0 -1 -1 t p f i f f));
 DATA(insert ( 1247 xmin                28 0  4  -3 0 -1 -1 t p f i f f));
@@ -294,40 +296,42 @@
  */
 #define Schema_pg_proc \
 { 1255, {"proname"},            19, DEFAULT_ATTSTATTARGET, NAMEDATALEN,  1, 0, -1, -1, false, 'p', false, 'i', false,
false}, \ 
-{ 1255, {"proowner"},            23, 0,    4,    2, 0, -1, -1, true, 'p', false, 'i', false, false }, \
-{ 1255, {"prolang"},            26, 0,    4,    3, 0, -1, -1, true, 'p', false, 'i', false, false }, \
-{ 1255, {"proisinh"},            16, 0,    1,    4, 0, -1, -1, true, 'p', false, 'c', false, false }, \
-{ 1255, {"proistrusted"},        16, 0,    1,    5, 0, -1, -1, true, 'p', false, 'c', false, false }, \
-{ 1255, {"proiscachable"},        16, 0,    1,    6, 0, -1, -1, true, 'p', false, 'c', false, false }, \
-{ 1255, {"proisstrict"},        16, 0,    1,    7, 0, -1, -1, true, 'p', false, 'c', false, false }, \
-{ 1255, {"pronargs"},            21, 0,    2,    8, 0, -1, -1, true, 'p', false, 's', false, false }, \
-{ 1255, {"proretset"},            16, 0,    1,    9, 0, -1, -1, true, 'p', false, 'c', false, false }, \
-{ 1255, {"prorettype"},            26, 0,    4, 10, 0, -1, -1, true, 'p', false, 'i', false, false }, \
-{ 1255, {"proargtypes"},        30, 0, INDEX_MAX_KEYS*4, 11, 0, -1, -1, false, 'p', false, 'i', false, false }, \
-{ 1255, {"probyte_pct"},        23, 0,    4, 12, 0, -1, -1, true, 'p', false, 'i', false, false }, \
-{ 1255, {"properbyte_cpu"},        23, 0,    4, 13, 0, -1, -1, true, 'p', false, 'i', false, false }, \
-{ 1255, {"propercall_cpu"},        23, 0,    4, 14, 0, -1, -1, true, 'p', false, 'i', false, false }, \
-{ 1255, {"prooutin_ratio"},        23, 0,    4, 15, 0, -1, -1, true, 'p', false, 'i', false, false }, \
-{ 1255, {"prosrc"},                25, 0, -1, 16, 0, -1, -1, false, 'x', false, 'i', false, false }, \
-{ 1255, {"probin"},                17, 0, -1, 17, 0, -1, -1, false, 'x', false, 'i', false, false }
+{ 1255, {"propack"},            26, 0,    4,    2, 0, -1, -1, true, 'p', false, 'i', false, false }, \
+{ 1255, {"proowner"},            23, 0,    4,    3, 0, -1, -1, true, 'p', false, 'i', false, false }, \
+{ 1255, {"prolang"},            26, 0,    4,    4, 0, -1, -1, true, 'p', false, 'i', false, false }, \
+{ 1255, {"proisinh"},            16, 0,    1,    5, 0, -1, -1, true, 'p', false, 'c', false, false }, \
+{ 1255, {"proistrusted"},        16, 0,    1,    6, 0, -1, -1, true, 'p', false, 'c', false, false }, \
+{ 1255, {"proiscachable"},        16, 0,    1,    7, 0, -1, -1, true, 'p', false, 'c', false, false }, \
+{ 1255, {"proisstrict"},        16, 0,    1,    8, 0, -1, -1, true, 'p', false, 'c', false, false }, \
+{ 1255, {"pronargs"},            21, 0,    2,    9, 0, -1, -1, true, 'p', false, 's', false, false }, \
+{ 1255, {"proretset"},            16, 0,    1, 10, 0, -1, -1, true, 'p', false, 'c', false, false }, \
+{ 1255, {"prorettype"},            26, 0,    4, 11, 0, -1, -1, true, 'p', false, 'i', false, false }, \
+{ 1255, {"proargtypes"},        30, 0, INDEX_MAX_KEYS*4, 12, 0, -1, -1, false, 'p', false, 'i', false, false }, \
+{ 1255, {"probyte_pct"},        23, 0,    4, 13, 0, -1, -1, true, 'p', false, 'i', false, false }, \
+{ 1255, {"properbyte_cpu"},        23, 0,    4, 14, 0, -1, -1, true, 'p', false, 'i', false, false }, \
+{ 1255, {"propercall_cpu"},        23, 0,    4, 15, 0, -1, -1, true, 'p', false, 'i', false, false }, \
+{ 1255, {"prooutin_ratio"},        23, 0,    4, 16, 0, -1, -1, true, 'p', false, 'i', false, false }, \
+{ 1255, {"prosrc"},                25, 0, -1, 17, 0, -1, -1, false, 'x', false, 'i', false, false }, \
+{ 1255, {"probin"},                17, 0, -1, 18, 0, -1, -1, false, 'x', false, 'i', false, false }

 DATA(insert ( 1255 proname            19 DEFAULT_ATTSTATTARGET NAMEDATALEN   1 0 -1 -1 f p f i f f));
-DATA(insert ( 1255 proowner            23 0  4   2 0 -1 -1 t p f i f f));
-DATA(insert ( 1255 prolang            26 0  4   3 0 -1 -1 t p f i f f));
-DATA(insert ( 1255 proisinh            16 0  1   4 0 -1 -1 t p f c f f));
-DATA(insert ( 1255 proistrusted        16 0  1   5 0 -1 -1 t p f c f f));
-DATA(insert ( 1255 proiscachable    16 0  1   6 0 -1 -1 t p f c f f));
-DATA(insert ( 1255 proisstrict        16 0  1   7 0 -1 -1 t p f c f f));
-DATA(insert ( 1255 pronargs            21 0  2   8 0 -1 -1 t p f s f f));
-DATA(insert ( 1255 proretset        16 0  1   9 0 -1 -1 t p f c f f));
-DATA(insert ( 1255 prorettype        26 0  4  10 0 -1 -1 t p f i f f));
-DATA(insert ( 1255 proargtypes        30 0 INDEX_MAX_KEYS*4 11 0 -1 -1 f p f i f f));
-DATA(insert ( 1255 probyte_pct        23 0  4  12 0 -1 -1 t p f i f f));
-DATA(insert ( 1255 properbyte_cpu    23 0  4  13 0 -1 -1 t p f i f f));
-DATA(insert ( 1255 propercall_cpu    23 0  4  14 0 -1 -1 t p f i f f));
-DATA(insert ( 1255 prooutin_ratio    23 0  4  15 0 -1 -1 t p f i f f));
-DATA(insert ( 1255 prosrc            25 0 -1  16 0 -1 -1 f x f i f f));
-DATA(insert ( 1255 probin            17 0 -1  17 0 -1 -1 f x f i f f));
+DATA(insert ( 1255 propack            26 0  4   2 0 -1 -1 t p f i f f));
+DATA(insert ( 1255 proowner            23 0  4   3 0 -1 -1 t p f i f f));
+DATA(insert ( 1255 prolang            26 0  4   4 0 -1 -1 t p f i f f));
+DATA(insert ( 1255 proisinh            16 0  1   5 0 -1 -1 t p f c f f));
+DATA(insert ( 1255 proistrusted        16 0  1   6 0 -1 -1 t p f c f f));
+DATA(insert ( 1255 proiscachable    16 0  1   7 0 -1 -1 t p f c f f));
+DATA(insert ( 1255 proisstrict        16 0  1   8 0 -1 -1 t p f c f f));
+DATA(insert ( 1255 pronargs            21 0  2   9 0 -1 -1 t p f s f f));
+DATA(insert ( 1255 proretset        16 0  1  10 0 -1 -1 t p f c f f));
+DATA(insert ( 1255 prorettype        26 0  4  11 0 -1 -1 t p f i f f));
+DATA(insert ( 1255 proargtypes        30 0 INDEX_MAX_KEYS*4 12 0 -1 -1 f p f i f f));
+DATA(insert ( 1255 probyte_pct        23 0  4  13 0 -1 -1 t p f i f f));
+DATA(insert ( 1255 properbyte_cpu    23 0  4  14 0 -1 -1 t p f i f f));
+DATA(insert ( 1255 propercall_cpu    23 0  4  15 0 -1 -1 t p f i f f));
+DATA(insert ( 1255 prooutin_ratio    23 0  4  16 0 -1 -1 t p f i f f));
+DATA(insert ( 1255 prosrc            25 0 -1  17 0 -1 -1 f x f i f f));
+DATA(insert ( 1255 probin            17 0 -1  18 0 -1 -1 f x f i f f));
 DATA(insert ( 1255 ctid                27 0  6  -1 0 -1 -1 f p f i f f));
 DATA(insert ( 1255 oid                26 0  4  -2 0 -1 -1 t p f i f f));
 DATA(insert ( 1255 xmin                28 0  4  -3 0 -1 -1 t p f i f f));
Index: src/include/catalog/pg_class.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/catalog/pg_class.h,v
retrieving revision 1.54
diff -u -r1.54 pg_class.h
--- src/include/catalog/pg_class.h    2001/08/26 16:56:01    1.54
+++ src/include/catalog/pg_class.h    2001/10/17 16:41:55
@@ -130,11 +130,11 @@
  * ----------------
  */

-DATA(insert OID = 1247 (  pg_type        71    PGUID 0 1247 0 0 0 0 f f r 17 0 0 0 0 0 t f f f _null_ ));
+DATA(insert OID = 1247 (  pg_type        71    PGUID 0 1247 0 0 0 0 f f r 18 0 0 0 0 0 t f f f _null_ ));
 DESCR("");
 DATA(insert OID = 1249 (  pg_attribute    75    PGUID 0 1249 0 0 0 0 f f r 15 0 0 0 0 0 f f f f _null_ ));
 DESCR("");
-DATA(insert OID = 1255 (  pg_proc        81    PGUID 0 1255 0 0 0 0 f f r 17 0 0 0 0 0 t f f f _null_ ));
+DATA(insert OID = 1255 (  pg_proc        81    PGUID 0 1255 0 0 0 0 f f r 18 0 0 0 0 0 t f f f _null_ ));
 DESCR("");
 DATA(insert OID = 1259 (  pg_class        83    PGUID 0 1259 0 0 0 0 f f r 23 0 0 0 0 0 t f f f _null_ ));
 DESCR("");
Index: src/include/catalog/pg_operator.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/catalog/pg_operator.h,v
retrieving revision 1.96
diff -u -r1.96 pg_operator.h
--- src/include/catalog/pg_operator.h    2001/09/30 06:46:58    1.96
+++ src/include/catalog/pg_operator.h    2001/10/17 16:41:56
@@ -37,6 +37,7 @@
 CATALOG(pg_operator)
 {
     NameData    oprname;
+    Oid            oprpack;
     int4        oprowner;
     int2        oprprec;
     char        oprkind;
@@ -66,793 +67,796 @@
  * ----------------
  */

-#define Natts_pg_operator                16
+#define Natts_pg_operator                17
 #define Anum_pg_operator_oprname        1
-#define Anum_pg_operator_oprowner        2
-#define Anum_pg_operator_oprprec        3
-#define Anum_pg_operator_oprkind        4
-#define Anum_pg_operator_oprisleft        5
-#define Anum_pg_operator_oprcanhash        6
-#define Anum_pg_operator_oprleft        7
-#define Anum_pg_operator_oprright        8
-#define Anum_pg_operator_oprresult        9
-#define Anum_pg_operator_oprcom            10
-#define Anum_pg_operator_oprnegate        11
-#define Anum_pg_operator_oprlsortop        12
-#define Anum_pg_operator_oprrsortop        13
-#define Anum_pg_operator_oprcode        14
-#define Anum_pg_operator_oprrest        15
-#define Anum_pg_operator_oprjoin        16
+#define Anum_pg_operator_oprpack        2
+#define Anum_pg_operator_oprowner        3
+#define Anum_pg_operator_oprprec        4
+#define Anum_pg_operator_oprkind        5
+#define Anum_pg_operator_oprisleft        6
+#define Anum_pg_operator_oprcanhash        7
+#define Anum_pg_operator_oprleft        8
+#define Anum_pg_operator_oprright        9
+#define Anum_pg_operator_oprresult        10
+#define Anum_pg_operator_oprcom            11
+#define Anum_pg_operator_oprnegate        12
+#define Anum_pg_operator_oprlsortop        13
+#define Anum_pg_operator_oprrsortop        14
+#define Anum_pg_operator_oprcode        15
+#define Anum_pg_operator_oprrest        16
+#define Anum_pg_operator_oprjoin        17

 /* ----------------
  *        initial contents of pg_operator
  * ----------------
  */

-DATA(insert OID =  15 ( "="           PGUID 0 b t f  23  20  16 416  36  97 412 int48eq eqsel eqjoinsel ));
-DATA(insert OID =  36 ( "<>"       PGUID 0 b t f  23  20  16 417  15   0   0 int48ne neqsel neqjoinsel ));
-DATA(insert OID =  37 ( "<"           PGUID 0 b t f  23  20  16 419  82   0   0 int48lt scalarltsel scalarltjoinsel
));
-DATA(insert OID =  76 ( ">"           PGUID 0 b t f  23  20  16 418  80   0   0 int48gt scalargtsel scalargtjoinsel
));
-DATA(insert OID =  80 ( "<="       PGUID 0 b t f  23  20  16 430  76   0   0 int48le scalarltsel scalarltjoinsel ));
-DATA(insert OID =  82 ( ">="       PGUID 0 b t f  23  20  16 420  37   0   0 int48ge scalargtsel scalargtjoinsel ));
-
-DATA(insert OID =  58 ( "<"           PGUID 0 b t f  16  16  16  59   1695   0   0 boollt scalarltsel scalarltjoinsel
));
-DATA(insert OID =  59 ( ">"           PGUID 0 b t f  16  16  16  58   1694   0   0 boolgt scalargtsel scalargtjoinsel
));
-DATA(insert OID =  85 ( "<>"       PGUID 0 b t f  16  16  16  85  91   0   0 boolne neqsel neqjoinsel ));
-DATA(insert OID =  91 ( "="           PGUID 0 b t t  16  16  16  91  85  58  58 booleq eqsel eqjoinsel ));
+DATA(insert OID =  15 ( "="           10 PGUID 0 b t f  23  20  16 416  36  97 412 int48eq eqsel eqjoinsel ));
+DATA(insert OID =  36 ( "<>"       10 PGUID 0 b t f  23  20  16 417  15   0   0 int48ne neqsel neqjoinsel ));
+DATA(insert OID =  37 ( "<"           10 PGUID 0 b t f  23  20  16 419  82   0   0 int48lt scalarltsel scalarltjoinsel
));
+DATA(insert OID =  76 ( ">"           10 PGUID 0 b t f  23  20  16 418  80   0   0 int48gt scalargtsel scalargtjoinsel
));
+DATA(insert OID =  80 ( "<="       10 PGUID 0 b t f  23  20  16 430  76   0   0 int48le scalarltsel scalarltjoinsel
));
+DATA(insert OID =  82 ( ">="       10 PGUID 0 b t f  23  20  16 420  37   0   0 int48ge scalargtsel scalargtjoinsel
));
+
+DATA(insert OID =  58 ( "<"           10 PGUID 0 b t f  16  16  16  59   1695   0   0 boollt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID =  59 ( ">"           10 PGUID 0 b t f  16  16  16  58   1694   0   0 boolgt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID =  85 ( "<>"       10 PGUID 0 b t f  16  16  16  85  91   0   0 boolne neqsel neqjoinsel ));
+DATA(insert OID =  91 ( "="           10 PGUID 0 b t t  16  16  16  91  85  58  58 booleq eqsel eqjoinsel ));
 #define BooleanEqualOperator   91
-DATA(insert OID = 1694 (  "<="       PGUID 0 b t f  16  16  16 1695 59  0  0 boolle scalarltsel scalarltjoinsel ));
-DATA(insert OID = 1695 (  ">="       PGUID 0 b t f  16  16  16 1694 58  0  0 boolge scalargtsel scalargtjoinsel ));
+DATA(insert OID = 1694 (  "<="       10 PGUID 0 b t f  16  16  16 1695 59  0  0 boolle scalarltsel scalarltjoinsel ));
+DATA(insert OID = 1695 (  ">="       10 PGUID 0 b t f  16  16  16 1694 58  0  0 boolge scalargtsel scalargtjoinsel ));

-DATA(insert OID =  92 ( "="           PGUID 0 b t t  18  18  16  92 630 631 631 chareq eqsel eqjoinsel ));
-DATA(insert OID =  93 ( "="           PGUID 0 b t t  19  19  16  93 643 660 660 nameeq eqsel eqjoinsel ));
-DATA(insert OID =  94 ( "="           PGUID 0 b t t  21  21  16  94 519  95  95 int2eq eqsel eqjoinsel ));
-DATA(insert OID =  95 ( "<"           PGUID 0 b t f  21  21  16 520 524   0   0 int2lt scalarltsel scalarltjoinsel ));
-DATA(insert OID =  96 ( "="           PGUID 0 b t t  23  23  16  96 518  97  97 int4eq eqsel eqjoinsel ));
-DATA(insert OID =  97 ( "<"           PGUID 0 b t f  23  23  16 521 525   0   0 int4lt scalarltsel scalarltjoinsel ));
-DATA(insert OID =  98 ( "="           PGUID 0 b t t  25  25  16  98 531 664 664 texteq eqsel eqjoinsel ));
-
-DATA(insert OID = 329 (  "="       PGUID 0 b t f  1000    1000  16  329 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 349 (  "="       PGUID 0 b t f  1001    1001  16  349 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 374 (  "="       PGUID 0 b t f  1002    1002  16  374 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 375 (  "="       PGUID 0 b t f  1003    1003  16  375 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 377 (  "="       PGUID 0 b t f  1005    1005  16  377 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 378 (  "="       PGUID 0 b t f  1006    1006  16  378 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 379 (  "="       PGUID 0 b t f  1007    1007  16  379 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 380 (  "="       PGUID 0 b t f  1008    1008  16  380 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 381 (  "="       PGUID 0 b t f  1009    1009  16  381 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 382 (  "="       PGUID 0 b t f  1028    1028  16  382 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 383 (  "="       PGUID 0 b t f  1010    1010  16  383 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 384 (  "="       PGUID 0 b t f  1011    1011  16  384 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 385 (  "="       PGUID 0 b t f  1012    1012  16  385 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 386 (  "="       PGUID 0 b t f  1013    1013  16  386 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 390 (  "="       PGUID 0 b t f  1017    1017  16  390 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 391 (  "="       PGUID 0 b t f  1018    1018  16  391 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 392 (  "="       PGUID 0 b t f  1019    1019  16  392 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 393 (  "="       PGUID 0 b t f  1020    1020  16  393 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 394 (  "="       PGUID 0 b t f  1021    1021  16  394 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 395 (  "="       PGUID 0 b t f  1022    1022  16  395 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 396 (  "="       PGUID 0 b t f  1023    1023  16  396 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 397 (  "="       PGUID 0 b t f  1024    1024  16  397 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 398 (  "="       PGUID 0 b t f  1025    1025  16  398 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 400 (  "="       PGUID 0 b t f  1027    1027  16  400 0  0    0 array_eq eqsel eqjoinsel ));
-DATA(insert OID = 401 (  "="       PGUID 0 b t f  1034    1034  16  401 0  0    0 array_eq eqsel eqjoinsel ));
-
-DATA(insert OID = 352 (  "="       PGUID 0 b t t  28  28  16 352   0   0   0 xideq eqsel eqjoinsel ));
-DATA(insert OID = 353 (  "="       PGUID 0 b t t  28  23  16   0   0   0   0 xideq eqsel eqjoinsel ));
-DATA(insert OID = 387 (  "="       PGUID 0 b t t  27  27  16 387   0   0   0 tideq eqsel eqjoinsel ));
+DATA(insert OID =  92 ( "="           10 PGUID 0 b t t  18  18  16  92 630 631 631 chareq eqsel eqjoinsel ));
+DATA(insert OID =  93 ( "="           10 PGUID 0 b t t  19  19  16  93 643 660 660 nameeq eqsel eqjoinsel ));
+DATA(insert OID =  94 ( "="           10 PGUID 0 b t t  21  21  16  94 519  95  95 int2eq eqsel eqjoinsel ));
+DATA(insert OID =  95 ( "<"           10 PGUID 0 b t f  21  21  16 520 524   0   0 int2lt scalarltsel scalarltjoinsel
));
+DATA(insert OID =  96 ( "="           10 PGUID 0 b t t  23  23  16  96 518  97  97 int4eq eqsel eqjoinsel ));
+DATA(insert OID =  97 ( "<"           10 PGUID 0 b t f  23  23  16 521 525   0   0 int4lt scalarltsel scalarltjoinsel
));
+DATA(insert OID =  98 ( "="           10 PGUID 0 b t t  25  25  16  98 531 664 664 texteq eqsel eqjoinsel ));
+
+DATA(insert OID = 329 (  "="       10 PGUID 0 b t f  1000    1000  16  329 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 349 (  "="       10 PGUID 0 b t f  1001    1001  16  349 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 374 (  "="       10 PGUID 0 b t f  1002    1002  16  374 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 375 (  "="       10 PGUID 0 b t f  1003    1003  16  375 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 377 (  "="       10 PGUID 0 b t f  1005    1005  16  377 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 378 (  "="       10 PGUID 0 b t f  1006    1006  16  378 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 379 (  "="       10 PGUID 0 b t f  1007    1007  16  379 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 380 (  "="       10 PGUID 0 b t f  1008    1008  16  380 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 381 (  "="       10 PGUID 0 b t f  1009    1009  16  381 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 382 (  "="       10 PGUID 0 b t f  1028    1028  16  382 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 383 (  "="       10 PGUID 0 b t f  1010    1010  16  383 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 384 (  "="       10 PGUID 0 b t f  1011    1011  16  384 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 385 (  "="       10 PGUID 0 b t f  1012    1012  16  385 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 386 (  "="       10 PGUID 0 b t f  1013    1013  16  386 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 390 (  "="       10 PGUID 0 b t f  1017    1017  16  390 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 391 (  "="       10 PGUID 0 b t f  1018    1018  16  391 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 392 (  "="       10 PGUID 0 b t f  1019    1019  16  392 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 393 (  "="       10 PGUID 0 b t f  1020    1020  16  393 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 394 (  "="       10 PGUID 0 b t f  1021    1021  16  394 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 395 (  "="       10 PGUID 0 b t f  1022    1022  16  395 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 396 (  "="       10 PGUID 0 b t f  1023    1023  16  396 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 397 (  "="       10 PGUID 0 b t f  1024    1024  16  397 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 398 (  "="       10 PGUID 0 b t f  1025    1025  16  398 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 400 (  "="       10 PGUID 0 b t f  1027    1027  16  400 0  0    0 array_eq eqsel eqjoinsel ));
+DATA(insert OID = 401 (  "="       10 PGUID 0 b t f  1034    1034  16  401 0  0    0 array_eq eqsel eqjoinsel ));
+
+DATA(insert OID = 352 (  "="       10 PGUID 0 b t t  28  28  16 352   0   0   0 xideq eqsel eqjoinsel ));
+DATA(insert OID = 353 (  "="       10 PGUID 0 b t t  28  23  16   0   0   0   0 xideq eqsel eqjoinsel ));
+DATA(insert OID = 387 (  "="       10 PGUID 0 b t t  27  27  16 387   0   0   0 tideq eqsel eqjoinsel ));
 #define TIDEqualOperator   387
-DATA(insert OID = 388 (  "!"       PGUID 0 r t f  20   0  20   0   0   0   0 int8fac - - ));
-DATA(insert OID = 389 (  "!!"       PGUID 0 l t f   0  20  20   0   0   0   0 int8fac - - ));
+DATA(insert OID = 388 (  "!"       10 PGUID 0 r t f  20   0  20   0   0   0   0 int8fac - - ));
+DATA(insert OID = 389 (  "!!"       10 PGUID 0 l t f   0  20  20   0   0   0   0 int8fac - - ));

-DATA(insert OID = 410 ( "="           PGUID 0 b t t  20  20  16 410 411 412 412 int8eq eqsel eqjoinsel ));
-DATA(insert OID = 411 ( "<>"       PGUID 0 b t f  20  20  16 411 410 0 0 int8ne neqsel neqjoinsel ));
-DATA(insert OID = 412 ( "<"           PGUID 0 b t f  20  20  16 413 415 0 0 int8lt scalarltsel scalarltjoinsel ));
-DATA(insert OID = 413 ( ">"           PGUID 0 b t f  20  20  16 412 414 0 0 int8gt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 414 ( "<="       PGUID 0 b t f  20  20  16 415 413 0 0 int8le scalarltsel scalarltjoinsel ));
-DATA(insert OID = 415 ( ">="       PGUID 0 b t f  20  20  16 414 412 0 0 int8ge scalargtsel scalargtjoinsel ));
-
-DATA(insert OID = 416 ( "="           PGUID 0 b t f  20  23  16  15 417 412 97 int84eq eqsel eqjoinsel ));
-DATA(insert OID = 417 ( "<>"       PGUID 0 b t f  20  23  16  36 416 0 0 int84ne neqsel neqjoinsel ));
-DATA(insert OID = 418 ( "<"           PGUID 0 b t f  20  23  16  76 430 0 0 int84lt scalarltsel scalarltjoinsel ));
-DATA(insert OID = 419 ( ">"           PGUID 0 b t f  20  23  16  37 420 0 0 int84gt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 420 ( "<="       PGUID 0 b t f  20  23  16  82 419 0 0 int84le scalarltsel scalarltjoinsel ));
-DATA(insert OID = 430 ( ">="       PGUID 0 b t f  20  23  16  80 418 0 0 int84ge scalargtsel scalargtjoinsel ));
-DATA(insert OID = 439 (  "%"       PGUID 0 b t f  20  20  20   0   0 0 0 int8mod - - ));
-DATA(insert OID = 473 (  "@"       PGUID 0 l t f   0  20  20   0   0 0 0 int8abs - - ));
-
-DATA(insert OID = 484 (  "-"       PGUID 0 l t f   0  20  20   0   0   0   0 int8um - - ));
-DATA(insert OID = 485 (  "<<"       PGUID 0 b t f 604 604  16   0   0   0   0 poly_left positionsel positionjoinsel
));
-DATA(insert OID = 486 (  "&<"       PGUID 0 b t f 604 604  16   0   0   0   0 poly_overleft positionsel
positionjoinsel)); 
-DATA(insert OID = 487 (  "&>"       PGUID 0 b t f 604 604  16   0   0   0   0 poly_overright positionsel
positionjoinsel)); 
-DATA(insert OID = 488 (  ">>"       PGUID 0 b t f 604 604  16   0   0   0   0 poly_right positionsel positionjoinsel
));
-DATA(insert OID = 489 (  "@"       PGUID 0 b t f 604 604  16 490   0   0   0 poly_contained contsel contjoinsel ));
-DATA(insert OID = 490 (  "~"       PGUID 0 b t f 604 604  16 489   0   0   0 poly_contain contsel contjoinsel ));
-DATA(insert OID = 491 (  "~="       PGUID 0 b t f 604 604  16 491   0   0   0 poly_same eqsel eqjoinsel ));
-DATA(insert OID = 492 (  "&&"       PGUID 0 b t f 604 604  16 492   0   0   0 poly_overlap areasel areajoinsel ));
-DATA(insert OID = 493 (  "<<"       PGUID 0 b t f 603 603  16   0   0   0   0 box_left positionsel positionjoinsel ));
-DATA(insert OID = 494 (  "&<"       PGUID 0 b t f 603 603  16   0   0   0   0 box_overleft positionsel positionjoinsel
));
-DATA(insert OID = 495 (  "&>"       PGUID 0 b t f 603 603  16   0   0   0   0 box_overright positionsel
positionjoinsel)); 
-DATA(insert OID = 496 (  ">>"       PGUID 0 b t f 603 603  16   0   0   0   0 box_right positionsel positionjoinsel
));
-DATA(insert OID = 497 (  "@"       PGUID 0 b t f 603 603  16 498   0   0   0 box_contained contsel contjoinsel ));
-DATA(insert OID = 498 (  "~"       PGUID 0 b t f 603 603  16 497   0   0   0 box_contain contsel contjoinsel ));
-DATA(insert OID = 499 (  "~="       PGUID 0 b t f 603 603  16 499   0   0   0 box_same eqsel eqjoinsel ));
-DATA(insert OID = 500 (  "&&"       PGUID 0 b t f 603 603  16 500   0   0   0 box_overlap areasel areajoinsel ));
-DATA(insert OID = 501 (  ">="       PGUID 0 b t f 603 603  16 505 504   0   0 box_ge areasel areajoinsel ));
-DATA(insert OID = 502 (  ">"       PGUID 0 b t f 603 603  16 504 505   0   0 box_gt areasel areajoinsel ));
-DATA(insert OID = 503 (  "="       PGUID 0 b t f 603 603  16 503   0 504 504 box_eq eqsel eqjoinsel ));
-DATA(insert OID = 504 (  "<"       PGUID 0 b t f 603 603  16 502 501   0   0 box_lt areasel areajoinsel ));
-DATA(insert OID = 505 (  "<="       PGUID 0 b t f 603 603  16 501 502   0   0 box_le areasel areajoinsel ));
-DATA(insert OID = 506 (  ">^"       PGUID 0 b t f 600 600  16   0   0   0   0 point_above positionsel positionjoinsel
));
-DATA(insert OID = 507 (  "<<"       PGUID 0 b t f 600 600  16   0   0   0   0 point_left positionsel positionjoinsel
));
-DATA(insert OID = 508 (  ">>"       PGUID 0 b t f 600 600  16   0   0   0   0 point_right positionsel positionjoinsel
));
-DATA(insert OID = 509 (  "<^"       PGUID 0 b t f 600 600  16   0   0   0   0 point_below positionsel positionjoinsel
));
-DATA(insert OID = 510 (  "~="       PGUID 0 b t f 600 600  16 510   0   0   0 point_eq eqsel eqjoinsel ));
-DATA(insert OID = 511 (  "@"       PGUID 0 b t f 600 603  16   0   0   0   0 on_pb - - ));
-DATA(insert OID = 512 (  "@"       PGUID 0 b t f 600 602  16 755   0   0   0 on_ppath - - ));
-DATA(insert OID = 513 (  "@@"       PGUID 0 l t f   0 603 600   0   0   0   0 box_center - - ));
-DATA(insert OID = 514 (  "*"       PGUID 0 b t f  23  23  23 514   0   0   0 int4mul - - ));
-DATA(insert OID = 515 (  "!"       PGUID 0 r t f  23   0  23   0   0   0   0 int4fac - - ));
-DATA(insert OID = 516 (  "!!"       PGUID 0 l t f   0  23  23   0   0   0   0 int4fac - - ));
-DATA(insert OID = 517 (  "<->"       PGUID 0 b t f 600 600 701 517   0   0   0 point_distance - - ));
-DATA(insert OID = 518 (  "<>"       PGUID 0 b t f  23  23  16 518  96  0  0 int4ne neqsel neqjoinsel ));
-DATA(insert OID = 519 (  "<>"       PGUID 0 b t f  21  21  16 519  94  0  0 int2ne neqsel neqjoinsel ));
-DATA(insert OID = 520 (  ">"       PGUID 0 b t f  21  21  16  95 522  0  0 int2gt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 521 (  ">"       PGUID 0 b t f  23  23  16  97 523  0  0 int4gt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 522 (  "<="       PGUID 0 b t f  21  21  16 524 520  0  0 int2le scalarltsel scalarltjoinsel ));
-DATA(insert OID = 523 (  "<="       PGUID 0 b t f  23  23  16 525 521  0  0 int4le scalarltsel scalarltjoinsel ));
-DATA(insert OID = 524 (  ">="       PGUID 0 b t f  21  21  16 522  95  0  0 int2ge scalargtsel scalargtjoinsel ));
-DATA(insert OID = 525 (  ">="       PGUID 0 b t f  23  23  16 523  97  0  0 int4ge scalargtsel scalargtjoinsel ));
-DATA(insert OID = 526 (  "*"       PGUID 0 b t f  21  21  21 526   0  0  0 int2mul - - ));
-DATA(insert OID = 527 (  "/"       PGUID 0 b t f  21  21  21   0   0  0  0 int2div - - ));
-DATA(insert OID = 528 (  "/"       PGUID 0 b t f  23  23  23   0   0  0  0 int4div - - ));
-DATA(insert OID = 529 (  "%"       PGUID 0 b t f  21  21  21   0   0  0  0 int2mod - - ));
-DATA(insert OID = 530 (  "%"       PGUID 0 b t f  23  23  23   0   0  0  0 int4mod - - ));
-DATA(insert OID = 531 (  "<>"       PGUID 0 b t f  25  25  16 531  98    0    0 textne neqsel neqjoinsel ));
-DATA(insert OID = 532 (  "="       PGUID 0 b t f  21  23  16 533 538   95  97 int24eq eqsel eqjoinsel ));
-DATA(insert OID = 533 (  "="       PGUID 0 b t f  23  21  16 532 539   97  95 int42eq eqsel eqjoinsel ));
-DATA(insert OID = 534 (  "<"       PGUID 0 b t f  21  23  16 537 542  0  0 int24lt scalarltsel scalarltjoinsel ));
-DATA(insert OID = 535 (  "<"       PGUID 0 b t f  23  21  16 536 543  0  0 int42lt scalarltsel scalarltjoinsel ));
-DATA(insert OID = 536 (  ">"       PGUID 0 b t f  21  23  16 535 540  0  0 int24gt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 537 (  ">"       PGUID 0 b t f  23  21  16 534 541  0  0 int42gt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 538 (  "<>"       PGUID 0 b t f  21  23  16 539 532  0  0 int24ne neqsel neqjoinsel ));
-DATA(insert OID = 539 (  "<>"       PGUID 0 b t f  23  21  16 538 533  0  0 int42ne neqsel neqjoinsel ));
-DATA(insert OID = 540 (  "<="       PGUID 0 b t f  21  23  16 543 536  0  0 int24le scalarltsel scalarltjoinsel ));
-DATA(insert OID = 541 (  "<="       PGUID 0 b t f  23  21  16 542 537  0  0 int42le scalarltsel scalarltjoinsel ));
-DATA(insert OID = 542 (  ">="       PGUID 0 b t f  21  23  16 541 534  0  0 int24ge scalargtsel scalargtjoinsel ));
-DATA(insert OID = 543 (  ">="       PGUID 0 b t f  23  21  16 540 535  0  0 int42ge scalargtsel scalargtjoinsel ));
-DATA(insert OID = 544 (  "*"       PGUID 0 b t f  21  23  23 545   0   0   0 int24mul - - ));
-DATA(insert OID = 545 (  "*"       PGUID 0 b t f  23  21  23 544   0   0   0 int42mul - - ));
-DATA(insert OID = 546 (  "/"       PGUID 0 b t f  21  23  23   0   0   0   0 int24div - - ));
-DATA(insert OID = 547 (  "/"       PGUID 0 b t f  23  21  23   0   0   0   0 int42div - - ));
-DATA(insert OID = 548 (  "%"       PGUID 0 b t f  21  23  23   0   0   0   0 int24mod - - ));
-DATA(insert OID = 549 (  "%"       PGUID 0 b t f  23  21  23   0   0   0   0 int42mod - - ));
-DATA(insert OID = 550 (  "+"       PGUID 0 b t f  21  21  21 550   0   0   0 int2pl - - ));
-DATA(insert OID = 551 (  "+"       PGUID 0 b t f  23  23  23 551   0   0   0 int4pl - - ));
-DATA(insert OID = 552 (  "+"       PGUID 0 b t f  21  23  23 553   0   0   0 int24pl - - ));
-DATA(insert OID = 553 (  "+"       PGUID 0 b t f  23  21  23 552   0   0   0 int42pl - - ));
-DATA(insert OID = 554 (  "-"       PGUID 0 b t f  21  21  21   0   0   0   0 int2mi - - ));
-DATA(insert OID = 555 (  "-"       PGUID 0 b t f  23  23  23   0   0   0   0 int4mi - - ));
-DATA(insert OID = 556 (  "-"       PGUID 0 b t f  21  23  23   0   0   0   0 int24mi - - ));
-DATA(insert OID = 557 (  "-"       PGUID 0 b t f  23  21  23   0   0   0   0 int42mi - - ));
-DATA(insert OID = 558 (  "-"       PGUID 0 l t f   0  23  23   0   0   0   0 int4um - - ));
-DATA(insert OID = 559 (  "-"       PGUID 0 l t f   0  21  21   0   0   0   0 int2um - - ));
-DATA(insert OID = 560 (  "="       PGUID 0 b t t 702 702  16 560 561 562 562 abstimeeq eqsel eqjoinsel ));
-DATA(insert OID = 561 (  "<>"       PGUID 0 b t f 702 702  16 561 560 0 0 abstimene neqsel neqjoinsel ));
-DATA(insert OID = 562 (  "<"       PGUID 0 b t f 702 702  16 563 565 0 0 abstimelt scalarltsel scalarltjoinsel ));
-DATA(insert OID = 563 (  ">"       PGUID 0 b t f 702 702  16 562 564 0 0 abstimegt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 564 (  "<="       PGUID 0 b t f 702 702  16 565 563 0 0 abstimele scalarltsel scalarltjoinsel ));
-DATA(insert OID = 565 (  ">="       PGUID 0 b t f 702 702  16 564 562 0 0 abstimege scalargtsel scalargtjoinsel ));
-DATA(insert OID = 566 (  "="       PGUID 0 b t t 703 703  16 566 567 568 568 reltimeeq eqsel eqjoinsel ));
-DATA(insert OID = 567 (  "<>"       PGUID 0 b t f 703 703  16 567 566 0 0 reltimene neqsel neqjoinsel ));
-DATA(insert OID = 568 (  "<"       PGUID 0 b t f 703 703  16 569 571 0 0 reltimelt scalarltsel scalarltjoinsel ));
-DATA(insert OID = 569 (  ">"       PGUID 0 b t f 703 703  16 568 570 0 0 reltimegt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 570 (  "<="       PGUID 0 b t f 703 703  16 571 569 0 0 reltimele scalarltsel scalarltjoinsel ));
-DATA(insert OID = 571 (  ">="       PGUID 0 b t f 703 703  16 570 568 0 0 reltimege scalargtsel scalargtjoinsel ));
-DATA(insert OID = 572 (  "~="       PGUID 0 b t f 704 704  16 572   0   0   0 tintervalsame eqsel eqjoinsel ));
-DATA(insert OID = 573 (  "<<"       PGUID 0 b t f 704 704  16   0   0   0   0 tintervalct - - ));
-DATA(insert OID = 574 (  "&&"       PGUID 0 b t f 704 704  16 574   0   0   0 tintervalov - - ));
-DATA(insert OID = 575 (  "#="       PGUID 0 b t f 704 703  16   0 576   0   0 tintervalleneq - - ));
-DATA(insert OID = 576 (  "#<>"       PGUID 0 b t f 704 703  16   0 575   0   0 tintervallenne - - ));
-DATA(insert OID = 577 (  "#<"       PGUID 0 b t f 704 703  16   0 580   0   0 tintervallenlt - - ));
-DATA(insert OID = 578 (  "#>"       PGUID 0 b t f 704 703  16   0 579   0   0 tintervallengt - - ));
-DATA(insert OID = 579 (  "#<="       PGUID 0 b t f 704 703  16   0 578   0   0 tintervallenle - - ));
-DATA(insert OID = 580 (  "#>="       PGUID 0 b t f 704 703  16   0 577   0   0 tintervallenge - - ));
-DATA(insert OID = 581 (  "+"       PGUID 0 b t f 702 703 702   0   0 0 0 timepl - - ));
-DATA(insert OID = 582 (  "-"       PGUID 0 b t f 702 703 702   0   0 0 0 timemi - - ));
-DATA(insert OID = 583 (  "<?>"       PGUID 0 b t f 702 704  16   0   0   0   0 intinterval - - ));
-DATA(insert OID = 584 (  "-"       PGUID 0 l t f   0 700 700   0   0   0   0 float4um - - ));
-DATA(insert OID = 585 (  "-"       PGUID 0 l t f   0 701 701   0   0   0   0 float8um - - ));
-DATA(insert OID = 586 (  "+"       PGUID 0 b t f 700 700 700 586   0   0   0 float4pl - - ));
-DATA(insert OID = 587 (  "-"       PGUID 0 b t f 700 700 700   0   0   0   0 float4mi - - ));
-DATA(insert OID = 588 (  "/"       PGUID 0 b t f 700 700 700   0   0   0   0 float4div - - ));
-DATA(insert OID = 589 (  "*"       PGUID 0 b t f 700 700 700 589   0   0   0 float4mul - - ));
-DATA(insert OID = 590 (  "@"       PGUID 0 l t f   0 700 700   0   0   0   0 float4abs - - ));
-DATA(insert OID = 591 (  "+"       PGUID 0 b t f 701 701 701 591   0   0   0 float8pl - - ));
-DATA(insert OID = 592 (  "-"       PGUID 0 b t f 701 701 701   0   0   0   0 float8mi - - ));
-DATA(insert OID = 593 (  "/"       PGUID 0 b t f 701 701 701   0   0   0   0 float8div - - ));
-DATA(insert OID = 594 (  "*"       PGUID 0 b t f 701 701 701 594   0   0   0 float8mul - - ));
-DATA(insert OID = 595 (  "@"       PGUID 0 l t f   0 701 701   0   0   0   0 float8abs - - ));
-DATA(insert OID = 596 (  "|/"       PGUID 0 l t f   0 701 701   0   0   0   0 dsqrt - - ));
-DATA(insert OID = 597 (  "||/"       PGUID 0 l t f   0 701 701   0   0   0   0 dcbrt - - ));
-DATA(insert OID = 598 (  "%"       PGUID 0 l t f   0 701 701   0   0   0   0 dtrunc - - ));
-DATA(insert OID = 599 (  "%"       PGUID 0 r t f 701   0 701   0   0   0   0 dround - - ));
-DATA(insert OID = 1284 (  "|"       PGUID 0 l t f   0 704 702    0  0   0   0 tintervalstart - - ));
-DATA(insert OID = 606 (  "<#>"       PGUID 0 b t f 702 702 704    0  0   0   0 mktinterval - - ));
-DATA(insert OID = 607 (  "="       PGUID 0 b t t  26  26  16 607 608 609 609 oideq eqsel eqjoinsel ));
+DATA(insert OID = 410 ( "="           10 PGUID 0 b t t  20  20  16 410 411 412 412 int8eq eqsel eqjoinsel ));
+DATA(insert OID = 411 ( "<>"       10 PGUID 0 b t f  20  20  16 411 410 0 0 int8ne neqsel neqjoinsel ));
+DATA(insert OID = 412 ( "<"           10 PGUID 0 b t f  20  20  16 413 415 0 0 int8lt scalarltsel scalarltjoinsel ));
+DATA(insert OID = 413 ( ">"           10 PGUID 0 b t f  20  20  16 412 414 0 0 int8gt scalargtsel scalargtjoinsel ));
+DATA(insert OID = 414 ( "<="       10 PGUID 0 b t f  20  20  16 415 413 0 0 int8le scalarltsel scalarltjoinsel ));
+DATA(insert OID = 415 ( ">="       10 PGUID 0 b t f  20  20  16 414 412 0 0 int8ge scalargtsel scalargtjoinsel ));
+
+DATA(insert OID = 416 ( "="           10 PGUID 0 b t f  20  23  16  15 417 412 97 int84eq eqsel eqjoinsel ));
+DATA(insert OID = 417 ( "<>"       10 PGUID 0 b t f  20  23  16  36 416 0 0 int84ne neqsel neqjoinsel ));
+DATA(insert OID = 418 ( "<"           10 PGUID 0 b t f  20  23  16  76 430 0 0 int84lt scalarltsel scalarltjoinsel ));
+DATA(insert OID = 419 ( ">"           10 PGUID 0 b t f  20  23  16  37 420 0 0 int84gt scalargtsel scalargtjoinsel ));
+DATA(insert OID = 420 ( "<="       10 PGUID 0 b t f  20  23  16  82 419 0 0 int84le scalarltsel scalarltjoinsel ));
+DATA(insert OID = 430 ( ">="       10 PGUID 0 b t f  20  23  16  80 418 0 0 int84ge scalargtsel scalargtjoinsel ));
+DATA(insert OID = 439 (  "%"       10 PGUID 0 b t f  20  20  20   0   0 0 0 int8mod - - ));
+DATA(insert OID = 473 (  "@"       10 PGUID 0 l t f   0  20  20   0   0 0 0 int8abs - - ));
+
+DATA(insert OID = 484 (  "-"       10 PGUID 0 l t f   0  20  20   0   0   0   0 int8um - - ));
+DATA(insert OID = 485 (  "<<"       10 PGUID 0 b t f 604 604  16   0   0   0   0 poly_left positionsel positionjoinsel
));
+DATA(insert OID = 486 (  "&<"       10 PGUID 0 b t f 604 604  16   0   0   0   0 poly_overleft positionsel
positionjoinsel)); 
+DATA(insert OID = 487 (  "&>"       10 PGUID 0 b t f 604 604  16   0   0   0   0 poly_overright positionsel
positionjoinsel)); 
+DATA(insert OID = 488 (  ">>"       10 PGUID 0 b t f 604 604  16   0   0   0   0 poly_right positionsel
positionjoinsel)); 
+DATA(insert OID = 489 (  "@"       10 PGUID 0 b t f 604 604  16 490   0   0   0 poly_contained contsel contjoinsel ));
+DATA(insert OID = 490 (  "~"       10 PGUID 0 b t f 604 604  16 489   0   0   0 poly_contain contsel contjoinsel ));
+DATA(insert OID = 491 (  "~="       10 PGUID 0 b t f 604 604  16 491   0   0   0 poly_same eqsel eqjoinsel ));
+DATA(insert OID = 492 (  "&&"       10 PGUID 0 b t f 604 604  16 492   0   0   0 poly_overlap areasel areajoinsel ));
+DATA(insert OID = 493 (  "<<"       10 PGUID 0 b t f 603 603  16   0   0   0   0 box_left positionsel positionjoinsel
));
+DATA(insert OID = 494 (  "&<"       10 PGUID 0 b t f 603 603  16   0   0   0   0 box_overleft positionsel
positionjoinsel)); 
+DATA(insert OID = 495 (  "&>"       10 PGUID 0 b t f 603 603  16   0   0   0   0 box_overright positionsel
positionjoinsel)); 
+DATA(insert OID = 496 (  ">>"       10 PGUID 0 b t f 603 603  16   0   0   0   0 box_right positionsel positionjoinsel
));
+DATA(insert OID = 497 (  "@"       10 PGUID 0 b t f 603 603  16 498   0   0   0 box_contained contsel contjoinsel ));
+DATA(insert OID = 498 (  "~"       10 PGUID 0 b t f 603 603  16 497   0   0   0 box_contain contsel contjoinsel ));
+DATA(insert OID = 499 (  "~="       10 PGUID 0 b t f 603 603  16 499   0   0   0 box_same eqsel eqjoinsel ));
+DATA(insert OID = 500 (  "&&"       10 PGUID 0 b t f 603 603  16 500   0   0   0 box_overlap areasel areajoinsel ));
+DATA(insert OID = 501 (  ">="       10 PGUID 0 b t f 603 603  16 505 504   0   0 box_ge areasel areajoinsel ));
+DATA(insert OID = 502 (  ">"       10 PGUID 0 b t f 603 603  16 504 505   0   0 box_gt areasel areajoinsel ));
+DATA(insert OID = 503 (  "="       10 PGUID 0 b t f 603 603  16 503   0 504 504 box_eq eqsel eqjoinsel ));
+DATA(insert OID = 504 (  "<"       10 PGUID 0 b t f 603 603  16 502 501   0   0 box_lt areasel areajoinsel ));
+DATA(insert OID = 505 (  "<="       10 PGUID 0 b t f 603 603  16 501 502   0   0 box_le areasel areajoinsel ));
+DATA(insert OID = 506 (  ">^"       10 PGUID 0 b t f 600 600  16   0   0   0   0 point_above positionsel
positionjoinsel)); 
+DATA(insert OID = 507 (  "<<"       10 PGUID 0 b t f 600 600  16   0   0   0   0 point_left positionsel
positionjoinsel)); 
+DATA(insert OID = 508 (  ">>"       10 PGUID 0 b t f 600 600  16   0   0   0   0 point_right positionsel
positionjoinsel)); 
+DATA(insert OID = 509 (  "<^"       10 PGUID 0 b t f 600 600  16   0   0   0   0 point_below positionsel
positionjoinsel)); 
+DATA(insert OID = 510 (  "~="       10 PGUID 0 b t f 600 600  16 510   0   0   0 point_eq eqsel eqjoinsel ));
+DATA(insert OID = 511 (  "@"       10 PGUID 0 b t f 600 603  16   0   0   0   0 on_pb - - ));
+DATA(insert OID = 512 (  "@"       10 PGUID 0 b t f 600 602  16 755   0   0   0 on_ppath - - ));
+DATA(insert OID = 513 (  "@@"       10 PGUID 0 l t f   0 603 600   0   0   0   0 box_center - - ));
+DATA(insert OID = 514 (  "*"       10 PGUID 0 b t f  23  23  23 514   0   0   0 int4mul - - ));
+DATA(insert OID = 515 (  "!"       10 PGUID 0 r t f  23   0  23   0   0   0   0 int4fac - - ));
+DATA(insert OID = 516 (  "!!"       10 PGUID 0 l t f   0  23  23   0   0   0   0 int4fac - - ));
+DATA(insert OID = 517 (  "<->"       10 PGUID 0 b t f 600 600 701 517   0   0   0 point_distance - - ));
+DATA(insert OID = 518 (  "<>"       10 PGUID 0 b t f  23  23  16 518  96  0  0 int4ne neqsel neqjoinsel ));
+DATA(insert OID = 519 (  "<>"       10 PGUID 0 b t f  21  21  16 519  94  0  0 int2ne neqsel neqjoinsel ));
+DATA(insert OID = 520 (  ">"       10 PGUID 0 b t f  21  21  16  95 522  0  0 int2gt scalargtsel scalargtjoinsel ));
+DATA(insert OID = 521 (  ">"       10 PGUID 0 b t f  23  23  16  97 523  0  0 int4gt scalargtsel scalargtjoinsel ));
+DATA(insert OID = 522 (  "<="       10 PGUID 0 b t f  21  21  16 524 520  0  0 int2le scalarltsel scalarltjoinsel ));
+DATA(insert OID = 523 (  "<="       10 PGUID 0 b t f  23  23  16 525 521  0  0 int4le scalarltsel scalarltjoinsel ));
+DATA(insert OID = 524 (  ">="       10 PGUID 0 b t f  21  21  16 522  95  0  0 int2ge scalargtsel scalargtjoinsel ));
+DATA(insert OID = 525 (  ">="       10 PGUID 0 b t f  23  23  16 523  97  0  0 int4ge scalargtsel scalargtjoinsel ));
+DATA(insert OID = 526 (  "*"       10 PGUID 0 b t f  21  21  21 526   0  0  0 int2mul - - ));
+DATA(insert OID = 527 (  "/"       10 PGUID 0 b t f  21  21  21   0   0  0  0 int2div - - ));
+DATA(insert OID = 528 (  "/"       10 PGUID 0 b t f  23  23  23   0   0  0  0 int4div - - ));
+DATA(insert OID = 529 (  "%"       10 PGUID 0 b t f  21  21  21   0   0  0  0 int2mod - - ));
+DATA(insert OID = 530 (  "%"       10 PGUID 0 b t f  23  23  23   0   0  0  0 int4mod - - ));
+DATA(insert OID = 531 (  "<>"       10 PGUID 0 b t f  25  25  16 531  98    0    0 textne neqsel neqjoinsel ));
+DATA(insert OID = 532 (  "="       10 PGUID 0 b t f  21  23  16 533 538   95  97 int24eq eqsel eqjoinsel ));
+DATA(insert OID = 533 (  "="       10 PGUID 0 b t f  23  21  16 532 539   97  95 int42eq eqsel eqjoinsel ));
+DATA(insert OID = 534 (  "<"       10 PGUID 0 b t f  21  23  16 537 542  0  0 int24lt scalarltsel scalarltjoinsel ));
+DATA(insert OID = 535 (  "<"       10 PGUID 0 b t f  23  21  16 536 543  0  0 int42lt scalarltsel scalarltjoinsel ));
+DATA(insert OID = 536 (  ">"       10 PGUID 0 b t f  21  23  16 535 540  0  0 int24gt scalargtsel scalargtjoinsel ));
+DATA(insert OID = 537 (  ">"       10 PGUID 0 b t f  23  21  16 534 541  0  0 int42gt scalargtsel scalargtjoinsel ));
+DATA(insert OID = 538 (  "<>"       10 PGUID 0 b t f  21  23  16 539 532  0  0 int24ne neqsel neqjoinsel ));
+DATA(insert OID = 539 (  "<>"       10 PGUID 0 b t f  23  21  16 538 533  0  0 int42ne neqsel neqjoinsel ));
+DATA(insert OID = 540 (  "<="       10 PGUID 0 b t f  21  23  16 543 536  0  0 int24le scalarltsel scalarltjoinsel ));
+DATA(insert OID = 541 (  "<="       10 PGUID 0 b t f  23  21  16 542 537  0  0 int42le scalarltsel scalarltjoinsel ));
+DATA(insert OID = 542 (  ">="       10 PGUID 0 b t f  21  23  16 541 534  0  0 int24ge scalargtsel scalargtjoinsel ));
+DATA(insert OID = 543 (  ">="       10 PGUID 0 b t f  23  21  16 540 535  0  0 int42ge scalargtsel scalargtjoinsel ));
+DATA(insert OID = 544 (  "*"       10 PGUID 0 b t f  21  23  23 545   0   0   0 int24mul - - ));
+DATA(insert OID = 545 (  "*"       10 PGUID 0 b t f  23  21  23 544   0   0   0 int42mul - - ));
+DATA(insert OID = 546 (  "/"       10 PGUID 0 b t f  21  23  23   0   0   0   0 int24div - - ));
+DATA(insert OID = 547 (  "/"       10 PGUID 0 b t f  23  21  23   0   0   0   0 int42div - - ));
+DATA(insert OID = 548 (  "%"       10 PGUID 0 b t f  21  23  23   0   0   0   0 int24mod - - ));
+DATA(insert OID = 549 (  "%"       10 PGUID 0 b t f  23  21  23   0   0   0   0 int42mod - - ));
+DATA(insert OID = 550 (  "+"       10 PGUID 0 b t f  21  21  21 550   0   0   0 int2pl - - ));
+DATA(insert OID = 551 (  "+"       10 PGUID 0 b t f  23  23  23 551   0   0   0 int4pl - - ));
+DATA(insert OID = 552 (  "+"       10 PGUID 0 b t f  21  23  23 553   0   0   0 int24pl - - ));
+DATA(insert OID = 553 (  "+"       10 PGUID 0 b t f  23  21  23 552   0   0   0 int42pl - - ));
+DATA(insert OID = 554 (  "-"       10 PGUID 0 b t f  21  21  21   0   0   0   0 int2mi - - ));
+DATA(insert OID = 555 (  "-"       10 PGUID 0 b t f  23  23  23   0   0   0   0 int4mi - - ));
+DATA(insert OID = 556 (  "-"       10 PGUID 0 b t f  21  23  23   0   0   0   0 int24mi - - ));
+DATA(insert OID = 557 (  "-"       10 PGUID 0 b t f  23  21  23   0   0   0   0 int42mi - - ));
+DATA(insert OID = 558 (  "-"       10 PGUID 0 l t f   0  23  23   0   0   0   0 int4um - - ));
+DATA(insert OID = 559 (  "-"       10 PGUID 0 l t f   0  21  21   0   0   0   0 int2um - - ));
+DATA(insert OID = 560 (  "="       10 PGUID 0 b t t 702 702  16 560 561 562 562 abstimeeq eqsel eqjoinsel ));
+DATA(insert OID = 561 (  "<>"       10 PGUID 0 b t f 702 702  16 561 560 0 0 abstimene neqsel neqjoinsel ));
+DATA(insert OID = 562 (  "<"       10 PGUID 0 b t f 702 702  16 563 565 0 0 abstimelt scalarltsel scalarltjoinsel ));
+DATA(insert OID = 563 (  ">"       10 PGUID 0 b t f 702 702  16 562 564 0 0 abstimegt scalargtsel scalargtjoinsel ));
+DATA(insert OID = 564 (  "<="       10 PGUID 0 b t f 702 702  16 565 563 0 0 abstimele scalarltsel scalarltjoinsel ));
+DATA(insert OID = 565 (  ">="       10 PGUID 0 b t f 702 702  16 564 562 0 0 abstimege scalargtsel scalargtjoinsel ));
+DATA(insert OID = 566 (  "="       10 PGUID 0 b t t 703 703  16 566 567 568 568 reltimeeq eqsel eqjoinsel ));
+DATA(insert OID = 567 (  "<>"       10 PGUID 0 b t f 703 703  16 567 566 0 0 reltimene neqsel neqjoinsel ));
+DATA(insert OID = 568 (  "<"       10 PGUID 0 b t f 703 703  16 569 571 0 0 reltimelt scalarltsel scalarltjoinsel ));
+DATA(insert OID = 569 (  ">"       10 PGUID 0 b t f 703 703  16 568 570 0 0 reltimegt scalargtsel scalargtjoinsel ));
+DATA(insert OID = 570 (  "<="       10 PGUID 0 b t f 703 703  16 571 569 0 0 reltimele scalarltsel scalarltjoinsel ));
+DATA(insert OID = 571 (  ">="       10 PGUID 0 b t f 703 703  16 570 568 0 0 reltimege scalargtsel scalargtjoinsel ));
+DATA(insert OID = 572 (  "~="       10 PGUID 0 b t f 704 704  16 572   0   0   0 tintervalsame eqsel eqjoinsel ));
+DATA(insert OID = 573 (  "<<"       10 PGUID 0 b t f 704 704  16   0   0   0   0 tintervalct - - ));
+DATA(insert OID = 574 (  "&&"       10 PGUID 0 b t f 704 704  16 574   0   0   0 tintervalov - - ));
+DATA(insert OID = 575 (  "#="       10 PGUID 0 b t f 704 703  16   0 576   0   0 tintervalleneq - - ));
+DATA(insert OID = 576 (  "#<>"       10 PGUID 0 b t f 704 703  16   0 575   0   0 tintervallenne - - ));
+DATA(insert OID = 577 (  "#<"       10 PGUID 0 b t f 704 703  16   0 580   0   0 tintervallenlt - - ));
+DATA(insert OID = 578 (  "#>"       10 PGUID 0 b t f 704 703  16   0 579   0   0 tintervallengt - - ));
+DATA(insert OID = 579 (  "#<="       10 PGUID 0 b t f 704 703  16   0 578   0   0 tintervallenle - - ));
+DATA(insert OID = 580 (  "#>="       10 PGUID 0 b t f 704 703  16   0 577   0   0 tintervallenge - - ));
+DATA(insert OID = 581 (  "+"       10 PGUID 0 b t f 702 703 702   0   0 0 0 timepl - - ));
+DATA(insert OID = 582 (  "-"       10 PGUID 0 b t f 702 703 702   0   0 0 0 timemi - - ));
+DATA(insert OID = 583 (  "<?>"       10 PGUID 0 b t f 702 704  16   0   0   0   0 intinterval - - ));
+DATA(insert OID = 584 (  "-"       10 PGUID 0 l t f   0 700 700   0   0   0   0 float4um - - ));
+DATA(insert OID = 585 (  "-"       10 PGUID 0 l t f   0 701 701   0   0   0   0 float8um - - ));
+DATA(insert OID = 586 (  "+"       10 PGUID 0 b t f 700 700 700 586   0   0   0 float4pl - - ));
+DATA(insert OID = 587 (  "-"       10 PGUID 0 b t f 700 700 700   0   0   0   0 float4mi - - ));
+DATA(insert OID = 588 (  "/"       10 PGUID 0 b t f 700 700 700   0   0   0   0 float4div - - ));
+DATA(insert OID = 589 (  "*"       10 PGUID 0 b t f 700 700 700 589   0   0   0 float4mul - - ));
+DATA(insert OID = 590 (  "@"       10 PGUID 0 l t f   0 700 700   0   0   0   0 float4abs - - ));
+DATA(insert OID = 591 (  "+"       10 PGUID 0 b t f 701 701 701 591   0   0   0 float8pl - - ));
+DATA(insert OID = 592 (  "-"       10 PGUID 0 b t f 701 701 701   0   0   0   0 float8mi - - ));
+DATA(insert OID = 593 (  "/"       10 PGUID 0 b t f 701 701 701   0   0   0   0 float8div - - ));
+DATA(insert OID = 594 (  "*"       10 PGUID 0 b t f 701 701 701 594   0   0   0 float8mul - - ));
+DATA(insert OID = 595 (  "@"       10 PGUID 0 l t f   0 701 701   0   0   0   0 float8abs - - ));
+DATA(insert OID = 596 (  "|/"       10 PGUID 0 l t f   0 701 701   0   0   0   0 dsqrt - - ));
+DATA(insert OID = 597 (  "||/"       10 PGUID 0 l t f   0 701 701   0   0   0   0 dcbrt - - ));
+DATA(insert OID = 598 (  "%"       10 PGUID 0 l t f   0 701 701   0   0   0   0 dtrunc - - ));
+DATA(insert OID = 599 (  "%"       10 PGUID 0 r t f 701   0 701   0   0   0   0 dround - - ));
+DATA(insert OID = 1284 (  "|"       10 PGUID 0 l t f   0 704 702    0  0   0   0 tintervalstart - - ));
+DATA(insert OID = 606 (  "<#>"       10 PGUID 0 b t f 702 702 704    0  0   0   0 mktinterval - - ));
+DATA(insert OID = 607 (  "="       10 PGUID 0 b t t  26  26  16 607 608 609 609 oideq eqsel eqjoinsel ));
 #define MIN_OIDCMP 607            /* used by cache code */
-DATA(insert OID = 608 (  "<>"       PGUID 0 b t f  26  26  16 608 607  0  0 oidne neqsel neqjoinsel ));
-DATA(insert OID = 609 (  "<"       PGUID 0 b t f  26  26  16 610 612  0  0 oidlt scalarltsel scalarltjoinsel ));
-DATA(insert OID = 610 (  ">"       PGUID 0 b t f  26  26  16 609 611  0  0 oidgt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 611 (  "<="       PGUID 0 b t f  26  26  16 612 610  0  0 oidle scalarltsel scalarltjoinsel ));
-DATA(insert OID = 612 (  ">="       PGUID 0 b t f  26  26  16 611 609  0  0 oidge scalargtsel scalargtjoinsel ));
+DATA(insert OID = 608 (  "<>"       10 PGUID 0 b t f  26  26  16 608 607  0  0 oidne neqsel neqjoinsel ));
+DATA(insert OID = 609 (  "<"       10 PGUID 0 b t f  26  26  16 610 612  0  0 oidlt scalarltsel scalarltjoinsel ));
+DATA(insert OID = 610 (  ">"       10 PGUID 0 b t f  26  26  16 609 611  0  0 oidgt scalargtsel scalargtjoinsel ));
+DATA(insert OID = 611 (  "<="       10 PGUID 0 b t f  26  26  16 612 610  0  0 oidle scalarltsel scalarltjoinsel ));
+DATA(insert OID = 612 (  ">="       10 PGUID 0 b t f  26  26  16 611 609  0  0 oidge scalargtsel scalargtjoinsel ));
 #define MAX_OIDCMP 612            /* used by cache code */

-DATA(insert OID = 644 (  "<>"       PGUID 0 b t f  30  30  16 644 649   0   0 oidvectorne neqsel neqjoinsel ));
-DATA(insert OID = 645 (  "<"       PGUID 0 b t f  30  30  16 646 648   0   0 oidvectorlt - - ));
-DATA(insert OID = 646 (  ">"       PGUID 0 b t f  30  30  16 645 647   0   0 oidvectorgt - - ));
-DATA(insert OID = 647 (  "<="       PGUID 0 b t f  30  30  16 648 646   0   0 oidvectorle - - ));
-DATA(insert OID = 648 (  ">="       PGUID 0 b t f  30  30  16 647 645   0   0 oidvectorge - - ));
-DATA(insert OID = 649 (  "="       PGUID 0 b t t  30  30  16 649 644 645 645 oidvectoreq eqsel eqjoinsel ));
-
-DATA(insert OID = 613 (  "<->"       PGUID 0 b t f 600 628 701   0   0  0  0 dist_pl - - ));
-DATA(insert OID = 614 (  "<->"       PGUID 0 b t f 600 601 701   0   0  0  0 dist_ps - - ));
-DATA(insert OID = 615 (  "<->"       PGUID 0 b t f 600 603 701   0   0  0  0 dist_pb - - ));
-DATA(insert OID = 616 (  "<->"       PGUID 0 b t f 601 628 701   0   0  0  0 dist_sl - - ));
-DATA(insert OID = 617 (  "<->"       PGUID 0 b t f 601 603 701   0   0  0  0 dist_sb - - ));
-DATA(insert OID = 618 (  "<->"       PGUID 0 b t f 600 602 701   0   0  0  0 dist_ppath - - ));
-
-DATA(insert OID = 620 (  "="       PGUID 0 b t f  700  700    16 620 621    622 622 float4eq eqsel eqjoinsel ));
-DATA(insert OID = 621 (  "<>"       PGUID 0 b t f  700  700    16 621 620    0 0 float4ne neqsel neqjoinsel ));
-DATA(insert OID = 622 (  "<"       PGUID 0 b t f  700  700    16 623 625    0 0 float4lt scalarltsel scalarltjoinsel
));
-DATA(insert OID = 623 (  ">"       PGUID 0 b t f  700  700    16 622 624    0 0 float4gt scalargtsel scalargtjoinsel
));
-DATA(insert OID = 624 (  "<="       PGUID 0 b t f  700  700    16 625 623    0 0 float4le scalarltsel scalarltjoinsel
));
-DATA(insert OID = 625 (  ">="       PGUID 0 b t f  700  700    16 624 622    0 0 float4ge scalargtsel scalargtjoinsel
));
-DATA(insert OID = 626 (  "!!="       PGUID 0 b t f  23   25    16 0   0    0    0    int4notin - - ));
-DATA(insert OID = 627 (  "!!="       PGUID 0 b t f  26   25    16 0   0    0    0    oidnotin - - ));
-DATA(insert OID = 630 (  "<>"       PGUID 0 b t f  18  18  16 630  92  0 0 charne neqsel neqjoinsel ));
-
-DATA(insert OID = 631 (  "<"       PGUID 0 b t f  18  18  16 633 634  0 0 charlt scalarltsel scalarltjoinsel ));
-DATA(insert OID = 632 (  "<="       PGUID 0 b t f  18  18  16 634 633  0 0 charle scalarltsel scalarltjoinsel ));
-DATA(insert OID = 633 (  ">"       PGUID 0 b t f  18  18  16 631 632  0 0 chargt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 634 (  ">="       PGUID 0 b t f  18  18  16 632 631  0 0 charge scalargtsel scalargtjoinsel ));
-
-DATA(insert OID = 635 (  "+"       PGUID 0 b t f  18  18  18 0 0  0 0 charpl - - ));
-DATA(insert OID = 636 (  "-"       PGUID 0 b t f  18  18  18 0 0  0 0 charmi - - ));
-DATA(insert OID = 637 (  "*"       PGUID 0 b t f  18  18  18 0 0  0 0 charmul - - ));
-DATA(insert OID = 638 (  "/"       PGUID 0 b t f  18  18  18 0 0  0 0 chardiv - - ));
+DATA(insert OID = 644 (  "<>"       10 PGUID 0 b t f  30  30  16 644 649   0   0 oidvectorne neqsel neqjoinsel ));
+DATA(insert OID = 645 (  "<"       10 PGUID 0 b t f  30  30  16 646 648   0   0 oidvectorlt - - ));
+DATA(insert OID = 646 (  ">"       10 PGUID 0 b t f  30  30  16 645 647   0   0 oidvectorgt - - ));
+DATA(insert OID = 647 (  "<="       10 PGUID 0 b t f  30  30  16 648 646   0   0 oidvectorle - - ));
+DATA(insert OID = 648 (  ">="       10 PGUID 0 b t f  30  30  16 647 645   0   0 oidvectorge - - ));
+DATA(insert OID = 649 (  "="       10 PGUID 0 b t t  30  30  16 649 644 645 645 oidvectoreq eqsel eqjoinsel ));
+
+DATA(insert OID = 613 (  "<->"       10 PGUID 0 b t f 600 628 701   0   0  0  0 dist_pl - - ));
+DATA(insert OID = 614 (  "<->"       10 PGUID 0 b t f 600 601 701   0   0  0  0 dist_ps - - ));
+DATA(insert OID = 615 (  "<->"       10 PGUID 0 b t f 600 603 701   0   0  0  0 dist_pb - - ));
+DATA(insert OID = 616 (  "<->"       10 PGUID 0 b t f 601 628 701   0   0  0  0 dist_sl - - ));
+DATA(insert OID = 617 (  "<->"       10 PGUID 0 b t f 601 603 701   0   0  0  0 dist_sb - - ));
+DATA(insert OID = 618 (  "<->"       10 PGUID 0 b t f 600 602 701   0   0  0  0 dist_ppath - - ));
+
+DATA(insert OID = 620 (  "="       10 PGUID 0 b t f  700  700    16 620 621    622 622 float4eq eqsel eqjoinsel ));
+DATA(insert OID = 621 (  "<>"       10 PGUID 0 b t f  700  700    16 621 620    0 0 float4ne neqsel neqjoinsel ));
+DATA(insert OID = 622 (  "<"       10 PGUID 0 b t f  700  700    16 623 625    0 0 float4lt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 623 (  ">"       10 PGUID 0 b t f  700  700    16 622 624    0 0 float4gt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 624 (  "<="       10 PGUID 0 b t f  700  700    16 625 623    0 0 float4le scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 625 (  ">="       10 PGUID 0 b t f  700  700    16 624 622    0 0 float4ge scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 626 (  "!!="       10 PGUID 0 b t f  23   25    16 0   0    0    0    int4notin - - ));
+DATA(insert OID = 627 (  "!!="       10 PGUID 0 b t f  26   25    16 0   0    0    0    oidnotin - - ));
+DATA(insert OID = 630 (  "<>"       10 PGUID 0 b t f  18  18  16 630  92  0 0 charne neqsel neqjoinsel ));
+
+DATA(insert OID = 631 (  "<"       10 PGUID 0 b t f  18  18  16 633 634  0 0 charlt scalarltsel scalarltjoinsel ));
+DATA(insert OID = 632 (  "<="       10 PGUID 0 b t f  18  18  16 634 633  0 0 charle scalarltsel scalarltjoinsel ));
+DATA(insert OID = 633 (  ">"       10 PGUID 0 b t f  18  18  16 631 632  0 0 chargt scalargtsel scalargtjoinsel ));
+DATA(insert OID = 634 (  ">="       10 PGUID 0 b t f  18  18  16 632 631  0 0 charge scalargtsel scalargtjoinsel ));
+
+DATA(insert OID = 635 (  "+"       10 PGUID 0 b t f  18  18  18 0 0  0 0 charpl - - ));
+DATA(insert OID = 636 (  "-"       10 PGUID 0 b t f  18  18  18 0 0  0 0 charmi - - ));
+DATA(insert OID = 637 (  "*"       10 PGUID 0 b t f  18  18  18 0 0  0 0 charmul - - ));
+DATA(insert OID = 638 (  "/"       10 PGUID 0 b t f  18  18  18 0 0  0 0 chardiv - - ));

-DATA(insert OID = 639 (  "~"       PGUID 0 b t f  19  25  16 0 640    0 0 nameregexeq regexeqsel regexeqjoinsel ));
+DATA(insert OID = 639 (  "~"       10 PGUID 0 b t f  19  25  16 0 640    0 0 nameregexeq regexeqsel regexeqjoinsel ));
 #define OID_NAME_REGEXEQ_OP        639
-DATA(insert OID = 640 (  "!~"       PGUID 0 b t f  19  25  16 0 639    0 0 nameregexne regexnesel regexnejoinsel ));
-DATA(insert OID = 641 (  "~"       PGUID 0 b t f  25  25  16 0 642    0 0 textregexeq regexeqsel regexeqjoinsel ));
+DATA(insert OID = 640 (  "!~"       10 PGUID 0 b t f  19  25  16 0 639    0 0 nameregexne regexnesel regexnejoinsel
));
+DATA(insert OID = 641 (  "~"       10 PGUID 0 b t f  25  25  16 0 642    0 0 textregexeq regexeqsel regexeqjoinsel ));
 #define OID_TEXT_REGEXEQ_OP        641
-DATA(insert OID = 642 (  "!~"       PGUID 0 b t f  25  25  16 0 641    0 0 textregexne regexnesel regexnejoinsel ));
-DATA(insert OID = 643 (  "<>"       PGUID 0 b t f  19  19  16 643 93 0 0 namene neqsel neqjoinsel ));
-DATA(insert OID = 654 (  "||"       PGUID 0 b t f  25  25  25   0 0    0 0 textcat - - ));
-
-DATA(insert OID = 660 (  "<"       PGUID 0 b t f  19  19  16 662 663  0 0 namelt scalarltsel scalarltjoinsel ));
-DATA(insert OID = 661 (  "<="       PGUID 0 b t f  19  19  16 663 662  0 0 namele scalarltsel scalarltjoinsel ));
-DATA(insert OID = 662 (  ">"       PGUID 0 b t f  19  19  16 660 661  0 0 namegt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 663 (  ">="       PGUID 0 b t f  19  19  16 661 660  0 0 namege scalargtsel scalargtjoinsel ));
-DATA(insert OID = 664 (  "<"       PGUID 0 b t f  25  25  16 666 667  0 0 text_lt scalarltsel scalarltjoinsel ));
-DATA(insert OID = 665 (  "<="       PGUID 0 b t f  25  25  16 667 666  0 0 text_le scalarltsel scalarltjoinsel ));
-DATA(insert OID = 666 (  ">"       PGUID 0 b t f  25  25  16 664 665  0 0 text_gt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 667 (  ">="       PGUID 0 b t f  25  25  16 665 664  0 0 text_ge scalargtsel scalargtjoinsel ));
-
-DATA(insert OID = 670 (  "="       PGUID 0 b t f  701  701    16 670 671 672 672 float8eq eqsel eqjoinsel ));
-DATA(insert OID = 671 (  "<>"       PGUID 0 b t f  701  701    16 671 670    0 0 float8ne neqsel neqjoinsel ));
-DATA(insert OID = 672 (  "<"       PGUID 0 b t f  701  701    16 674 675    0 0 float8lt scalarltsel scalarltjoinsel
));
-DATA(insert OID = 673 (  "<="       PGUID 0 b t f  701  701    16 675 674    0 0 float8le scalarltsel scalarltjoinsel
));
-DATA(insert OID = 674 (  ">"       PGUID 0 b t f  701  701    16 672 673    0 0 float8gt scalargtsel scalargtjoinsel
));
-DATA(insert OID = 675 (  ">="       PGUID 0 b t f  701  701    16 673 672    0 0 float8ge scalargtsel scalargtjoinsel
));
-
-DATA(insert OID = 682 (  "@"       PGUID 0 l t f   0  21  21   0   0   0   0 int2abs - - ));
-DATA(insert OID = 684 (  "+"       PGUID 0 b t f  20  20  20 684   0   0   0 int8pl - - ));
-DATA(insert OID = 685 (  "-"       PGUID 0 b t f  20  20  20   0   0   0   0 int8mi - - ));
-DATA(insert OID = 686 (  "*"       PGUID 0 b t f  20  20  20 686   0   0   0 int8mul - - ));
-DATA(insert OID = 687 (  "/"       PGUID 0 b t f  20  20  20   0   0   0   0 int8div - - ));
-DATA(insert OID = 688 (  "+"       PGUID 0 b t f  20  23  20 692   0   0   0 int84pl - - ));
-DATA(insert OID = 689 (  "-"       PGUID 0 b t f  20  23  20   0   0   0   0 int84mi - - ));
-DATA(insert OID = 690 (  "*"       PGUID 0 b t f  20  23  20 694   0   0   0 int84mul - - ));
-DATA(insert OID = 691 (  "/"       PGUID 0 b t f  20  23  20   0   0   0   0 int84div - - ));
-DATA(insert OID = 692 (  "+"       PGUID 0 b t f  23  20  20 688   0   0   0 int48pl - - ));
-DATA(insert OID = 693 (  "-"       PGUID 0 b t f  23  20  20   0   0   0   0 int48mi - - ));
-DATA(insert OID = 694 (  "*"       PGUID 0 b t f  23  20  20 690   0   0   0 int48mul - - ));
-DATA(insert OID = 695 (  "/"       PGUID 0 b t f  23  20  20   0   0   0   0 int48div - - ));
-
-DATA(insert OID = 706 (  "<->"       PGUID 0 b t f 603 603 701 706   0  0  0 box_distance - - ));
-DATA(insert OID = 707 (  "<->"       PGUID 0 b t f 602 602 701 707   0  0  0 path_distance - - ));
-DATA(insert OID = 708 (  "<->"       PGUID 0 b t f 628 628 701 708   0  0  0 line_distance - - ));
-DATA(insert OID = 709 (  "<->"       PGUID 0 b t f 601 601 701 709   0  0  0 lseg_distance - - ));
-DATA(insert OID = 712 (  "<->"       PGUID 0 b t f 604 604 701 712   0  0  0 poly_distance - - ));
+DATA(insert OID = 642 (  "!~"       10 PGUID 0 b t f  25  25  16 0 641    0 0 textregexne regexnesel regexnejoinsel
));
+DATA(insert OID = 643 (  "<>"       10 PGUID 0 b t f  19  19  16 643 93 0 0 namene neqsel neqjoinsel ));
+DATA(insert OID = 654 (  "||"       10 PGUID 0 b t f  25  25  25   0 0    0 0 textcat - - ));
+
+DATA(insert OID = 660 (  "<"       10 PGUID 0 b t f  19  19  16 662 663  0 0 namelt scalarltsel scalarltjoinsel ));
+DATA(insert OID = 661 (  "<="       10 PGUID 0 b t f  19  19  16 663 662  0 0 namele scalarltsel scalarltjoinsel ));
+DATA(insert OID = 662 (  ">"       10 PGUID 0 b t f  19  19  16 660 661  0 0 namegt scalargtsel scalargtjoinsel ));
+DATA(insert OID = 663 (  ">="       10 PGUID 0 b t f  19  19  16 661 660  0 0 namege scalargtsel scalargtjoinsel ));
+DATA(insert OID = 664 (  "<"       10 PGUID 0 b t f  25  25  16 666 667  0 0 text_lt scalarltsel scalarltjoinsel ));
+DATA(insert OID = 665 (  "<="       10 PGUID 0 b t f  25  25  16 667 666  0 0 text_le scalarltsel scalarltjoinsel ));
+DATA(insert OID = 666 (  ">"       10 PGUID 0 b t f  25  25  16 664 665  0 0 text_gt scalargtsel scalargtjoinsel ));
+DATA(insert OID = 667 (  ">="       10 PGUID 0 b t f  25  25  16 665 664  0 0 text_ge scalargtsel scalargtjoinsel ));
+
+DATA(insert OID = 670 (  "="       10 PGUID 0 b t f  701  701    16 670 671 672 672 float8eq eqsel eqjoinsel ));
+DATA(insert OID = 671 (  "<>"       10 PGUID 0 b t f  701  701    16 671 670    0 0 float8ne neqsel neqjoinsel ));
+DATA(insert OID = 672 (  "<"       10 PGUID 0 b t f  701  701    16 674 675    0 0 float8lt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 673 (  "<="       10 PGUID 0 b t f  701  701    16 675 674    0 0 float8le scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 674 (  ">"       10 PGUID 0 b t f  701  701    16 672 673    0 0 float8gt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 675 (  ">="       10 PGUID 0 b t f  701  701    16 673 672    0 0 float8ge scalargtsel
scalargtjoinsel)); 
+
+DATA(insert OID = 682 (  "@"       10 PGUID 0 l t f   0  21  21   0   0   0   0 int2abs - - ));
+DATA(insert OID = 684 (  "+"       10 PGUID 0 b t f  20  20  20 684   0   0   0 int8pl - - ));
+DATA(insert OID = 685 (  "-"       10 PGUID 0 b t f  20  20  20   0   0   0   0 int8mi - - ));
+DATA(insert OID = 686 (  "*"       10 PGUID 0 b t f  20  20  20 686   0   0   0 int8mul - - ));
+DATA(insert OID = 687 (  "/"       10 PGUID 0 b t f  20  20  20   0   0   0   0 int8div - - ));
+DATA(insert OID = 688 (  "+"       10 PGUID 0 b t f  20  23  20 692   0   0   0 int84pl - - ));
+DATA(insert OID = 689 (  "-"       10 PGUID 0 b t f  20  23  20   0   0   0   0 int84mi - - ));
+DATA(insert OID = 690 (  "*"       10 PGUID 0 b t f  20  23  20 694   0   0   0 int84mul - - ));
+DATA(insert OID = 691 (  "/"       10 PGUID 0 b t f  20  23  20   0   0   0   0 int84div - - ));
+DATA(insert OID = 692 (  "+"       10 PGUID 0 b t f  23  20  20 688   0   0   0 int48pl - - ));
+DATA(insert OID = 693 (  "-"       10 PGUID 0 b t f  23  20  20   0   0   0   0 int48mi - - ));
+DATA(insert OID = 694 (  "*"       10 PGUID 0 b t f  23  20  20 690   0   0   0 int48mul - - ));
+DATA(insert OID = 695 (  "/"       10 PGUID 0 b t f  23  20  20   0   0   0   0 int48div - - ));
+
+DATA(insert OID = 706 (  "<->"       10 PGUID 0 b t f 603 603 701 706   0  0  0 box_distance - - ));
+DATA(insert OID = 707 (  "<->"       10 PGUID 0 b t f 602 602 701 707   0  0  0 path_distance - - ));
+DATA(insert OID = 708 (  "<->"       10 PGUID 0 b t f 628 628 701 708   0  0  0 line_distance - - ));
+DATA(insert OID = 709 (  "<->"       10 PGUID 0 b t f 601 601 701 709   0  0  0 lseg_distance - - ));
+DATA(insert OID = 712 (  "<->"       10 PGUID 0 b t f 604 604 701 712   0  0  0 poly_distance - - ));

 /* add translation/rotation/scaling operators for geometric types. - thomas 97/05/10 */
-DATA(insert OID = 731 (  "+"       PGUID 0 b t f  600  600    600  731  0 0 0 point_add - - ));
-DATA(insert OID = 732 (  "-"       PGUID 0 b t f  600  600    600    0  0 0 0 point_sub - - ));
-DATA(insert OID = 733 (  "*"       PGUID 0 b t f  600  600    600  733  0 0 0 point_mul - - ));
-DATA(insert OID = 734 (  "/"       PGUID 0 b t f  600  600    600    0  0 0 0 point_div - - ));
-DATA(insert OID = 735 (  "+"       PGUID 0 b t f  602  602    602  735  0 0 0 path_add - - ));
-DATA(insert OID = 736 (  "+"       PGUID 0 b t f  602  600    602    0  0 0 0 path_add_pt - - ));
-DATA(insert OID = 737 (  "-"       PGUID 0 b t f  602  600    602    0  0 0 0 path_sub_pt - - ));
-DATA(insert OID = 738 (  "*"       PGUID 0 b t f  602  600    602    0  0 0 0 path_mul_pt - - ));
-DATA(insert OID = 739 (  "/"       PGUID 0 b t f  602  600    602    0  0 0 0 path_div_pt - - ));
-DATA(insert OID = 755 (  "~"       PGUID 0 b t f  602  600     16  512  0 0 0 path_contain_pt - - ));
-DATA(insert OID = 756 (  "@"       PGUID 0 b t f  600  604     16  757  0 0 0 pt_contained_poly - - ));
-DATA(insert OID = 757 (  "~"       PGUID 0 b t f  604  600     16  756  0 0 0 poly_contain_pt - - ));
-DATA(insert OID = 758 (  "@"       PGUID 0 b t f  600  718     16  759  0 0 0 pt_contained_circle - - ));
-DATA(insert OID = 759 (  "~"       PGUID 0 b t f  718  600     16  758  0 0 0 circle_contain_pt - - ));
+DATA(insert OID = 731 (  "+"       10 PGUID 0 b t f  600  600    600  731  0 0 0 point_add - - ));
+DATA(insert OID = 732 (  "-"       10 PGUID 0 b t f  600  600    600    0  0 0 0 point_sub - - ));
+DATA(insert OID = 733 (  "*"       10 PGUID 0 b t f  600  600    600  733  0 0 0 point_mul - - ));
+DATA(insert OID = 734 (  "/"       10 PGUID 0 b t f  600  600    600    0  0 0 0 point_div - - ));
+DATA(insert OID = 735 (  "+"       10 PGUID 0 b t f  602  602    602  735  0 0 0 path_add - - ));
+DATA(insert OID = 736 (  "+"       10 PGUID 0 b t f  602  600    602    0  0 0 0 path_add_pt - - ));
+DATA(insert OID = 737 (  "-"       10 PGUID 0 b t f  602  600    602    0  0 0 0 path_sub_pt - - ));
+DATA(insert OID = 738 (  "*"       10 PGUID 0 b t f  602  600    602    0  0 0 0 path_mul_pt - - ));
+DATA(insert OID = 739 (  "/"       10 PGUID 0 b t f  602  600    602    0  0 0 0 path_div_pt - - ));
+DATA(insert OID = 755 (  "~"       10 PGUID 0 b t f  602  600     16  512  0 0 0 path_contain_pt - - ));
+DATA(insert OID = 756 (  "@"       10 PGUID 0 b t f  600  604     16  757  0 0 0 pt_contained_poly - - ));
+DATA(insert OID = 757 (  "~"       10 PGUID 0 b t f  604  600     16  756  0 0 0 poly_contain_pt - - ));
+DATA(insert OID = 758 (  "@"       10 PGUID 0 b t f  600  718     16  759  0 0 0 pt_contained_circle - - ));
+DATA(insert OID = 759 (  "~"       10 PGUID 0 b t f  718  600     16  758  0 0 0 circle_contain_pt - - ));

-DATA(insert OID = 773 (  "@"       PGUID 0 l t f   0  23  23   0   0   0   0 int4abs - - ));
+DATA(insert OID = 773 (  "@"       10 PGUID 0 l t f   0  23  23   0   0   0   0 int4abs - - ));

 /* additional operators for geometric types - thomas 1997-07-09 */
-DATA(insert OID =  792 (  "="       PGUID 0 b t f  602  602     16  792  0 0 0 path_n_eq eqsel eqjoinsel ));
-DATA(insert OID =  793 (  "<"       PGUID 0 b t f  602  602     16  794  0 0 0 path_n_lt - - ));
-DATA(insert OID =  794 (  ">"       PGUID 0 b t f  602  602     16  793  0 0 0 path_n_gt - - ));
-DATA(insert OID =  795 (  "<="       PGUID 0 b t f  602  602     16  796  0 0 0 path_n_le - - ));
-DATA(insert OID =  796 (  ">="       PGUID 0 b t f  602  602     16  795  0 0 0 path_n_ge - - ));
-DATA(insert OID =  797 (  "#"       PGUID 0 l t f    0  602     23    0  0 0 0 path_npoints - - ));
-DATA(insert OID =  798 (  "?#"       PGUID 0 b t f  602  602     16    0  0 0 0 path_inter - - ));
-DATA(insert OID =  799 (  "@-@"    PGUID 0 l t f    0  602    701    0  0 0 0 path_length - - ));
-DATA(insert OID =  800 (  ">^"       PGUID 0 b t f  603  603     16    0  0 0 0 box_above positionsel positionjoinsel
));
-DATA(insert OID =  801 (  "<^"       PGUID 0 b t f  603  603     16    0  0 0 0 box_below positionsel positionjoinsel
));
-DATA(insert OID =  802 (  "?#"       PGUID 0 b t f  603  603     16    0  0 0 0 box_overlap areasel areajoinsel ));
-DATA(insert OID =  803 (  "#"       PGUID 0 b t f  603  603    603    0  0 0 0 box_intersect - - ));
-DATA(insert OID =  804 (  "+"       PGUID 0 b t f  603  600    603    0  0 0 0 box_add - - ));
-DATA(insert OID =  805 (  "-"       PGUID 0 b t f  603  600    603    0  0 0 0 box_sub - - ));
-DATA(insert OID =  806 (  "*"       PGUID 0 b t f  603  600    603    0  0 0 0 box_mul - - ));
-DATA(insert OID =  807 (  "/"       PGUID 0 b t f  603  600    603    0  0 0 0 box_div - - ));
-DATA(insert OID =  808 (  "?-"       PGUID 0 b t f  600  600     16  808  0 0 0 point_horiz - - ));
-DATA(insert OID =  809 (  "?|"       PGUID 0 b t f  600  600     16  809  0 0 0 point_vert - - ));
-
-DATA(insert OID = 811 (  "="       PGUID 0 b t f 704 704  16 811 812   0   0 tintervaleq eqsel eqjoinsel ));
-DATA(insert OID = 812 (  "<>"       PGUID 0 b t f 704 704  16 812 811   0   0 tintervalne neqsel neqjoinsel ));
-DATA(insert OID = 813 (  "<"       PGUID 0 b t f 704 704  16 814 816   0   0 tintervallt scalarltsel scalarltjoinsel
));
-DATA(insert OID = 814 (  ">"       PGUID 0 b t f 704 704  16 813 815   0   0 tintervalgt scalargtsel scalargtjoinsel
));
-DATA(insert OID = 815 (  "<="       PGUID 0 b t f 704 704  16 816 814   0   0 tintervalle scalarltsel scalarltjoinsel
));
-DATA(insert OID = 816 (  ">="       PGUID 0 b t f 704 704  16 815 813   0   0 tintervalge scalargtsel scalargtjoinsel
));
-
-DATA(insert OID = 843 (  "*"       PGUID 0 b t f  790  700    790 845   0   0   0 cash_mul_flt4 - - ));
-DATA(insert OID = 844 (  "/"       PGUID 0 b t f  790  700    790   0   0   0   0 cash_div_flt4 - - ));
-DATA(insert OID = 845 (  "*"       PGUID 0 b t f  700  790    790 843   0   0   0 flt4_mul_cash - - ));
-
-DATA(insert OID = 900 (  "="       PGUID 0 b t t  790  790    16 900 901    902 902 cash_eq eqsel eqjoinsel ));
-DATA(insert OID = 901 (  "<>"       PGUID 0 b t f  790  790    16 901 900    0 0 cash_ne neqsel neqjoinsel ));
-DATA(insert OID = 902 (  "<"       PGUID 0 b t f  790  790    16 903 905    0 0 cash_lt scalarltsel scalarltjoinsel
));
-DATA(insert OID = 903 (  ">"       PGUID 0 b t f  790  790    16 902 904    0 0 cash_gt scalargtsel scalargtjoinsel
));
-DATA(insert OID = 904 (  "<="       PGUID 0 b t f  790  790    16 905 903    0 0 cash_le scalarltsel scalarltjoinsel
));
-DATA(insert OID = 905 (  ">="       PGUID 0 b t f  790  790    16 904 902    0 0 cash_ge scalargtsel scalargtjoinsel
));
-DATA(insert OID = 906 (  "+"       PGUID 0 b t f  790  790    790 906   0   0   0 cash_pl - - ));
-DATA(insert OID = 907 (  "-"       PGUID 0 b t f  790  790    790   0   0   0   0 cash_mi - - ));
-DATA(insert OID = 908 (  "*"       PGUID 0 b t f  790  701    790 916   0   0   0 cash_mul_flt8 - - ));
-DATA(insert OID = 909 (  "/"       PGUID 0 b t f  790  701    790   0   0   0   0 cash_div_flt8 - - ));
-DATA(insert OID = 912 (  "*"       PGUID 0 b t f  790  23    790 917   0   0   0 cash_mul_int4 - - ));
-DATA(insert OID = 913 (  "/"       PGUID 0 b t f  790  23    790   0   0   0   0 cash_div_int4 - - ));
-DATA(insert OID = 914 (  "*"       PGUID 0 b t f  790  21    790 918   0   0   0 cash_mul_int2 - - ));
-DATA(insert OID = 915 (  "/"       PGUID 0 b t f  790  21    790   0   0   0   0 cash_div_int2 - - ));
-DATA(insert OID = 916 (  "*"       PGUID 0 b t f  701  790    790 908   0   0   0 flt8_mul_cash - - ));
-DATA(insert OID = 917 (  "*"       PGUID 0 b t f  23  790    790 912   0   0   0 int4_mul_cash - - ));
-DATA(insert OID = 918 (  "*"       PGUID 0 b t f  21  790    790 914   0   0   0 int2_mul_cash - - ));
-
-DATA(insert OID = 965 (  "^"       PGUID 0 b t f  701  701    701 0 0 0 0 dpow - - ));
-DATA(insert OID = 966 (  "+"       PGUID 0 b t f 1034 1033 1034 0 0 0 0 aclinsert    - - ));
-DATA(insert OID = 967 (  "-"       PGUID 0 b t f 1034 1033 1034 0 0 0 0 aclremove    - - ));
-DATA(insert OID = 968 (  "~"       PGUID 0 b t f 1034 1033     16 0 0 0 0 aclcontains - - ));
+DATA(insert OID =  792 (  "="       10 PGUID 0 b t f  602  602     16  792  0 0 0 path_n_eq eqsel eqjoinsel ));
+DATA(insert OID =  793 (  "<"       10 PGUID 0 b t f  602  602     16  794  0 0 0 path_n_lt - - ));
+DATA(insert OID =  794 (  ">"       10 PGUID 0 b t f  602  602     16  793  0 0 0 path_n_gt - - ));
+DATA(insert OID =  795 (  "<="       10 PGUID 0 b t f  602  602     16  796  0 0 0 path_n_le - - ));
+DATA(insert OID =  796 (  ">="       10 PGUID 0 b t f  602  602     16  795  0 0 0 path_n_ge - - ));
+DATA(insert OID =  797 (  "#"       10 PGUID 0 l t f    0  602     23    0  0 0 0 path_npoints - - ));
+DATA(insert OID =  798 (  "?#"       10 PGUID 0 b t f  602  602     16    0  0 0 0 path_inter - - ));
+DATA(insert OID =  799 (  "@-@"    10 PGUID 0 l t f    0  602    701    0  0 0 0 path_length - - ));
+DATA(insert OID =  800 (  ">^"       10 PGUID 0 b t f  603  603     16    0  0 0 0 box_above positionsel
positionjoinsel)); 
+DATA(insert OID =  801 (  "<^"       10 PGUID 0 b t f  603  603     16    0  0 0 0 box_below positionsel
positionjoinsel)); 
+DATA(insert OID =  802 (  "?#"       10 PGUID 0 b t f  603  603     16    0  0 0 0 box_overlap areasel areajoinsel ));
+DATA(insert OID =  803 (  "#"       10 PGUID 0 b t f  603  603    603    0  0 0 0 box_intersect - - ));
+DATA(insert OID =  804 (  "+"       10 PGUID 0 b t f  603  600    603    0  0 0 0 box_add - - ));
+DATA(insert OID =  805 (  "-"       10 PGUID 0 b t f  603  600    603    0  0 0 0 box_sub - - ));
+DATA(insert OID =  806 (  "*"       10 PGUID 0 b t f  603  600    603    0  0 0 0 box_mul - - ));
+DATA(insert OID =  807 (  "/"       10 PGUID 0 b t f  603  600    603    0  0 0 0 box_div - - ));
+DATA(insert OID =  808 (  "?-"       10 PGUID 0 b t f  600  600     16  808  0 0 0 point_horiz - - ));
+DATA(insert OID =  809 (  "?|"       10 PGUID 0 b t f  600  600     16  809  0 0 0 point_vert - - ));
+
+DATA(insert OID = 811 (  "="       10 PGUID 0 b t f 704 704  16 811 812   0   0 tintervaleq eqsel eqjoinsel ));
+DATA(insert OID = 812 (  "<>"       10 PGUID 0 b t f 704 704  16 812 811   0   0 tintervalne neqsel neqjoinsel ));
+DATA(insert OID = 813 (  "<"       10 PGUID 0 b t f 704 704  16 814 816   0   0 tintervallt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 814 (  ">"       10 PGUID 0 b t f 704 704  16 813 815   0   0 tintervalgt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 815 (  "<="       10 PGUID 0 b t f 704 704  16 816 814   0   0 tintervalle scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 816 (  ">="       10 PGUID 0 b t f 704 704  16 815 813   0   0 tintervalge scalargtsel
scalargtjoinsel)); 
+
+DATA(insert OID = 843 (  "*"       10 PGUID 0 b t f  790  700    790 845   0   0   0 cash_mul_flt4 - - ));
+DATA(insert OID = 844 (  "/"       10 PGUID 0 b t f  790  700    790   0   0   0   0 cash_div_flt4 - - ));
+DATA(insert OID = 845 (  "*"       10 PGUID 0 b t f  700  790    790 843   0   0   0 flt4_mul_cash - - ));
+
+DATA(insert OID = 900 (  "="       10 PGUID 0 b t t  790  790    16 900 901    902 902 cash_eq eqsel eqjoinsel ));
+DATA(insert OID = 901 (  "<>"       10 PGUID 0 b t f  790  790    16 901 900    0 0 cash_ne neqsel neqjoinsel ));
+DATA(insert OID = 902 (  "<"       10 PGUID 0 b t f  790  790    16 903 905    0 0 cash_lt scalarltsel scalarltjoinsel
));
+DATA(insert OID = 903 (  ">"       10 PGUID 0 b t f  790  790    16 902 904    0 0 cash_gt scalargtsel scalargtjoinsel
));
+DATA(insert OID = 904 (  "<="       10 PGUID 0 b t f  790  790    16 905 903    0 0 cash_le scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 905 (  ">="       10 PGUID 0 b t f  790  790    16 904 902    0 0 cash_ge scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 906 (  "+"       10 PGUID 0 b t f  790  790    790 906   0   0   0 cash_pl - - ));
+DATA(insert OID = 907 (  "-"       10 PGUID 0 b t f  790  790    790   0   0   0   0 cash_mi - - ));
+DATA(insert OID = 908 (  "*"       10 PGUID 0 b t f  790  701    790 916   0   0   0 cash_mul_flt8 - - ));
+DATA(insert OID = 909 (  "/"       10 PGUID 0 b t f  790  701    790   0   0   0   0 cash_div_flt8 - - ));
+DATA(insert OID = 912 (  "*"       10 PGUID 0 b t f  790  23    790 917   0   0   0 cash_mul_int4 - - ));
+DATA(insert OID = 913 (  "/"       10 PGUID 0 b t f  790  23    790   0   0   0   0 cash_div_int4 - - ));
+DATA(insert OID = 914 (  "*"       10 PGUID 0 b t f  790  21    790 918   0   0   0 cash_mul_int2 - - ));
+DATA(insert OID = 915 (  "/"       10 PGUID 0 b t f  790  21    790   0   0   0   0 cash_div_int2 - - ));
+DATA(insert OID = 916 (  "*"       10 PGUID 0 b t f  701  790    790 908   0   0   0 flt8_mul_cash - - ));
+DATA(insert OID = 917 (  "*"       10 PGUID 0 b t f  23  790    790 912   0   0   0 int4_mul_cash - - ));
+DATA(insert OID = 918 (  "*"       10 PGUID 0 b t f  21  790    790 914   0   0   0 int2_mul_cash - - ));
+
+DATA(insert OID = 965 (  "^"       10 PGUID 0 b t f  701  701    701 0 0 0 0 dpow - - ));
+DATA(insert OID = 966 (  "+"       10 PGUID 0 b t f 1034 1033 1034 0 0 0 0 aclinsert    - - ));
+DATA(insert OID = 967 (  "-"       10 PGUID 0 b t f 1034 1033 1034 0 0 0 0 aclremove    - - ));
+DATA(insert OID = 968 (  "~"       10 PGUID 0 b t f 1034 1033     16 0 0 0 0 aclcontains - - ));

 /* additional geometric operators - thomas 1997-07-09 */
-DATA(insert OID =  969 (  "@@"       PGUID 0 l t f    0  601    600    0  0 0 0 lseg_center - - ));
-DATA(insert OID =  970 (  "@@"       PGUID 0 l t f    0  602    600    0  0 0 0 path_center - - ));
-DATA(insert OID =  971 (  "@@"       PGUID 0 l t f    0  604    600    0  0 0 0 poly_center - - ));
+DATA(insert OID =  969 (  "@@"       10 PGUID 0 l t f    0  601    600    0  0 0 0 lseg_center - - ));
+DATA(insert OID =  970 (  "@@"       10 PGUID 0 l t f    0  602    600    0  0 0 0 path_center - - ));
+DATA(insert OID =  971 (  "@@"       10 PGUID 0 l t f    0  604    600    0  0 0 0 poly_center - - ));

-DATA(insert OID =  974 (  "||"       PGUID 0 b t f 1042 1042 1042    0  0 0 0 textcat - - ));
-DATA(insert OID =  979 (  "||"       PGUID 0 b t f 1043 1043 1043    0  0 0 0 textcat - - ));
+DATA(insert OID =  974 (  "||"       10 PGUID 0 b t f 1042 1042 1042    0  0 0 0 textcat - - ));
+DATA(insert OID =  979 (  "||"       10 PGUID 0 b t f 1043 1043 1043    0  0 0 0 textcat - - ));

-DATA(insert OID = 1054 ( "="       PGUID 0 b t f 1042 1042     16 1054 1057 1058 1058 bpchareq eqsel eqjoinsel ));
-DATA(insert OID = 1055 ( "~"       PGUID 0 b t f 1042    25     16    0 1056  0 0 textregexeq regexeqsel
regexeqjoinsel)); 
+DATA(insert OID = 1054 ( "="       10 PGUID 0 b t f 1042 1042     16 1054 1057 1058 1058 bpchareq eqsel eqjoinsel ));
+DATA(insert OID = 1055 ( "~"       10 PGUID 0 b t f 1042    25     16    0 1056  0 0 textregexeq regexeqsel
regexeqjoinsel)); 
 #define OID_BPCHAR_REGEXEQ_OP        1055
-DATA(insert OID = 1056 ( "!~"       PGUID 0 b t f 1042    25     16    0 1055  0 0 textregexne regexnesel
regexnejoinsel)); 
-DATA(insert OID = 1057 ( "<>"       PGUID 0 b t f 1042 1042     16 1057 1054  0 0 bpcharne neqsel neqjoinsel ));
-DATA(insert OID = 1058 ( "<"       PGUID 0 b t f 1042 1042     16 1060 1061  0 0 bpcharlt scalarltsel scalarltjoinsel
));
-DATA(insert OID = 1059 ( "<="       PGUID 0 b t f 1042 1042     16 1061 1060  0 0 bpcharle scalarltsel scalarltjoinsel
));
-DATA(insert OID = 1060 ( ">"       PGUID 0 b t f 1042 1042     16 1058 1059  0 0 bpchargt scalargtsel scalargtjoinsel
));
-DATA(insert OID = 1061 ( ">="       PGUID 0 b t f 1042 1042     16 1059 1058  0 0 bpcharge scalargtsel scalargtjoinsel
));
+DATA(insert OID = 1056 ( "!~"       10 PGUID 0 b t f 1042    25     16    0 1055  0 0 textregexne regexnesel
regexnejoinsel)); 
+DATA(insert OID = 1057 ( "<>"       10 PGUID 0 b t f 1042 1042     16 1057 1054  0 0 bpcharne neqsel neqjoinsel ));
+DATA(insert OID = 1058 ( "<"       10 PGUID 0 b t f 1042 1042     16 1060 1061  0 0 bpcharlt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1059 ( "<="       10 PGUID 0 b t f 1042 1042     16 1061 1060  0 0 bpcharle scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1060 ( ">"       10 PGUID 0 b t f 1042 1042     16 1058 1059  0 0 bpchargt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1061 ( ">="       10 PGUID 0 b t f 1042 1042     16 1059 1058  0 0 bpcharge scalargtsel
scalargtjoinsel)); 

-DATA(insert OID = 1062 ( "="       PGUID 0 b t t 1043 1043    16    1062 1065 1066 1066 varchareq eqsel eqjoinsel ));
-DATA(insert OID = 1063 ( "~"       PGUID 0 b t f 1043    25    16 0 1064  0 0 textregexeq regexeqsel regexeqjoinsel
));
+DATA(insert OID = 1062 ( "="       10 PGUID 0 b t t 1043 1043    16    1062 1065 1066 1066 varchareq eqsel eqjoinsel
));
+DATA(insert OID = 1063 ( "~"       10 PGUID 0 b t f 1043    25    16 0 1064  0 0 textregexeq regexeqsel regexeqjoinsel
));
 #define OID_VARCHAR_REGEXEQ_OP        1063
-DATA(insert OID = 1064 ( "!~"       PGUID 0 b t f 1043    25    16 0 1063  0 0 textregexne regexnesel regexnejoinsel
));
-DATA(insert OID = 1065 ( "<>"       PGUID 0 b t f 1043 1043    16 1065 1062  0 0 varcharne neqsel neqjoinsel ));
-DATA(insert OID = 1066 ( "<"       PGUID 0 b t f 1043 1043    16 1068 1069  0 0 varcharlt scalarltsel scalarltjoinsel
));
-DATA(insert OID = 1067 ( "<="       PGUID 0 b t f 1043 1043    16 1069 1068  0 0 varcharle scalarltsel scalarltjoinsel
));
-DATA(insert OID = 1068 ( ">"       PGUID 0 b t f 1043 1043    16 1066 1067  0 0 varchargt scalargtsel scalargtjoinsel
));
-DATA(insert OID = 1069 ( ">="       PGUID 0 b t f 1043 1043    16 1067 1066  0 0 varcharge scalargtsel scalargtjoinsel
));
+DATA(insert OID = 1064 ( "!~"       10 PGUID 0 b t f 1043    25    16 0 1063  0 0 textregexne regexnesel
regexnejoinsel)); 
+DATA(insert OID = 1065 ( "<>"       10 PGUID 0 b t f 1043 1043    16 1065 1062  0 0 varcharne neqsel neqjoinsel ));
+DATA(insert OID = 1066 ( "<"       10 PGUID 0 b t f 1043 1043    16 1068 1069  0 0 varcharlt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1067 ( "<="       10 PGUID 0 b t f 1043 1043    16 1069 1068  0 0 varcharle scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1068 ( ">"       10 PGUID 0 b t f 1043 1043    16 1066 1067  0 0 varchargt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1069 ( ">="       10 PGUID 0 b t f 1043 1043    16 1067 1066  0 0 varcharge scalargtsel
scalargtjoinsel)); 

 /* date operators */
-DATA(insert OID = 1093 ( "="       PGUID 0 b t t  1082    1082   16 1093 1094 1095 1095 date_eq eqsel eqjoinsel ));
-DATA(insert OID = 1094 ( "<>"       PGUID 0 b t f  1082    1082   16 1094 1093  0 0 date_ne neqsel neqjoinsel ));
-DATA(insert OID = 1095 ( "<"       PGUID 0 b t f  1082    1082   16 1097 1098  0 0 date_lt scalarltsel scalarltjoinsel
));
-DATA(insert OID = 1096 ( "<="       PGUID 0 b t f  1082    1082   16 1098 1097  0 0 date_le scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1097 ( ">"       PGUID 0 b t f  1082    1082   16 1095 1096  0 0 date_gt scalargtsel scalargtjoinsel
));
-DATA(insert OID = 1098 ( ">="       PGUID 0 b t f  1082    1082   16 1096 1095  0 0 date_ge scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 1099 ( "-"       PGUID 0 b t f  1082    1082   23 0 0 0 0 date_mi - - ));
-DATA(insert OID = 1100 ( "+"       PGUID 0 b t f  1082      23 1082 0 0 0 0 date_pli - - ));
-DATA(insert OID = 1101 ( "-"       PGUID 0 b t f  1082      23 1082 0 0 0 0 date_mii - - ));
+DATA(insert OID = 1093 ( "="       10 PGUID 0 b t t  1082    1082   16 1093 1094 1095 1095 date_eq eqsel eqjoinsel ));
+DATA(insert OID = 1094 ( "<>"       10 PGUID 0 b t f  1082    1082   16 1094 1093  0 0 date_ne neqsel neqjoinsel ));
+DATA(insert OID = 1095 ( "<"       10 PGUID 0 b t f  1082    1082   16 1097 1098  0 0 date_lt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1096 ( "<="       10 PGUID 0 b t f  1082    1082   16 1098 1097  0 0 date_le scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1097 ( ">"       10 PGUID 0 b t f  1082    1082   16 1095 1096  0 0 date_gt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1098 ( ">="       10 PGUID 0 b t f  1082    1082   16 1096 1095  0 0 date_ge scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1099 ( "-"       10 PGUID 0 b t f  1082    1082   23 0 0 0 0 date_mi - - ));
+DATA(insert OID = 1100 ( "+"       10 PGUID 0 b t f  1082      23 1082 0 0 0 0 date_pli - - ));
+DATA(insert OID = 1101 ( "-"       10 PGUID 0 b t f  1082      23 1082 0 0 0 0 date_mii - - ));

 /* time operators */
-DATA(insert OID = 1108 ( "="       PGUID 0 b t f  1083    1083  16 1108 1109 1110 1110 time_eq eqsel eqjoinsel ));
-DATA(insert OID = 1109 ( "<>"       PGUID 0 b t f  1083    1083  16 1109 1108    0 0 time_ne neqsel neqjoinsel ));
-DATA(insert OID = 1110 ( "<"       PGUID 0 b t f  1083    1083  16 1112 1113    0 0 time_lt scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1111 ( "<="       PGUID 0 b t f  1083    1083  16 1113 1112    0 0 time_le scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1112 ( ">"       PGUID 0 b t f  1083    1083  16 1110 1111    0 0 time_gt scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 1113 ( ">="       PGUID 0 b t f  1083    1083  16 1111 1110    0 0 time_ge scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 1269 (  "-"       PGUID 0 b t f  1186 1083 1083 0 0 0 0 interval_mi_time - - ));
+DATA(insert OID = 1108 ( "="       10 PGUID 0 b t f  1083    1083  16 1108 1109 1110 1110 time_eq eqsel eqjoinsel ));
+DATA(insert OID = 1109 ( "<>"       10 PGUID 0 b t f  1083    1083  16 1109 1108    0 0 time_ne neqsel neqjoinsel ));
+DATA(insert OID = 1110 ( "<"       10 PGUID 0 b t f  1083    1083  16 1112 1113    0 0 time_lt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1111 ( "<="       10 PGUID 0 b t f  1083    1083  16 1113 1112    0 0 time_le scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1112 ( ">"       10 PGUID 0 b t f  1083    1083  16 1110 1111    0 0 time_gt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1113 ( ">="       10 PGUID 0 b t f  1083    1083  16 1111 1110    0 0 time_ge scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1269 (  "-"       10 PGUID 0 b t f  1186 1083 1083 0 0 0 0 interval_mi_time - - ));

 /* timetz operators */
-DATA(insert OID = 1295 (  "-"       PGUID 0 b t f  1186 1266 1266 0 0 0 0 interval_mi_timetz - - ));
-DATA(insert OID = 1550 ( "="       PGUID 0 b t f  1266 1266   16 1550 1551 1552 1552 timetz_eq eqsel eqjoinsel ));
-DATA(insert OID = 1551 ( "<>"       PGUID 0 b t f  1266 1266   16 1551 1550    0 0 timetz_ne neqsel neqjoinsel ));
-DATA(insert OID = 1552 ( "<"       PGUID 0 b t f  1266 1266   16 1554 1555    0 0 timetz_lt scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1553 ( "<="       PGUID 0 b t f  1266 1266   16 1555 1554    0 0 timetz_le scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1554 ( ">"       PGUID 0 b t f  1266 1266   16 1552 1553    0 0 timetz_gt scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 1555 ( ">="       PGUID 0 b t f  1266 1266   16 1553 1552    0 0 timetz_ge scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1295 (  "-"       10 PGUID 0 b t f  1186 1266 1266 0 0 0 0 interval_mi_timetz - - ));
+DATA(insert OID = 1550 ( "="       10 PGUID 0 b t f  1266 1266   16 1550 1551 1552 1552 timetz_eq eqsel eqjoinsel ));
+DATA(insert OID = 1551 ( "<>"       10 PGUID 0 b t f  1266 1266   16 1551 1550    0 0 timetz_ne neqsel neqjoinsel ));
+DATA(insert OID = 1552 ( "<"       10 PGUID 0 b t f  1266 1266   16 1554 1555    0 0 timetz_lt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1553 ( "<="       10 PGUID 0 b t f  1266 1266   16 1555 1554    0 0 timetz_le scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1554 ( ">"       10 PGUID 0 b t f  1266 1266   16 1552 1553    0 0 timetz_gt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1555 ( ">="       10 PGUID 0 b t f  1266 1266   16 1553 1552    0 0 timetz_ge scalargtsel
scalargtjoinsel)); 

 /* float48 operators */
-DATA(insert OID = 1116 (  "+"        PGUID 0 b t f 700 701 701 1126     0     0     0 float48pl - - ));
-DATA(insert OID = 1117 (  "-"        PGUID 0 b t f 700 701 701     0     0     0     0 float48mi - - ));
-DATA(insert OID = 1118 (  "/"        PGUID 0 b t f 700 701 701     0     0     0     0 float48div - - ));
-DATA(insert OID = 1119 (  "*"        PGUID 0 b t f 700 701 701 1129     0     0     0 float48mul - - ));
-DATA(insert OID = 1120 (  "="        PGUID 0 b t f  700    701  16 1130 1121  622    672 float48eq eqsel eqjoinsel ));
-DATA(insert OID = 1121 (  "<>"        PGUID 0 b t f  700    701  16 1131 1120  0 0 float48ne neqsel neqjoinsel ));
-DATA(insert OID = 1122 (  "<"        PGUID 0 b t f  700    701  16 1133 1125  0 0 float48lt scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1123 (  ">"        PGUID 0 b t f  700    701  16 1132 1124  0 0 float48gt scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 1124 (  "<="        PGUID 0 b t f  700    701  16 1135 1123  0 0 float48le scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1125 (  ">="        PGUID 0 b t f  700    701  16 1134 1122  0 0 float48ge scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1116 (  "+"        10 PGUID 0 b t f 700 701 701 1126     0     0     0 float48pl - - ));
+DATA(insert OID = 1117 (  "-"        10 PGUID 0 b t f 700 701 701     0     0     0     0 float48mi - - ));
+DATA(insert OID = 1118 (  "/"        10 PGUID 0 b t f 700 701 701     0     0     0     0 float48div - - ));
+DATA(insert OID = 1119 (  "*"        10 PGUID 0 b t f 700 701 701 1129     0     0     0 float48mul - - ));
+DATA(insert OID = 1120 (  "="        10 PGUID 0 b t f  700    701  16 1130 1121  622    672 float48eq eqsel eqjoinsel
));
+DATA(insert OID = 1121 (  "<>"        10 PGUID 0 b t f  700    701  16 1131 1120  0 0 float48ne neqsel neqjoinsel ));
+DATA(insert OID = 1122 (  "<"        10 PGUID 0 b t f  700    701  16 1133 1125  0 0 float48lt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1123 (  ">"        10 PGUID 0 b t f  700    701  16 1132 1124  0 0 float48gt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1124 (  "<="        10 PGUID 0 b t f  700    701  16 1135 1123  0 0 float48le scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1125 (  ">="        10 PGUID 0 b t f  700    701  16 1134 1122  0 0 float48ge scalargtsel
scalargtjoinsel)); 

 /* float84 operators */
-DATA(insert OID = 1126 (  "+"        PGUID 0 b t f 701 700 701 1116     0     0     0 float84pl - - ));
-DATA(insert OID = 1127 (  "-"        PGUID 0 b t f 701 700 701     0     0     0     0 float84mi - - ));
-DATA(insert OID = 1128 (  "/"        PGUID 0 b t f 701 700 701     0     0     0     0 float84div - - ));
-DATA(insert OID = 1129 (  "*"        PGUID 0 b t f 701 700 701 1119     0     0     0 float84mul - - ));
-DATA(insert OID = 1130 (  "="        PGUID 0 b t f  701    700  16 1120 1131  672 622 float84eq eqsel eqjoinsel ));
-DATA(insert OID = 1131 (  "<>"        PGUID 0 b t f  701    700  16 1121 1130  0 0 float84ne neqsel neqjoinsel ));
-DATA(insert OID = 1132 (  "<"        PGUID 0 b t f  701    700  16 1123 1135  0 0 float84lt scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1133 (  ">"        PGUID 0 b t f  701    700  16 1122 1134  0 0 float84gt scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 1134 (  "<="        PGUID 0 b t f  701    700  16 1125 1133  0 0 float84le scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1135 (  ">="        PGUID 0 b t f  701    700  16 1124 1132  0 0 float84ge scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1126 (  "+"        10 PGUID 0 b t f 701 700 701 1116     0     0     0 float84pl - - ));
+DATA(insert OID = 1127 (  "-"        10 PGUID 0 b t f 701 700 701     0     0     0     0 float84mi - - ));
+DATA(insert OID = 1128 (  "/"        10 PGUID 0 b t f 701 700 701     0     0     0     0 float84div - - ));
+DATA(insert OID = 1129 (  "*"        10 PGUID 0 b t f 701 700 701 1119     0     0     0 float84mul - - ));
+DATA(insert OID = 1130 (  "="        10 PGUID 0 b t f  701    700  16 1120 1131  672 622 float84eq eqsel eqjoinsel ));
+DATA(insert OID = 1131 (  "<>"        10 PGUID 0 b t f  701    700  16 1121 1130  0 0 float84ne neqsel neqjoinsel ));
+DATA(insert OID = 1132 (  "<"        10 PGUID 0 b t f  701    700  16 1123 1135  0 0 float84lt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1133 (  ">"        10 PGUID 0 b t f  701    700  16 1122 1134  0 0 float84gt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1134 (  "<="        10 PGUID 0 b t f  701    700  16 1125 1133  0 0 float84le scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1135 (  ">="        10 PGUID 0 b t f  701    700  16 1124 1132  0 0 float84ge scalargtsel
scalargtjoinsel)); 

 /* int4 vs oid equality --- use oid (unsigned) comparison */
-DATA(insert OID = 1136 (  "="        PGUID 0 b t t    23     26   16 1137 1656 0 0 oideq eqsel eqjoinsel ));
-DATA(insert OID = 1137 (  "="        PGUID 0 b t t    26     23   16 1136 1661 0 0 oideq eqsel eqjoinsel ));
+DATA(insert OID = 1136 (  "="        10 PGUID 0 b t t    23     26   16 1137 1656 0 0 oideq eqsel eqjoinsel ));
+DATA(insert OID = 1137 (  "="        10 PGUID 0 b t t    26     23   16 1136 1661 0 0 oideq eqsel eqjoinsel ));

-DATA(insert OID = 1158 (  "!"        PGUID 0 r t f    21      0   23 0 0 0 0 int2fac - - ));
-DATA(insert OID = 1175 (  "!!"        PGUID 0 l t f     0     21   23 0 0 0 0 int2fac - - ));
+DATA(insert OID = 1158 (  "!"        10 PGUID 0 r t f    21      0   23 0 0 0 0 int2fac - - ));
+DATA(insert OID = 1175 (  "!!"        10 PGUID 0 l t f     0     21   23 0 0 0 0 int2fac - - ));

 /* LIKE hacks by Keith Parks. */
-DATA(insert OID = 1207 (  "~~"      PGUID 0 b t f  19   25  16 0 1208 0 0 namelike likesel likejoinsel ));
+DATA(insert OID = 1207 (  "~~"      10 PGUID 0 b t f  19   25  16 0 1208 0 0 namelike likesel likejoinsel ));
 #define OID_NAME_LIKE_OP        1207
-DATA(insert OID = 1208 (  "!~~"   PGUID 0 b t f  19   25  16 0 1207 0 0 namenlike nlikesel nlikejoinsel ));
-DATA(insert OID = 1209 (  "~~"      PGUID 0 b t f  25   25  16 0 1210 0 0 textlike likesel likejoinsel ));
+DATA(insert OID = 1208 (  "!~~"   10 PGUID 0 b t f  19   25  16 0 1207 0 0 namenlike nlikesel nlikejoinsel ));
+DATA(insert OID = 1209 (  "~~"      10 PGUID 0 b t f  25   25  16 0 1210 0 0 textlike likesel likejoinsel ));
 #define OID_TEXT_LIKE_OP        1209
-DATA(insert OID = 1210 (  "!~~"   PGUID 0 b t f  25   25  16 0 1209 0 0 textnlike nlikesel nlikejoinsel ));
-DATA(insert OID = 1211 (  "~~"      PGUID 0 b t f  1042 25  16 0 1212 0 0 textlike likesel likejoinsel ));
+DATA(insert OID = 1210 (  "!~~"   10 PGUID 0 b t f  25   25  16 0 1209 0 0 textnlike nlikesel nlikejoinsel ));
+DATA(insert OID = 1211 (  "~~"      10 PGUID 0 b t f  1042 25  16 0 1212 0 0 textlike likesel likejoinsel ));
 #define OID_BPCHAR_LIKE_OP        1211
-DATA(insert OID = 1212 (  "!~~"   PGUID 0 b t f  1042 25  16 0 1211 0 0 textnlike nlikesel nlikejoinsel ));
-DATA(insert OID = 1213 (  "~~"      PGUID 0 b t f  1043 25  16 0 1214 0 0 textlike likesel likejoinsel ));
+DATA(insert OID = 1212 (  "!~~"   10 PGUID 0 b t f  1042 25  16 0 1211 0 0 textnlike nlikesel nlikejoinsel ));
+DATA(insert OID = 1213 (  "~~"      10 PGUID 0 b t f  1043 25  16 0 1214 0 0 textlike likesel likejoinsel ));
 #define OID_VARCHAR_LIKE_OP        1213
-DATA(insert OID = 1214 (  "!~~"   PGUID 0 b t f  1043 25  16 0 1213 0 0 textnlike nlikesel nlikejoinsel ));
+DATA(insert OID = 1214 (  "!~~"   10 PGUID 0 b t f  1043 25  16 0 1213 0 0 textnlike nlikesel nlikejoinsel ));

 /* case-insensitive regex hacks */
-DATA(insert OID = 1226 (  "~*"         PGUID 0 b t f    19    25    16 0 1227  0 0 nameicregexeq icregexeqsel
icregexeqjoinsel)); 
+DATA(insert OID = 1226 (  "~*"         10 PGUID 0 b t f    19    25    16 0 1227  0 0 nameicregexeq icregexeqsel
icregexeqjoinsel)); 
 #define OID_NAME_ICREGEXEQ_OP        1226
-DATA(insert OID = 1227 (  "!~*"         PGUID 0 b t f    19    25    16 0 1226  0 0 nameicregexne icregexnesel
icregexnejoinsel)); 
-DATA(insert OID = 1228 (  "~*"         PGUID 0 b t f    25    25    16 0 1229  0 0 texticregexeq icregexeqsel
icregexeqjoinsel)); 
+DATA(insert OID = 1227 (  "!~*"         10 PGUID 0 b t f    19    25    16 0 1226  0 0 nameicregexne icregexnesel
icregexnejoinsel)); 
+DATA(insert OID = 1228 (  "~*"         10 PGUID 0 b t f    25    25    16 0 1229  0 0 texticregexeq icregexeqsel
icregexeqjoinsel)); 
 #define OID_TEXT_ICREGEXEQ_OP        1228
-DATA(insert OID = 1229 (  "!~*"         PGUID 0 b t f    25    25    16 0 1228  0 0 texticregexne icregexnesel
icregexnejoinsel)); 
-DATA(insert OID = 1232 (  "~*"        PGUID 0 b t f  1043  25  16 0 1233    0 0 texticregexeq icregexeqsel
icregexeqjoinsel)); 
+DATA(insert OID = 1229 (  "!~*"         10 PGUID 0 b t f    25    25    16 0 1228  0 0 texticregexne icregexnesel
icregexnejoinsel)); 
+DATA(insert OID = 1232 (  "~*"        10 PGUID 0 b t f  1043  25  16 0 1233    0 0 texticregexeq icregexeqsel
icregexeqjoinsel)); 
 #define OID_VARCHAR_ICREGEXEQ_OP        1232
-DATA(insert OID = 1233 ( "!~*"        PGUID 0 b t f  1043  25  16 0 1232    0 0 texticregexne icregexnesel
icregexnejoinsel)); 
-DATA(insert OID = 1234 (  "~*"        PGUID 0 b t f  1042  25  16 0 1235    0 0 texticregexeq icregexeqsel
icregexeqjoinsel)); 
+DATA(insert OID = 1233 ( "!~*"        10 PGUID 0 b t f  1043  25  16 0 1232    0 0 texticregexne icregexnesel
icregexnejoinsel)); 
+DATA(insert OID = 1234 (  "~*"        10 PGUID 0 b t f  1042  25  16 0 1235    0 0 texticregexeq icregexeqsel
icregexeqjoinsel)); 
 #define OID_BPCHAR_ICREGEXEQ_OP        1234
-DATA(insert OID = 1235 ( "!~*"        PGUID 0 b t f  1042  25  16 0 1234    0 0 texticregexne icregexnesel
icregexnejoinsel)); 
+DATA(insert OID = 1235 ( "!~*"        10 PGUID 0 b t f  1042  25  16 0 1234    0 0 texticregexne icregexnesel
icregexnejoinsel)); 

 /* timestamptz operators */
 /* name, owner, prec, kind, isleft, canhash, left, right, result, com, negate, lsortop, rsortop, oprcode, operrest,
oprjoin*/ 
-DATA(insert OID = 1320 (  "="       PGUID 0 b t f 1184 1184     16 1320 1321 1322 1322 timestamp_eq eqsel eqjoinsel
));
-DATA(insert OID = 1321 (  "<>"       PGUID 0 b t f 1184 1184     16 1321 1320 0 0 timestamp_ne neqsel neqjoinsel ));
-DATA(insert OID = 1322 (  "<"       PGUID 0 b t f 1184 1184     16 1324 1325 0 0 timestamp_lt scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1323 (  "<="       PGUID 0 b t f 1184 1184     16 1325 1324 0 0 timestamp_le scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1324 (  ">"       PGUID 0 b t f 1184 1184     16 1322 1323 0 0 timestamp_gt scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 1325 (  ">="       PGUID 0 b t f 1184 1184     16 1323 1322 0 0 timestamp_ge scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 1327 (  "+"       PGUID 0 b t f 1184 1186 1184    0    0 0 0 timestamptz_pl_span - - ));
-DATA(insert OID = 1328 (  "-"       PGUID 0 b t f 1184 1184 1186    0    0 0 0 timestamptz_mi - - ));
-DATA(insert OID = 1329 (  "-"       PGUID 0 b t f 1184 1186 1184    0    0 0 0 timestamptz_mi_span - - ));
+DATA(insert OID = 1320 (  "="       10 PGUID 0 b t f 1184 1184     16 1320 1321 1322 1322 timestamp_eq eqsel eqjoinsel
));
+DATA(insert OID = 1321 (  "<>"       10 PGUID 0 b t f 1184 1184     16 1321 1320 0 0 timestamp_ne neqsel neqjoinsel
));
+DATA(insert OID = 1322 (  "<"       10 PGUID 0 b t f 1184 1184     16 1324 1325 0 0 timestamp_lt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1323 (  "<="       10 PGUID 0 b t f 1184 1184     16 1325 1324 0 0 timestamp_le scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1324 (  ">"       10 PGUID 0 b t f 1184 1184     16 1322 1323 0 0 timestamp_gt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1325 (  ">="       10 PGUID 0 b t f 1184 1184     16 1323 1322 0 0 timestamp_ge scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1327 (  "+"       10 PGUID 0 b t f 1184 1186 1184    0    0 0 0 timestamptz_pl_span - - ));
+DATA(insert OID = 1328 (  "-"       10 PGUID 0 b t f 1184 1184 1186    0    0 0 0 timestamptz_mi - - ));
+DATA(insert OID = 1329 (  "-"       10 PGUID 0 b t f 1184 1186 1184    0    0 0 0 timestamptz_mi_span - - ));

 /* interval operators */
-DATA(insert OID = 1330 (  "="       PGUID 0 b t f 1186 1186     16 1330 1331 1332 1332 interval_eq eqsel eqjoinsel ));
-DATA(insert OID = 1331 (  "<>"       PGUID 0 b t f 1186 1186     16 1331 1330 0 0 interval_ne neqsel neqjoinsel ));
-DATA(insert OID = 1332 (  "<"       PGUID 0 b t f 1186 1186     16 1334 1335 0 0 interval_lt scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1333 (  "<="       PGUID 0 b t f 1186 1186     16 1335 1334 0 0 interval_le scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1334 (  ">"       PGUID 0 b t f 1186 1186     16 1332 1333 0 0 interval_gt scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 1335 (  ">="       PGUID 0 b t f 1186 1186     16 1333 1332 0 0 interval_ge scalargtsel
scalargtjoinsel)); 
-
-DATA(insert OID = 1336 (  "-"       PGUID 0 l t f    0 1186 1186    0    0 0 0 interval_um - - ));
-DATA(insert OID = 1337 (  "+"       PGUID 0 b t f 1186 1186 1186 1337    0 0 0 interval_pl - - ));
-DATA(insert OID = 1338 (  "-"       PGUID 0 b t f 1186 1186 1186    0    0 0 0 interval_mi - - ));
-
-DATA(insert OID = 1360 (  "+"       PGUID 0 b t f 1082 1083 1114    0    0 0 0 datetime_pl - - ));
-DATA(insert OID = 1361 (  "+"       PGUID 0 b t f 1082 1266 1184    0    0 0 0 datetimetz_pl - - ));
-DATA(insert OID = 1363 (  "+"       PGUID 0 b t f 1083 1082 1114    0    0 0 0 timedate_pl - - ));
-DATA(insert OID = 1366 (  "+"       PGUID 0 b t f 1266 1082 1184    0    0 0 0 timetzdate_pl - - ));
+DATA(insert OID = 1330 (  "="       10 PGUID 0 b t f 1186 1186     16 1330 1331 1332 1332 interval_eq eqsel eqjoinsel
));
+DATA(insert OID = 1331 (  "<>"       10 PGUID 0 b t f 1186 1186     16 1331 1330 0 0 interval_ne neqsel neqjoinsel ));
+DATA(insert OID = 1332 (  "<"       10 PGUID 0 b t f 1186 1186     16 1334 1335 0 0 interval_lt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1333 (  "<="       10 PGUID 0 b t f 1186 1186     16 1335 1334 0 0 interval_le scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1334 (  ">"       10 PGUID 0 b t f 1186 1186     16 1332 1333 0 0 interval_gt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1335 (  ">="       10 PGUID 0 b t f 1186 1186     16 1333 1332 0 0 interval_ge scalargtsel
scalargtjoinsel)); 
+
+DATA(insert OID = 1336 (  "-"       10 PGUID 0 l t f    0 1186 1186    0    0 0 0 interval_um - - ));
+DATA(insert OID = 1337 (  "+"       10 PGUID 0 b t f 1186 1186 1186 1337    0 0 0 interval_pl - - ));
+DATA(insert OID = 1338 (  "-"       10 PGUID 0 b t f 1186 1186 1186    0    0 0 0 interval_mi - - ));
+
+DATA(insert OID = 1360 (  "+"       10 PGUID 0 b t f 1082 1083 1114    0    0 0 0 datetime_pl - - ));
+DATA(insert OID = 1361 (  "+"       10 PGUID 0 b t f 1082 1266 1184    0    0 0 0 datetimetz_pl - - ));
+DATA(insert OID = 1363 (  "+"       10 PGUID 0 b t f 1083 1082 1114    0    0 0 0 timedate_pl - - ));
+DATA(insert OID = 1366 (  "+"       10 PGUID 0 b t f 1266 1082 1184    0    0 0 0 timetzdate_pl - - ));

-DATA(insert OID = 1399 (  "-"       PGUID 0 b t f 1083 1083 1186    0    0 0 0 time_mi_time - - ));
+DATA(insert OID = 1399 (  "-"       10 PGUID 0 b t f 1083 1083 1186    0    0 0 0 time_mi_time - - ));

 /* additional geometric operators - thomas 97/04/18 */
-DATA(insert OID = 1420 (  "@@"      PGUID 0 l t f    0  718  600      0    0    0     0 circle_center - - ));
-DATA(insert OID = 1500 (  "="      PGUID 0 b t f  718  718    16 1500 1501 1502 1502 circle_eq eqsel eqjoinsel ));
-DATA(insert OID = 1501 (  "<>"      PGUID 0 b t f  718  718    16 1501 1500    0     0 circle_ne neqsel neqjoinsel ));
-DATA(insert OID = 1502 (  "<"      PGUID 0 b t f  718  718    16 1503 1505    0     0 circle_lt areasel areajoinsel
));
-DATA(insert OID = 1503 (  ">"      PGUID 0 b t f  718  718    16 1502 1504    0     0 circle_gt areasel areajoinsel
));
-DATA(insert OID = 1504 (  "<="      PGUID 0 b t f  718  718    16 1505 1503    0     0 circle_le areasel areajoinsel
));
-DATA(insert OID = 1505 (  ">="      PGUID 0 b t f  718  718    16 1504 1502    0     0 circle_ge areasel areajoinsel
));
-
-DATA(insert OID = 1506 (  "<<"      PGUID 0 b t f  718  718    16      0    0    0     0 circle_left positionsel
positionjoinsel)); 
-DATA(insert OID = 1507 (  "&<"      PGUID 0 b t f  718  718    16      0    0    0     0 circle_overleft positionsel
positionjoinsel)); 
-DATA(insert OID = 1508 (  "&>"      PGUID 0 b t f  718  718    16      0    0    0     0 circle_overright positionsel
positionjoinsel)); 
-DATA(insert OID = 1509 (  ">>"      PGUID 0 b t f  718  718    16      0    0    0     0 circle_right positionsel
positionjoinsel)); 
-DATA(insert OID = 1510 (  "@"      PGUID 0 b t f  718  718    16 1511    0    0     0 circle_contained contsel
contjoinsel)); 
-DATA(insert OID = 1511 (  "~"      PGUID 0 b t f  718  718    16 1510    0    0     0 circle_contain contsel
contjoinsel)); 
-DATA(insert OID = 1512 (  "~="      PGUID 0 b t f  718  718    16 1512    0    0     0 circle_same eqsel eqjoinsel ));
-DATA(insert OID = 1513 (  "&&"      PGUID 0 b t f  718  718    16 1513    0    0     0 circle_overlap areasel
areajoinsel)); 
-DATA(insert OID = 1514 (  ">^"      PGUID 0 b t f  718  718    16      0    0    0     0 circle_above positionsel
positionjoinsel)); 
-DATA(insert OID = 1515 (  "<^"      PGUID 0 b t f  718  718    16      0    0    0     0 circle_below positionsel
positionjoinsel)); 
-
-DATA(insert OID = 1516 (  "+"      PGUID 0 b t f  718  600  718      0    0    0     0 circle_add_pt - - ));
-DATA(insert OID = 1517 (  "-"      PGUID 0 b t f  718  600  718      0    0    0     0 circle_sub_pt - - ));
-DATA(insert OID = 1518 (  "*"      PGUID 0 b t f  718  600  718      0    0    0     0 circle_mul_pt - - ));
-DATA(insert OID = 1519 (  "/"      PGUID 0 b t f  718  600  718      0    0    0     0 circle_div_pt - - ));
-
-DATA(insert OID = 1520 (  "<->"   PGUID 0 b t f  718  718  701 1520    0    0     0 circle_distance - - ));
-DATA(insert OID = 1521 (  "#"      PGUID 0 l t f    0  604    23      0    0    0     0 poly_npoints - - ));
-DATA(insert OID = 1522 (  "<->"   PGUID 0 b t f  600  718  701      0    0    0     0 dist_pc - - ));
-DATA(insert OID = 1523 (  "<->"   PGUID 0 b t f  718  604  701      0    0    0     0 dist_cpoly - - ));
+DATA(insert OID = 1420 (  "@@"      10 PGUID 0 l t f    0  718  600      0    0    0     0 circle_center - - ));
+DATA(insert OID = 1500 (  "="      10 PGUID 0 b t f  718  718    16 1500 1501 1502 1502 circle_eq eqsel eqjoinsel ));
+DATA(insert OID = 1501 (  "<>"      10 PGUID 0 b t f  718  718    16 1501 1500    0     0 circle_ne neqsel neqjoinsel
));
+DATA(insert OID = 1502 (  "<"      10 PGUID 0 b t f  718  718    16 1503 1505    0     0 circle_lt areasel areajoinsel
));
+DATA(insert OID = 1503 (  ">"      10 PGUID 0 b t f  718  718    16 1502 1504    0     0 circle_gt areasel areajoinsel
));
+DATA(insert OID = 1504 (  "<="      10 PGUID 0 b t f  718  718    16 1505 1503    0     0 circle_le areasel
areajoinsel)); 
+DATA(insert OID = 1505 (  ">="      10 PGUID 0 b t f  718  718    16 1504 1502    0     0 circle_ge areasel
areajoinsel)); 
+
+DATA(insert OID = 1506 (  "<<"      10 PGUID 0 b t f  718  718    16      0    0    0     0 circle_left positionsel
positionjoinsel)); 
+DATA(insert OID = 1507 (  "&<"      10 PGUID 0 b t f  718  718    16      0    0    0     0 circle_overleft
positionselpositionjoinsel )); 
+DATA(insert OID = 1508 (  "&>"      10 PGUID 0 b t f  718  718    16      0    0    0     0 circle_overright
positionselpositionjoinsel )); 
+DATA(insert OID = 1509 (  ">>"      10 PGUID 0 b t f  718  718    16      0    0    0     0 circle_right positionsel
positionjoinsel)); 
+DATA(insert OID = 1510 (  "@"      10 PGUID 0 b t f  718  718    16 1511    0    0     0 circle_contained contsel
contjoinsel)); 
+DATA(insert OID = 1511 (  "~"      10 PGUID 0 b t f  718  718    16 1510    0    0     0 circle_contain contsel
contjoinsel)); 
+DATA(insert OID = 1512 (  "~="      10 PGUID 0 b t f  718  718    16 1512    0    0     0 circle_same eqsel eqjoinsel
));
+DATA(insert OID = 1513 (  "&&"      10 PGUID 0 b t f  718  718    16 1513    0    0     0 circle_overlap areasel
areajoinsel)); 
+DATA(insert OID = 1514 (  ">^"      10 PGUID 0 b t f  718  718    16      0    0    0     0 circle_above positionsel
positionjoinsel)); 
+DATA(insert OID = 1515 (  "<^"      10 PGUID 0 b t f  718  718    16      0    0    0     0 circle_below positionsel
positionjoinsel)); 
+
+DATA(insert OID = 1516 (  "+"      10 PGUID 0 b t f  718  600  718      0    0    0     0 circle_add_pt - - ));
+DATA(insert OID = 1517 (  "-"      10 PGUID 0 b t f  718  600  718      0    0    0     0 circle_sub_pt - - ));
+DATA(insert OID = 1518 (  "*"      10 PGUID 0 b t f  718  600  718      0    0    0     0 circle_mul_pt - - ));
+DATA(insert OID = 1519 (  "/"      10 PGUID 0 b t f  718  600  718      0    0    0     0 circle_div_pt - - ));
+
+DATA(insert OID = 1520 (  "<->"   10 PGUID 0 b t f  718  718  701 1520    0    0     0 circle_distance - - ));
+DATA(insert OID = 1521 (  "#"      10 PGUID 0 l t f    0  604    23      0    0    0     0 poly_npoints - - ));
+DATA(insert OID = 1522 (  "<->"   10 PGUID 0 b t f  600  718  701      0    0    0     0 dist_pc - - ));
+DATA(insert OID = 1523 (  "<->"   10 PGUID 0 b t f  718  604  701      0    0    0     0 dist_cpoly - - ));

 /* additional geometric operators - thomas 1997-07-09 */
-DATA(insert OID = 1524 (  "<->"   PGUID 0 b t f  628  603  701      0  0 0 0 dist_lb - - ));
+DATA(insert OID = 1524 (  "<->"   10 PGUID 0 b t f  628  603  701      0  0 0 0 dist_lb - - ));

-DATA(insert OID = 1525 (  "?#"      PGUID 0 b t f  601  601    16 1525  0 0 0 lseg_intersect - - ));
-DATA(insert OID = 1526 (  "?||"   PGUID 0 b t f  601  601    16 1526  0 0 0 lseg_parallel - - ));
-DATA(insert OID = 1527 (  "?-|"   PGUID 0 b t f  601  601    16 1527  0 0 0 lseg_perp - - ));
-DATA(insert OID = 1528 (  "?-"      PGUID 0 l t f    0  601    16      0  0 0 0 lseg_horizontal - - ));
-DATA(insert OID = 1529 (  "?|"      PGUID 0 l t f    0  601    16      0  0 0 0 lseg_vertical - - ));
-DATA(insert OID = 1535 (  "="      PGUID 0 b t f  601  601    16 1535 1586 0 0 lseg_eq eqsel eqjoinsel ));
-DATA(insert OID = 1536 (  "#"      PGUID 0 b t f  601  601  600 1536  0 0 0 lseg_interpt - - ));
-DATA(insert OID = 1537 (  "?#"      PGUID 0 b t f  601  628    16      0  0 0 0 inter_sl - - ));
-DATA(insert OID = 1538 (  "?#"      PGUID 0 b t f  601  603    16      0  0 0 0 inter_sb - - ));
-DATA(insert OID = 1539 (  "?#"      PGUID 0 b t f  628  603    16      0  0 0 0 inter_lb - - ));
-
-DATA(insert OID = 1546 (  "@"      PGUID 0 b t f  600  628    16      0  0 0 0 on_pl - - ));
-DATA(insert OID = 1547 (  "@"      PGUID 0 b t f  600  601    16      0  0 0 0 on_ps - - ));
-DATA(insert OID = 1548 (  "@"      PGUID 0 b t f  601  628    16      0  0 0 0 on_sl - - ));
-DATA(insert OID = 1549 (  "@"      PGUID 0 b t f  601  603    16      0  0 0 0 on_sb - - ));
-
-DATA(insert OID = 1557 (  "##"      PGUID 0 b t f  600  628  600      0  0 0 0 close_pl - - ));
-DATA(insert OID = 1558 (  "##"      PGUID 0 b t f  600  601  600      0  0 0 0 close_ps - - ));
-DATA(insert OID = 1559 (  "##"      PGUID 0 b t f  600  603  600      0  0 0 0 close_pb - - ));
-
-DATA(insert OID = 1566 (  "##"      PGUID 0 b t f  601  628  600      0  0 0 0 close_sl - - ));
-DATA(insert OID = 1567 (  "##"      PGUID 0 b t f  601  603  600      0  0 0 0 close_sb - - ));
-DATA(insert OID = 1568 (  "##"      PGUID 0 b t f  628  603  600      0  0 0 0 close_lb - - ));
-DATA(insert OID = 1577 (  "##"      PGUID 0 b t f  628  601  600      0  0 0 0 close_ls - - ));
-DATA(insert OID = 1578 (  "##"      PGUID 0 b t f  601  601  600      0  0 0 0 close_lseg - - ));
-DATA(insert OID = 1583 (  "*"      PGUID 0 b t f 1186  701 1186      0  0 0 0 interval_mul - - ));
-DATA(insert OID = 1584 (  "*"      PGUID 0 b t f  701 1186 1186      0  0 0 0 mul_d_interval - - ));
-DATA(insert OID = 1585 (  "/"      PGUID 0 b t f 1186  701 1186      0  0 0 0 interval_div - - ));
-
-DATA(insert OID = 1586 (  "<>"      PGUID 0 b t f  601  601    16 1586 1535 0 0 lseg_ne neqsel neqjoinsel ));
-DATA(insert OID = 1587 (  "<"      PGUID 0 b t f  601  601    16 1589 1590 0 0 lseg_lt - - ));
-DATA(insert OID = 1588 (  "<="      PGUID 0 b t f  601  601    16 1590 1589 0 0 lseg_le - - ));
-DATA(insert OID = 1589 (  ">"      PGUID 0 b t f  601  601    16 1587 1588 0 0 lseg_gt - - ));
-DATA(insert OID = 1590 (  ">="      PGUID 0 b t f  601  601    16 1588 1587 0 0 lseg_ge - - ));
-
-DATA(insert OID = 1591 (  "@-@"   PGUID 0 l t f 0  601    701    0  0 0 0 lseg_length - - ));
-
-DATA(insert OID = 1611 (  "?#"      PGUID 0 b t f  628  628    16 1611  0 0 0 line_intersect - - ));
-DATA(insert OID = 1612 (  "?||"   PGUID 0 b t f  628  628    16 1612  0 0 0 line_parallel - - ));
-DATA(insert OID = 1613 (  "?-|"   PGUID 0 b t f  628  628    16 1613  0 0 0 line_perp - - ));
-DATA(insert OID = 1614 (  "?-"      PGUID 0 l t f    0  628    16      0  0 0 0 line_horizontal - - ));
-DATA(insert OID = 1615 (  "?|"      PGUID 0 l t f    0  628    16      0  0 0 0 line_vertical - - ));
-DATA(insert OID = 1616 (  "="      PGUID 0 b t f  628  628    16 1616  0 0 0 line_eq eqsel eqjoinsel ));
-DATA(insert OID = 1617 (  "#"      PGUID 0 b t f  628  628  600 1617  0 0 0 line_interpt - - ));
+DATA(insert OID = 1525 (  "?#"      10 PGUID 0 b t f  601  601    16 1525  0 0 0 lseg_intersect - - ));
+DATA(insert OID = 1526 (  "?||"   10 PGUID 0 b t f  601  601    16 1526  0 0 0 lseg_parallel - - ));
+DATA(insert OID = 1527 (  "?-|"   10 PGUID 0 b t f  601  601    16 1527  0 0 0 lseg_perp - - ));
+DATA(insert OID = 1528 (  "?-"      10 PGUID 0 l t f    0  601    16      0  0 0 0 lseg_horizontal - - ));
+DATA(insert OID = 1529 (  "?|"      10 PGUID 0 l t f    0  601    16      0  0 0 0 lseg_vertical - - ));
+DATA(insert OID = 1535 (  "="      10 PGUID 0 b t f  601  601    16 1535 1586 0 0 lseg_eq eqsel eqjoinsel ));
+DATA(insert OID = 1536 (  "#"      10 PGUID 0 b t f  601  601  600 1536  0 0 0 lseg_interpt - - ));
+DATA(insert OID = 1537 (  "?#"      10 PGUID 0 b t f  601  628    16      0  0 0 0 inter_sl - - ));
+DATA(insert OID = 1538 (  "?#"      10 PGUID 0 b t f  601  603    16      0  0 0 0 inter_sb - - ));
+DATA(insert OID = 1539 (  "?#"      10 PGUID 0 b t f  628  603    16      0  0 0 0 inter_lb - - ));
+
+DATA(insert OID = 1546 (  "@"      10 PGUID 0 b t f  600  628    16      0  0 0 0 on_pl - - ));
+DATA(insert OID = 1547 (  "@"      10 PGUID 0 b t f  600  601    16      0  0 0 0 on_ps - - ));
+DATA(insert OID = 1548 (  "@"      10 PGUID 0 b t f  601  628    16      0  0 0 0 on_sl - - ));
+DATA(insert OID = 1549 (  "@"      10 PGUID 0 b t f  601  603    16      0  0 0 0 on_sb - - ));
+
+DATA(insert OID = 1557 (  "##"      10 PGUID 0 b t f  600  628  600      0  0 0 0 close_pl - - ));
+DATA(insert OID = 1558 (  "##"      10 PGUID 0 b t f  600  601  600      0  0 0 0 close_ps - - ));
+DATA(insert OID = 1559 (  "##"      10 PGUID 0 b t f  600  603  600      0  0 0 0 close_pb - - ));
+
+DATA(insert OID = 1566 (  "##"      10 PGUID 0 b t f  601  628  600      0  0 0 0 close_sl - - ));
+DATA(insert OID = 1567 (  "##"      10 PGUID 0 b t f  601  603  600      0  0 0 0 close_sb - - ));
+DATA(insert OID = 1568 (  "##"      10 PGUID 0 b t f  628  603  600      0  0 0 0 close_lb - - ));
+DATA(insert OID = 1577 (  "##"      10 PGUID 0 b t f  628  601  600      0  0 0 0 close_ls - - ));
+DATA(insert OID = 1578 (  "##"      10 PGUID 0 b t f  601  601  600      0  0 0 0 close_lseg - - ));
+DATA(insert OID = 1583 (  "*"      10 PGUID 0 b t f 1186  701 1186      0  0 0 0 interval_mul - - ));
+DATA(insert OID = 1584 (  "*"      10 PGUID 0 b t f  701 1186 1186      0  0 0 0 mul_d_interval - - ));
+DATA(insert OID = 1585 (  "/"      10 PGUID 0 b t f 1186  701 1186      0  0 0 0 interval_div - - ));
+
+DATA(insert OID = 1586 (  "<>"      10 PGUID 0 b t f  601  601    16 1586 1535 0 0 lseg_ne neqsel neqjoinsel ));
+DATA(insert OID = 1587 (  "<"      10 PGUID 0 b t f  601  601    16 1589 1590 0 0 lseg_lt - - ));
+DATA(insert OID = 1588 (  "<="      10 PGUID 0 b t f  601  601    16 1590 1589 0 0 lseg_le - - ));
+DATA(insert OID = 1589 (  ">"      10 PGUID 0 b t f  601  601    16 1587 1588 0 0 lseg_gt - - ));
+DATA(insert OID = 1590 (  ">="      10 PGUID 0 b t f  601  601    16 1588 1587 0 0 lseg_ge - - ));
+
+DATA(insert OID = 1591 (  "@-@"   10 PGUID 0 l t f 0  601    701    0  0 0 0 lseg_length - - ));
+
+DATA(insert OID = 1611 (  "?#"      10 PGUID 0 b t f  628  628    16 1611  0 0 0 line_intersect - - ));
+DATA(insert OID = 1612 (  "?||"   10 PGUID 0 b t f  628  628    16 1612  0 0 0 line_parallel - - ));
+DATA(insert OID = 1613 (  "?-|"   10 PGUID 0 b t f  628  628    16 1613  0 0 0 line_perp - - ));
+DATA(insert OID = 1614 (  "?-"      10 PGUID 0 l t f    0  628    16      0  0 0 0 line_horizontal - - ));
+DATA(insert OID = 1615 (  "?|"      10 PGUID 0 l t f    0  628    16      0  0 0 0 line_vertical - - ));
+DATA(insert OID = 1616 (  "="      10 PGUID 0 b t f  628  628    16 1616  0 0 0 line_eq eqsel eqjoinsel ));
+DATA(insert OID = 1617 (  "#"      10 PGUID 0 b t f  628  628  600 1617  0 0 0 line_interpt - - ));

 /* MAC type */
-DATA(insert OID = 1220 (  "="       PGUID 0 b t f 829 829     16 1220 1221 1222 1222 macaddr_eq eqsel eqjoinsel ));
-DATA(insert OID = 1221 (  "<>"       PGUID 0 b t f 829 829     16 1221 1220    0    0 macaddr_ne neqsel neqjoinsel ));
-DATA(insert OID = 1222 (  "<"       PGUID 0 b t f 829 829     16 1224 1225    0    0 macaddr_lt scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1223 (  "<="       PGUID 0 b t f 829 829     16 1225 1224    0    0 macaddr_le scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1224 (  ">"       PGUID 0 b t f 829 829     16 1222 1223    0    0 macaddr_gt scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 1225 (  ">="       PGUID 0 b t f 829 829     16 1223 1222    0    0 macaddr_ge scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1220 (  "="       10 PGUID 0 b t f 829 829     16 1220 1221 1222 1222 macaddr_eq eqsel eqjoinsel ));
+DATA(insert OID = 1221 (  "<>"       10 PGUID 0 b t f 829 829     16 1221 1220    0    0 macaddr_ne neqsel neqjoinsel
));
+DATA(insert OID = 1222 (  "<"       10 PGUID 0 b t f 829 829     16 1224 1225    0    0 macaddr_lt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1223 (  "<="       10 PGUID 0 b t f 829 829     16 1225 1224    0    0 macaddr_le scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1224 (  ">"       10 PGUID 0 b t f 829 829     16 1222 1223    0    0 macaddr_gt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1225 (  ">="       10 PGUID 0 b t f 829 829     16 1223 1222    0    0 macaddr_ge scalargtsel
scalargtjoinsel)); 

 /* INET type */
-DATA(insert OID = 1201 (  "="       PGUID 0 b t f 869 869     16 1201 1202 1203 1203 network_eq eqsel eqjoinsel ));
-DATA(insert OID = 1202 (  "<>"       PGUID 0 b t f 869 869     16 1202 1201    0    0 network_ne neqsel neqjoinsel ));
-DATA(insert OID = 1203 (  "<"       PGUID 0 b t f 869 869     16 1205 1206    0    0 network_lt scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1204 (  "<="       PGUID 0 b t f 869 869     16 1206 1205    0    0 network_le scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1205 (  ">"       PGUID 0 b t f 869 869     16 1203 1204    0    0 network_gt scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 1206 (  ">="       PGUID 0 b t f 869 869     16 1204 1203    0    0 network_ge scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 931  (  "<<"       PGUID 0 b t f 869 869     16 933        0    0    0 network_sub - - ));
+DATA(insert OID = 1201 (  "="       10 PGUID 0 b t f 869 869     16 1201 1202 1203 1203 network_eq eqsel eqjoinsel ));
+DATA(insert OID = 1202 (  "<>"       10 PGUID 0 b t f 869 869     16 1202 1201    0    0 network_ne neqsel neqjoinsel
));
+DATA(insert OID = 1203 (  "<"       10 PGUID 0 b t f 869 869     16 1205 1206    0    0 network_lt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1204 (  "<="       10 PGUID 0 b t f 869 869     16 1206 1205    0    0 network_le scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1205 (  ">"       10 PGUID 0 b t f 869 869     16 1203 1204    0    0 network_gt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1206 (  ">="       10 PGUID 0 b t f 869 869     16 1204 1203    0    0 network_ge scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 931  (  "<<"       10 PGUID 0 b t f 869 869     16 933        0    0    0 network_sub - - ));
 #define OID_INET_SUB_OP               931
-DATA(insert OID = 932  (  "<<="    PGUID 0 b t f 869 869     16 934        0    0    0 network_subeq - - ));
+DATA(insert OID = 932  (  "<<="    10 PGUID 0 b t f 869 869     16 934        0    0    0 network_subeq - - ));
 #define OID_INET_SUBEQ_OP               932
-DATA(insert OID = 933  (  ">>"       PGUID 0 b t f 869 869     16 931        0    0    0 network_sup - - ));
+DATA(insert OID = 933  (  ">>"       10 PGUID 0 b t f 869 869     16 931        0    0    0 network_sup - - ));
 #define OID_INET_SUP_OP               933
-DATA(insert OID = 934  (  ">>="    PGUID 0 b t f 869 869     16 932        0    0    0 network_supeq - - ));
+DATA(insert OID = 934  (  ">>="    10 PGUID 0 b t f 869 869     16 932        0    0    0 network_supeq - - ));
 #define OID_INET_SUPEQ_OP               934

 /* CIDR type */
-DATA(insert OID = 820 (  "="       PGUID 0 b t f 650 650     16 820 821 822 822 network_eq eqsel eqjoinsel ));
-DATA(insert OID = 821 (  "<>"       PGUID 0 b t f 650 650     16 821 820   0   0 network_ne neqsel neqjoinsel ));
-DATA(insert OID = 822 (  "<"       PGUID 0 b t f 650 650     16 824 825   0   0 network_lt scalarltsel scalarltjoinsel
));
-DATA(insert OID = 823 (  "<="       PGUID 0 b t f 650 650     16 825 824   0   0 network_le scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 824 (  ">"       PGUID 0 b t f 650 650     16 822 823   0   0 network_gt scalargtsel scalargtjoinsel
));
-DATA(insert OID = 825 (  ">="       PGUID 0 b t f 650 650     16 823 822   0   0 network_ge scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 826 (  "<<"       PGUID 0 b t f 650 650     16 828   0   0   0 network_sub - - ));
+DATA(insert OID = 820 (  "="       10 PGUID 0 b t f 650 650     16 820 821 822 822 network_eq eqsel eqjoinsel ));
+DATA(insert OID = 821 (  "<>"       10 PGUID 0 b t f 650 650     16 821 820   0   0 network_ne neqsel neqjoinsel ));
+DATA(insert OID = 822 (  "<"       10 PGUID 0 b t f 650 650     16 824 825   0   0 network_lt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 823 (  "<="       10 PGUID 0 b t f 650 650     16 825 824   0   0 network_le scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 824 (  ">"       10 PGUID 0 b t f 650 650     16 822 823   0   0 network_gt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 825 (  ">="       10 PGUID 0 b t f 650 650     16 823 822   0   0 network_ge scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 826 (  "<<"       10 PGUID 0 b t f 650 650     16 828   0   0   0 network_sub - - ));
 #define OID_CIDR_SUB_OP      826
-DATA(insert OID = 827 (  "<<="       PGUID 0 b t f 650 650     16 1004  0   0   0 network_subeq - - ));
+DATA(insert OID = 827 (  "<<="       10 PGUID 0 b t f 650 650     16 1004  0   0   0 network_subeq - - ));
 #define OID_CIDR_SUBEQ_OP    827
-DATA(insert OID = 828 (  ">>"       PGUID 0 b t f 650 650     16 826   0   0   0 network_sup - - ));
+DATA(insert OID = 828 (  ">>"       10 PGUID 0 b t f 650 650     16 826   0   0   0 network_sup - - ));
 #define OID_CIDR_SUP_OP        828
-DATA(insert OID = 1004 ( ">>="       PGUID 0 b t f 650 650     16 827   0   0   0 network_supeq - - ));
+DATA(insert OID = 1004 ( ">>="       10 PGUID 0 b t f 650 650     16 827   0   0   0 network_supeq - - ));
 #define OID_CIDR_SUPEQ_OP    1004

 /* case-insensitive LIKE hacks */
-DATA(insert OID = 1625 (  "~~*"   PGUID 0 b t f  19   25  16 0 1626 0 0 nameiclike iclikesel iclikejoinsel ));
+DATA(insert OID = 1625 (  "~~*"   10 PGUID 0 b t f  19   25  16 0 1626 0 0 nameiclike iclikesel iclikejoinsel ));
 #define OID_NAME_ICLIKE_OP        1625
-DATA(insert OID = 1626 (  "!~~*"  PGUID 0 b t f  19   25  16 0 1625 0 0 nameicnlike icnlikesel icnlikejoinsel ));
-DATA(insert OID = 1627 (  "~~*"   PGUID 0 b t f  25   25  16 0 1628 0 0 texticlike iclikesel iclikejoinsel ));
+DATA(insert OID = 1626 (  "!~~*"  10 PGUID 0 b t f  19   25  16 0 1625 0 0 nameicnlike icnlikesel icnlikejoinsel ));
+DATA(insert OID = 1627 (  "~~*"   10 PGUID 0 b t f  25   25  16 0 1628 0 0 texticlike iclikesel iclikejoinsel ));
 #define OID_TEXT_ICLIKE_OP        1627
-DATA(insert OID = 1628 (  "!~~*"  PGUID 0 b t f  25   25  16 0 1627 0 0 texticnlike icnlikesel icnlikejoinsel ));
-DATA(insert OID = 1629 (  "~~*"   PGUID 0 b t f  1042 25  16 0 1630 0 0 texticlike iclikesel iclikejoinsel ));
+DATA(insert OID = 1628 (  "!~~*"  10 PGUID 0 b t f  25   25  16 0 1627 0 0 texticnlike icnlikesel icnlikejoinsel ));
+DATA(insert OID = 1629 (  "~~*"   10 PGUID 0 b t f  1042 25  16 0 1630 0 0 texticlike iclikesel iclikejoinsel ));
 #define OID_BPCHAR_ICLIKE_OP    1629
-DATA(insert OID = 1630 (  "!~~*"  PGUID 0 b t f  1042 25  16 0 1629 0 0 texticnlike icnlikesel icnlikejoinsel ));
-DATA(insert OID = 1631 (  "~~*"   PGUID 0 b t f  1043 25  16 0 1632 0 0 texticlike iclikesel iclikejoinsel ));
+DATA(insert OID = 1630 (  "!~~*"  10 PGUID 0 b t f  1042 25  16 0 1629 0 0 texticnlike icnlikesel icnlikejoinsel ));
+DATA(insert OID = 1631 (  "~~*"   10 PGUID 0 b t f  1043 25  16 0 1632 0 0 texticlike iclikesel iclikejoinsel ));
 #define OID_VARCHAR_ICLIKE_OP    1631
-DATA(insert OID = 1632 (  "!~~*"  PGUID 0 b t f  1043 25  16 0 1631 0 0 texticnlike icnlikesel icnlikejoinsel ));
+DATA(insert OID = 1632 (  "!~~*"  10 PGUID 0 b t f  1043 25  16 0 1631 0 0 texticnlike icnlikesel icnlikejoinsel ));

 /* int4 vs oid comparisons --- use oid (unsigned) comparison */
-DATA(insert OID = 1656 (  "<>"       PGUID 0 b t f  23  26  16 1661 1136    0  0 oidne neqsel neqjoinsel ));
-DATA(insert OID = 1657 (  "<"       PGUID 0 b t f  23  26  16 1663 1660    0  0 oidlt scalarltsel scalarltjoinsel ));
-DATA(insert OID = 1658 (  ">"       PGUID 0 b t f  23  26  16 1662 1659    0  0 oidgt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 1659 (  "<="       PGUID 0 b t f  23  26  16 1665 1658    0  0 oidle scalarltsel scalarltjoinsel ));
-DATA(insert OID = 1660 (  ">="       PGUID 0 b t f  23  26  16 1664 1657    0  0 oidge scalargtsel scalargtjoinsel ));
-DATA(insert OID = 1661 (  "<>"       PGUID 0 b t f  26  23  16 1656 1137    0  0 oidne neqsel neqjoinsel ));
-DATA(insert OID = 1662 (  "<"       PGUID 0 b t f  26  23  16 1658 1665    0  0 oidlt scalarltsel scalarltjoinsel ));
-DATA(insert OID = 1663 (  ">"       PGUID 0 b t f  26  23  16 1657 1664    0  0 oidgt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 1664 (  "<="       PGUID 0 b t f  26  23  16 1660 1663    0  0 oidle scalarltsel scalarltjoinsel ));
-DATA(insert OID = 1665 (  ">="       PGUID 0 b t f  26  23  16 1659 1662    0  0 oidge scalargtsel scalargtjoinsel ));
+DATA(insert OID = 1656 (  "<>"       10 PGUID 0 b t f  23  26  16 1661 1136    0  0 oidne neqsel neqjoinsel ));
+DATA(insert OID = 1657 (  "<"       10 PGUID 0 b t f  23  26  16 1663 1660    0  0 oidlt scalarltsel scalarltjoinsel
));
+DATA(insert OID = 1658 (  ">"       10 PGUID 0 b t f  23  26  16 1662 1659    0  0 oidgt scalargtsel scalargtjoinsel
));
+DATA(insert OID = 1659 (  "<="       10 PGUID 0 b t f  23  26  16 1665 1658    0  0 oidle scalarltsel scalarltjoinsel
));
+DATA(insert OID = 1660 (  ">="       10 PGUID 0 b t f  23  26  16 1664 1657    0  0 oidge scalargtsel scalargtjoinsel
));
+DATA(insert OID = 1661 (  "<>"       10 PGUID 0 b t f  26  23  16 1656 1137    0  0 oidne neqsel neqjoinsel ));
+DATA(insert OID = 1662 (  "<"       10 PGUID 0 b t f  26  23  16 1658 1665    0  0 oidlt scalarltsel scalarltjoinsel
));
+DATA(insert OID = 1663 (  ">"       10 PGUID 0 b t f  26  23  16 1657 1664    0  0 oidgt scalargtsel scalargtjoinsel
));
+DATA(insert OID = 1664 (  "<="       10 PGUID 0 b t f  26  23  16 1660 1663    0  0 oidle scalarltsel scalarltjoinsel
));
+DATA(insert OID = 1665 (  ">="       10 PGUID 0 b t f  26  23  16 1659 1662    0  0 oidge scalargtsel scalargtjoinsel
));

 /* NUMERIC type - OID's 1700-1799 */
-DATA(insert OID = 1751 (  "-"       PGUID 0 l t f    0 1700 1700    0    0 0 0 numeric_uminus - - ));
-DATA(insert OID = 1752 (  "="       PGUID 0 b t f 1700 1700     16 1752 1753 1754 1754 numeric_eq eqsel eqjoinsel ));
-DATA(insert OID = 1753 (  "<>"       PGUID 0 b t f 1700 1700     16 1753 1752 0 0 numeric_ne neqsel neqjoinsel ));
-DATA(insert OID = 1754 (  "<"       PGUID 0 b t f 1700 1700     16 1756 1757 0 0 numeric_lt scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1755 (  "<="       PGUID 0 b t f 1700 1700     16 1757 1756 0 0 numeric_le scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1756 (  ">"       PGUID 0 b t f 1700 1700     16 1754 1755 0 0 numeric_gt scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 1757 (  ">="       PGUID 0 b t f 1700 1700     16 1755 1754 0 0 numeric_ge scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 1758 (  "+"       PGUID 0 b t f 1700 1700 1700 1758    0 0 0 numeric_add - - ));
-DATA(insert OID = 1759 (  "-"       PGUID 0 b t f 1700 1700 1700    0    0 0 0 numeric_sub - - ));
-DATA(insert OID = 1760 (  "*"       PGUID 0 b t f 1700 1700 1700 1760    0 0 0 numeric_mul - - ));
-DATA(insert OID = 1761 (  "/"       PGUID 0 b t f 1700 1700 1700    0    0 0 0 numeric_div - - ));
-DATA(insert OID = 1762 (  "%"       PGUID 0 b t f 1700 1700 1700    0    0 0 0 numeric_mod - - ));
-DATA(insert OID = 1763 (  "@"       PGUID 0 l t f    0 1700 1700    0    0 0 0 numeric_abs - - ));
-
-DATA(insert OID = 1784 (  "="      PGUID 0 b t f 1560 1560    16 1784 1785 1786 1786 biteq eqsel eqjoinsel ));
-DATA(insert OID = 1785 (  "<>"      PGUID 0 b t f 1560 1560    16 1785 1784    0     0 bitne neqsel neqjoinsel ));
-DATA(insert OID = 1786 (  "<"      PGUID 0 b t f 1560 1560    16 1787 1789    0     0 bitlt scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1787 (  ">"      PGUID 0 b t f 1560 1560    16 1786 1788    0     0 bitgt scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 1788 (  "<="      PGUID 0 b t f 1560 1560    16 1789 1787    0     0 bitle scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1789 (  ">="      PGUID 0 b t f 1560 1560    16 1788 1786    0     0 bitge scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 1791 (  "&"      PGUID 0 b t f 1560 1560 1560 1791    0    0     0 bitand - - ));
-DATA(insert OID = 1792 (  "|"      PGUID 0 b t f 1560 1560 1560 1792    0    0     0 bitor - - ));
-DATA(insert OID = 1793 (  "#"      PGUID 0 b t f 1560 1560 1560 1793    0    0     0 bitxor - - ));
-DATA(insert OID = 1794 (  "~"      PGUID 0 l t f    0 1560 1560      0    0    0     0 bitnot - - ));
-DATA(insert OID = 1795 (  "<<"      PGUID 0 b t f 1560   23 1560      0    0    0     0 bitshiftleft - - ));
-DATA(insert OID = 1796 (  ">>"      PGUID 0 b t f 1560   23 1560      0    0    0     0 bitshiftright - - ));
-DATA(insert OID = 1797 (  "||"      PGUID 0 b t f 1560 1560 1560      0    0    0     0 bitcat - - ));
-
-DATA(insert OID = 1800 (  "+"       PGUID 0 b t f 1083 1186 1083    0    0 0 0 time_pl_interval - - ));
-DATA(insert OID = 1801 (  "-"       PGUID 0 b t f 1083 1186 1083    0    0 0 0 time_mi_interval - - ));
-DATA(insert OID = 1802 (  "+"       PGUID 0 b t f 1266 1186 1266    0    0 0 0 timetz_pl_interval - - ));
-DATA(insert OID = 1803 (  "-"       PGUID 0 b t f 1266 1186 1266    0    0 0 0 timetz_mi_interval - - ));
-
-DATA(insert OID = 1804 (  "="      PGUID 0 b t f 1562 1562    16 1804 1805 1806 1806 varbiteq eqsel eqjoinsel ));
-DATA(insert OID = 1805 (  "<>"      PGUID 0 b t f 1562 1562    16 1805 1804    0     0 varbitne neqsel neqjoinsel ));
-DATA(insert OID = 1806 (  "<"      PGUID 0 b t f 1562 1562    16 1807 1809    0     0 varbitlt scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1807 (  ">"      PGUID 0 b t f 1562 1562    16 1806 1808    0     0 varbitgt scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 1808 (  "<="      PGUID 0 b t f 1562 1562    16 1809 1807    0     0 varbitle scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 1809 (  ">="      PGUID 0 b t f 1562 1562    16 1808 1806    0     0 varbitge scalargtsel
scalargtjoinsel)); 
-
-DATA(insert OID = 1849 (  "+"       PGUID 0 b t f 1186 1083 1083    0    0 0 0 interval_pl_time - - ));
-
-DATA(insert OID = 1862 ( "="       PGUID 0 b t f  21  20  16 1868  1863  95 412 int28eq eqsel eqjoinsel ));
-DATA(insert OID = 1863 ( "<>"       PGUID 0 b t f  21  20  16 1869  1862   0   0 int28ne neqsel neqjoinsel ));
-DATA(insert OID = 1864 ( "<"       PGUID 0 b t f  21  20  16 1871  1867   0   0 int28lt scalarltsel scalarltjoinsel
));
-DATA(insert OID = 1865 ( ">"       PGUID 0 b t f  21  20  16 1870  1866   0   0 int28gt scalargtsel scalargtjoinsel
));
-DATA(insert OID = 1866 ( "<="       PGUID 0 b t f  21  20  16 1873  1865   0   0 int28le scalarltsel scalarltjoinsel
));
-DATA(insert OID = 1867 ( ">="       PGUID 0 b t f  21  20  16 1872  1864   0   0 int28ge scalargtsel scalargtjoinsel
));
-
-DATA(insert OID = 1868 ( "="       PGUID 0 b t f  20  21  16  1862 1869 412 95 int82eq eqsel eqjoinsel ));
-DATA(insert OID = 1869 ( "<>"       PGUID 0 b t f  20  21  16  1863 1868   0  0 int82ne neqsel neqjoinsel ));
-DATA(insert OID = 1870 ( "<"       PGUID 0 b t f  20  21  16  1865 1873   0  0 int82lt scalarltsel scalarltjoinsel ));
-DATA(insert OID = 1871 ( ">"       PGUID 0 b t f  20  21  16  1864 1872   0  0 int82gt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 1872 ( "<="       PGUID 0 b t f  20  21  16  1867 1871   0  0 int82le scalarltsel scalarltjoinsel
));
-DATA(insert OID = 1873 ( ">="       PGUID 0 b t f  20  21  16  1866 1870   0  0 int82ge scalargtsel scalargtjoinsel
));
-
-DATA(insert OID = 1874 ( "&"       PGUID 0 b t f  21  21  21  1874      0   0  0 int2and - - ));
-DATA(insert OID = 1875 ( "|"       PGUID 0 b t f  21  21  21  1875      0   0  0 int2or - - ));
-DATA(insert OID = 1876 ( "#"       PGUID 0 b t f  21  21  21  1876      0   0  0 int2xor - - ));
-DATA(insert OID = 1877 ( "~"       PGUID 0 l t f   0  21  21     0      0   0  0 int2not - - ));
-DATA(insert OID = 1878 ( "<<"       PGUID 0 b t f  21  23  21     0      0   0  0 int2shl - - ));
-DATA(insert OID = 1879 ( ">>"       PGUID 0 b t f  21  23  21     0      0   0  0 int2shr - - ));
-
-DATA(insert OID = 1880 ( "&"       PGUID 0 b t f  23  23  23  1880      0   0  0 int4and - - ));
-DATA(insert OID = 1881 ( "|"       PGUID 0 b t f  23  23  23  1881      0   0  0 int4or - - ));
-DATA(insert OID = 1882 ( "#"       PGUID 0 b t f  23  23  23  1882      0   0  0 int4xor - - ));
-DATA(insert OID = 1883 ( "~"       PGUID 0 l t f   0  23  23     0      0   0  0 int4not - - ));
-DATA(insert OID = 1884 ( "<<"       PGUID 0 b t f  23  23  23     0      0   0  0 int4shl - - ));
-DATA(insert OID = 1885 ( ">>"       PGUID 0 b t f  23  23  23     0      0   0  0 int4shr - - ));
-
-DATA(insert OID = 1886 ( "&"       PGUID 0 b t f  20  20  20  1886      0   0  0 int8and - - ));
-DATA(insert OID = 1887 ( "|"       PGUID 0 b t f  20  20  20  1887      0   0  0 int8or - - ));
-DATA(insert OID = 1888 ( "#"       PGUID 0 b t f  20  20  20  1888      0   0  0 int8xor - - ));
-DATA(insert OID = 1889 ( "~"       PGUID 0 l t f   0  20  20     0      0   0  0 int8not - - ));
-DATA(insert OID = 1890 ( "<<"       PGUID 0 b t f  20  23  20     0      0   0  0 int8shl - - ));
-DATA(insert OID = 1891 ( ">>"       PGUID 0 b t f  20  23  20     0      0   0  0 int8shr - - ));
-
-DATA(insert OID = 1916 (  "+"       PGUID 0 l t f   0  20  20    0   0   0   0 int8up - - ));
-DATA(insert OID = 1917 (  "+"       PGUID 0 l t f   0  21  21    0   0   0   0 int2up - - ));
-DATA(insert OID = 1918 (  "+"       PGUID 0 l t f   0  23  23    0   0   0   0 int4up - - ));
-DATA(insert OID = 1919 (  "+"       PGUID 0 l t f   0  700 700    0   0   0   0 float4up - - ));
-DATA(insert OID = 1920 (  "+"       PGUID 0 l t f   0  701 701    0   0   0   0 float8up - - ));
-DATA(insert OID = 1921 (  "+"       PGUID 0 l t f   0 1700 1700  0   0    0    0 numeric_uplus - - ));
+DATA(insert OID = 1751 (  "-"       10 PGUID 0 l t f    0 1700 1700    0    0 0 0 numeric_uminus - - ));
+DATA(insert OID = 1752 (  "="       10 PGUID 0 b t f 1700 1700     16 1752 1753 1754 1754 numeric_eq eqsel eqjoinsel
));
+DATA(insert OID = 1753 (  "<>"       10 PGUID 0 b t f 1700 1700     16 1753 1752 0 0 numeric_ne neqsel neqjoinsel ));
+DATA(insert OID = 1754 (  "<"       10 PGUID 0 b t f 1700 1700     16 1756 1757 0 0 numeric_lt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1755 (  "<="       10 PGUID 0 b t f 1700 1700     16 1757 1756 0 0 numeric_le scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1756 (  ">"       10 PGUID 0 b t f 1700 1700     16 1754 1755 0 0 numeric_gt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1757 (  ">="       10 PGUID 0 b t f 1700 1700     16 1755 1754 0 0 numeric_ge scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1758 (  "+"       10 PGUID 0 b t f 1700 1700 1700 1758    0 0 0 numeric_add - - ));
+DATA(insert OID = 1759 (  "-"       10 PGUID 0 b t f 1700 1700 1700    0    0 0 0 numeric_sub - - ));
+DATA(insert OID = 1760 (  "*"       10 PGUID 0 b t f 1700 1700 1700 1760    0 0 0 numeric_mul - - ));
+DATA(insert OID = 1761 (  "/"       10 PGUID 0 b t f 1700 1700 1700    0    0 0 0 numeric_div - - ));
+DATA(insert OID = 1762 (  "%"       10 PGUID 0 b t f 1700 1700 1700    0    0 0 0 numeric_mod - - ));
+DATA(insert OID = 1763 (  "@"       10 PGUID 0 l t f    0 1700 1700    0    0 0 0 numeric_abs - - ));
+
+DATA(insert OID = 1784 (  "="      10 PGUID 0 b t f 1560 1560    16 1784 1785 1786 1786 biteq eqsel eqjoinsel ));
+DATA(insert OID = 1785 (  "<>"      10 PGUID 0 b t f 1560 1560    16 1785 1784    0     0 bitne neqsel neqjoinsel ));
+DATA(insert OID = 1786 (  "<"      10 PGUID 0 b t f 1560 1560    16 1787 1789    0     0 bitlt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1787 (  ">"      10 PGUID 0 b t f 1560 1560    16 1786 1788    0     0 bitgt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1788 (  "<="      10 PGUID 0 b t f 1560 1560    16 1789 1787    0     0 bitle scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1789 (  ">="      10 PGUID 0 b t f 1560 1560    16 1788 1786    0     0 bitge scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1791 (  "&"      10 PGUID 0 b t f 1560 1560 1560 1791    0    0     0 bitand - - ));
+DATA(insert OID = 1792 (  "|"      10 PGUID 0 b t f 1560 1560 1560 1792    0    0     0 bitor - - ));
+DATA(insert OID = 1793 (  "#"      10 PGUID 0 b t f 1560 1560 1560 1793    0    0     0 bitxor - - ));
+DATA(insert OID = 1794 (  "~"      10 PGUID 0 l t f    0 1560 1560      0    0    0     0 bitnot - - ));
+DATA(insert OID = 1795 (  "<<"      10 PGUID 0 b t f 1560   23 1560      0    0    0     0 bitshiftleft - - ));
+DATA(insert OID = 1796 (  ">>"      10 PGUID 0 b t f 1560   23 1560      0    0    0     0 bitshiftright - - ));
+DATA(insert OID = 1797 (  "||"      10 PGUID 0 b t f 1560 1560 1560      0    0    0     0 bitcat - - ));
+
+DATA(insert OID = 1800 (  "+"       10 PGUID 0 b t f 1083 1186 1083    0    0 0 0 time_pl_interval - - ));
+DATA(insert OID = 1801 (  "-"       10 PGUID 0 b t f 1083 1186 1083    0    0 0 0 time_mi_interval - - ));
+DATA(insert OID = 1802 (  "+"       10 PGUID 0 b t f 1266 1186 1266    0    0 0 0 timetz_pl_interval - - ));
+DATA(insert OID = 1803 (  "-"       10 PGUID 0 b t f 1266 1186 1266    0    0 0 0 timetz_mi_interval - - ));
+
+DATA(insert OID = 1804 (  "="      10 PGUID 0 b t f 1562 1562    16 1804 1805 1806 1806 varbiteq eqsel eqjoinsel ));
+DATA(insert OID = 1805 (  "<>"      10 PGUID 0 b t f 1562 1562    16 1805 1804    0     0 varbitne neqsel neqjoinsel
));
+DATA(insert OID = 1806 (  "<"      10 PGUID 0 b t f 1562 1562    16 1807 1809    0     0 varbitlt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1807 (  ">"      10 PGUID 0 b t f 1562 1562    16 1806 1808    0     0 varbitgt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 1808 (  "<="      10 PGUID 0 b t f 1562 1562    16 1809 1807    0     0 varbitle scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1809 (  ">="      10 PGUID 0 b t f 1562 1562    16 1808 1806    0     0 varbitge scalargtsel
scalargtjoinsel)); 
+
+DATA(insert OID = 1849 (  "+"       10 PGUID 0 b t f 1186 1083 1083    0    0 0 0 interval_pl_time - - ));
+
+DATA(insert OID = 1862 ( "="       10 PGUID 0 b t f  21  20  16 1868  1863  95 412 int28eq eqsel eqjoinsel ));
+DATA(insert OID = 1863 ( "<>"       10 PGUID 0 b t f  21  20  16 1869  1862   0   0 int28ne neqsel neqjoinsel ));
+DATA(insert OID = 1864 ( "<"       10 PGUID 0 b t f  21  20  16 1871  1867   0   0 int28lt scalarltsel scalarltjoinsel
));
+DATA(insert OID = 1865 ( ">"       10 PGUID 0 b t f  21  20  16 1870  1866   0   0 int28gt scalargtsel scalargtjoinsel
));
+DATA(insert OID = 1866 ( "<="       10 PGUID 0 b t f  21  20  16 1873  1865   0   0 int28le scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 1867 ( ">="       10 PGUID 0 b t f  21  20  16 1872  1864   0   0 int28ge scalargtsel
scalargtjoinsel)); 
+
+DATA(insert OID = 1868 ( "="       10 PGUID 0 b t f  20  21  16  1862 1869 412 95 int82eq eqsel eqjoinsel ));
+DATA(insert OID = 1869 ( "<>"       10 PGUID 0 b t f  20  21  16  1863 1868   0  0 int82ne neqsel neqjoinsel ));
+DATA(insert OID = 1870 ( "<"       10 PGUID 0 b t f  20  21  16  1865 1873   0  0 int82lt scalarltsel scalarltjoinsel
));
+DATA(insert OID = 1871 ( ">"       10 PGUID 0 b t f  20  21  16  1864 1872   0  0 int82gt scalargtsel scalargtjoinsel
));
+DATA(insert OID = 1872 ( "<="       10 PGUID 0 b t f  20  21  16  1867 1871   0  0 int82le scalarltsel scalarltjoinsel
));
+DATA(insert OID = 1873 ( ">="       10 PGUID 0 b t f  20  21  16  1866 1870   0  0 int82ge scalargtsel scalargtjoinsel
));
+
+DATA(insert OID = 1874 ( "&"       10 PGUID 0 b t f  21  21  21  1874      0   0  0 int2and - - ));
+DATA(insert OID = 1875 ( "|"       10 PGUID 0 b t f  21  21  21  1875      0   0  0 int2or - - ));
+DATA(insert OID = 1876 ( "#"       10 PGUID 0 b t f  21  21  21  1876      0   0  0 int2xor - - ));
+DATA(insert OID = 1877 ( "~"       10 PGUID 0 l t f   0  21  21     0      0   0  0 int2not - - ));
+DATA(insert OID = 1878 ( "<<"       10 PGUID 0 b t f  21  23  21     0      0   0  0 int2shl - - ));
+DATA(insert OID = 1879 ( ">>"       10 PGUID 0 b t f  21  23  21     0      0   0  0 int2shr - - ));
+
+DATA(insert OID = 1880 ( "&"       10 PGUID 0 b t f  23  23  23  1880      0   0  0 int4and - - ));
+DATA(insert OID = 1881 ( "|"       10 PGUID 0 b t f  23  23  23  1881      0   0  0 int4or - - ));
+DATA(insert OID = 1882 ( "#"       10 PGUID 0 b t f  23  23  23  1882      0   0  0 int4xor - - ));
+DATA(insert OID = 1883 ( "~"       10 PGUID 0 l t f   0  23  23     0      0   0  0 int4not - - ));
+DATA(insert OID = 1884 ( "<<"       10 PGUID 0 b t f  23  23  23     0      0   0  0 int4shl - - ));
+DATA(insert OID = 1885 ( ">>"       10 PGUID 0 b t f  23  23  23     0      0   0  0 int4shr - - ));
+
+DATA(insert OID = 1886 ( "&"       10 PGUID 0 b t f  20  20  20  1886      0   0  0 int8and - - ));
+DATA(insert OID = 1887 ( "|"       10 PGUID 0 b t f  20  20  20  1887      0   0  0 int8or - - ));
+DATA(insert OID = 1888 ( "#"       10 PGUID 0 b t f  20  20  20  1888      0   0  0 int8xor - - ));
+DATA(insert OID = 1889 ( "~"       10 PGUID 0 l t f   0  20  20     0      0   0  0 int8not - - ));
+DATA(insert OID = 1890 ( "<<"       10 PGUID 0 b t f  20  23  20     0      0   0  0 int8shl - - ));
+DATA(insert OID = 1891 ( ">>"       10 PGUID 0 b t f  20  23  20     0      0   0  0 int8shr - - ));
+
+DATA(insert OID = 1916 (  "+"       10 PGUID 0 l t f   0  20  20    0   0   0   0 int8up - - ));
+DATA(insert OID = 1917 (  "+"       10 PGUID 0 l t f   0  21  21    0   0   0   0 int2up - - ));
+DATA(insert OID = 1918 (  "+"       10 PGUID 0 l t f   0  23  23    0   0   0   0 int4up - - ));
+DATA(insert OID = 1919 (  "+"       10 PGUID 0 l t f   0  700 700    0   0   0   0 float4up - - ));
+DATA(insert OID = 1920 (  "+"       10 PGUID 0 l t f   0  701 701    0   0   0   0 float8up - - ));
+DATA(insert OID = 1921 (  "+"       10 PGUID 0 l t f   0 1700 1700  0   0    0    0 numeric_uplus - - ));

 /* bytea operators */
-DATA(insert OID = 1955 ( "="       PGUID 0 b t t 17 17    16 1955 1956 1957 1957 byteaeq eqsel eqjoinsel ));
-DATA(insert OID = 1956 ( "<>"       PGUID 0 b t f 17 17    16 1956 1955 0    0 byteane neqsel neqjoinsel ));
-DATA(insert OID = 1957 ( "<"       PGUID 0 b t f 17 17    16 1959 1960 0    0 bytealt scalarltsel scalarltjoinsel ));
-DATA(insert OID = 1958 ( "<="       PGUID 0 b t f 17 17    16 1960 1959 0    0 byteale scalarltsel scalarltjoinsel ));
-DATA(insert OID = 1959 ( ">"       PGUID 0 b t f 17 17    16 1957 1958 0    0 byteagt scalargtsel scalargtjoinsel ));
-DATA(insert OID = 1960 ( ">="       PGUID 0 b t f 17 17    16 1958 1957 0    0 byteage scalargtsel scalargtjoinsel ));
-DATA(insert OID = 2016 (  "~~"       PGUID 0 b t f 17 17  16 0    2017 0    0 bytealike likesel likejoinsel ));
+DATA(insert OID = 1955 ( "="       10 PGUID 0 b t t 17 17    16 1955 1956 1957 1957 byteaeq eqsel eqjoinsel ));
+DATA(insert OID = 1956 ( "<>"       10 PGUID 0 b t f 17 17    16 1956 1955 0    0 byteane neqsel neqjoinsel ));
+DATA(insert OID = 1957 ( "<"       10 PGUID 0 b t f 17 17    16 1959 1960 0    0 bytealt scalarltsel scalarltjoinsel
));
+DATA(insert OID = 1958 ( "<="       10 PGUID 0 b t f 17 17    16 1960 1959 0    0 byteale scalarltsel scalarltjoinsel
));
+DATA(insert OID = 1959 ( ">"       10 PGUID 0 b t f 17 17    16 1957 1958 0    0 byteagt scalargtsel scalargtjoinsel
));
+DATA(insert OID = 1960 ( ">="       10 PGUID 0 b t f 17 17    16 1958 1957 0    0 byteage scalargtsel scalargtjoinsel
));
+DATA(insert OID = 2016 (  "~~"       10 PGUID 0 b t f 17 17  16 0    2017 0    0 bytealike likesel likejoinsel ));
 #define OID_BYTEA_LIKE_OP        2016
-DATA(insert OID = 2017 (  "!~~"       PGUID 0 b t f 17 17  16 0    2016 0    0 byteanlike nlikesel nlikejoinsel ));
-DATA(insert OID = 2018 (  "||"       PGUID 0 b t f 17 17  17 0    0     0    0 byteacat - - ));
+DATA(insert OID = 2017 (  "!~~"       10 PGUID 0 b t f 17 17  16 0    2016 0    0 byteanlike nlikesel nlikejoinsel ));
+DATA(insert OID = 2018 (  "||"       10 PGUID 0 b t f 17 17  17 0    0     0    0 byteacat - - ));

 /* timestamp operators */
 /* name, owner, prec, kind, isleft, canhash, left, right, result, com, negate, lsortop, rsortop, oprcode, operrest,
oprjoin*/ 
-DATA(insert OID = 2060 (  "="       PGUID 0 b t f 1114 1114     16 2060 2061 2062 2062 timestamp_eq eqsel eqjoinsel
));
-DATA(insert OID = 2061 (  "<>"       PGUID 0 b t f 1114 1114     16 2061 2060 0 0 timestamp_ne neqsel neqjoinsel ));
-DATA(insert OID = 2062 (  "<"       PGUID 0 b t f 1114 1114     16 2064 2065 0 0 timestamp_lt scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 2063 (  "<="       PGUID 0 b t f 1114 1114     16 2065 2064 0 0 timestamp_le scalarltsel
scalarltjoinsel)); 
-DATA(insert OID = 2064 (  ">"       PGUID 0 b t f 1114 1114     16 2062 2063 0 0 timestamp_gt scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 2065 (  ">="       PGUID 0 b t f 1114 1114     16 2063 2062 0 0 timestamp_ge scalargtsel
scalargtjoinsel)); 
-DATA(insert OID = 2066 (  "+"       PGUID 0 b t f 1114 1186 1114    0    0 0 0 timestamp_pl_span - - ));
-DATA(insert OID = 2067 (  "-"       PGUID 0 b t f 1114 1114 1186    0    0 0 0 timestamp_mi - - ));
-DATA(insert OID = 2068 (  "-"       PGUID 0 b t f 1114 1186 1114    0    0 0 0 timestamp_mi_span - - ));
+DATA(insert OID = 2060 (  "="       10 PGUID 0 b t f 1114 1114     16 2060 2061 2062 2062 timestamp_eq eqsel eqjoinsel
));
+DATA(insert OID = 2061 (  "<>"       10 PGUID 0 b t f 1114 1114     16 2061 2060 0 0 timestamp_ne neqsel neqjoinsel
));
+DATA(insert OID = 2062 (  "<"       10 PGUID 0 b t f 1114 1114     16 2064 2065 0 0 timestamp_lt scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 2063 (  "<="       10 PGUID 0 b t f 1114 1114     16 2065 2064 0 0 timestamp_le scalarltsel
scalarltjoinsel)); 
+DATA(insert OID = 2064 (  ">"       10 PGUID 0 b t f 1114 1114     16 2062 2063 0 0 timestamp_gt scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 2065 (  ">="       10 PGUID 0 b t f 1114 1114     16 2063 2062 0 0 timestamp_ge scalargtsel
scalargtjoinsel)); 
+DATA(insert OID = 2066 (  "+"       10 PGUID 0 b t f 1114 1186 1114    0    0 0 0 timestamp_pl_span - - ));
+DATA(insert OID = 2067 (  "-"       10 PGUID 0 b t f 1114 1114 1186    0    0 0 0 timestamp_mi - - ));
+DATA(insert OID = 2068 (  "-"       10 PGUID 0 b t f 1114 1186 1114    0    0 0 0 timestamp_mi_span - - ));


 /*
  * function prototypes
  */
+struct DefElem;
 extern void OperatorCreate(char *operatorName,
+               Oid packId,
                char *leftTypeName,
                char *rightTypeName,
-               char *procedureName,
+               struct DefElem *procedureName,
                uint16 precedence,
                bool isLeftAssociative,
                char *commutatorName,
                char *negatorName,
-               char *restrictionName,
-               char *joinName,
+               struct DefElem *restrictionName,
+               struct DefElem *joinName,
                bool canHash,
                char *leftSortName,
                char *rightSortName);
Index: src/include/catalog/pg_package.h
===================================================================
RCS file: pg_package.h
diff -N pg_package.h
--- /dev/null    Wed Oct 17 08:50:28 2001
+++ pg_package.h    Wed Oct 17 11:41:56 2001
@@ -0,0 +1,72 @@
+/*-------------------------------------------------------------------------
+ *
+ * pg_package.h
+ *      definition of the system "package" relation (pg_package)
+ *      along with the relation's initial contents.
+ *
+ *
+ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * $Id: pg_language.h,v 1.10 2000/01/26 05:57:57 momjian Exp $
+ *
+ * NOTES
+ *      the genbki.sh script reads this file and generates .bki
+ *      information from the DATA() statements.
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef PG_PACKAGE_H
+#define PG_PACKAGE_H
+
+/* ----------------
+ *        postgres.h contains the system type definintions and the
+ *        CATALOG(), BOOTSTRAP and DATA() sugar words so this file
+ *        can be read by both genbki.sh and the C compiler.
+ * ----------------
+ */
+
+/* ----------------
+ *        pg_package definition.  cpp turns this into
+ *        typedef struct FormData_pg_package
+ * ----------------
+ */
+CATALOG(pg_package)
+{
+    NameData    packname;
+    int4        packowner;
+} FormData_pg_package;
+
+/* ----------------
+ *        Form_pg_package corresponds to a pointer to a tuple with
+ *        the format of pg_package relation.
+ * ----------------
+ */
+typedef FormData_pg_package *Form_pg_package;
+
+/* ----------------
+ *        compiler constants for pg_package
+ * ----------------
+ */
+#define Natts_pg_package                2
+#define Anum_pg_package_packname        1
+#define Anum_pg_package_packowner        2
+
+/* ----------------
+ *        initial contents of pg_package
+ * ----------------
+ */
+
+DATA(insert OID = 10 ( standard PGUID ));
+DESCR("");
+#define STANDARDPackageId 10
+/* Note there is a duplication of this define in include/utils/syscache.h */
+
+/*
+ * prototypes for functions in pg_package.c
+ */
+extern void PackageCreate(char *packageName, int orreplace);
+extern int PackageNameFromID(Oid packID, Name name);
+extern Oid PackageIdFromName(char *packname);
+
+#endif     /* PG_PACKAGE_H */
Index: src/include/catalog/pg_packglobal.h
===================================================================
RCS file: pg_packglobal.h
diff -N pg_packglobal.h
--- /dev/null    Wed Oct 17 08:50:28 2001
+++ pg_packglobal.h    Wed Oct 17 11:41:56 2001
@@ -0,0 +1,67 @@
+/*-------------------------------------------------------------------------
+ *
+ * pg_package.h
+ *      definition of the system "package" relation (pg_package)
+ *      along with the relation's initial contents.
+ *
+ *
+ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * $Id: pg_language.h,v 1.10 2000/01/26 05:57:57 momjian Exp $
+ *
+ * NOTES
+ *      the genbki.sh script reads this file and generates .bki
+ *      information from the DATA() statements.
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef PG_PACKGLOBAL_H
+#define PG_PACKGLOBAL_H
+
+/* ----------------
+ *        postgres.h contains the system type definintions and the
+ *        CATALOG(), BOOTSTRAP and DATA() sugar words so this file
+ *        can be read by both genbki.sh and the C compiler.
+ * ----------------
+ */
+
+/* ----------------
+ *        pg_packglobal definition.  cpp turns this into
+ *        typedef struct FormData_pg_packglobal
+ * ----------------
+ */
+CATALOG(pg_packglobal)
+{
+    Oid            pglobalid;
+    Oid            pgloballang;
+    int4        pglobalseq;
+    NameData    pglobalvname;
+    text        pglobalvtype;
+} FormData_pg_packglobal;
+
+/* ----------------
+ *        Form_pg_packglobal corresponds to a pointer to a tuple with
+ *        the format of pg_packglobal relation.
+ * ----------------
+ */
+typedef FormData_pg_packglobal *Form_pg_packglobal;
+
+/* ----------------
+ *        compiler constants for pg_packglobal
+ * ----------------
+ */
+#define Natts_pg_packglobal                    5
+#define Anum_pg_packglobal_pglobalid        1
+#define Anum_pg_packglobal_pgloballang        2
+#define Anum_pg_packglobal_pglobalseq        3
+#define Anum_pg_packglobal_pglobalvname        4
+#define Anum_pg_packglobal_pglobalvtype        5
+
+/*
+ * prototypes for function(s) in pg_packglobal.c
+ */
+extern void PackageGlobalCreate(Oid packId, Oid langId, int seqno, char *vname,
+                                char *vtype);
+
+#endif     /* PG_PACKGLOBAL_H */
Index: src/include/catalog/pg_proc.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/catalog/pg_proc.h,v
retrieving revision 1.216
diff -u -r1.216 pg_proc.h
--- src/include/catalog/pg_proc.h    2001/10/12 02:08:34    1.216
+++ src/include/catalog/pg_proc.h    2001/10/17 16:42:01
@@ -40,6 +40,7 @@
 CATALOG(pg_proc) BOOTSTRAP
 {
     NameData    proname;
+    Oid            propack;
     int4        proowner;
     Oid            prolang;
     bool        proisinh;
@@ -69,24 +70,25 @@
  *        compiler constants for pg_proc
  * ----------------
  */
-#define Natts_pg_proc                    17
+#define Natts_pg_proc                    18
 #define Anum_pg_proc_proname            1
-#define Anum_pg_proc_proowner            2
-#define Anum_pg_proc_prolang            3
-#define Anum_pg_proc_proisinh            4
-#define Anum_pg_proc_proistrusted        5
-#define Anum_pg_proc_proiscachable        6
-#define Anum_pg_proc_proisstrict        7
-#define Anum_pg_proc_pronargs            8
-#define Anum_pg_proc_proretset            9
-#define Anum_pg_proc_prorettype            10
-#define Anum_pg_proc_proargtypes        11
-#define Anum_pg_proc_probyte_pct        12
-#define Anum_pg_proc_properbyte_cpu        13
-#define Anum_pg_proc_propercall_cpu        14
-#define Anum_pg_proc_prooutin_ratio        15
-#define Anum_pg_proc_prosrc                16
-#define Anum_pg_proc_probin                17
+#define Anum_pg_proc_propack            2
+#define Anum_pg_proc_proowner            3
+#define Anum_pg_proc_prolang            4
+#define Anum_pg_proc_proisinh            5
+#define Anum_pg_proc_proistrusted        6
+#define Anum_pg_proc_proiscachable        7
+#define Anum_pg_proc_proisstrict        8
+#define Anum_pg_proc_pronargs            9
+#define Anum_pg_proc_proretset            10
+#define Anum_pg_proc_prorettype            11
+#define Anum_pg_proc_proargtypes        12
+#define Anum_pg_proc_probyte_pct        13
+#define Anum_pg_proc_properbyte_cpu        14
+#define Anum_pg_proc_propercall_cpu        15
+#define Anum_pg_proc_prooutin_ratio        16
+#define Anum_pg_proc_prosrc                17
+#define Anum_pg_proc_probin                18

 /* ----------------
  *        initial contents of pg_proc
@@ -97,2771 +99,2771 @@

 /* OIDS 1 - 99 */

-DATA(insert OID = 1242 (  boolin           PGUID 12 f t t t 1 f 16 "0" 100 0 0    100  boolin - ));
+DATA(insert OID = 1242 (  boolin           10 PGUID 12 f t t t 1 f 16 "0" 100 0 0    100  boolin - ));
 DESCR("(internal)");
-DATA(insert OID = 1243 (  boolout           PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  boolout - ));
+DATA(insert OID = 1243 (  boolout           10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  boolout - ));
 DESCR("(internal)");
-DATA(insert OID = 1244 (  byteain           PGUID 12 f t t t 1 f 17 "0" 100 0 0 100  byteain - ));
+DATA(insert OID = 1244 (  byteain           10 PGUID 12 f t t t 1 f 17 "0" 100 0 0 100  byteain - ));
 DESCR("(internal)");
-DATA(insert OID =  31 (  byteaout           PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  byteaout - ));
+DATA(insert OID =  31 (  byteaout           10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  byteaout - ));
 DESCR("(internal)");
-DATA(insert OID = 1245 (  charin           PGUID 12 f t t t 1 f 18 "0" 100 0 0 100  charin - ));
+DATA(insert OID = 1245 (  charin           10 PGUID 12 f t t t 1 f 18 "0" 100 0 0 100  charin - ));
 DESCR("(internal)");
-DATA(insert OID =  33 (  charout           PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  charout - ));
+DATA(insert OID =  33 (  charout           10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  charout - ));
 DESCR("(internal)");
-DATA(insert OID =  34 (  namein               PGUID 12 f t t t 1 f 19 "0" 100 0 0 100  namein - ));
+DATA(insert OID =  34 (  namein               10 PGUID 12 f t t t 1 f 19 "0" 100 0 0 100  namein - ));
 DESCR("(internal)");
-DATA(insert OID =  35 (  nameout           PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  nameout - ));
+DATA(insert OID =  35 (  nameout           10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  nameout - ));
 DESCR("(internal)");
-DATA(insert OID =  38 (  int2in               PGUID 12 f t t t 1 f 21 "0" 100 0 0 100  int2in - ));
+DATA(insert OID =  38 (  int2in               10 PGUID 12 f t t t 1 f 21 "0" 100 0 0 100  int2in - ));
 DESCR("(internal)");
-DATA(insert OID =  39 (  int2out           PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  int2out - ));
+DATA(insert OID =  39 (  int2out           10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  int2out - ));
 DESCR("(internal)");
-DATA(insert OID =  40 (  int2vectorin       PGUID 12 f t t t 1 f 22 "0" 100 0 0 100  int2vectorin - ));
+DATA(insert OID =  40 (  int2vectorin       10 PGUID 12 f t t t 1 f 22 "0" 100 0 0 100  int2vectorin - ));
 DESCR("(internal)");
-DATA(insert OID =  41 (  int2vectorout       PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  int2vectorout - ));
+DATA(insert OID =  41 (  int2vectorout       10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  int2vectorout - ));
 DESCR("(internal)");
-DATA(insert OID =  42 (  int4in               PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  int4in - ));
+DATA(insert OID =  42 (  int4in               10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  int4in - ));
 DESCR("(internal)");
-DATA(insert OID =  43 (  int4out           PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  int4out - ));
+DATA(insert OID =  43 (  int4out           10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  int4out - ));
 DESCR("(internal)");
-DATA(insert OID =  44 (  regprocin           PGUID 12 f t f t 1 f 24 "0" 100 0 0 100  regprocin - ));
+DATA(insert OID =  44 (  regprocin           10 PGUID 12 f t f t 1 f 24 "0" 100 0 0 100  regprocin - ));
 DESCR("(internal)");
-DATA(insert OID =  45 (  regprocout           PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  regprocout - ));
+DATA(insert OID =  45 (  regprocout           10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  regprocout - ));
 DESCR("(internal)");
-DATA(insert OID =  46 (  textin               PGUID 12 f t t t 1 f 25 "0" 100 0 0 100  textin - ));
+DATA(insert OID =  46 (  textin               10 PGUID 12 f t t t 1 f 25 "0" 100 0 0 100  textin - ));
 DESCR("(internal)");
-DATA(insert OID =  47 (  textout           PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  textout - ));
+DATA(insert OID =  47 (  textout           10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  textout - ));
 DESCR("(internal)");
-DATA(insert OID =  48 (  tidin               PGUID 12 f t t t 1 f 27 "0" 100 0 0 100  tidin - ));
+DATA(insert OID =  48 (  tidin               10 PGUID 12 f t t t 1 f 27 "0" 100 0 0 100  tidin - ));
 DESCR("(internal)");
-DATA(insert OID =  49 (  tidout               PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  tidout - ));
+DATA(insert OID =  49 (  tidout               10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  tidout - ));
 DESCR("(internal)");
-DATA(insert OID =  50 (  xidin               PGUID 12 f t t t 1 f 28 "0" 100 0 0 100  xidin - ));
+DATA(insert OID =  50 (  xidin               10 PGUID 12 f t t t 1 f 28 "0" 100 0 0 100  xidin - ));
 DESCR("(internal)");
-DATA(insert OID =  51 (  xidout               PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  xidout - ));
+DATA(insert OID =  51 (  xidout               10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  xidout - ));
 DESCR("(internal)");
-DATA(insert OID =  52 (  cidin               PGUID 12 f t t t 1 f 29 "0" 100 0 0 100  cidin - ));
+DATA(insert OID =  52 (  cidin               10 PGUID 12 f t t t 1 f 29 "0" 100 0 0 100  cidin - ));
 DESCR("(internal)");
-DATA(insert OID =  53 (  cidout               PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  cidout - ));
+DATA(insert OID =  53 (  cidout               10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  cidout - ));
 DESCR("(internal)");
-DATA(insert OID =  54 (  oidvectorin       PGUID 12 f t t t 1 f 30 "0" 100 0 0 100  oidvectorin - ));
+DATA(insert OID =  54 (  oidvectorin       10 PGUID 12 f t t t 1 f 30 "0" 100 0 0 100  oidvectorin - ));
 DESCR("(internal)");
-DATA(insert OID =  55 (  oidvectorout       PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  oidvectorout - ));
+DATA(insert OID =  55 (  oidvectorout       10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  oidvectorout - ));
 DESCR("(internal)");
-DATA(insert OID =  56 (  boollt               PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100  boollt - ));
+DATA(insert OID =  56 (  boollt               10 PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100  boollt - ));
 DESCR("less-than");
-DATA(insert OID =  57 (  boolgt               PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100  boolgt - ));
+DATA(insert OID =  57 (  boolgt               10 PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100  boolgt - ));
 DESCR("greater-than");
-DATA(insert OID =  60 (  booleq               PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100  booleq - ));
+DATA(insert OID =  60 (  booleq               10 PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100  booleq - ));
 DESCR("equal");
-DATA(insert OID =  61 (  chareq               PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100  chareq - ));
+DATA(insert OID =  61 (  chareq               10 PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100  chareq - ));
 DESCR("equal");
-DATA(insert OID =  62 (  nameeq               PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100  nameeq - ));
+DATA(insert OID =  62 (  nameeq               10 PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100  nameeq - ));
 DESCR("equal");
-DATA(insert OID =  63 (  int2eq               PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100  int2eq - ));
+DATA(insert OID =  63 (  int2eq               10 PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100  int2eq - ));
 DESCR("equal");
-DATA(insert OID =  64 (  int2lt               PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100  int2lt - ));
+DATA(insert OID =  64 (  int2lt               10 PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100  int2lt - ));
 DESCR("less-than");
-DATA(insert OID =  65 (  int4eq               PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100  int4eq - ));
+DATA(insert OID =  65 (  int4eq               10 PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100  int4eq - ));
 DESCR("equal");
-DATA(insert OID =  66 (  int4lt               PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100  int4lt - ));
+DATA(insert OID =  66 (  int4lt               10 PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100  int4lt - ));
 DESCR("less-than");
-DATA(insert OID =  67 (  texteq               PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  texteq - ));
+DATA(insert OID =  67 (  texteq               10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  texteq - ));
 DESCR("equal");
-DATA(insert OID =  68 (  xideq               PGUID 12 f t t t 2 f 16 "28 28" 100 0 0 100  xideq - ));
+DATA(insert OID =  68 (  xideq               10 PGUID 12 f t t t 2 f 16 "28 28" 100 0 0 100  xideq - ));
 DESCR("equal");
-DATA(insert OID =  69 (  cideq               PGUID 12 f t t t 2 f 16 "29 29" 100 0 0 100  cideq - ));
+DATA(insert OID =  69 (  cideq               10 PGUID 12 f t t t 2 f 16 "29 29" 100 0 0 100  cideq - ));
 DESCR("equal");
-DATA(insert OID =  70 (  charne               PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100  charne - ));
+DATA(insert OID =  70 (  charne               10 PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100  charne - ));
 DESCR("not equal");
-DATA(insert OID = 1246 (  charlt           PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100  charlt - ));
+DATA(insert OID = 1246 (  charlt           10 PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100  charlt - ));
 DESCR("less-than");
-DATA(insert OID =  72 (  charle               PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100  charle - ));
+DATA(insert OID =  72 (  charle               10 PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100  charle - ));
 DESCR("less-than-or-equal");
-DATA(insert OID =  73 (  chargt               PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100  chargt - ));
+DATA(insert OID =  73 (  chargt               10 PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100  chargt - ));
 DESCR("greater-than");
-DATA(insert OID =  74 (  charge               PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100  charge - ));
+DATA(insert OID =  74 (  charge               10 PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100  charge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 1248 (  charpl           PGUID 12 f t t t 2 f 18 "18 18" 100 0 0 100  charpl - ));
+DATA(insert OID = 1248 (  charpl           10 PGUID 12 f t t t 2 f 18 "18 18" 100 0 0 100  charpl - ));
 DESCR("add");
-DATA(insert OID = 1250 (  charmi           PGUID 12 f t t t 2 f 18 "18 18" 100 0 0 100  charmi - ));
+DATA(insert OID = 1250 (  charmi           10 PGUID 12 f t t t 2 f 18 "18 18" 100 0 0 100  charmi - ));
 DESCR("subtract");
-DATA(insert OID =  77 (  charmul           PGUID 12 f t t t 2 f 18 "18 18" 100 0 0 100  charmul - ));
+DATA(insert OID =  77 (  charmul           10 PGUID 12 f t t t 2 f 18 "18 18" 100 0 0 100  charmul - ));
 DESCR("multiply");
-DATA(insert OID =  78 (  chardiv           PGUID 12 f t t t 2 f 18 "18 18" 100 0 0 100  chardiv - ));
+DATA(insert OID =  78 (  chardiv           10 PGUID 12 f t t t 2 f 18 "18 18" 100 0 0 100  chardiv - ));
 DESCR("divide");

-DATA(insert OID =  79 (  nameregexeq       PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  nameregexeq - ));
+DATA(insert OID =  79 (  nameregexeq       10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  nameregexeq - ));
 DESCR("matches regex., case-sensitive");
-DATA(insert OID = 1252 (  nameregexne       PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  nameregexne - ));
+DATA(insert OID = 1252 (  nameregexne       10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  nameregexne - ));
 DESCR("does not match regex., case-sensitive");
-DATA(insert OID = 1254 (  textregexeq       PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  textregexeq - ));
+DATA(insert OID = 1254 (  textregexeq       10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  textregexeq - ));
 DESCR("matches regex., case-sensitive");
-DATA(insert OID = 1256 (  textregexne       PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  textregexne - ));
+DATA(insert OID = 1256 (  textregexne       10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  textregexne - ));
 DESCR("does not match regex., case-sensitive");
-DATA(insert OID = 1257 (  textlen           PGUID 12 f t t t 1 f 23 "25" 100 0 0 100  textlen - ));
+DATA(insert OID = 1257 (  textlen           10 PGUID 12 f t t t 1 f 23 "25" 100 0 0 100  textlen - ));
 DESCR("length");
-DATA(insert OID = 1258 (  textcat           PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100  textcat - ));
+DATA(insert OID = 1258 (  textcat           10 PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100  textcat - ));
 DESCR("concatenate");

-DATA(insert OID =  84 (  boolne               PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100  boolne - ));
+DATA(insert OID =  84 (  boolne               10 PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100  boolne - ));
 DESCR("not equal");
-DATA(insert OID =  89 (  version           PGUID 12 f t f t 0 f 25 "" 100 0 0 100 pgsql_version - ));
+DATA(insert OID =  89 (  version           10 PGUID 12 f t f t 0 f 25 "" 100 0 0 100 pgsql_version - ));
 DESCR("PostgreSQL version string");

 /* OIDS 100 - 199 */

-DATA(insert OID = 100 (  int8fac           PGUID 12 f t t t 1 f 20 "20" 100 0 0 100  int8fac - ));
+DATA(insert OID = 100 (  int8fac           10 PGUID 12 f t t t 1 f 20 "20" 100 0 0 100  int8fac - ));
 DESCR("factorial");
-DATA(insert OID = 101 (  eqsel               PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  eqsel - ));
+DATA(insert OID = 101 (  eqsel               10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  eqsel - ));
 DESCR("restriction selectivity of = and related operators");
-DATA(insert OID = 102 (  neqsel               PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  neqsel - ));
+DATA(insert OID = 102 (  neqsel               10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  neqsel - ));
 DESCR("restriction selectivity of <> and related operators");
-DATA(insert OID = 103 (  scalarltsel       PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  scalarltsel - ));
+DATA(insert OID = 103 (  scalarltsel       10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  scalarltsel - ));
 DESCR("restriction selectivity of < and related operators on scalar datatypes");
-DATA(insert OID = 104 (  scalargtsel       PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  scalargtsel - ));
+DATA(insert OID = 104 (  scalargtsel       10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  scalargtsel - ));
 DESCR("restriction selectivity of > and related operators on scalar datatypes");
-DATA(insert OID = 105 (  eqjoinsel           PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  eqjoinsel - ));
+DATA(insert OID = 105 (  eqjoinsel           10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  eqjoinsel - ));
 DESCR("join selectivity of = and related operators");
-DATA(insert OID = 106 (  neqjoinsel           PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  neqjoinsel - ));
+DATA(insert OID = 106 (  neqjoinsel           10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  neqjoinsel - ));
 DESCR("join selectivity of <> and related operators");
-DATA(insert OID = 107 (  scalarltjoinsel   PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  scalarltjoinsel - ));
+DATA(insert OID = 107 (  scalarltjoinsel   10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  scalarltjoinsel - ));
 DESCR("join selectivity of < and related operators on scalar datatypes");
-DATA(insert OID = 108 (  scalargtjoinsel   PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  scalargtjoinsel - ));
+DATA(insert OID = 108 (  scalargtjoinsel   10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  scalargtjoinsel - ));
 DESCR("join selectivity of > and related operators on scalar datatypes");

-DATA(insert OID = 112 (  text               PGUID 12 f t t t 1 f  25 "23" 100 0 0 100  int4_text - ));
+DATA(insert OID = 112 (  text               10 PGUID 12 f t t t 1 f  25 "23" 100 0 0 100  int4_text - ));
 DESCR("convert int4 to text");
-DATA(insert OID = 113 (  text               PGUID 12 f t t t 1 f  25 "21" 100 0 0 100  int2_text - ));
+DATA(insert OID = 113 (  text               10 PGUID 12 f t t t 1 f  25 "21" 100 0 0 100  int2_text - ));
 DESCR("convert int2 to text");
-DATA(insert OID = 114 (  text               PGUID 12 f t t t 1 f  25 "26" 100 0 0 100  oid_text - ));
+DATA(insert OID = 114 (  text               10 PGUID 12 f t t t 1 f  25 "26" 100 0 0 100  oid_text - ));
 DESCR("convert oid to text");

-DATA(insert OID = 115 (  box_above           PGUID 12 f t t t 2 f  16 "603 603" 100 0 0 100  box_above - ));
+DATA(insert OID = 115 (  box_above           10 PGUID 12 f t t t 2 f  16 "603 603" 100 0 0 100  box_above - ));
 DESCR("is above");
-DATA(insert OID = 116 (  box_below           PGUID 12 f t t t 2 f  16 "603 603" 100 0 0 100  box_below - ));
+DATA(insert OID = 116 (  box_below           10 PGUID 12 f t t t 2 f  16 "603 603" 100 0 0 100  box_below - ));
 DESCR("is below");

-DATA(insert OID = 117 (  point_in           PGUID 12 f t t t 1 f 600 "0" 100 0 0 100  point_in - ));
+DATA(insert OID = 117 (  point_in           10 PGUID 12 f t t t 1 f 600 "0" 100 0 0 100  point_in - ));
 DESCR("(internal)");
-DATA(insert OID = 118 (  point_out           PGUID 12 f t t t 1 f 23    "600" 100 0 0 100  point_out - ));
+DATA(insert OID = 118 (  point_out           10 PGUID 12 f t t t 1 f 23    "600" 100 0 0 100  point_out - ));
 DESCR("(internal)");
-DATA(insert OID = 119 (  lseg_in           PGUID 12 f t t t 1 f 601 "0" 100 0 0 100  lseg_in - ));
+DATA(insert OID = 119 (  lseg_in           10 PGUID 12 f t t t 1 f 601 "0" 100 0 0 100  lseg_in - ));
 DESCR("(internal)");
-DATA(insert OID = 120 (  lseg_out           PGUID 12 f t t t 1 f 23    "0" 100 0 0 100  lseg_out - ));
+DATA(insert OID = 120 (  lseg_out           10 PGUID 12 f t t t 1 f 23    "0" 100 0 0 100  lseg_out - ));
 DESCR("(internal)");
-DATA(insert OID = 121 (  path_in           PGUID 12 f t t t 1 f 602 "0" 100 0 0 100  path_in - ));
+DATA(insert OID = 121 (  path_in           10 PGUID 12 f t t t 1 f 602 "0" 100 0 0 100  path_in - ));
 DESCR("(internal)");
-DATA(insert OID = 122 (  path_out           PGUID 12 f t t t 1 f 23    "0" 100 0 0 100  path_out - ));
+DATA(insert OID = 122 (  path_out           10 PGUID 12 f t t t 1 f 23    "0" 100 0 0 100  path_out - ));
 DESCR("(internal)");
-DATA(insert OID = 123 (  box_in               PGUID 12 f t t t 1 f 603 "0" 100 0 0 100  box_in - ));
+DATA(insert OID = 123 (  box_in               10 PGUID 12 f t t t 1 f 603 "0" 100 0 0 100  box_in - ));
 DESCR("(internal)");
-DATA(insert OID = 124 (  box_out           PGUID 12 f t t t 1 f 23    "0" 100 0 0 100  box_out - ));
+DATA(insert OID = 124 (  box_out           10 PGUID 12 f t t t 1 f 23    "0" 100 0 0 100  box_out - ));
 DESCR("(internal)");
-DATA(insert OID = 125 (  box_overlap       PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_overlap - ));
+DATA(insert OID = 125 (  box_overlap       10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_overlap - ));
 DESCR("overlaps");
-DATA(insert OID = 126 (  box_ge               PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_ge - ));
+DATA(insert OID = 126 (  box_ge               10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_ge - ));
 DESCR("greater-than-or-equal by area");
-DATA(insert OID = 127 (  box_gt               PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_gt - ));
+DATA(insert OID = 127 (  box_gt               10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_gt - ));
 DESCR("greater-than by area");
-DATA(insert OID = 128 (  box_eq               PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_eq - ));
+DATA(insert OID = 128 (  box_eq               10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_eq - ));
 DESCR("equal by area");
-DATA(insert OID = 129 (  box_lt               PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_lt - ));
+DATA(insert OID = 129 (  box_lt               10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_lt - ));
 DESCR("less-than by area");
-DATA(insert OID = 130 (  box_le               PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_le - ));
+DATA(insert OID = 130 (  box_le               10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_le - ));
 DESCR("less-than-or-equal by area");
-DATA(insert OID = 131 (  point_above       PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100  point_above - ));
+DATA(insert OID = 131 (  point_above       10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100  point_above - ));
 DESCR("is above");
-DATA(insert OID = 132 (  point_left           PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100  point_left - ));
+DATA(insert OID = 132 (  point_left           10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100  point_left - ));
 DESCR("is left of");
-DATA(insert OID = 133 (  point_right       PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100  point_right - ));
+DATA(insert OID = 133 (  point_right       10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100  point_right - ));
 DESCR("is right of");
-DATA(insert OID = 134 (  point_below       PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100  point_below - ));
+DATA(insert OID = 134 (  point_below       10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100  point_below - ));
 DESCR("is below");
-DATA(insert OID = 135 (  point_eq           PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100  point_eq - ));
+DATA(insert OID = 135 (  point_eq           10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100  point_eq - ));
 DESCR("same as");
-DATA(insert OID = 136 (  on_pb               PGUID 12 f t t t 2 f 16 "600 603" 100 0 0 100  on_pb - ));
+DATA(insert OID = 136 (  on_pb               10 PGUID 12 f t t t 2 f 16 "600 603" 100 0 0 100  on_pb - ));
 DESCR("point is inside");
-DATA(insert OID = 137 (  on_ppath           PGUID 12 f t t t 2 f 16 "600 602" 100 0 0 100  on_ppath - ));
+DATA(insert OID = 137 (  on_ppath           10 PGUID 12 f t t t 2 f 16 "600 602" 100 0 0 100  on_ppath - ));
 DESCR("contained in");
-DATA(insert OID = 138 (  box_center           PGUID 12 f t t t 1 f 600 "603" 100 0 0 100  box_center - ));
+DATA(insert OID = 138 (  box_center           10 PGUID 12 f t t t 1 f 600 "603" 100 0 0 100  box_center - ));
 DESCR("center of");
-DATA(insert OID = 139 (  areasel           PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  areasel - ));
+DATA(insert OID = 139 (  areasel           10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  areasel - ));
 DESCR("restriction selectivity for area-comparison operators");
-DATA(insert OID = 140 (  areajoinsel       PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  areajoinsel - ));
+DATA(insert OID = 140 (  areajoinsel       10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  areajoinsel - ));
 DESCR("join selectivity for area-comparison operators");
-DATA(insert OID = 141 (  int4mul           PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4mul - ));
+DATA(insert OID = 141 (  int4mul           10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4mul - ));
 DESCR("multiply");
-DATA(insert OID = 142 (  int4fac           PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  int4fac - ));
+DATA(insert OID = 142 (  int4fac           10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  int4fac - ));
 DESCR("factorial");
-DATA(insert OID = 144 (  int4ne               PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100  int4ne - ));
+DATA(insert OID = 144 (  int4ne               10 PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100  int4ne - ));
 DESCR("not equal");
-DATA(insert OID = 145 (  int2ne               PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100  int2ne - ));
+DATA(insert OID = 145 (  int2ne               10 PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100  int2ne - ));
 DESCR("not equal");
-DATA(insert OID = 146 (  int2gt               PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100  int2gt - ));
+DATA(insert OID = 146 (  int2gt               10 PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100  int2gt - ));
 DESCR("greater-than");
-DATA(insert OID = 147 (  int4gt               PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100  int4gt - ));
+DATA(insert OID = 147 (  int4gt               10 PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100  int4gt - ));
 DESCR("greater-than");
-DATA(insert OID = 148 (  int2le               PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100  int2le - ));
+DATA(insert OID = 148 (  int2le               10 PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100  int2le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 149 (  int4le               PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100  int4le - ));
+DATA(insert OID = 149 (  int4le               10 PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100  int4le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 150 (  int4ge               PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100  int4ge - ));
+DATA(insert OID = 150 (  int4ge               10 PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100  int4ge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 151 (  int2ge               PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100  int2ge - ));
+DATA(insert OID = 151 (  int2ge               10 PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100  int2ge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 152 (  int2mul           PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2mul - ));
+DATA(insert OID = 152 (  int2mul           10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2mul - ));
 DESCR("multiply");
-DATA(insert OID = 153 (  int2div           PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2div - ));
+DATA(insert OID = 153 (  int2div           10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2div - ));
 DESCR("divide");
-DATA(insert OID = 154 (  int4div           PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4div - ));
+DATA(insert OID = 154 (  int4div           10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4div - ));
 DESCR("divide");
-DATA(insert OID = 155 (  int2mod           PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2mod - ));
+DATA(insert OID = 155 (  int2mod           10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2mod - ));
 DESCR("modulus");
-DATA(insert OID = 156 (  int4mod           PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4mod - ));
+DATA(insert OID = 156 (  int4mod           10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4mod - ));
 DESCR("modulus");
-DATA(insert OID = 157 (  textne               PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  textne - ));
+DATA(insert OID = 157 (  textne               10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  textne - ));
 DESCR("not equal");
-DATA(insert OID = 158 (  int24eq           PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100  int24eq - ));
+DATA(insert OID = 158 (  int24eq           10 PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100  int24eq - ));
 DESCR("equal");
-DATA(insert OID = 159 (  int42eq           PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100  int42eq - ));
+DATA(insert OID = 159 (  int42eq           10 PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100  int42eq - ));
 DESCR("equal");
-DATA(insert OID = 160 (  int24lt           PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100  int24lt - ));
+DATA(insert OID = 160 (  int24lt           10 PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100  int24lt - ));
 DESCR("less-than");
-DATA(insert OID = 161 (  int42lt           PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100  int42lt - ));
+DATA(insert OID = 161 (  int42lt           10 PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100  int42lt - ));
 DESCR("less-than");
-DATA(insert OID = 162 (  int24gt           PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100  int24gt - ));
+DATA(insert OID = 162 (  int24gt           10 PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100  int24gt - ));
 DESCR("greater-than");
-DATA(insert OID = 163 (  int42gt           PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100  int42gt - ));
+DATA(insert OID = 163 (  int42gt           10 PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100  int42gt - ));
 DESCR("greater-than");
-DATA(insert OID = 164 (  int24ne           PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100  int24ne - ));
+DATA(insert OID = 164 (  int24ne           10 PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100  int24ne - ));
 DESCR("not equal");
-DATA(insert OID = 165 (  int42ne           PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100  int42ne - ));
+DATA(insert OID = 165 (  int42ne           10 PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100  int42ne - ));
 DESCR("not equal");
-DATA(insert OID = 166 (  int24le           PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100  int24le - ));
+DATA(insert OID = 166 (  int24le           10 PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100  int24le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 167 (  int42le           PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100  int42le - ));
+DATA(insert OID = 167 (  int42le           10 PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100  int42le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 168 (  int24ge           PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100  int24ge - ));
+DATA(insert OID = 168 (  int24ge           10 PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100  int24ge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 169 (  int42ge           PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100  int42ge - ));
+DATA(insert OID = 169 (  int42ge           10 PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100  int42ge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 170 (  int24mul           PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100  int24mul - ));
+DATA(insert OID = 170 (  int24mul           10 PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100  int24mul - ));
 DESCR("multiply");
-DATA(insert OID = 171 (  int42mul           PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100  int42mul - ));
+DATA(insert OID = 171 (  int42mul           10 PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100  int42mul - ));
 DESCR("multiply");
-DATA(insert OID = 172 (  int24div           PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100  int24div - ));
+DATA(insert OID = 172 (  int24div           10 PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100  int24div - ));
 DESCR("divide");
-DATA(insert OID = 173 (  int42div           PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100  int42div - ));
+DATA(insert OID = 173 (  int42div           10 PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100  int42div - ));
 DESCR("divide");
-DATA(insert OID = 174 (  int24mod           PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100  int24mod - ));
+DATA(insert OID = 174 (  int24mod           10 PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100  int24mod - ));
 DESCR("modulus");
-DATA(insert OID = 175 (  int42mod           PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100  int42mod - ));
+DATA(insert OID = 175 (  int42mod           10 PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100  int42mod - ));
 DESCR("modulus");
-DATA(insert OID = 176 (  int2pl               PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2pl - ));
+DATA(insert OID = 176 (  int2pl               10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2pl - ));
 DESCR("add");
-DATA(insert OID = 177 (  int4pl               PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4pl - ));
+DATA(insert OID = 177 (  int4pl               10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4pl - ));
 DESCR("add");
-DATA(insert OID = 178 (  int24pl           PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100  int24pl - ));
+DATA(insert OID = 178 (  int24pl           10 PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100  int24pl - ));
 DESCR("add");
-DATA(insert OID = 179 (  int42pl           PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100  int42pl - ));
+DATA(insert OID = 179 (  int42pl           10 PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100  int42pl - ));
 DESCR("add");
-DATA(insert OID = 180 (  int2mi               PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2mi - ));
+DATA(insert OID = 180 (  int2mi               10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2mi - ));
 DESCR("subtract");
-DATA(insert OID = 181 (  int4mi               PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4mi - ));
+DATA(insert OID = 181 (  int4mi               10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4mi - ));
 DESCR("subtract");
-DATA(insert OID = 182 (  int24mi           PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100  int24mi - ));
+DATA(insert OID = 182 (  int24mi           10 PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100  int24mi - ));
 DESCR("subtract");
-DATA(insert OID = 183 (  int42mi           PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100  int42mi - ));
+DATA(insert OID = 183 (  int42mi           10 PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100  int42mi - ));
 DESCR("subtract");
-DATA(insert OID = 184 (  oideq               PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100  oideq - ));
+DATA(insert OID = 184 (  oideq               10 PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100  oideq - ));
 DESCR("equal");
-DATA(insert OID = 185 (  oidne               PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100  oidne - ));
+DATA(insert OID = 185 (  oidne               10 PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100  oidne - ));
 DESCR("not equal");
-DATA(insert OID = 186 (  box_same           PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_same - ));
+DATA(insert OID = 186 (  box_same           10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_same - ));
 DESCR("same as");
-DATA(insert OID = 187 (  box_contain       PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_contain - ));
+DATA(insert OID = 187 (  box_contain       10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_contain - ));
 DESCR("contains");
-DATA(insert OID = 188 (  box_left           PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_left - ));
+DATA(insert OID = 188 (  box_left           10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_left - ));
 DESCR("is left of");
-DATA(insert OID = 189 (  box_overleft       PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_overleft - ));
+DATA(insert OID = 189 (  box_overleft       10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_overleft - ));
 DESCR("overlaps, but does not extend to right of");
-DATA(insert OID = 190 (  box_overright       PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_overright - ));
+DATA(insert OID = 190 (  box_overright       10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_overright - ));
 DESCR("overlaps, but does not extend to left of");
-DATA(insert OID = 191 (  box_right           PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_right - ));
+DATA(insert OID = 191 (  box_right           10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_right - ));
 DESCR("is right of");
-DATA(insert OID = 192 (  box_contained       PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_contained - ));
+DATA(insert OID = 192 (  box_contained       10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100  box_contained - ));
 DESCR("contained in");
-DATA(insert OID = 193 (  rt_box_union       PGUID 12 f t t t 2 f 603 "603 603" 100 0 0 100  rt_box_union - ));
+DATA(insert OID = 193 (  rt_box_union       10 PGUID 12 f t t t 2 f 603 "603 603" 100 0 0 100  rt_box_union - ));
 DESCR("r-tree");
-DATA(insert OID = 194 (  rt_box_inter       PGUID 12 f t t t 2 f 603 "603 603" 100 0 0 100  rt_box_inter - ));
+DATA(insert OID = 194 (  rt_box_inter       10 PGUID 12 f t t t 2 f 603 "603 603" 100 0 0 100  rt_box_inter - ));
 DESCR("r-tree");
-DATA(insert OID = 195 (  rt_box_size       PGUID 12 f t t t 2 f 700 "603 700" 100 0 0 100  rt_box_size - ));
+DATA(insert OID = 195 (  rt_box_size       10 PGUID 12 f t t t 2 f 700 "603 700" 100 0 0 100  rt_box_size - ));
 DESCR("r-tree");
-DATA(insert OID = 196 (  rt_bigbox_size    PGUID 12 f t t t 2 f 700 "603 700" 100 0 0 100  rt_bigbox_size - ));
+DATA(insert OID = 196 (  rt_bigbox_size    10 PGUID 12 f t t t 2 f 700 "603 700" 100 0 0 100  rt_bigbox_size - ));
 DESCR("r-tree");
-DATA(insert OID = 197 (  rt_poly_union       PGUID 12 f t t t 2 f 604 "604 604" 100 0 0 100  rt_poly_union - ));
+DATA(insert OID = 197 (  rt_poly_union       10 PGUID 12 f t t t 2 f 604 "604 604" 100 0 0 100  rt_poly_union - ));
 DESCR("r-tree");
-DATA(insert OID = 198 (  rt_poly_inter       PGUID 12 f t t t 2 f 604 "604 604" 100 0 0 100  rt_poly_inter - ));
+DATA(insert OID = 198 (  rt_poly_inter       10 PGUID 12 f t t t 2 f 604 "604 604" 100 0 0 100  rt_poly_inter - ));
 DESCR("r-tree");
-DATA(insert OID = 199 (  rt_poly_size       PGUID 12 f t t t 2 f 23 "604 700" 100 0 0 100  rt_poly_size - ));
+DATA(insert OID = 199 (  rt_poly_size       10 PGUID 12 f t t t 2 f 23 "604 700" 100 0 0 100  rt_poly_size - ));
 DESCR("r-tree");

 /* OIDS 200 - 299 */

-DATA(insert OID = 200 (  float4in           PGUID 12 f t t t 1 f 700 "0" 100 0 0 100  float4in - ));
+DATA(insert OID = 200 (  float4in           10 PGUID 12 f t t t 1 f 700 "0" 100 0 0 100  float4in - ));
 DESCR("(internal)");
-DATA(insert OID = 201 (  float4out           PGUID 12 f t t t 1 f 23    "700" 100 0 0 100  float4out - ));
+DATA(insert OID = 201 (  float4out           10 PGUID 12 f t t t 1 f 23    "700" 100 0 0 100  float4out - ));
 DESCR("(internal)");
-DATA(insert OID = 202 (  float4mul           PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100  float4mul - ));
+DATA(insert OID = 202 (  float4mul           10 PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100  float4mul - ));
 DESCR("multiply");
-DATA(insert OID = 203 (  float4div           PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100  float4div - ));
+DATA(insert OID = 203 (  float4div           10 PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100  float4div - ));
 DESCR("divide");
-DATA(insert OID = 204 (  float4pl           PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100  float4pl - ));
+DATA(insert OID = 204 (  float4pl           10 PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100  float4pl - ));
 DESCR("add");
-DATA(insert OID = 205 (  float4mi           PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100  float4mi - ));
+DATA(insert OID = 205 (  float4mi           10 PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100  float4mi - ));
 DESCR("subtract");
-DATA(insert OID = 206 (  float4um           PGUID 12 f t t t 1 f 700 "700" 100 0 0 100  float4um - ));
+DATA(insert OID = 206 (  float4um           10 PGUID 12 f t t t 1 f 700 "700" 100 0 0 100  float4um - ));
 DESCR("negate");
-DATA(insert OID = 207 (  float4abs           PGUID 12 f t t t 1 f 700 "700" 100 0 0 100  float4abs - ));
+DATA(insert OID = 207 (  float4abs           10 PGUID 12 f t t t 1 f 700 "700" 100 0 0 100  float4abs - ));
 DESCR("absolute value");
-DATA(insert OID = 208 (  float4_accum       PGUID 12 f t t t 2 f 1022 "1022 700" 100 0 0 100  float4_accum - ));
+DATA(insert OID = 208 (  float4_accum       10 PGUID 12 f t t t 2 f 1022 "1022 700" 100 0 0 100  float4_accum - ));
 DESCR("aggregate transition function");
-DATA(insert OID = 209 (  float4larger       PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100  float4larger - ));
+DATA(insert OID = 209 (  float4larger       10 PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100  float4larger - ));
 DESCR("larger of two");
-DATA(insert OID = 211 (  float4smaller       PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100  float4smaller - ));
+DATA(insert OID = 211 (  float4smaller       10 PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100  float4smaller - ));
 DESCR("smaller of two");

-DATA(insert OID = 212 (  int4um               PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  int4um - ));
+DATA(insert OID = 212 (  int4um               10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  int4um - ));
 DESCR("negate");
-DATA(insert OID = 213 (  int2um               PGUID 12 f t t t 1 f 21 "21" 100 0 0 100  int2um - ));
+DATA(insert OID = 213 (  int2um               10 PGUID 12 f t t t 1 f 21 "21" 100 0 0 100  int2um - ));
 DESCR("negate");

-DATA(insert OID = 214 (  float8in           PGUID 12 f t t t 1 f 701 "0" 100 0 0 100  float8in - ));
+DATA(insert OID = 214 (  float8in           10 PGUID 12 f t t t 1 f 701 "0" 100 0 0 100  float8in - ));
 DESCR("(internal)");
-DATA(insert OID = 215 (  float8out           PGUID 12 f t t t 1 f 23    "701" 100 0 0 100  float8out - ));
+DATA(insert OID = 215 (  float8out           10 PGUID 12 f t t t 1 f 23    "701" 100 0 0 100  float8out - ));
 DESCR("(internal)");
-DATA(insert OID = 216 (  float8mul           PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  float8mul - ));
+DATA(insert OID = 216 (  float8mul           10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  float8mul - ));
 DESCR("multiply");
-DATA(insert OID = 217 (  float8div           PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  float8div - ));
+DATA(insert OID = 217 (  float8div           10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  float8div - ));
 DESCR("divide");
-DATA(insert OID = 218 (  float8pl           PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  float8pl - ));
+DATA(insert OID = 218 (  float8pl           10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  float8pl - ));
 DESCR("add");
-DATA(insert OID = 219 (  float8mi           PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  float8mi - ));
+DATA(insert OID = 219 (  float8mi           10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  float8mi - ));
 DESCR("subtract");
-DATA(insert OID = 220 (  float8um           PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  float8um - ));
+DATA(insert OID = 220 (  float8um           10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  float8um - ));
 DESCR("negate");
-DATA(insert OID = 221 (  float8abs           PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  float8abs - ));
+DATA(insert OID = 221 (  float8abs           10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  float8abs - ));
 DESCR("absolute value");
-DATA(insert OID = 222 (  float8_accum       PGUID 12 f t t t 2 f 1022 "1022 701" 100 0 0 100  float8_accum - ));
+DATA(insert OID = 222 (  float8_accum       10 PGUID 12 f t t t 2 f 1022 "1022 701" 100 0 0 100  float8_accum - ));
 DESCR("aggregate transition function");
-DATA(insert OID = 223 (  float8larger       PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  float8larger - ));
+DATA(insert OID = 223 (  float8larger       10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  float8larger - ));
 DESCR("larger of two");
-DATA(insert OID = 224 (  float8smaller       PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  float8smaller - ));
+DATA(insert OID = 224 (  float8smaller       10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  float8smaller - ));
 DESCR("smaller of two");

-DATA(insert OID = 225 (  lseg_center       PGUID 12 f t t t 1 f 600 "601" 100 0 0 100  lseg_center - ));
+DATA(insert OID = 225 (  lseg_center       10 PGUID 12 f t t t 1 f 600 "601" 100 0 0 100  lseg_center - ));
 DESCR("center of");
-DATA(insert OID = 226 (  path_center       PGUID 12 f t t t 1 f 600 "602" 100 0 0 100  path_center - ));
+DATA(insert OID = 226 (  path_center       10 PGUID 12 f t t t 1 f 600 "602" 100 0 0 100  path_center - ));
 DESCR("center of");
-DATA(insert OID = 227 (  poly_center       PGUID 12 f t t t 1 f 600 "604" 100 0 0 100  poly_center - ));
+DATA(insert OID = 227 (  poly_center       10 PGUID 12 f t t t 1 f 600 "604" 100 0 0 100  poly_center - ));
 DESCR("center of");

-DATA(insert OID = 228 (  dround               PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dround - ));
+DATA(insert OID = 228 (  dround               10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dround - ));
 DESCR("round to nearest integer");
-DATA(insert OID = 229 (  dtrunc               PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dtrunc - ));
+DATA(insert OID = 229 (  dtrunc               10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dtrunc - ));
 DESCR("truncate to integer");
-DATA(insert OID = 230 (  dsqrt               PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dsqrt - ));
+DATA(insert OID = 230 (  dsqrt               10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dsqrt - ));
 DESCR("square root");
-DATA(insert OID = 231 (  dcbrt               PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dcbrt - ));
+DATA(insert OID = 231 (  dcbrt               10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dcbrt - ));
 DESCR("cube root");
-DATA(insert OID = 232 (  dpow               PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  dpow - ));
+DATA(insert OID = 232 (  dpow               10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  dpow - ));
 DESCR("exponentiation (x^y)");
-DATA(insert OID = 233 (  dexp               PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dexp - ));
+DATA(insert OID = 233 (  dexp               10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dexp - ));
 DESCR("natural exponential (e^x)");
-DATA(insert OID = 234 (  dlog1               PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dlog1 - ));
+DATA(insert OID = 234 (  dlog1               10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dlog1 - ));
 DESCR("natural logarithm");
-DATA(insert OID = 235 (  float8               PGUID 12 f t t t 1 f 701  "21" 100 0 0 100  i2tod - ));
+DATA(insert OID = 235 (  float8               10 PGUID 12 f t t t 1 f 701  "21" 100 0 0 100  i2tod - ));
 DESCR("convert int2 to float8");
-DATA(insert OID = 236 (  float4               PGUID 12 f t t t 1 f 700  "21" 100 0 0 100  i2tof - ));
+DATA(insert OID = 236 (  float4               10 PGUID 12 f t t t 1 f 700  "21" 100 0 0 100  i2tof - ));
 DESCR("convert int2 to float4");
-DATA(insert OID = 237 (  int2               PGUID 12 f t t t 1 f  21 "701" 100 0 0 100  dtoi2 - ));
+DATA(insert OID = 237 (  int2               10 PGUID 12 f t t t 1 f  21 "701" 100 0 0 100  dtoi2 - ));
 DESCR("convert float8 to int2");
-DATA(insert OID = 238 (  int2               PGUID 12 f t t t 1 f  21 "700" 100 0 0 100  ftoi2 - ));
+DATA(insert OID = 238 (  int2               10 PGUID 12 f t t t 1 f  21 "700" 100 0 0 100  ftoi2 - ));
 DESCR("convert float4 to int2");
-DATA(insert OID = 239 (  line_distance       PGUID 12 f t t t 2 f 701 "628 628" 100 0 0 100  line_distance - ));
+DATA(insert OID = 239 (  line_distance       10 PGUID 12 f t t t 2 f 701 "628 628" 100 0 0 100  line_distance - ));
 DESCR("distance between");

-DATA(insert OID = 240 (  nabstimein           PGUID 12 f t f t 1 f 702 "0" 100 0 0 100  nabstimein - ));
+DATA(insert OID = 240 (  nabstimein           10 PGUID 12 f t f t 1 f 702 "0" 100 0 0 100  nabstimein - ));
 DESCR("(internal)");
-DATA(insert OID = 241 (  nabstimeout       PGUID 12 f t f t 1 f 23    "0" 100 0 0 100  nabstimeout - ));
+DATA(insert OID = 241 (  nabstimeout       10 PGUID 12 f t f t 1 f 23    "0" 100 0 0 100  nabstimeout - ));
 DESCR("(internal)");
-DATA(insert OID = 242 (  reltimein           PGUID 12 f t f t 1 f 703 "0" 100 0 0 100  reltimein - ));
+DATA(insert OID = 242 (  reltimein           10 PGUID 12 f t f t 1 f 703 "0" 100 0 0 100  reltimein - ));
 DESCR("(internal)");
-DATA(insert OID = 243 (  reltimeout           PGUID 12 f t f t 1 f 23    "0" 100 0 0 100  reltimeout - ));
+DATA(insert OID = 243 (  reltimeout           10 PGUID 12 f t f t 1 f 23    "0" 100 0 0 100  reltimeout - ));
 DESCR("(internal)");
-DATA(insert OID = 244 (  timepl               PGUID 12 f t t t 2 f 702 "702 703" 100 0 0 100  timepl - ));
+DATA(insert OID = 244 (  timepl               10 PGUID 12 f t t t 2 f 702 "702 703" 100 0 0 100  timepl - ));
 DESCR("add");
-DATA(insert OID = 245 (  timemi               PGUID 12 f t t t 2 f 702 "702 703" 100 0 0 100  timemi - ));
+DATA(insert OID = 245 (  timemi               10 PGUID 12 f t t t 2 f 702 "702 703" 100 0 0 100  timemi - ));
 DESCR("subtract");
-DATA(insert OID = 246 (  tintervalin       PGUID 12 f t f t 1 f 704 "0" 100 0 0 100  tintervalin - ));
+DATA(insert OID = 246 (  tintervalin       10 PGUID 12 f t f t 1 f 704 "0" 100 0 0 100  tintervalin - ));
 DESCR("(internal)");
-DATA(insert OID = 247 (  tintervalout       PGUID 12 f t f t 1 f 23    "0" 100 0 0 100  tintervalout - ));
+DATA(insert OID = 247 (  tintervalout       10 PGUID 12 f t f t 1 f 23    "0" 100 0 0 100  tintervalout - ));
 DESCR("(internal)");
-DATA(insert OID = 248 (  intinterval       PGUID 12 f t t t 2 f 16 "702 704" 100 0 0 100  intinterval - ));
+DATA(insert OID = 248 (  intinterval       10 PGUID 12 f t t t 2 f 16 "702 704" 100 0 0 100  intinterval - ));
 DESCR("abstime in tinterval");
-DATA(insert OID = 249 (  tintervalrel       PGUID 12 f t t t 1 f 703 "704" 100 0 0 100  tintervalrel - ));
+DATA(insert OID = 249 (  tintervalrel       10 PGUID 12 f t t t 1 f 703 "704" 100 0 0 100  tintervalrel - ));
 DESCR("");
-DATA(insert OID = 250 (  timenow           PGUID 12 f t f t 0 f 702 "0" 100 0 0 100  timenow - ));
+DATA(insert OID = 250 (  timenow           10 PGUID 12 f t f t 0 f 702 "0" 100 0 0 100  timenow - ));
 DESCR("Current date and time (abstime)");
-DATA(insert OID = 251 (  abstimeeq           PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100  abstimeeq - ));
+DATA(insert OID = 251 (  abstimeeq           10 PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100  abstimeeq - ));
 DESCR("equal");
-DATA(insert OID = 252 (  abstimene           PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100  abstimene - ));
+DATA(insert OID = 252 (  abstimene           10 PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100  abstimene - ));
 DESCR("not equal");
-DATA(insert OID = 253 (  abstimelt           PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100  abstimelt - ));
+DATA(insert OID = 253 (  abstimelt           10 PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100  abstimelt - ));
 DESCR("less-than");
-DATA(insert OID = 254 (  abstimegt           PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100  abstimegt - ));
+DATA(insert OID = 254 (  abstimegt           10 PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100  abstimegt - ));
 DESCR("greater-than");
-DATA(insert OID = 255 (  abstimele           PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100  abstimele - ));
+DATA(insert OID = 255 (  abstimele           10 PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100  abstimele - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 256 (  abstimege           PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100  abstimege - ));
+DATA(insert OID = 256 (  abstimege           10 PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100  abstimege - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 257 (  reltimeeq           PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100  reltimeeq - ));
+DATA(insert OID = 257 (  reltimeeq           10 PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100  reltimeeq - ));
 DESCR("equal");
-DATA(insert OID = 258 (  reltimene           PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100  reltimene - ));
+DATA(insert OID = 258 (  reltimene           10 PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100  reltimene - ));
 DESCR("not equal");
-DATA(insert OID = 259 (  reltimelt           PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100  reltimelt - ));
+DATA(insert OID = 259 (  reltimelt           10 PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100  reltimelt - ));
 DESCR("less-than");
-DATA(insert OID = 260 (  reltimegt           PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100  reltimegt - ));
+DATA(insert OID = 260 (  reltimegt           10 PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100  reltimegt - ));
 DESCR("greater-than");
-DATA(insert OID = 261 (  reltimele           PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100  reltimele - ));
+DATA(insert OID = 261 (  reltimele           10 PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100  reltimele - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 262 (  reltimege           PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100  reltimege - ));
+DATA(insert OID = 262 (  reltimege           10 PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100  reltimege - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 263 (  tintervalsame       PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervalsame - ));
+DATA(insert OID = 263 (  tintervalsame       10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervalsame - ));
 DESCR("same as");
-DATA(insert OID = 264 (  tintervalct       PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervalct - ));
+DATA(insert OID = 264 (  tintervalct       10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervalct - ));
 DESCR("less-than");
-DATA(insert OID = 265 (  tintervalov       PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervalov - ));
+DATA(insert OID = 265 (  tintervalov       10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervalov - ));
 DESCR("overlaps");
-DATA(insert OID = 266 (  tintervalleneq    PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100  tintervalleneq - ));
+DATA(insert OID = 266 (  tintervalleneq    10 PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100  tintervalleneq - ));
 DESCR("length equal");
-DATA(insert OID = 267 (  tintervallenne    PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100  tintervallenne - ));
+DATA(insert OID = 267 (  tintervallenne    10 PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100  tintervallenne - ));
 DESCR("length not equal to");
-DATA(insert OID = 268 (  tintervallenlt    PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100  tintervallenlt - ));
+DATA(insert OID = 268 (  tintervallenlt    10 PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100  tintervallenlt - ));
 DESCR("length less-than");
-DATA(insert OID = 269 (  tintervallengt    PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100  tintervallengt - ));
+DATA(insert OID = 269 (  tintervallengt    10 PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100  tintervallengt - ));
 DESCR("length greater-than");
-DATA(insert OID = 270 (  tintervallenle    PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100  tintervallenle - ));
+DATA(insert OID = 270 (  tintervallenle    10 PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100  tintervallenle - ));
 DESCR("length less-than-or-equal");
-DATA(insert OID = 271 (  tintervallenge    PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100  tintervallenge - ));
+DATA(insert OID = 271 (  tintervallenge    10 PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100  tintervallenge - ));
 DESCR("length greater-than-or-equal");
-DATA(insert OID = 272 (  tintervalstart    PGUID 12 f t t t 1 f 702 "704" 100 0 0 100  tintervalstart - ));
+DATA(insert OID = 272 (  tintervalstart    10 PGUID 12 f t t t 1 f 702 "704" 100 0 0 100  tintervalstart - ));
 DESCR("start of interval");
-DATA(insert OID = 273 (  tintervalend       PGUID 12 f t t t 1 f 702 "704" 100 0 0 100  tintervalend - ));
+DATA(insert OID = 273 (  tintervalend       10 PGUID 12 f t t t 1 f 702 "704" 100 0 0 100  tintervalend - ));
 DESCR("");
-DATA(insert OID = 274 (  timeofday           PGUID 12 f t f t 0 f 25 "0" 100 0 0 100  timeofday - ));
+DATA(insert OID = 274 (  timeofday           10 PGUID 12 f t f t 0 f 25 "0" 100 0 0 100  timeofday - ));
 DESCR("Current date and time with microseconds");
-DATA(insert OID = 275 (  isfinite           PGUID 12 f t t t 1 f 16 "702" 100 0 0 100  abstime_finite - ));
+DATA(insert OID = 275 (  isfinite           10 PGUID 12 f t t t 1 f 16 "702" 100 0 0 100  abstime_finite - ));
 DESCR("");

-DATA(insert OID = 276 (  int2fac           PGUID 12 f t t t 1 f 23 "21" 100 0 0 100  int2fac - ));
+DATA(insert OID = 276 (  int2fac           10 PGUID 12 f t t t 1 f 23 "21" 100 0 0 100  int2fac - ));
 DESCR("factorial");

-DATA(insert OID = 277 (  inter_sl           PGUID 12 f t t t 2 f 16 "601 628" 100 0 0 100  inter_sl - ));
+DATA(insert OID = 277 (  inter_sl           10 PGUID 12 f t t t 2 f 16 "601 628" 100 0 0 100  inter_sl - ));
 DESCR("");
-DATA(insert OID = 278 (  inter_lb           PGUID 12 f t t t 2 f 16 "628 603" 100 0 0 100  inter_lb - ));
+DATA(insert OID = 278 (  inter_lb           10 PGUID 12 f t t t 2 f 16 "628 603" 100 0 0 100  inter_lb - ));
 DESCR("");

-DATA(insert OID = 279 (  float48mul           PGUID 12 f t t t 2 f 701 "700 701" 100 0 0 100  float48mul - ));
+DATA(insert OID = 279 (  float48mul           10 PGUID 12 f t t t 2 f 701 "700 701" 100 0 0 100  float48mul - ));
 DESCR("multiply");
-DATA(insert OID = 280 (  float48div           PGUID 12 f t t t 2 f 701 "700 701" 100 0 0 100  float48div - ));
+DATA(insert OID = 280 (  float48div           10 PGUID 12 f t t t 2 f 701 "700 701" 100 0 0 100  float48div - ));
 DESCR("divide");
-DATA(insert OID = 281 (  float48pl           PGUID 12 f t t t 2 f 701 "700 701" 100 0 0 100  float48pl - ));
+DATA(insert OID = 281 (  float48pl           10 PGUID 12 f t t t 2 f 701 "700 701" 100 0 0 100  float48pl - ));
 DESCR("add");
-DATA(insert OID = 282 (  float48mi           PGUID 12 f t t t 2 f 701 "700 701" 100 0 0 100  float48mi - ));
+DATA(insert OID = 282 (  float48mi           10 PGUID 12 f t t t 2 f 701 "700 701" 100 0 0 100  float48mi - ));
 DESCR("subtract");
-DATA(insert OID = 283 (  float84mul           PGUID 12 f t t t 2 f 701 "701 700" 100 0 0 100  float84mul - ));
+DATA(insert OID = 283 (  float84mul           10 PGUID 12 f t t t 2 f 701 "701 700" 100 0 0 100  float84mul - ));
 DESCR("multiply");
-DATA(insert OID = 284 (  float84div           PGUID 12 f t t t 2 f 701 "701 700" 100 0 0 100  float84div - ));
+DATA(insert OID = 284 (  float84div           10 PGUID 12 f t t t 2 f 701 "701 700" 100 0 0 100  float84div - ));
 DESCR("divide");
-DATA(insert OID = 285 (  float84pl           PGUID 12 f t t t 2 f 701 "701 700" 100 0 0 100  float84pl - ));
+DATA(insert OID = 285 (  float84pl           10 PGUID 12 f t t t 2 f 701 "701 700" 100 0 0 100  float84pl - ));
 DESCR("add");
-DATA(insert OID = 286 (  float84mi           PGUID 12 f t t t 2 f 701 "701 700" 100 0 0 100  float84mi - ));
+DATA(insert OID = 286 (  float84mi           10 PGUID 12 f t t t 2 f 701 "701 700" 100 0 0 100  float84mi - ));
 DESCR("subtract");

-DATA(insert OID = 287 (  float4eq           PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100  float4eq - ));
+DATA(insert OID = 287 (  float4eq           10 PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100  float4eq - ));
 DESCR("equal");
-DATA(insert OID = 288 (  float4ne           PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100  float4ne - ));
+DATA(insert OID = 288 (  float4ne           10 PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100  float4ne - ));
 DESCR("not equal");
-DATA(insert OID = 289 (  float4lt           PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100  float4lt - ));
+DATA(insert OID = 289 (  float4lt           10 PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100  float4lt - ));
 DESCR("less-than");
-DATA(insert OID = 290 (  float4le           PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100  float4le - ));
+DATA(insert OID = 290 (  float4le           10 PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100  float4le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 291 (  float4gt           PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100  float4gt - ));
+DATA(insert OID = 291 (  float4gt           10 PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100  float4gt - ));
 DESCR("greater-than");
-DATA(insert OID = 292 (  float4ge           PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100  float4ge - ));
+DATA(insert OID = 292 (  float4ge           10 PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100  float4ge - ));
 DESCR("greater-than-or-equal");

-DATA(insert OID = 293 (  float8eq           PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100  float8eq - ));
+DATA(insert OID = 293 (  float8eq           10 PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100  float8eq - ));
 DESCR("equal");
-DATA(insert OID = 294 (  float8ne           PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100  float8ne - ));
+DATA(insert OID = 294 (  float8ne           10 PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100  float8ne - ));
 DESCR("not equal");
-DATA(insert OID = 295 (  float8lt           PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100  float8lt - ));
+DATA(insert OID = 295 (  float8lt           10 PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100  float8lt - ));
 DESCR("less-than");
-DATA(insert OID = 296 (  float8le           PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100  float8le - ));
+DATA(insert OID = 296 (  float8le           10 PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100  float8le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 297 (  float8gt           PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100  float8gt - ));
+DATA(insert OID = 297 (  float8gt           10 PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100  float8gt - ));
 DESCR("greater-than");
-DATA(insert OID = 298 (  float8ge           PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100  float8ge - ));
+DATA(insert OID = 298 (  float8ge           10 PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100  float8ge - ));
 DESCR("greater-than-or-equal");

-DATA(insert OID = 299 (  float48eq           PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100  float48eq - ));
+DATA(insert OID = 299 (  float48eq           10 PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100  float48eq - ));
 DESCR("equal");

 /* OIDS 300 - 399 */

-DATA(insert OID = 300 (  float48ne           PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100  float48ne - ));
+DATA(insert OID = 300 (  float48ne           10 PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100  float48ne - ));
 DESCR("not equal");
-DATA(insert OID = 301 (  float48lt           PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100  float48lt - ));
+DATA(insert OID = 301 (  float48lt           10 PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100  float48lt - ));
 DESCR("less-than");
-DATA(insert OID = 302 (  float48le           PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100  float48le - ));
+DATA(insert OID = 302 (  float48le           10 PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100  float48le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 303 (  float48gt           PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100  float48gt - ));
+DATA(insert OID = 303 (  float48gt           10 PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100  float48gt - ));
 DESCR("greater-than");
-DATA(insert OID = 304 (  float48ge           PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100  float48ge - ));
+DATA(insert OID = 304 (  float48ge           10 PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100  float48ge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 305 (  float84eq           PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100  float84eq - ));
+DATA(insert OID = 305 (  float84eq           10 PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100  float84eq - ));
 DESCR("equal");
-DATA(insert OID = 306 (  float84ne           PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100  float84ne - ));
+DATA(insert OID = 306 (  float84ne           10 PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100  float84ne - ));
 DESCR("not equal");
-DATA(insert OID = 307 (  float84lt           PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100  float84lt - ));
+DATA(insert OID = 307 (  float84lt           10 PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100  float84lt - ));
 DESCR("less-than");
-DATA(insert OID = 308 (  float84le           PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100  float84le - ));
+DATA(insert OID = 308 (  float84le           10 PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100  float84le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 309 (  float84gt           PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100  float84gt - ));
+DATA(insert OID = 309 (  float84gt           10 PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100  float84gt - ));
 DESCR("greater-than");
-DATA(insert OID = 310 (  float84ge           PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100  float84ge - ));
+DATA(insert OID = 310 (  float84ge           10 PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100  float84ge - ));
 DESCR("greater-than-or-equal");

-DATA(insert OID = 311 (  float8               PGUID 12 f t t t 1 f 701 "700" 100 0 0 100  ftod - ));
+DATA(insert OID = 311 (  float8               10 PGUID 12 f t t t 1 f 701 "700" 100 0 0 100  ftod - ));
 DESCR("convert float4 to float8");
-DATA(insert OID = 312 (  float4               PGUID 12 f t t t 1 f 700 "701" 100 0 0 100  dtof - ));
+DATA(insert OID = 312 (  float4               10 PGUID 12 f t t t 1 f 700 "701" 100 0 0 100  dtof - ));
 DESCR("convert float8 to float4");
-DATA(insert OID = 313 (  int4               PGUID 12 f t t t 1 f  23  "21" 100 0 0 100  i2toi4 - ));
+DATA(insert OID = 313 (  int4               10 PGUID 12 f t t t 1 f  23  "21" 100 0 0 100  i2toi4 - ));
 DESCR("convert int2 to int4");
-DATA(insert OID = 314 (  int2               PGUID 12 f t t t 1 f  21  "23" 100 0 0 100  i4toi2 - ));
+DATA(insert OID = 314 (  int2               10 PGUID 12 f t t t 1 f  21  "23" 100 0 0 100  i4toi2 - ));
 DESCR("convert int4 to int2");
-DATA(insert OID = 315 (  int2vectoreq       PGUID 12 f t t t 2 f  16  "22 22" 100 0 0 100  int2vectoreq - ));
+DATA(insert OID = 315 (  int2vectoreq       10 PGUID 12 f t t t 2 f  16  "22 22" 100 0 0 100  int2vectoreq - ));
 DESCR("equal");
-DATA(insert OID = 316 (  float8               PGUID 12 f t t t 1 f 701  "23" 100 0 0 100  i4tod - ));
+DATA(insert OID = 316 (  float8               10 PGUID 12 f t t t 1 f 701  "23" 100 0 0 100  i4tod - ));
 DESCR("convert int4 to float8");
-DATA(insert OID = 317 (  int4               PGUID 12 f t t t 1 f  23 "701" 100 0 0 100  dtoi4 - ));
+DATA(insert OID = 317 (  int4               10 PGUID 12 f t t t 1 f  23 "701" 100 0 0 100  dtoi4 - ));
 DESCR("convert float8 to int4");
-DATA(insert OID = 318 (  float4               PGUID 12 f t t t 1 f 700  "23" 100 0 0 100  i4tof - ));
+DATA(insert OID = 318 (  float4               10 PGUID 12 f t t t 1 f 700  "23" 100 0 0 100  i4tof - ));
 DESCR("convert int4 to float4");
-DATA(insert OID = 319 (  int4               PGUID 12 f t t t 1 f  23 "700" 100 0 0 100  ftoi4 - ));
+DATA(insert OID = 319 (  int4               10 PGUID 12 f t t t 1 f  23 "700" 100 0 0 100  ftoi4 - ));
 DESCR("convert float4 to int4");

-DATA(insert OID = 320 (  rtinsert           PGUID 12 f t f t 5 f 23 "0 0 0 0 0" 100 0 0 100  rtinsert - ));
+DATA(insert OID = 320 (  rtinsert           10 PGUID 12 f t f t 5 f 23 "0 0 0 0 0" 100 0 0 100  rtinsert - ));
 DESCR("r-tree(internal)");
-DATA(insert OID = 322 (  rtgettuple           PGUID 12 f t f t 2 f 23 "0 0" 100 0 0 100  rtgettuple - ));
+DATA(insert OID = 322 (  rtgettuple           10 PGUID 12 f t f t 2 f 23 "0 0" 100 0 0 100  rtgettuple - ));
 DESCR("r-tree(internal)");
-DATA(insert OID = 323 (  rtbuild           PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  rtbuild - ));
+DATA(insert OID = 323 (  rtbuild           10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  rtbuild - ));
 DESCR("r-tree(internal)");
-DATA(insert OID = 324 (  rtbeginscan       PGUID 12 f t f t 4 f 23 "0 0 0 0" 100 0 0 100  rtbeginscan - ));
+DATA(insert OID = 324 (  rtbeginscan       10 PGUID 12 f t f t 4 f 23 "0 0 0 0" 100 0 0 100  rtbeginscan - ));
 DESCR("r-tree(internal)");
-DATA(insert OID = 325 (  rtendscan           PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  rtendscan - ));
+DATA(insert OID = 325 (  rtendscan           10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  rtendscan - ));
 DESCR("r-tree(internal)");
-DATA(insert OID = 326 (  rtmarkpos           PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  rtmarkpos - ));
+DATA(insert OID = 326 (  rtmarkpos           10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  rtmarkpos - ));
 DESCR("r-tree(internal)");
-DATA(insert OID = 327 (  rtrestrpos           PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  rtrestrpos - ));
+DATA(insert OID = 327 (  rtrestrpos           10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  rtrestrpos - ));
 DESCR("r-tree(internal)");
-DATA(insert OID = 328 (  rtrescan           PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  rtrescan - ));
+DATA(insert OID = 328 (  rtrescan           10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  rtrescan - ));
 DESCR("r-tree(internal)");
-DATA(insert OID = 321 (  rtbulkdelete       PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  rtbulkdelete - ));
+DATA(insert OID = 321 (  rtbulkdelete       10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  rtbulkdelete - ));
 DESCR("r-tree(internal)");
-DATA(insert OID = 1265 (  rtcostestimate   PGUID 12 f t f t 8 f 0 "0 0 0 0 0 0 0 0" 100 0 0 100  rtcostestimate - ));
+DATA(insert OID = 1265 (  rtcostestimate   10 PGUID 12 f t f t 8 f 0 "0 0 0 0 0 0 0 0" 100 0 0 100  rtcostestimate -
));
 DESCR("r-tree(internal)");

-DATA(insert OID = 330 (  btgettuple           PGUID 12 f t f t 2 f 23 "0 0" 100 0 0 100  btgettuple - ));
+DATA(insert OID = 330 (  btgettuple           10 PGUID 12 f t f t 2 f 23 "0 0" 100 0 0 100  btgettuple - ));
 DESCR("btree(internal)");
-DATA(insert OID = 331 (  btinsert           PGUID 12 f t f t 5 f 23 "0 0 0 0 0" 100 0 0 100  btinsert - ));
+DATA(insert OID = 331 (  btinsert           10 PGUID 12 f t f t 5 f 23 "0 0 0 0 0" 100 0 0 100  btinsert - ));
 DESCR("btree(internal)");
-DATA(insert OID = 333 (  btbeginscan       PGUID 12 f t f t 4 f 23 "0 0 0 0" 100 0 0 100  btbeginscan - ));
+DATA(insert OID = 333 (  btbeginscan       10 PGUID 12 f t f t 4 f 23 "0 0 0 0" 100 0 0 100  btbeginscan - ));
 DESCR("btree(internal)");
-DATA(insert OID = 334 (  btrescan           PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  btrescan - ));
+DATA(insert OID = 334 (  btrescan           10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  btrescan - ));
 DESCR("btree(internal)");
-DATA(insert OID = 335 (  btendscan           PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  btendscan - ));
+DATA(insert OID = 335 (  btendscan           10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  btendscan - ));
 DESCR("btree(internal)");
-DATA(insert OID = 336 (  btmarkpos           PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  btmarkpos - ));
+DATA(insert OID = 336 (  btmarkpos           10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  btmarkpos - ));
 DESCR("btree(internal)");
-DATA(insert OID = 337 (  btrestrpos           PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  btrestrpos - ));
+DATA(insert OID = 337 (  btrestrpos           10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  btrestrpos - ));
 DESCR("btree(internal)");
-DATA(insert OID = 338 (  btbuild           PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  btbuild - ));
+DATA(insert OID = 338 (  btbuild           10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  btbuild - ));
 DESCR("btree(internal)");
-DATA(insert OID = 332 (  btbulkdelete       PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  btbulkdelete - ));
+DATA(insert OID = 332 (  btbulkdelete       10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  btbulkdelete - ));
 DESCR("btree(internal)");
-DATA(insert OID = 1268 (  btcostestimate   PGUID 12 f t f t 8 f 0 "0 0 0 0 0 0 0 0" 100 0 0 100  btcostestimate - ));
+DATA(insert OID = 1268 (  btcostestimate   10 PGUID 12 f t f t 8 f 0 "0 0 0 0 0 0 0 0" 100 0 0 100  btcostestimate -
));
 DESCR("btree(internal)");

-DATA(insert OID = 339 (  poly_same           PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100  poly_same - ));
+DATA(insert OID = 339 (  poly_same           10 PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100  poly_same - ));
 DESCR("same as");
-DATA(insert OID = 340 (  poly_contain       PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100  poly_contain - ));
+DATA(insert OID = 340 (  poly_contain       10 PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100  poly_contain - ));
 DESCR("contains");
-DATA(insert OID = 341 (  poly_left           PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100  poly_left - ));
+DATA(insert OID = 341 (  poly_left           10 PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100  poly_left - ));
 DESCR("is left of");
-DATA(insert OID = 342 (  poly_overleft       PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100  poly_overleft - ));
+DATA(insert OID = 342 (  poly_overleft       10 PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100  poly_overleft - ));
 DESCR("overlaps, but does not extend to right of");
-DATA(insert OID = 343 (  poly_overright    PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100  poly_overright - ));
+DATA(insert OID = 343 (  poly_overright    10 PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100  poly_overright - ));
 DESCR("overlaps, but does not extend to left of");
-DATA(insert OID = 344 (  poly_right           PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100  poly_right - ));
+DATA(insert OID = 344 (  poly_right           10 PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100  poly_right - ));
 DESCR("is right of");
-DATA(insert OID = 345 (  poly_contained    PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100  poly_contained - ));
+DATA(insert OID = 345 (  poly_contained    10 PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100  poly_contained - ));
 DESCR("contained in");
-DATA(insert OID = 346 (  poly_overlap       PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100  poly_overlap - ));
+DATA(insert OID = 346 (  poly_overlap       10 PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100  poly_overlap - ));
 DESCR("overlaps");
-DATA(insert OID = 347 (  poly_in           PGUID 12 f t t t 1 f 604 "0" 100 0 0 100  poly_in - ));
+DATA(insert OID = 347 (  poly_in           10 PGUID 12 f t t t 1 f 604 "0" 100 0 0 100  poly_in - ));
 DESCR("(internal)");
-DATA(insert OID = 348 (  poly_out           PGUID 12 f t t t 1 f 23    "0" 100 0 0 100  poly_out - ));
+DATA(insert OID = 348 (  poly_out           10 PGUID 12 f t t t 1 f 23    "0" 100 0 0 100  poly_out - ));
 DESCR("(internal)");

-DATA(insert OID = 350 (  btint2cmp           PGUID 12 f t t t 2 f 23 "21 21" 100 0 0 100  btint2cmp - ));
+DATA(insert OID = 350 (  btint2cmp           10 PGUID 12 f t t t 2 f 23 "21 21" 100 0 0 100  btint2cmp - ));
 DESCR("btree less-equal-greater");
-DATA(insert OID = 351 (  btint4cmp           PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  btint4cmp - ));
+DATA(insert OID = 351 (  btint4cmp           10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  btint4cmp - ));
 DESCR("btree less-equal-greater");
-DATA(insert OID = 842 (  btint8cmp           PGUID 12 f t t t 2 f 23 "20 20" 100 0 0 100  btint8cmp - ));
+DATA(insert OID = 842 (  btint8cmp           10 PGUID 12 f t t t 2 f 23 "20 20" 100 0 0 100  btint8cmp - ));
 DESCR("btree less-equal-greater");
-DATA(insert OID = 354 (  btfloat4cmp       PGUID 12 f t t t 2 f 23 "700 700" 100 0 0 100  btfloat4cmp - ));
+DATA(insert OID = 354 (  btfloat4cmp       10 PGUID 12 f t t t 2 f 23 "700 700" 100 0 0 100  btfloat4cmp - ));
 DESCR("btree less-equal-greater");
-DATA(insert OID = 355 (  btfloat8cmp       PGUID 12 f t t t 2 f 23 "701 701" 100 0 0 100  btfloat8cmp - ));
+DATA(insert OID = 355 (  btfloat8cmp       10 PGUID 12 f t t t 2 f 23 "701 701" 100 0 0 100  btfloat8cmp - ));
 DESCR("btree less-equal-greater");
-DATA(insert OID = 356 (  btoidcmp           PGUID 12 f t t t 2 f 23 "26 26" 100 0 0 100  btoidcmp - ));
+DATA(insert OID = 356 (  btoidcmp           10 PGUID 12 f t t t 2 f 23 "26 26" 100 0 0 100  btoidcmp - ));
 DESCR("btree less-equal-greater");
-DATA(insert OID = 404 (  btoidvectorcmp    PGUID 12 f t t t 2 f 23 "30 30" 100 0 0 100  btoidvectorcmp - ));
+DATA(insert OID = 404 (  btoidvectorcmp    10 PGUID 12 f t t t 2 f 23 "30 30" 100 0 0 100  btoidvectorcmp - ));
 DESCR("btree less-equal-greater");
-DATA(insert OID = 357 (  btabstimecmp       PGUID 12 f t t t 2 f 23 "702 702" 100 0 0 100  btabstimecmp - ));
+DATA(insert OID = 357 (  btabstimecmp       10 PGUID 12 f t t t 2 f 23 "702 702" 100 0 0 100  btabstimecmp - ));
 DESCR("btree less-equal-greater");
-DATA(insert OID = 358 (  btcharcmp           PGUID 12 f t t t 2 f 23 "18 18" 100 0 0 100  btcharcmp - ));
+DATA(insert OID = 358 (  btcharcmp           10 PGUID 12 f t t t 2 f 23 "18 18" 100 0 0 100  btcharcmp - ));
 DESCR("btree less-equal-greater");
-DATA(insert OID = 359 (  btnamecmp           PGUID 12 f t t t 2 f 23 "19 19" 100 0 0 100  btnamecmp - ));
+DATA(insert OID = 359 (  btnamecmp           10 PGUID 12 f t t t 2 f 23 "19 19" 100 0 0 100  btnamecmp - ));
 DESCR("btree less-equal-greater");
-DATA(insert OID = 360 (  bttextcmp           PGUID 12 f t t t 2 f 23 "25 25" 100 0 0 100  bttextcmp - ));
+DATA(insert OID = 360 (  bttextcmp           10 PGUID 12 f t t t 2 f 23 "25 25" 100 0 0 100  bttextcmp - ));
 DESCR("btree less-equal-greater");

-DATA(insert OID = 361 (  lseg_distance       PGUID 12 f t t t 2 f 701 "601 601" 100 0 0 100  lseg_distance - ));
+DATA(insert OID = 361 (  lseg_distance       10 PGUID 12 f t t t 2 f 701 "601 601" 100 0 0 100  lseg_distance - ));
 DESCR("distance between");
-DATA(insert OID = 362 (  lseg_interpt       PGUID 12 f t t t 2 f 600 "601 601" 100 0 0 100  lseg_interpt - ));
+DATA(insert OID = 362 (  lseg_interpt       10 PGUID 12 f t t t 2 f 600 "601 601" 100 0 0 100  lseg_interpt - ));
 DESCR("");
-DATA(insert OID = 363 (  dist_ps           PGUID 12 f t t t 2 f 701 "600 601" 100 0 0 100  dist_ps - ));
+DATA(insert OID = 363 (  dist_ps           10 PGUID 12 f t t t 2 f 701 "600 601" 100 0 0 100  dist_ps - ));
 DESCR("distance between");
-DATA(insert OID = 364 (  dist_pb           PGUID 12 f t t t 2 f 701 "600 603" 100 0 0 100  dist_pb - ));
+DATA(insert OID = 364 (  dist_pb           10 PGUID 12 f t t t 2 f 701 "600 603" 100 0 0 100  dist_pb - ));
 DESCR("distance between point and box");
-DATA(insert OID = 365 (  dist_sb           PGUID 12 f t t t 2 f 701 "601 603" 100 0 0 100  dist_sb - ));
+DATA(insert OID = 365 (  dist_sb           10 PGUID 12 f t t t 2 f 701 "601 603" 100 0 0 100  dist_sb - ));
 DESCR("distance between segment and box");
-DATA(insert OID = 366 (  close_ps           PGUID 12 f t t t 2 f 600 "600 601" 100 0 0 100  close_ps - ));
+DATA(insert OID = 366 (  close_ps           10 PGUID 12 f t t t 2 f 600 "600 601" 100 0 0 100  close_ps - ));
 DESCR("closest point on line segment");
-DATA(insert OID = 367 (  close_pb           PGUID 12 f t t t 2 f 600 "600 603" 100 0 0 100  close_pb - ));
+DATA(insert OID = 367 (  close_pb           10 PGUID 12 f t t t 2 f 600 "600 603" 100 0 0 100  close_pb - ));
 DESCR("closest point on box");
-DATA(insert OID = 368 (  close_sb           PGUID 12 f t t t 2 f 600 "601 603" 100 0 0 100  close_sb - ));
+DATA(insert OID = 368 (  close_sb           10 PGUID 12 f t t t 2 f 600 "601 603" 100 0 0 100  close_sb - ));
 DESCR("closest point to line segment on box");
-DATA(insert OID = 369 (  on_ps               PGUID 12 f t t t 2 f 16 "600 601" 100 0 0 100  on_ps - ));
+DATA(insert OID = 369 (  on_ps               10 PGUID 12 f t t t 2 f 16 "600 601" 100 0 0 100  on_ps - ));
 DESCR("point contained in segment");
-DATA(insert OID = 370 (  path_distance       PGUID 12 f t t t 2 f 701 "602 602" 100 0 0 100  path_distance - ));
+DATA(insert OID = 370 (  path_distance       10 PGUID 12 f t t t 2 f 701 "602 602" 100 0 0 100  path_distance - ));
 DESCR("distance between paths");
-DATA(insert OID = 371 (  dist_ppath           PGUID 12 f t t t 2 f 701 "600 602" 100 0 0 100  dist_ppath - ));
+DATA(insert OID = 371 (  dist_ppath           10 PGUID 12 f t t t 2 f 701 "600 602" 100 0 0 100  dist_ppath - ));
 DESCR("distance between point and path");
-DATA(insert OID = 372 (  on_sb               PGUID 12 f t t t 2 f 16 "601 603" 100 0 0 100  on_sb - ));
+DATA(insert OID = 372 (  on_sb               10 PGUID 12 f t t t 2 f 16 "601 603" 100 0 0 100  on_sb - ));
 DESCR("contained in");
-DATA(insert OID = 373 (  inter_sb           PGUID 12 f t t t 2 f 16 "601 603" 100 0 0 100  inter_sb - ));
+DATA(insert OID = 373 (  inter_sb           10 PGUID 12 f t t t 2 f 16 "601 603" 100 0 0 100  inter_sb - ));
 DESCR("intersects?");

 /* OIDS 400 - 499 */

-DATA(insert OID =  406 (  text               PGUID 12 f t t t 1 f 25 "19" 100 0 0 100 name_text - ));
+DATA(insert OID =  406 (  text               10 PGUID 12 f t t t 1 f 25 "19" 100 0 0 100 name_text - ));
 DESCR("convert name to text");
-DATA(insert OID =  407 (  name               PGUID 12 f t t t 1 f 19 "25" 100 0 0 100 text_name - ));
+DATA(insert OID =  407 (  name               10 PGUID 12 f t t t 1 f 19 "25" 100 0 0 100 text_name - ));
 DESCR("convert text to name");
-DATA(insert OID =  408 (  bpchar           PGUID 12 f t t t 1 f 1042 "19" 100 0 0 100 name_bpchar - ));
+DATA(insert OID =  408 (  bpchar           10 PGUID 12 f t t t 1 f 1042 "19" 100 0 0 100 name_bpchar - ));
 DESCR("convert name to char()");
-DATA(insert OID =  409 (  name               PGUID 12 f t t t 1 f 19 "1042" 100 0 0 100  bpchar_name - ));
+DATA(insert OID =  409 (  name               10 PGUID 12 f t t t 1 f 19 "1042" 100 0 0 100  bpchar_name - ));
 DESCR("convert char() to name");

-DATA(insert OID = 440 (  hashgettuple       PGUID 12 f t f t 2 f 23 "0 0" 100 0 0 100  hashgettuple - ));
+DATA(insert OID = 440 (  hashgettuple       10 PGUID 12 f t f t 2 f 23 "0 0" 100 0 0 100  hashgettuple - ));
 DESCR("hash(internal)");
-DATA(insert OID = 441 (  hashinsert           PGUID 12 f t f t 5 f 23 "0 0 0 0 0" 100 0 0 100  hashinsert - ));
+DATA(insert OID = 441 (  hashinsert           10 PGUID 12 f t f t 5 f 23 "0 0 0 0 0" 100 0 0 100  hashinsert - ));
 DESCR("hash(internal)");
-DATA(insert OID = 443 (  hashbeginscan       PGUID 12 f t f t 4 f 23 "0 0 0 0" 100 0 0 100  hashbeginscan - ));
+DATA(insert OID = 443 (  hashbeginscan       10 PGUID 12 f t f t 4 f 23 "0 0 0 0" 100 0 0 100  hashbeginscan - ));
 DESCR("hash(internal)");
-DATA(insert OID = 444 (  hashrescan           PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  hashrescan - ));
+DATA(insert OID = 444 (  hashrescan           10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  hashrescan - ));
 DESCR("hash(internal)");
-DATA(insert OID = 445 (  hashendscan       PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  hashendscan - ));
+DATA(insert OID = 445 (  hashendscan       10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  hashendscan - ));
 DESCR("hash(internal)");
-DATA(insert OID = 446 (  hashmarkpos       PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  hashmarkpos - ));
+DATA(insert OID = 446 (  hashmarkpos       10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  hashmarkpos - ));
 DESCR("hash(internal)");
-DATA(insert OID = 447 (  hashrestrpos       PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  hashrestrpos - ));
+DATA(insert OID = 447 (  hashrestrpos       10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  hashrestrpos - ));
 DESCR("hash(internal)");
-DATA(insert OID = 448 (  hashbuild           PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  hashbuild - ));
+DATA(insert OID = 448 (  hashbuild           10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  hashbuild - ));
 DESCR("hash(internal)");
-DATA(insert OID = 442 (  hashbulkdelete       PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  hashbulkdelete - ));
+DATA(insert OID = 442 (  hashbulkdelete       10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  hashbulkdelete - ));
 DESCR("hash(internal)");
-DATA(insert OID = 438 (  hashcostestimate  PGUID 12 f t f t 8 f 0 "0 0 0 0 0 0 0 0" 100 0 0 100  hashcostestimate -
));
+DATA(insert OID = 438 (  hashcostestimate  10 PGUID 12 f t f t 8 f 0 "0 0 0 0 0 0 0 0" 100 0 0 100  hashcostestimate -
));
 DESCR("hash(internal)");

-DATA(insert OID = 449 (  hashint2           PGUID 12 f t t t 1 f 23 "21" 100 0 0 100  hashint2 - ));
+DATA(insert OID = 449 (  hashint2           10 PGUID 12 f t t t 1 f 23 "21" 100 0 0 100  hashint2 - ));
 DESCR("hash");
-DATA(insert OID = 450 (  hashint4           PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  hashint4 - ));
+DATA(insert OID = 450 (  hashint4           10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  hashint4 - ));
 DESCR("hash");
-DATA(insert OID = 949 (  hashint8           PGUID 12 f t t t 1 f 23 "20" 100 0 0 100  hashint8 - ));
+DATA(insert OID = 949 (  hashint8           10 PGUID 12 f t t t 1 f 23 "20" 100 0 0 100  hashint8 - ));
 DESCR("hash");
-DATA(insert OID = 451 (  hashfloat4           PGUID 12 f t t t 1 f 23 "700" 100 0 0 100  hashfloat4 - ));
+DATA(insert OID = 451 (  hashfloat4           10 PGUID 12 f t t t 1 f 23 "700" 100 0 0 100  hashfloat4 - ));
 DESCR("hash");
-DATA(insert OID = 452 (  hashfloat8           PGUID 12 f t t t 1 f 23 "701" 100 0 0 100  hashfloat8 - ));
+DATA(insert OID = 452 (  hashfloat8           10 PGUID 12 f t t t 1 f 23 "701" 100 0 0 100  hashfloat8 - ));
 DESCR("hash");
-DATA(insert OID = 453 (  hashoid           PGUID 12 f t t t 1 f 23 "26" 100 0 0 100  hashoid - ));
+DATA(insert OID = 453 (  hashoid           10 PGUID 12 f t t t 1 f 23 "26" 100 0 0 100  hashoid - ));
 DESCR("hash");
-DATA(insert OID = 454 (  hashchar           PGUID 12 f t t t 1 f 23 "18" 100 0 0 100  hashchar - ));
+DATA(insert OID = 454 (  hashchar           10 PGUID 12 f t t t 1 f 23 "18" 100 0 0 100  hashchar - ));
 DESCR("hash");
-DATA(insert OID = 455 (  hashname           PGUID 12 f t t t 1 f 23 "19" 100 0 0 100  hashname - ));
+DATA(insert OID = 455 (  hashname           10 PGUID 12 f t t t 1 f 23 "19" 100 0 0 100  hashname - ));
 DESCR("hash");
-DATA(insert OID = 456 (  hashvarlena       PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  hashvarlena - ));
+DATA(insert OID = 456 (  hashvarlena       10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  hashvarlena - ));
 DESCR("hash any varlena type");
-DATA(insert OID = 457 (  hashoidvector       PGUID 12 f t t t 1 f 23 "30" 100 0 0 100  hashoidvector - ));
+DATA(insert OID = 457 (  hashoidvector       10 PGUID 12 f t t t 1 f 23 "30" 100 0 0 100  hashoidvector - ));
 DESCR("hash");
-DATA(insert OID = 399 (  hashmacaddr       PGUID 12 f t t t 1 f 23 "829" 100 0 0 100  hashmacaddr - ));
+DATA(insert OID = 399 (  hashmacaddr       10 PGUID 12 f t t t 1 f 23 "829" 100 0 0 100  hashmacaddr - ));
 DESCR("hash");
-DATA(insert OID = 458 (  text_larger       PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100  text_larger - ));
+DATA(insert OID = 458 (  text_larger       10 PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100  text_larger - ));
 DESCR("larger of two");
-DATA(insert OID = 459 (  text_smaller       PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100  text_smaller - ));
+DATA(insert OID = 459 (  text_smaller       10 PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100  text_smaller - ));
 DESCR("smaller of two");

-DATA(insert OID = 460 (  int8in               PGUID 12 f t t t 1 f 20 "0" 100 0 0 100  int8in - ));
+DATA(insert OID = 460 (  int8in               10 PGUID 12 f t t t 1 f 20 "0" 100 0 0 100  int8in - ));
 DESCR("(internal)");
-DATA(insert OID = 461 (  int8out           PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  int8out - ));
+DATA(insert OID = 461 (  int8out           10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  int8out - ));
 DESCR("(internal)");
-DATA(insert OID = 462 (  int8um               PGUID 12 f t t t 1 f 20 "20" 100 0 0 100  int8um - ));
+DATA(insert OID = 462 (  int8um               10 PGUID 12 f t t t 1 f 20 "20" 100 0 0 100  int8um - ));
 DESCR("negate");
-DATA(insert OID = 463 (  int8pl               PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8pl - ));
+DATA(insert OID = 463 (  int8pl               10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8pl - ));
 DESCR("add");
-DATA(insert OID = 464 (  int8mi               PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8mi - ));
+DATA(insert OID = 464 (  int8mi               10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8mi - ));
 DESCR("subtract");
-DATA(insert OID = 465 (  int8mul           PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8mul - ));
+DATA(insert OID = 465 (  int8mul           10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8mul - ));
 DESCR("multiply");
-DATA(insert OID = 466 (  int8div           PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8div - ));
+DATA(insert OID = 466 (  int8div           10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8div - ));
 DESCR("divide");
-DATA(insert OID = 467 (  int8eq               PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100  int8eq - ));
+DATA(insert OID = 467 (  int8eq               10 PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100  int8eq - ));
 DESCR("equal");
-DATA(insert OID = 468 (  int8ne               PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100  int8ne - ));
+DATA(insert OID = 468 (  int8ne               10 PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100  int8ne - ));
 DESCR("not equal");
-DATA(insert OID = 469 (  int8lt               PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100  int8lt - ));
+DATA(insert OID = 469 (  int8lt               10 PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100  int8lt - ));
 DESCR("less-than");
-DATA(insert OID = 470 (  int8gt               PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100  int8gt - ));
+DATA(insert OID = 470 (  int8gt               10 PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100  int8gt - ));
 DESCR("greater-than");
-DATA(insert OID = 471 (  int8le               PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100  int8le - ));
+DATA(insert OID = 471 (  int8le               10 PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100  int8le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 472 (  int8ge               PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100  int8ge - ));
+DATA(insert OID = 472 (  int8ge               10 PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100  int8ge - ));
 DESCR("greater-than-or-equal");

-DATA(insert OID = 474 (  int84eq           PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100  int84eq - ));
+DATA(insert OID = 474 (  int84eq           10 PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100  int84eq - ));
 DESCR("equal");
-DATA(insert OID = 475 (  int84ne           PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100  int84ne - ));
+DATA(insert OID = 475 (  int84ne           10 PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100  int84ne - ));
 DESCR("not equal");
-DATA(insert OID = 476 (  int84lt           PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100  int84lt - ));
+DATA(insert OID = 476 (  int84lt           10 PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100  int84lt - ));
 DESCR("less-than");
-DATA(insert OID = 477 (  int84gt           PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100  int84gt - ));
+DATA(insert OID = 477 (  int84gt           10 PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100  int84gt - ));
 DESCR("greater-than");
-DATA(insert OID = 478 (  int84le           PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100  int84le - ));
+DATA(insert OID = 478 (  int84le           10 PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100  int84le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 479 (  int84ge           PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100  int84ge - ));
+DATA(insert OID = 479 (  int84ge           10 PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100  int84ge - ));
 DESCR("greater-than-or-equal");

-DATA(insert OID = 480 (  int4               PGUID 12 f t t t 1 f  23 "20" 100 0 0 100  int84 - ));
+DATA(insert OID = 480 (  int4               10 PGUID 12 f t t t 1 f  23 "20" 100 0 0 100  int84 - ));
 DESCR("convert int8 to int4");
-DATA(insert OID = 481 (  int8               PGUID 12 f t t t 1 f  20 "23" 100 0 0 100  int48 - ));
+DATA(insert OID = 481 (  int8               10 PGUID 12 f t t t 1 f  20 "23" 100 0 0 100  int48 - ));
 DESCR("convert int4 to int8");
-DATA(insert OID = 482 (  float8               PGUID 12 f t t t 1 f 701 "20" 100 0 0 100  i8tod - ));
+DATA(insert OID = 482 (  float8               10 PGUID 12 f t t t 1 f 701 "20" 100 0 0 100  i8tod - ));
 DESCR("convert int8 to float8");
-DATA(insert OID = 483 (  int8               PGUID 12 f t t t 1 f  20 "701" 100 0 0 100  dtoi8 - ));
+DATA(insert OID = 483 (  int8               10 PGUID 12 f t t t 1 f  20 "701" 100 0 0 100  dtoi8 - ));
 DESCR("convert float8 to int8");

 /* OIDS 500 - 599 */

 /* OIDS 600 - 699 */

-DATA(insert OID = 1285 (  int4notin           PGUID 12 f t f t 2 f 16 "23 25" 100 0 0 100  int4notin - ));
+DATA(insert OID = 1285 (  int4notin           10 PGUID 12 f t f t 2 f 16 "23 25" 100 0 0 100  int4notin - ));
 DESCR("not in");
-DATA(insert OID = 1286 (  oidnotin           PGUID 12 f t f t 2 f 16 "26 25" 100 0 0 100  oidnotin - ));
+DATA(insert OID = 1286 (  oidnotin           10 PGUID 12 f t f t 2 f 16 "26 25" 100 0 0 100  oidnotin - ));
 DESCR("not in");
-DATA(insert OID = 1287 (  int44in           PGUID 12 f t t t 1 f 22 "0" 100 0 0 100  int44in - ));
+DATA(insert OID = 1287 (  int44in           10 PGUID 12 f t t t 1 f 22 "0" 100 0 0 100  int44in - ));
 DESCR("(internal)");
-DATA(insert OID = 653 (  int44out           PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  int44out - ));
+DATA(insert OID = 653 (  int44out           10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  int44out - ));
 DESCR("(internal)");
-DATA(insert OID = 655 (  namelt               PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100  namelt - ));
+DATA(insert OID = 655 (  namelt               10 PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100  namelt - ));
 DESCR("less-than");
-DATA(insert OID = 656 (  namele               PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100  namele - ));
+DATA(insert OID = 656 (  namele               10 PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100  namele - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 657 (  namegt               PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100  namegt - ));
+DATA(insert OID = 657 (  namegt               10 PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100  namegt - ));
 DESCR("greater-than");
-DATA(insert OID = 658 (  namege               PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100  namege - ));
+DATA(insert OID = 658 (  namege               10 PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100  namege - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 659 (  namene               PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100  namene - ));
+DATA(insert OID = 659 (  namene               10 PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100  namene - ));
 DESCR("not equal");

-DATA(insert OID = 668 (  bpchar               PGUID 12 f t t t 2 f 1042 "1042 23" 100 0 0 100  bpchar - ));
+DATA(insert OID = 668 (  bpchar               10 PGUID 12 f t t t 2 f 1042 "1042 23" 100 0 0 100  bpchar - ));
 DESCR("adjust char() to typmod length");
-DATA(insert OID = 669 (  varchar           PGUID 12 f t t t 2 f 1043 "1043 23" 100 0 0 100  varchar - ));
+DATA(insert OID = 669 (  varchar           10 PGUID 12 f t t t 2 f 1043 "1043 23" 100 0 0 100  varchar - ));
 DESCR("adjust varchar() to typmod length");

-DATA(insert OID = 676 (  mktinterval       PGUID 12 f t t t 2 f 704 "702 702" 100 0 0 100 mktinterval - ));
+DATA(insert OID = 676 (  mktinterval       10 PGUID 12 f t t t 2 f 704 "702 702" 100 0 0 100 mktinterval - ));
 DESCR("convert to tinterval");
-DATA(insert OID = 619 (  oidvectorne       PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100  oidvectorne - ));
+DATA(insert OID = 619 (  oidvectorne       10 PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100  oidvectorne - ));
 DESCR("not equal");
-DATA(insert OID = 677 (  oidvectorlt       PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100  oidvectorlt - ));
+DATA(insert OID = 677 (  oidvectorlt       10 PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100  oidvectorlt - ));
 DESCR("less-than");
-DATA(insert OID = 678 (  oidvectorle       PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100  oidvectorle - ));
+DATA(insert OID = 678 (  oidvectorle       10 PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100  oidvectorle - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 679 (  oidvectoreq       PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100  oidvectoreq - ));
+DATA(insert OID = 679 (  oidvectoreq       10 PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100  oidvectoreq - ));
 DESCR("equal");
-DATA(insert OID = 680 (  oidvectorge       PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100  oidvectorge - ));
+DATA(insert OID = 680 (  oidvectorge       10 PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100  oidvectorge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 681 (  oidvectorgt       PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100  oidvectorgt - ));
+DATA(insert OID = 681 (  oidvectorgt       10 PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100  oidvectorgt - ));
 DESCR("greater-than");

 /* OIDS 700 - 799 */
-DATA(insert OID = 710 (  getpgusername       PGUID 12 f t f t 0 f 19 "0" 100 0 0 100  current_user - ));
+DATA(insert OID = 710 (  getpgusername       10 PGUID 12 f t f t 0 f 19 "0" 100 0 0 100  current_user - ));
 DESCR("deprecated -- use current_user");
-DATA(insert OID = 711 (  userfntest           PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  userfntest - ));
+DATA(insert OID = 711 (  userfntest           10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  userfntest - ));
 DESCR("");
-DATA(insert OID = 713 (  oidrand           PGUID 12 f t f t 2 f 16 "26 23" 100 0 0 100  oidrand - ));
+DATA(insert OID = 713 (  oidrand           10 PGUID 12 f t f t 2 f 16 "26 23" 100 0 0 100  oidrand - ));
 DESCR("random");
-DATA(insert OID = 715 (  oidsrand           PGUID 12 f t f t 1 f 16 "23" 100 0 0 100  oidsrand - ));
+DATA(insert OID = 715 (  oidsrand           10 PGUID 12 f t f t 1 f 16 "23" 100 0 0 100  oidsrand - ));
 DESCR("seed random number generator");
-DATA(insert OID = 716 (  oidlt               PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100  oidlt - ));
+DATA(insert OID = 716 (  oidlt               10 PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100  oidlt - ));
 DESCR("less-than");
-DATA(insert OID = 717 (  oidle               PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100  oidle - ));
+DATA(insert OID = 717 (  oidle               10 PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100  oidle - ));
 DESCR("less-than-or-equal");

-DATA(insert OID = 720 (  octet_length       PGUID 12 f t t t 1 f 23 "17" 100 0 0 100  byteaoctetlen - ));
+DATA(insert OID = 720 (  octet_length       10 PGUID 12 f t t t 1 f 23 "17" 100 0 0 100  byteaoctetlen - ));
 DESCR("octet length");
-DATA(insert OID = 721 (  get_byte           PGUID 12 f t t t 2 f 23 "17 23" 100 0 0 100  byteaGetByte - ));
+DATA(insert OID = 721 (  get_byte           10 PGUID 12 f t t t 2 f 23 "17 23" 100 0 0 100  byteaGetByte - ));
 DESCR("");
-DATA(insert OID = 722 (  set_byte           PGUID 12 f t t t 3 f 17 "17 23 23" 100 0 0 100  byteaSetByte - ));
+DATA(insert OID = 722 (  set_byte           10 PGUID 12 f t t t 3 f 17 "17 23 23" 100 0 0 100  byteaSetByte - ));
 DESCR("");
-DATA(insert OID = 723 (  get_bit           PGUID 12 f t t t 2 f 23 "17 23" 100 0 0 100  byteaGetBit - ));
+DATA(insert OID = 723 (  get_bit           10 PGUID 12 f t t t 2 f 23 "17 23" 100 0 0 100  byteaGetBit - ));
 DESCR("");
-DATA(insert OID = 724 (  set_bit           PGUID 12 f t t t 3 f 17 "17 23 23" 100 0 0 100  byteaSetBit - ));
+DATA(insert OID = 724 (  set_bit           10 PGUID 12 f t t t 3 f 17 "17 23 23" 100 0 0 100  byteaSetBit - ));
 DESCR("");

-DATA(insert OID = 725 (  dist_pl           PGUID 12 f t t t 2 f 701 "600 628" 100 0 0 100  dist_pl - ));
+DATA(insert OID = 725 (  dist_pl           10 PGUID 12 f t t t 2 f 701 "600 628" 100 0 0 100  dist_pl - ));
 DESCR("distance between point and line");
-DATA(insert OID = 726 (  dist_lb           PGUID 12 f t t t 2 f 701 "628 603" 100 0 0 100  dist_lb - ));
+DATA(insert OID = 726 (  dist_lb           10 PGUID 12 f t t t 2 f 701 "628 603" 100 0 0 100  dist_lb - ));
 DESCR("distance between line and box");
-DATA(insert OID = 727 (  dist_sl           PGUID 12 f t t t 2 f 701 "601 628" 100 0 0 100  dist_sl - ));
+DATA(insert OID = 727 (  dist_sl           10 PGUID 12 f t t t 2 f 701 "601 628" 100 0 0 100  dist_sl - ));
 DESCR("distance between lseg and line");
-DATA(insert OID = 728 (  dist_cpoly           PGUID 12 f t t t 2 f 701 "718 604" 100 0 0 100  dist_cpoly - ));
+DATA(insert OID = 728 (  dist_cpoly           10 PGUID 12 f t t t 2 f 701 "718 604" 100 0 0 100  dist_cpoly - ));
 DESCR("distance between");
-DATA(insert OID = 729 (  poly_distance       PGUID 12 f t t t 2 f 701 "604 604" 100 0 0 100  poly_distance - ));
+DATA(insert OID = 729 (  poly_distance       10 PGUID 12 f t t t 2 f 701 "604 604" 100 0 0 100  poly_distance - ));
 DESCR("distance between");

-DATA(insert OID = 740 (  text_lt           PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  text_lt - ));
+DATA(insert OID = 740 (  text_lt           10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  text_lt - ));
 DESCR("less-than");
-DATA(insert OID = 741 (  text_le           PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  text_le - ));
+DATA(insert OID = 741 (  text_le           10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  text_le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 742 (  text_gt           PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  text_gt - ));
+DATA(insert OID = 742 (  text_gt           10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  text_gt - ));
 DESCR("greater-than");
-DATA(insert OID = 743 (  text_ge           PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  text_ge - ));
+DATA(insert OID = 743 (  text_ge           10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  text_ge - ));
 DESCR("greater-than-or-equal");

-DATA(insert OID = 744 (  array_eq           PGUID 12 f t t t 2 f 16 "0 0" 100 0 0 100 array_eq -));
+DATA(insert OID = 744 (  array_eq           10 PGUID 12 f t t t 2 f 16 "0 0" 100 0 0 100 array_eq -));
 DESCR("array equal");

-DATA(insert OID = 745 (  current_user       PGUID 12 f t f t 0 f 19 "0" 100 0 0 100  current_user - ));
+DATA(insert OID = 745 (  current_user       10 PGUID 12 f t f t 0 f 19 "0" 100 0 0 100  current_user - ));
 DESCR("current user name");
-DATA(insert OID = 746 (  session_user       PGUID 12 f t f t 0 f 19 "0" 100 0 0 100  session_user - ));
+DATA(insert OID = 746 (  session_user       10 PGUID 12 f t f t 0 f 19 "0" 100 0 0 100  session_user - ));
 DESCR("session user name");

-DATA(insert OID = 747 (  array_dims           PGUID 12 f t t t 1 f 25 "0" 100 0 0 100 array_dims -));
+DATA(insert OID = 747 (  array_dims           10 PGUID 12 f t t t 1 f 25 "0" 100 0 0 100 array_dims -));
 DESCR("array dimensions");
-DATA(insert OID = 750 (  array_in           PGUID 12 f t t t 3 f 23 "0 26 23" 100 0 0 100  array_in - ));
+DATA(insert OID = 750 (  array_in           10 PGUID 12 f t t t 3 f 23 "0 26 23" 100 0 0 100  array_in - ));
 DESCR("array");
-DATA(insert OID = 751 (  array_out           PGUID 12 f t t t 2 f 23 "0 26" 100 0 0 100  array_out - ));
+DATA(insert OID = 751 (  array_out           10 PGUID 12 f t t t 2 f 23 "0 26" 100 0 0 100  array_out - ));
 DESCR("array");

-DATA(insert OID = 760 (  smgrin               PGUID 12 f t f t 1 f 210 "0" 100 0 0 100  smgrin - ));
+DATA(insert OID = 760 (  smgrin               10 PGUID 12 f t f t 1 f 210 "0" 100 0 0 100  smgrin - ));
 DESCR("storage manager(internal)");
-DATA(insert OID = 761 (  smgrout           PGUID 12 f t f t 1 f 23    "0" 100 0 0 100  smgrout - ));
+DATA(insert OID = 761 (  smgrout           10 PGUID 12 f t f t 1 f 23    "0" 100 0 0 100  smgrout - ));
 DESCR("storage manager(internal)");
-DATA(insert OID = 762 (  smgreq               PGUID 12 f t t t 2 f 16 "210 210" 100 0 0 100  smgreq - ));
+DATA(insert OID = 762 (  smgreq               10 PGUID 12 f t t t 2 f 16 "210 210" 100 0 0 100  smgreq - ));
 DESCR("storage manager");
-DATA(insert OID = 763 (  smgrne               PGUID 12 f t t t 2 f 16 "210 210" 100 0 0 100  smgrne - ));
+DATA(insert OID = 763 (  smgrne               10 PGUID 12 f t t t 2 f 16 "210 210" 100 0 0 100  smgrne - ));
 DESCR("storage manager");

-DATA(insert OID = 764 (  lo_import           PGUID 12 f t f t 1 f 26 "25" 100 0 0 100  lo_import - ));
+DATA(insert OID = 764 (  lo_import           10 PGUID 12 f t f t 1 f 26 "25" 100 0 0 100  lo_import - ));
 DESCR("large object import");
-DATA(insert OID = 765 (  lo_export           PGUID 12 f t f t 2 f 23 "26 25" 100 0 0 100  lo_export - ));
+DATA(insert OID = 765 (  lo_export           10 PGUID 12 f t f t 2 f 23 "26 25" 100 0 0 100  lo_export - ));
 DESCR("large object export");

-DATA(insert OID = 766 (  int4inc           PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  int4inc - ));
+DATA(insert OID = 766 (  int4inc           10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  int4inc - ));
 DESCR("increment");
-DATA(insert OID = 768 (  int4larger           PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4larger - ));
+DATA(insert OID = 768 (  int4larger           10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4larger - ));
 DESCR("larger of two");
-DATA(insert OID = 769 (  int4smaller       PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4smaller - ));
+DATA(insert OID = 769 (  int4smaller       10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4smaller - ));
 DESCR("smaller of two");
-DATA(insert OID = 770 (  int2larger           PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2larger - ));
+DATA(insert OID = 770 (  int2larger           10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2larger - ));
 DESCR("larger of two");
-DATA(insert OID = 771 (  int2smaller       PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2smaller - ));
+DATA(insert OID = 771 (  int2smaller       10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2smaller - ));
 DESCR("smaller of two");

-DATA(insert OID = 774 (  gistgettuple       PGUID 12 f t f t 2 f 23 "0 0" 100 0 0 100  gistgettuple - ));
+DATA(insert OID = 774 (  gistgettuple       10 PGUID 12 f t f t 2 f 23 "0 0" 100 0 0 100  gistgettuple - ));
 DESCR("gist(internal)");
-DATA(insert OID = 775 (  gistinsert           PGUID 12 f t f t 5 f 23 "0 0 0 0 0" 100 0 0 100  gistinsert - ));
+DATA(insert OID = 775 (  gistinsert           10 PGUID 12 f t f t 5 f 23 "0 0 0 0 0" 100 0 0 100  gistinsert - ));
 DESCR("gist(internal)");
-DATA(insert OID = 777 (  gistbeginscan       PGUID 12 f t f t 4 f 23 "0 0 0 0" 100 0 0 100  gistbeginscan - ));
+DATA(insert OID = 777 (  gistbeginscan       10 PGUID 12 f t f t 4 f 23 "0 0 0 0" 100 0 0 100  gistbeginscan - ));
 DESCR("gist(internal)");
-DATA(insert OID = 778 (  gistrescan           PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  gistrescan - ));
+DATA(insert OID = 778 (  gistrescan           10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  gistrescan - ));
 DESCR("gist(internal)");
-DATA(insert OID = 779 (  gistendscan       PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  gistendscan - ));
+DATA(insert OID = 779 (  gistendscan       10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  gistendscan - ));
 DESCR("gist(internal)");
-DATA(insert OID = 780 (  gistmarkpos       PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  gistmarkpos - ));
+DATA(insert OID = 780 (  gistmarkpos       10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  gistmarkpos - ));
 DESCR("gist(internal)");
-DATA(insert OID = 781 (  gistrestrpos       PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  gistrestrpos - ));
+DATA(insert OID = 781 (  gistrestrpos       10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  gistrestrpos - ));
 DESCR("gist(internal)");
-DATA(insert OID = 782 (  gistbuild           PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  gistbuild - ));
+DATA(insert OID = 782 (  gistbuild           10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  gistbuild - ));
 DESCR("gist(internal)");
-DATA(insert OID = 776 (  gistbulkdelete       PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  gistbulkdelete - ));
+DATA(insert OID = 776 (  gistbulkdelete       10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100  gistbulkdelete - ));
 DESCR("gist(internal)");
-DATA(insert OID = 772 (  gistcostestimate  PGUID 12 f t f t 8 f 0 "0 0 0 0 0 0 0 0" 100 0 0 100  gistcostestimate -
));
+DATA(insert OID = 772 (  gistcostestimate  10 PGUID 12 f t f t 8 f 0 "0 0 0 0 0 0 0 0" 100 0 0 100  gistcostestimate -
));
 DESCR("gist(internal)");

-DATA(insert OID = 784 (  tintervaleq       PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervaleq - ));
+DATA(insert OID = 784 (  tintervaleq       10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervaleq - ));
 DESCR("equal");
-DATA(insert OID = 785 (  tintervalne       PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervalne - ));
+DATA(insert OID = 785 (  tintervalne       10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervalne - ));
 DESCR("not equal");
-DATA(insert OID = 786 (  tintervallt       PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervallt - ));
+DATA(insert OID = 786 (  tintervallt       10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervallt - ));
 DESCR("less-than");
-DATA(insert OID = 787 (  tintervalgt       PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervalgt - ));
+DATA(insert OID = 787 (  tintervalgt       10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervalgt - ));
 DESCR("greater-than");
-DATA(insert OID = 788 (  tintervalle       PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervalle - ));
+DATA(insert OID = 788 (  tintervalle       10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervalle - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 789 (  tintervalge       PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervalge - ));
+DATA(insert OID = 789 (  tintervalge       10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100  tintervalge - ));
 DESCR("greater-than-or-equal");

 /* OIDS 800 - 899 */

-DATA(insert OID = 817 (  oid               PGUID 12 f t t t 1 f 26 "25" 100 0 0 100  text_oid -));
+DATA(insert OID = 817 (  oid               10 PGUID 12 f t t t 1 f 26 "25" 100 0 0 100  text_oid -));
 DESCR("convert text to oid");
-DATA(insert OID = 818 (  int2               PGUID 12 f t t t 1 f 21 "25" 100 0 0 100  text_int2 -));
+DATA(insert OID = 818 (  int2               10 PGUID 12 f t t t 1 f 21 "25" 100 0 0 100  text_int2 -));
 DESCR("convert text to int2");
-DATA(insert OID = 819 (  int4               PGUID 12 f t t t 1 f 23 "25" 100 0 0 100  text_int4 -));
+DATA(insert OID = 819 (  int4               10 PGUID 12 f t t t 1 f 23 "25" 100 0 0 100  text_int4 -));
 DESCR("convert text to int4");

-DATA(insert OID = 838 (  float8               PGUID 12 f t t t 1 f 701 "25" 100 0 0 100  text_float8 -));
+DATA(insert OID = 838 (  float8               10 PGUID 12 f t t t 1 f 701 "25" 100 0 0 100  text_float8 -));
 DESCR("convert text to float8");
-DATA(insert OID = 839 (  float4               PGUID 12 f t t t 1 f 700 "25" 100 0 0 100  text_float4 -));
+DATA(insert OID = 839 (  float4               10 PGUID 12 f t t t 1 f 700 "25" 100 0 0 100  text_float4 -));
 DESCR("convert text to float4");
-DATA(insert OID = 840 (  text               PGUID 12 f t t t 1 f  25 "701" 100 0 0 100  float8_text -));
+DATA(insert OID = 840 (  text               10 PGUID 12 f t t t 1 f  25 "701" 100 0 0 100  float8_text -));
 DESCR("convert float8 to text");
-DATA(insert OID = 841 (  text               PGUID 12 f t t t 1 f  25 "700" 100 0 0 100  float4_text -));
+DATA(insert OID = 841 (  text               10 PGUID 12 f t t t 1 f  25 "700" 100 0 0 100  float4_text -));
 DESCR("convert float4 to text");

-DATA(insert OID =  846 (  cash_mul_flt4    PGUID 12 f t t t 2 f 790 "790 700" 100 0 0 100  cash_mul_flt4 - ));
+DATA(insert OID =  846 (  cash_mul_flt4    10 PGUID 12 f t t t 2 f 790 "790 700" 100 0 0 100  cash_mul_flt4 - ));
 DESCR("multiply");
-DATA(insert OID =  847 (  cash_div_flt4    PGUID 12 f t t t 2 f 790 "790 700" 100 0 0 100  cash_div_flt4 - ));
+DATA(insert OID =  847 (  cash_div_flt4    10 PGUID 12 f t t t 2 f 790 "790 700" 100 0 0 100  cash_div_flt4 - ));
 DESCR("divide");
-DATA(insert OID =  848 (  flt4_mul_cash    PGUID 12 f t t t 2 f 790 "700 790" 100 0 0 100  flt4_mul_cash - ));
+DATA(insert OID =  848 (  flt4_mul_cash    10 PGUID 12 f t t t 2 f 790 "700 790" 100 0 0 100  flt4_mul_cash - ));
 DESCR("multiply");

-DATA(insert OID =  849 (  position           PGUID 12 f t t t 2 f 23 "25 25" 100 0 0 100 textpos - ));
+DATA(insert OID =  849 (  position           10 PGUID 12 f t t t 2 f 23 "25 25" 100 0 0 100 textpos - ));
 DESCR("return position of substring");
-DATA(insert OID =  850 (  textlike           PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textlike - ));
+DATA(insert OID =  850 (  textlike           10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textlike - ));
 DESCR("matches LIKE expression");
-DATA(insert OID =  851 (  textnlike           PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textnlike - ));
+DATA(insert OID =  851 (  textnlike           10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textnlike - ));
 DESCR("does not match LIKE expression");

-DATA(insert OID =  852 (  int48eq           PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100  int48eq - ));
+DATA(insert OID =  852 (  int48eq           10 PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100  int48eq - ));
 DESCR("equal");
-DATA(insert OID =  853 (  int48ne           PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100  int48ne - ));
+DATA(insert OID =  853 (  int48ne           10 PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100  int48ne - ));
 DESCR("not equal");
-DATA(insert OID =  854 (  int48lt           PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100  int48lt - ));
+DATA(insert OID =  854 (  int48lt           10 PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100  int48lt - ));
 DESCR("less-than");
-DATA(insert OID =  855 (  int48gt           PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100  int48gt - ));
+DATA(insert OID =  855 (  int48gt           10 PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100  int48gt - ));
 DESCR("greater-than");
-DATA(insert OID =  856 (  int48le           PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100  int48le - ));
+DATA(insert OID =  856 (  int48le           10 PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100  int48le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID =  857 (  int48ge           PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100  int48ge - ));
+DATA(insert OID =  857 (  int48ge           10 PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100  int48ge - ));
 DESCR("greater-than-or-equal");

-DATA(insert OID =  858 (  namelike           PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  namelike - ));
+DATA(insert OID =  858 (  namelike           10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  namelike - ));
 DESCR("matches LIKE expression");
-DATA(insert OID =  859 (  namenlike           PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  namenlike - ));
+DATA(insert OID =  859 (  namenlike           10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  namenlike - ));
 DESCR("does not match LIKE expression");

-DATA(insert OID =  860 (  bpchar           PGUID 12 f t t t 1 f 1042 "18" 100 0 0 100  char_bpchar - ));
+DATA(insert OID =  860 (  bpchar           10 PGUID 12 f t t t 1 f 1042 "18" 100 0 0 100  char_bpchar - ));
 DESCR("convert char to char()");
-DATA(insert OID =  861 (  char               PGUID 12 f t t t 1 f 18 "1042" 100 0 0 100  bpchar_char - ));
+DATA(insert OID =  861 (  char               10 PGUID 12 f t t t 1 f 18 "1042" 100 0 0 100  bpchar_char - ));
 DESCR("convert char() to char");

-DATA(insert OID =  862 (  int4_mul_cash           PGUID 12 f t t t 2 f 790 "23 790" 100 0 0 100  int4_mul_cash - ));
+DATA(insert OID =  862 (  int4_mul_cash           10 PGUID 12 f t t t 2 f 790 "23 790" 100 0 0 100  int4_mul_cash -
));
 DESCR("multiply");
-DATA(insert OID =  863 (  int2_mul_cash           PGUID 12 f t t t 2 f 790 "21 790" 100 0 0 100  int2_mul_cash - ));
+DATA(insert OID =  863 (  int2_mul_cash           10 PGUID 12 f t t t 2 f 790 "21 790" 100 0 0 100  int2_mul_cash -
));
 DESCR("multiply");
-DATA(insert OID =  864 (  cash_mul_int4           PGUID 12 f t t t 2 f 790 "790 23" 100 0 0 100  cash_mul_int4 - ));
+DATA(insert OID =  864 (  cash_mul_int4           10 PGUID 12 f t t t 2 f 790 "790 23" 100 0 0 100  cash_mul_int4 -
));
 DESCR("multiply");
-DATA(insert OID =  865 (  cash_div_int4           PGUID 12 f t t t 2 f 790 "790 23" 100 0 0 100  cash_div_int4 - ));
+DATA(insert OID =  865 (  cash_div_int4           10 PGUID 12 f t t t 2 f 790 "790 23" 100 0 0 100  cash_div_int4 -
));
 DESCR("divide");
-DATA(insert OID =  866 (  cash_mul_int2           PGUID 12 f t t t 2 f 790 "790 21" 100 0 0 100  cash_mul_int2 - ));
+DATA(insert OID =  866 (  cash_mul_int2           10 PGUID 12 f t t t 2 f 790 "790 21" 100 0 0 100  cash_mul_int2 -
));
 DESCR("multiply");
-DATA(insert OID =  867 (  cash_div_int2           PGUID 12 f t t t 2 f 790 "790 21" 100 0 0 100  cash_div_int2 - ));
+DATA(insert OID =  867 (  cash_div_int2           10 PGUID 12 f t t t 2 f 790 "790 21" 100 0 0 100  cash_div_int2 -
));
 DESCR("divide");

-DATA(insert OID =  886 (  cash_in           PGUID 12 f t t t 1 f 790 "0" 100 0 0 100  cash_in - ));
+DATA(insert OID =  886 (  cash_in           10 PGUID 12 f t t t 1 f 790 "0" 100 0 0 100  cash_in - ));
 DESCR("(internal)");
-DATA(insert OID =  887 (  cash_out           PGUID 12 f t t t 1 f  23 "0" 100 0 0 100  cash_out - ));
+DATA(insert OID =  887 (  cash_out           10 PGUID 12 f t t t 1 f  23 "0" 100 0 0 100  cash_out - ));
 DESCR("(internal)");
-DATA(insert OID =  888 (  cash_eq           PGUID 12 f t t t 2 f  16 "790 790" 100 0 0 100  cash_eq - ));
+DATA(insert OID =  888 (  cash_eq           10 PGUID 12 f t t t 2 f  16 "790 790" 100 0 0 100  cash_eq - ));
 DESCR("equal");
-DATA(insert OID =  889 (  cash_ne           PGUID 12 f t t t 2 f  16 "790 790" 100 0 0 100  cash_ne - ));
+DATA(insert OID =  889 (  cash_ne           10 PGUID 12 f t t t 2 f  16 "790 790" 100 0 0 100  cash_ne - ));
 DESCR("not equal");
-DATA(insert OID =  890 (  cash_lt           PGUID 12 f t t t 2 f  16 "790 790" 100 0 0 100  cash_lt - ));
+DATA(insert OID =  890 (  cash_lt           10 PGUID 12 f t t t 2 f  16 "790 790" 100 0 0 100  cash_lt - ));
 DESCR("less-than");
-DATA(insert OID =  891 (  cash_le           PGUID 12 f t t t 2 f  16 "790 790" 100 0 0 100  cash_le - ));
+DATA(insert OID =  891 (  cash_le           10 PGUID 12 f t t t 2 f  16 "790 790" 100 0 0 100  cash_le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID =  892 (  cash_gt           PGUID 12 f t t t 2 f  16 "790 790" 100 0 0 100  cash_gt - ));
+DATA(insert OID =  892 (  cash_gt           10 PGUID 12 f t t t 2 f  16 "790 790" 100 0 0 100  cash_gt - ));
 DESCR("greater-than");
-DATA(insert OID =  893 (  cash_ge           PGUID 12 f t t t 2 f  16 "790 790" 100 0 0 100  cash_ge - ));
+DATA(insert OID =  893 (  cash_ge           10 PGUID 12 f t t t 2 f  16 "790 790" 100 0 0 100  cash_ge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID =  894 (  cash_pl           PGUID 12 f t t t 2 f 790 "790 790" 100 0 0 100  cash_pl - ));
+DATA(insert OID =  894 (  cash_pl           10 PGUID 12 f t t t 2 f 790 "790 790" 100 0 0 100  cash_pl - ));
 DESCR("add");
-DATA(insert OID =  895 (  cash_mi           PGUID 12 f t t t 2 f 790 "790 790" 100 0 0 100  cash_mi - ));
+DATA(insert OID =  895 (  cash_mi           10 PGUID 12 f t t t 2 f 790 "790 790" 100 0 0 100  cash_mi - ));
 DESCR("subtract");
-DATA(insert OID =  896 (  cash_mul_flt8       PGUID 12 f t t t 2 f 790 "790 701" 100 0 0 100  cash_mul_flt8 - ));
+DATA(insert OID =  896 (  cash_mul_flt8       10 PGUID 12 f t t t 2 f 790 "790 701" 100 0 0 100  cash_mul_flt8 - ));
 DESCR("multiply");
-DATA(insert OID =  897 (  cash_div_flt8       PGUID 12 f t t t 2 f 790 "790 701" 100 0 0 100  cash_div_flt8 - ));
+DATA(insert OID =  897 (  cash_div_flt8       10 PGUID 12 f t t t 2 f 790 "790 701" 100 0 0 100  cash_div_flt8 - ));
 DESCR("divide");
-DATA(insert OID =  898 (  cashlarger       PGUID 12 f t t t 2 f 790 "790 790" 100 0 0 100  cashlarger - ));
+DATA(insert OID =  898 (  cashlarger       10 PGUID 12 f t t t 2 f 790 "790 790" 100 0 0 100  cashlarger - ));
 DESCR("larger of two");
-DATA(insert OID =  899 (  cashsmaller       PGUID 12 f t t t 2 f 790 "790 790" 100 0 0 100  cashsmaller - ));
+DATA(insert OID =  899 (  cashsmaller       10 PGUID 12 f t t t 2 f 790 "790 790" 100 0 0 100  cashsmaller - ));
 DESCR("smaller of two");
-DATA(insert OID =  919 (  flt8_mul_cash    PGUID 12 f t t t 2 f 790 "701 790" 100 0 0 100  flt8_mul_cash - ));
+DATA(insert OID =  919 (  flt8_mul_cash    10 PGUID 12 f t t t 2 f 790 "701 790" 100 0 0 100  flt8_mul_cash - ));
 DESCR("multiply");
-DATA(insert OID =  935 (  cash_words       PGUID 12 f t t t 1 f  25 "790" 100 0 0 100  cash_words - ));
+DATA(insert OID =  935 (  cash_words       10 PGUID 12 f t t t 1 f  25 "790" 100 0 0 100  cash_words - ));
 DESCR("output amount as words");

 /* OIDS 900 - 999 */

-DATA(insert OID = 940 (  mod               PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2mod - ));
+DATA(insert OID = 940 (  mod               10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2mod - ));
 DESCR("modulus");
-DATA(insert OID = 941 (  mod               PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4mod - ));
+DATA(insert OID = 941 (  mod               10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4mod - ));
 DESCR("modulus");
-DATA(insert OID = 942 (  mod               PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100  int24mod - ));
+DATA(insert OID = 942 (  mod               10 PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100  int24mod - ));
 DESCR("modulus");
-DATA(insert OID = 943 (  mod               PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100  int42mod - ));
+DATA(insert OID = 943 (  mod               10 PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100  int42mod - ));
 DESCR("modulus");

-DATA(insert OID = 945 (  int8mod           PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8mod - ));
+DATA(insert OID = 945 (  int8mod           10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8mod - ));
 DESCR("modulus");
-DATA(insert OID = 947 (  mod               PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8mod - ));
+DATA(insert OID = 947 (  mod               10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8mod - ));
 DESCR("modulus");

-DATA(insert OID = 944 (  char               PGUID 12 f t t t 1 f 18 "25" 100 0 0 100  text_char - ));
+DATA(insert OID = 944 (  char               10 PGUID 12 f t t t 1 f 18 "25" 100 0 0 100  text_char - ));
 DESCR("convert text to char");
-DATA(insert OID = 946 (  text               PGUID 12 f t t t 1 f 25 "18" 100 0 0 100  char_text - ));
+DATA(insert OID = 946 (  text               10 PGUID 12 f t t t 1 f 25 "18" 100 0 0 100  char_text - ));
 DESCR("convert char to text");

-DATA(insert OID = 950 (  istrue               PGUID 12 f t t f 1 f 16 "16" 100 0 0 100  istrue - ));
+DATA(insert OID = 950 (  istrue               10 PGUID 12 f t t f 1 f 16 "16" 100 0 0 100  istrue - ));
 DESCR("bool is true (not false or unknown)");
-DATA(insert OID = 951 (  isfalse           PGUID 12 f t t f 1 f 16 "16" 100 0 0 100  isfalse - ));
+DATA(insert OID = 951 (  isfalse           10 PGUID 12 f t t f 1 f 16 "16" 100 0 0 100  isfalse - ));
 DESCR("bool is false (not true or unknown)");

-DATA(insert OID = 952 (  lo_open           PGUID 12 f t f t 2 f 23 "26 23" 100 0 0 100  lo_open - ));
+DATA(insert OID = 952 (  lo_open           10 PGUID 12 f t f t 2 f 23 "26 23" 100 0 0 100  lo_open - ));
 DESCR("large object open");
-DATA(insert OID = 953 (  lo_close           PGUID 12 f t f t 1 f 23 "23" 100 0 0 100  lo_close - ));
+DATA(insert OID = 953 (  lo_close           10 PGUID 12 f t f t 1 f 23 "23" 100 0 0 100  lo_close - ));
 DESCR("large object close");
-DATA(insert OID = 954 (  loread               PGUID 12 f t f t 2 f 17 "23 23" 100 0 0 100  loread - ));
+DATA(insert OID = 954 (  loread               10 PGUID 12 f t f t 2 f 17 "23 23" 100 0 0 100  loread - ));
 DESCR("large object read");
-DATA(insert OID = 955 (  lowrite           PGUID 12 f t f t 2 f 23 "23 17" 100 0 0 100  lowrite - ));
+DATA(insert OID = 955 (  lowrite           10 PGUID 12 f t f t 2 f 23 "23 17" 100 0 0 100  lowrite - ));
 DESCR("large object write");
-DATA(insert OID = 956 (  lo_lseek           PGUID 12 f t f t 3 f 23 "23 23 23" 100 0 0 100  lo_lseek - ));
+DATA(insert OID = 956 (  lo_lseek           10 PGUID 12 f t f t 3 f 23 "23 23 23" 100 0 0 100  lo_lseek - ));
 DESCR("large object seek");
-DATA(insert OID = 957 (  lo_creat           PGUID 12 f t f t 1 f 26 "23" 100 0 0 100  lo_creat - ));
+DATA(insert OID = 957 (  lo_creat           10 PGUID 12 f t f t 1 f 26 "23" 100 0 0 100  lo_creat - ));
 DESCR("large object create");
-DATA(insert OID = 958 (  lo_tell           PGUID 12 f t f t 1 f 23 "23" 100 0 0 100  lo_tell - ));
+DATA(insert OID = 958 (  lo_tell           10 PGUID 12 f t f t 1 f 23 "23" 100 0 0 100  lo_tell - ));
 DESCR("large object position");

-DATA(insert OID = 959 (  on_pl               PGUID 12 f t t t 2 f  16 "600 628" 100 0 0 100  on_pl - ));
+DATA(insert OID = 959 (  on_pl               10 PGUID 12 f t t t 2 f  16 "600 628" 100 0 0 100  on_pl - ));
 DESCR("point on line?");
-DATA(insert OID = 960 (  on_sl               PGUID 12 f t t t 2 f  16 "601 628" 100 0 0 100  on_sl - ));
+DATA(insert OID = 960 (  on_sl               10 PGUID 12 f t t t 2 f  16 "601 628" 100 0 0 100  on_sl - ));
 DESCR("lseg on line?");
-DATA(insert OID = 961 (  close_pl           PGUID 12 f t t t 2 f 600 "600 628" 100 0 0 100  close_pl - ));
+DATA(insert OID = 961 (  close_pl           10 PGUID 12 f t t t 2 f 600 "600 628" 100 0 0 100  close_pl - ));
 DESCR("closest point on line");
-DATA(insert OID = 962 (  close_sl           PGUID 12 f t t t 2 f 600 "601 628" 100 0 0 100  close_sl - ));
+DATA(insert OID = 962 (  close_sl           10 PGUID 12 f t t t 2 f 600 "601 628" 100 0 0 100  close_sl - ));
 DESCR("closest point to line segment on line");
-DATA(insert OID = 963 (  close_lb           PGUID 12 f t t t 2 f 600 "628 603" 100 0 0 100  close_lb - ));
+DATA(insert OID = 963 (  close_lb           10 PGUID 12 f t t t 2 f 600 "628 603" 100 0 0 100  close_lb - ));
 DESCR("closest point to line on box");

-DATA(insert OID = 964 (  lo_unlink           PGUID 12 f t f t 1 f  23 "26" 100 0 0 100  lo_unlink - ));
+DATA(insert OID = 964 (  lo_unlink           10 PGUID 12 f t f t 1 f  23 "26" 100 0 0 100  lo_unlink - ));
 DESCR("large object unlink(delete)");
-DATA(insert OID = 972 (  regproctooid       PGUID 12 f t t t 1 f  26 "24" 100 0 0 100  regproctooid - ));
+DATA(insert OID = 972 (  regproctooid       10 PGUID 12 f t t t 1 f  26 "24" 100 0 0 100  regproctooid - ));
 DESCR("get oid for regproc");

-DATA(insert OID = 973 (  path_inter           PGUID 12 f t t t 2 f  16 "602 602" 100 0 0 100  path_inter - ));
+DATA(insert OID = 973 (  path_inter           10 PGUID 12 f t t t 2 f  16 "602 602" 100 0 0 100  path_inter - ));
 DESCR("paths intersect?");
-DATA(insert OID = 975 (  area               PGUID 12 f t t t 1 f 701 "603" 100 0 0 100  box_area - ));
+DATA(insert OID = 975 (  area               10 PGUID 12 f t t t 1 f 701 "603" 100 0 0 100  box_area - ));
 DESCR("box area");
-DATA(insert OID = 976 (  width               PGUID 12 f t t t 1 f 701 "603" 100 0 0 100  box_width - ));
+DATA(insert OID = 976 (  width               10 PGUID 12 f t t t 1 f 701 "603" 100 0 0 100  box_width - ));
 DESCR("box width");
-DATA(insert OID = 977 (  height               PGUID 12 f t t t 1 f 701 "603" 100 0 0 100  box_height - ));
+DATA(insert OID = 977 (  height               10 PGUID 12 f t t t 1 f 701 "603" 100 0 0 100  box_height - ));
 DESCR("box height");
-DATA(insert OID = 978 (  box_distance       PGUID 12 f t t t 2 f 701 "603 603" 100 0 0 100  box_distance - ));
+DATA(insert OID = 978 (  box_distance       10 PGUID 12 f t t t 2 f 701 "603 603" 100 0 0 100  box_distance - ));
 DESCR("distance between boxes");
-DATA(insert OID = 980 (  box_intersect       PGUID 12 f t t t 2 f 603 "603 603" 100 0 0 100  box_intersect - ));
+DATA(insert OID = 980 (  box_intersect       10 PGUID 12 f t t t 2 f 603 "603 603" 100 0 0 100  box_intersect - ));
 DESCR("box intersection (another box)");
-DATA(insert OID = 981 (  diagonal           PGUID 12 f t t t 1 f 601 "603" 100 0 0 100  box_diagonal - ));
+DATA(insert OID = 981 (  diagonal           10 PGUID 12 f t t t 1 f 601 "603" 100 0 0 100  box_diagonal - ));
 DESCR("box diagonal");
-DATA(insert OID = 982 (  path_n_lt           PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100  path_n_lt - ));
+DATA(insert OID = 982 (  path_n_lt           10 PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100  path_n_lt - ));
 DESCR("less-than");
-DATA(insert OID = 983 (  path_n_gt           PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100  path_n_gt - ));
+DATA(insert OID = 983 (  path_n_gt           10 PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100  path_n_gt - ));
 DESCR("greater-than");
-DATA(insert OID = 984 (  path_n_eq           PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100  path_n_eq - ));
+DATA(insert OID = 984 (  path_n_eq           10 PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100  path_n_eq - ));
 DESCR("equal");
-DATA(insert OID = 985 (  path_n_le           PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100  path_n_le - ));
+DATA(insert OID = 985 (  path_n_le           10 PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100  path_n_le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 986 (  path_n_ge           PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100  path_n_ge - ));
+DATA(insert OID = 986 (  path_n_ge           10 PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100  path_n_ge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 987 (  path_length       PGUID 12 f t t t 1 f 701 "602" 100 0 0 100  path_length - ));
+DATA(insert OID = 987 (  path_length       10 PGUID 12 f t t t 1 f 701 "602" 100 0 0 100  path_length - ));
 DESCR("sum of path segments");
-DATA(insert OID = 988 (  point_ne           PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100  point_ne - ));
+DATA(insert OID = 988 (  point_ne           10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100  point_ne - ));
 DESCR("not equal");
-DATA(insert OID = 989 (  point_vert           PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100  point_vert - ));
+DATA(insert OID = 989 (  point_vert           10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100  point_vert - ));
 DESCR("vertically aligned?");
-DATA(insert OID = 990 (  point_horiz       PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100  point_horiz - ));
+DATA(insert OID = 990 (  point_horiz       10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100  point_horiz - ));
 DESCR("horizontally aligned?");
-DATA(insert OID = 991 (  point_distance    PGUID 12 f t t t 2 f 701 "600 600" 100 0 0 100  point_distance - ));
+DATA(insert OID = 991 (  point_distance    10 PGUID 12 f t t t 2 f 701 "600 600" 100 0 0 100  point_distance - ));
 DESCR("distance between");
-DATA(insert OID = 992 (  slope               PGUID 12 f t t t 2 f 701 "600 600" 100 0 0 100  point_slope - ));
+DATA(insert OID = 992 (  slope               10 PGUID 12 f t t t 2 f 701 "600 600" 100 0 0 100  point_slope - ));
 DESCR("slope between points");
-DATA(insert OID = 993 (  lseg               PGUID 12 f t t t 2 f 601 "600 600" 100 0 0 100  lseg_construct - ));
+DATA(insert OID = 993 (  lseg               10 PGUID 12 f t t t 2 f 601 "600 600" 100 0 0 100  lseg_construct - ));
 DESCR("convert points to line segment");
-DATA(insert OID = 994 (  lseg_intersect    PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100  lseg_intersect - ));
+DATA(insert OID = 994 (  lseg_intersect    10 PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100  lseg_intersect - ));
 DESCR("intersect?");
-DATA(insert OID = 995 (  lseg_parallel       PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100  lseg_parallel - ));
+DATA(insert OID = 995 (  lseg_parallel       10 PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100  lseg_parallel - ));
 DESCR("parallel?");
-DATA(insert OID = 996 (  lseg_perp           PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100  lseg_perp - ));
+DATA(insert OID = 996 (  lseg_perp           10 PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100  lseg_perp - ));
 DESCR("perpendicular?");
-DATA(insert OID = 997 (  lseg_vertical       PGUID 12 f t t t 1 f 16 "601" 100 0 0 100  lseg_vertical - ));
+DATA(insert OID = 997 (  lseg_vertical       10 PGUID 12 f t t t 1 f 16 "601" 100 0 0 100  lseg_vertical - ));
 DESCR("vertical?");
-DATA(insert OID = 998 (  lseg_horizontal   PGUID 12 f t t t 1 f 16 "601" 100 0 0 100  lseg_horizontal - ));
+DATA(insert OID = 998 (  lseg_horizontal   10 PGUID 12 f t t t 1 f 16 "601" 100 0 0 100  lseg_horizontal - ));
 DESCR("horizontal?");
-DATA(insert OID = 999 (  lseg_eq           PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100  lseg_eq - ));
+DATA(insert OID = 999 (  lseg_eq           10 PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100  lseg_eq - ));
 DESCR("equal");

-DATA(insert OID =  748 (  date               PGUID 12 f t f t 1 f 1082 "25" 100 0 0 100 text_date - ));
+DATA(insert OID =  748 (  date               10 PGUID 12 f t f t 1 f 1082 "25" 100 0 0 100 text_date - ));
 DESCR("convert text to date");
-DATA(insert OID =  749 (  text               PGUID 12 f t f t 1 f 25 "1082" 100 0 0 100 date_text - ));
+DATA(insert OID =  749 (  text               10 PGUID 12 f t f t 1 f 25 "1082" 100 0 0 100 date_text - ));
 DESCR("convert date to text");
-DATA(insert OID =  837 (  time               PGUID 12 f t f t 1 f 1083 "25" 100 0 0 100 text_time - ));
+DATA(insert OID =  837 (  time               10 PGUID 12 f t f t 1 f 1083 "25" 100 0 0 100 text_time - ));
 DESCR("convert text to time");
-DATA(insert OID =  948 (  text               PGUID 12 f t t t 1 f 25 "1083" 100 0 0 100 time_text - ));
+DATA(insert OID =  948 (  text               10 PGUID 12 f t t t 1 f 25 "1083" 100 0 0 100 time_text - ));
 DESCR("convert time to text");
-DATA(insert OID =  938 (  timetz           PGUID 12 f t f t 1 f 1266 "25" 100 0 0 100 text_timetz - ));
+DATA(insert OID =  938 (  timetz           10 PGUID 12 f t f t 1 f 1266 "25" 100 0 0 100 text_timetz - ));
 DESCR("convert text to timetz");
-DATA(insert OID =  939 (  text               PGUID 12 f t t t 1 f 25 "1266" 100 0 0 100 timetz_text - ));
+DATA(insert OID =  939 (  text               10 PGUID 12 f t t t 1 f 25 "1266" 100 0 0 100 timetz_text - ));
 DESCR("convert timetz to text");

 /* OIDS 1000 - 1999 */

-DATA(insert OID = 1026 (  timezone           PGUID 12 f t f t 2 f 25 "1186 1184" 100 0 0 100  timestamptz_izone - ));
+DATA(insert OID = 1026 (  timezone           10 PGUID 12 f t f t 2 f 25 "1186 1184" 100 0 0 100  timestamptz_izone -
));
 DESCR("time zone");

-DATA(insert OID = 1029 (  nullvalue           PGUID 12 f t t f 1 f 16 "0" 100 0 0 100  nullvalue - ));
+DATA(insert OID = 1029 (  nullvalue           10 PGUID 12 f t t f 1 f 16 "0" 100 0 0 100  nullvalue - ));
 DESCR("(internal)");
-DATA(insert OID = 1030 (  nonnullvalue       PGUID 12 f t t f 1 f 16 "0" 100 0 0 100  nonnullvalue - ));
+DATA(insert OID = 1030 (  nonnullvalue       10 PGUID 12 f t t f 1 f 16 "0" 100 0 0 100  nonnullvalue - ));
 DESCR("(internal)");
-DATA(insert OID = 1031 (  aclitemin           PGUID 12 f t f t 1 f 1033 "0" 100 0 0 100  aclitemin - ));
+DATA(insert OID = 1031 (  aclitemin           10 PGUID 12 f t f t 1 f 1033 "0" 100 0 0 100  aclitemin - ));
 DESCR("(internal)");
-DATA(insert OID = 1032 (  aclitemout       PGUID 12 f t f t 1 f 23 "1033" 100 0 0 100  aclitemout - ));
+DATA(insert OID = 1032 (  aclitemout       10 PGUID 12 f t f t 1 f 23 "1033" 100 0 0 100  aclitemout - ));
 DESCR("(internal)");
-DATA(insert OID = 1035 (  aclinsert           PGUID 12 f t f t 2 f 1034 "1034 1033" 100 0 0 100  aclinsert - ));
+DATA(insert OID = 1035 (  aclinsert           10 PGUID 12 f t f t 2 f 1034 "1034 1033" 100 0 0 100  aclinsert - ));
 DESCR("add/update ACL item");
-DATA(insert OID = 1036 (  aclremove           PGUID 12 f t f t 2 f 1034 "1034 1033" 100 0 0 100  aclremove - ));
+DATA(insert OID = 1036 (  aclremove           10 PGUID 12 f t f t 2 f 1034 "1034 1033" 100 0 0 100  aclremove - ));
 DESCR("remove ACL item");
-DATA(insert OID = 1037 (  aclcontains       PGUID 12 f t f t 2 f 16 "1034 1033" 100 0 0 100  aclcontains - ));
+DATA(insert OID = 1037 (  aclcontains       10 PGUID 12 f t f t 2 f 16 "1034 1033" 100 0 0 100  aclcontains - ));
 DESCR("does ACL contain item?");
-DATA(insert OID = 1038 (  seteval           PGUID 12 f t f t 1 t 23 "26" 100 0 0 100  seteval - ));
+DATA(insert OID = 1038 (  seteval           10 PGUID 12 f t f t 1 t 23 "26" 100 0 0 100  seteval - ));
 DESCR("internal function supporting PostQuel-style sets");
-DATA(insert OID = 1044 (  bpcharin           PGUID 12 f t t t 3 f 1042 "0 26 23" 100 0 0 100 bpcharin - ));
+DATA(insert OID = 1044 (  bpcharin           10 PGUID 12 f t t t 3 f 1042 "0 26 23" 100 0 0 100 bpcharin - ));
 DESCR("(internal)");
-DATA(insert OID = 1045 (  bpcharout           PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  bpcharout - ));
+DATA(insert OID = 1045 (  bpcharout           10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  bpcharout - ));
 DESCR("(internal)");
-DATA(insert OID = 1046 (  varcharin           PGUID 12 f t t t 3 f 1043 "0 26 23" 100 0 0 100 varcharin - ));
+DATA(insert OID = 1046 (  varcharin           10 PGUID 12 f t t t 3 f 1043 "0 26 23" 100 0 0 100 varcharin - ));
 DESCR("(internal)");
-DATA(insert OID = 1047 (  varcharout       PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  varcharout - ));
+DATA(insert OID = 1047 (  varcharout       10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  varcharout - ));
 DESCR("(internal)");
-DATA(insert OID = 1048 (  bpchareq           PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100  bpchareq - ));
+DATA(insert OID = 1048 (  bpchareq           10 PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100  bpchareq - ));
 DESCR("equal");
-DATA(insert OID = 1049 (  bpcharlt           PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100  bpcharlt - ));
+DATA(insert OID = 1049 (  bpcharlt           10 PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100  bpcharlt - ));
 DESCR("less-than");
-DATA(insert OID = 1050 (  bpcharle           PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100  bpcharle - ));
+DATA(insert OID = 1050 (  bpcharle           10 PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100  bpcharle - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 1051 (  bpchargt           PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100  bpchargt - ));
+DATA(insert OID = 1051 (  bpchargt           10 PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100  bpchargt - ));
 DESCR("greater-than");
-DATA(insert OID = 1052 (  bpcharge           PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100  bpcharge - ));
+DATA(insert OID = 1052 (  bpcharge           10 PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100  bpcharge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 1053 (  bpcharne           PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100  bpcharne - ));
+DATA(insert OID = 1053 (  bpcharne           10 PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100  bpcharne - ));
 DESCR("not equal");
-DATA(insert OID = 1070 (  varchareq           PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100  varchareq - ));
+DATA(insert OID = 1070 (  varchareq           10 PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100  varchareq - ));
 DESCR("equal");
-DATA(insert OID = 1071 (  varcharlt           PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100  varcharlt - ));
+DATA(insert OID = 1071 (  varcharlt           10 PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100  varcharlt - ));
 DESCR("less-than");
-DATA(insert OID = 1072 (  varcharle           PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100  varcharle - ));
+DATA(insert OID = 1072 (  varcharle           10 PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100  varcharle - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 1073 (  varchargt           PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100  varchargt - ));
+DATA(insert OID = 1073 (  varchargt           10 PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100  varchargt - ));
 DESCR("greater-than");
-DATA(insert OID = 1074 (  varcharge           PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100  varcharge - ));
+DATA(insert OID = 1074 (  varcharge           10 PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100  varcharge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 1075 (  varcharne           PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100  varcharne - ));
+DATA(insert OID = 1075 (  varcharne           10 PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100  varcharne - ));
 DESCR("not equal");
-DATA(insert OID = 1078 (  bpcharcmp           PGUID 12 f t t t 2 f 23 "1042 1042" 100 0 0 100  bpcharcmp - ));
+DATA(insert OID = 1078 (  bpcharcmp           10 PGUID 12 f t t t 2 f 23 "1042 1042" 100 0 0 100  bpcharcmp - ));
 DESCR("less-equal-greater");
-DATA(insert OID = 1079 (  varcharcmp       PGUID 12 f t t t 2 f 23 "1043 1043" 100 0 0 100  varcharcmp - ));
+DATA(insert OID = 1079 (  varcharcmp       10 PGUID 12 f t t t 2 f 23 "1043 1043" 100 0 0 100  varcharcmp - ));
 DESCR("less-equal-greater");
-DATA(insert OID = 1080 (  hashbpchar       PGUID 12 f t t t 1 f 23 "1042" 100 0 0 100  hashbpchar - ));
+DATA(insert OID = 1080 (  hashbpchar       10 PGUID 12 f t t t 1 f 23 "1042" 100 0 0 100  hashbpchar - ));
 DESCR("hash");
-DATA(insert OID = 1081 (  format_type       PGUID 12 f t t f 2 f 25 "26 23" 100 0 0 100 format_type - ));
+DATA(insert OID = 1081 (  format_type       10 PGUID 12 f t t f 2 f 25 "26 23" 100 0 0 100 format_type - ));
 DESCR("format a type oid and atttypmod to canonical SQL");
-DATA(insert OID = 1084 (  date_in           PGUID 12 f t f t 1 f 1082 "0" 100 0 0 100  date_in - ));
+DATA(insert OID = 1084 (  date_in           10 PGUID 12 f t f t 1 f 1082 "0" 100 0 0 100  date_in - ));
 DESCR("(internal)");
-DATA(insert OID = 1085 (  date_out           PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  date_out - ));
+DATA(insert OID = 1085 (  date_out           10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  date_out - ));
 DESCR("(internal)");
-DATA(insert OID = 1086 (  date_eq           PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100  date_eq - ));
+DATA(insert OID = 1086 (  date_eq           10 PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100  date_eq - ));
 DESCR("equal");
-DATA(insert OID = 1087 (  date_lt           PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100  date_lt - ));
+DATA(insert OID = 1087 (  date_lt           10 PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100  date_lt - ));
 DESCR("less-than");
-DATA(insert OID = 1088 (  date_le           PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100  date_le - ));
+DATA(insert OID = 1088 (  date_le           10 PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100  date_le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 1089 (  date_gt           PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100  date_gt - ));
+DATA(insert OID = 1089 (  date_gt           10 PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100  date_gt - ));
 DESCR("greater-than");
-DATA(insert OID = 1090 (  date_ge           PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100  date_ge - ));
+DATA(insert OID = 1090 (  date_ge           10 PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100  date_ge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 1091 (  date_ne           PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100  date_ne - ));
+DATA(insert OID = 1091 (  date_ne           10 PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100  date_ne - ));
 DESCR("not equal");
-DATA(insert OID = 1092 (  date_cmp           PGUID 12 f t t t 2 f 23 "1082 1082" 100 0 0 100  date_cmp - ));
+DATA(insert OID = 1092 (  date_cmp           10 PGUID 12 f t t t 2 f 23 "1082 1082" 100 0 0 100  date_cmp - ));
 DESCR("less-equal-greater");

 /* OIDS 1100 - 1199 */

-DATA(insert OID = 1102 (  time_lt           PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100  time_lt - ));
+DATA(insert OID = 1102 (  time_lt           10 PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100  time_lt - ));
 DESCR("less-than");
-DATA(insert OID = 1103 (  time_le           PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100  time_le - ));
+DATA(insert OID = 1103 (  time_le           10 PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100  time_le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 1104 (  time_gt           PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100  time_gt - ));
+DATA(insert OID = 1104 (  time_gt           10 PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100  time_gt - ));
 DESCR("greater-than");
-DATA(insert OID = 1105 (  time_ge           PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100  time_ge - ));
+DATA(insert OID = 1105 (  time_ge           10 PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100  time_ge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 1106 (  time_ne           PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100  time_ne - ));
+DATA(insert OID = 1106 (  time_ne           10 PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100  time_ne - ));
 DESCR("not equal");
-DATA(insert OID = 1107 (  time_cmp           PGUID 12 f t t t 2 f 23 "1083 1083" 100 0 0 100  time_cmp - ));
+DATA(insert OID = 1107 (  time_cmp           10 PGUID 12 f t t t 2 f 23 "1083 1083" 100 0 0 100  time_cmp - ));
 DESCR("less-equal-greater");
-DATA(insert OID = 1138 (  date_larger       PGUID 12 f t t t 2 f 1082 "1082 1082" 100 0 0 100  date_larger - ));
+DATA(insert OID = 1138 (  date_larger       10 PGUID 12 f t t t 2 f 1082 "1082 1082" 100 0 0 100  date_larger - ));
 DESCR("larger of two");
-DATA(insert OID = 1139 (  date_smaller       PGUID 12 f t t t 2 f 1082 "1082 1082" 100 0 0 100  date_smaller - ));
+DATA(insert OID = 1139 (  date_smaller       10 PGUID 12 f t t t 2 f 1082 "1082 1082" 100 0 0 100  date_smaller - ));
 DESCR("smaller of two");
-DATA(insert OID = 1140 (  date_mi           PGUID 12 f t t t 2 f 23 "1082 1082" 100 0 0 100  date_mi - ));
+DATA(insert OID = 1140 (  date_mi           10 PGUID 12 f t t t 2 f 23 "1082 1082" 100 0 0 100  date_mi - ));
 DESCR("subtract");
-DATA(insert OID = 1141 (  date_pli           PGUID 12 f t t t 2 f 1082 "1082 23" 100 0 0 100  date_pli - ));
+DATA(insert OID = 1141 (  date_pli           10 PGUID 12 f t t t 2 f 1082 "1082 23" 100 0 0 100  date_pli - ));
 DESCR("add");
-DATA(insert OID = 1142 (  date_mii           PGUID 12 f t t t 2 f 1082 "1082 23" 100 0 0 100  date_mii - ));
+DATA(insert OID = 1142 (  date_mii           10 PGUID 12 f t t t 2 f 1082 "1082 23" 100 0 0 100  date_mii - ));
 DESCR("subtract");
-DATA(insert OID = 1143 (  time_in           PGUID 12 f t f t 1 f 1083 "0" 100 0 0 100  time_in - ));
+DATA(insert OID = 1143 (  time_in           10 PGUID 12 f t f t 1 f 1083 "0" 100 0 0 100  time_in - ));
 DESCR("(internal)");
-DATA(insert OID = 1144 (  time_out           PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  time_out - ));
+DATA(insert OID = 1144 (  time_out           10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  time_out - ));
 DESCR("(internal)");
-DATA(insert OID = 1145 (  time_eq           PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100  time_eq - ));
+DATA(insert OID = 1145 (  time_eq           10 PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100  time_eq - ));
 DESCR("equal");

-DATA(insert OID = 1146 (  circle_add_pt    PGUID 12 f t t t 2 f 718 "718 600" 100 0 0 100  circle_add_pt - ));
+DATA(insert OID = 1146 (  circle_add_pt    10 PGUID 12 f t t t 2 f 718 "718 600" 100 0 0 100  circle_add_pt - ));
 DESCR("add");
-DATA(insert OID = 1147 (  circle_sub_pt    PGUID 12 f t t t 2 f 718 "718 600" 100 0 0 100  circle_sub_pt - ));
+DATA(insert OID = 1147 (  circle_sub_pt    10 PGUID 12 f t t t 2 f 718 "718 600" 100 0 0 100  circle_sub_pt - ));
 DESCR("subtract");
-DATA(insert OID = 1148 (  circle_mul_pt    PGUID 12 f t t t 2 f 718 "718 600" 100 0 0 100  circle_mul_pt - ));
+DATA(insert OID = 1148 (  circle_mul_pt    10 PGUID 12 f t t t 2 f 718 "718 600" 100 0 0 100  circle_mul_pt - ));
 DESCR("multiply");
-DATA(insert OID = 1149 (  circle_div_pt    PGUID 12 f t t t 2 f 718 "718 600" 100 0 0 100  circle_div_pt - ));
+DATA(insert OID = 1149 (  circle_div_pt    10 PGUID 12 f t t t 2 f 718 "718 600" 100 0 0 100  circle_div_pt - ));
 DESCR("divide");

-DATA(insert OID = 1150 (  timestamptz_in   PGUID 12 f t f t 1 f 1184 "0" 100 0 0 100  timestamptz_in - ));
+DATA(insert OID = 1150 (  timestamptz_in   10 PGUID 12 f t f t 1 f 1184 "0" 100 0 0 100  timestamptz_in - ));
 DESCR("(internal)");
-DATA(insert OID = 1151 (  timestamptz_out  PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  timestamptz_out - ));
+DATA(insert OID = 1151 (  timestamptz_out  10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  timestamptz_out - ));
 DESCR("(internal)");
-DATA(insert OID = 1152 (  timestamptz_eq   PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100  timestamp_eq - ));
+DATA(insert OID = 1152 (  timestamptz_eq   10 PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100  timestamp_eq - ));
 DESCR("equal");
-DATA(insert OID = 1153 (  timestamptz_ne   PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100  timestamp_ne - ));
+DATA(insert OID = 1153 (  timestamptz_ne   10 PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100  timestamp_ne - ));
 DESCR("not equal");
-DATA(insert OID = 1154 (  timestamptz_lt   PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100  timestamp_lt - ));
+DATA(insert OID = 1154 (  timestamptz_lt   10 PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100  timestamp_lt - ));
 DESCR("less-than");
-DATA(insert OID = 1155 (  timestamptz_le   PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100  timestamp_le - ));
+DATA(insert OID = 1155 (  timestamptz_le   10 PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100  timestamp_le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 1156 (  timestamptz_ge   PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100  timestamp_ge - ));
+DATA(insert OID = 1156 (  timestamptz_ge   10 PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100  timestamp_ge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 1157 (  timestamptz_gt   PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100  timestamp_gt - ));
+DATA(insert OID = 1157 (  timestamptz_gt   10 PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100  timestamp_gt - ));
 DESCR("greater-than");
-DATA(insert OID = 1159 (  timezone           PGUID 12 f t f t 2 f 25 "25 1184" 100 0 0 100  timestamptz_zone - ));
+DATA(insert OID = 1159 (  timezone           10 PGUID 12 f t f t 2 f 25 "25 1184" 100 0 0 100  timestamptz_zone - ));
 DESCR("time zone");

-DATA(insert OID = 1160 (  interval_in       PGUID 12 f t f t 1 f 1186 "0" 100 0 0 100  interval_in - ));
+DATA(insert OID = 1160 (  interval_in       10 PGUID 12 f t f t 1 f 1186 "0" 100 0 0 100  interval_in - ));
 DESCR("(internal)");
-DATA(insert OID = 1161 (  interval_out       PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  interval_out - ));
+DATA(insert OID = 1161 (  interval_out       10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  interval_out - ));
 DESCR("(internal)");
-DATA(insert OID = 1162 (  interval_eq       PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100  interval_eq - ));
+DATA(insert OID = 1162 (  interval_eq       10 PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100  interval_eq - ));
 DESCR("equal");
-DATA(insert OID = 1163 (  interval_ne       PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100  interval_ne - ));
+DATA(insert OID = 1163 (  interval_ne       10 PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100  interval_ne - ));
 DESCR("not equal");
-DATA(insert OID = 1164 (  interval_lt       PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100  interval_lt - ));
+DATA(insert OID = 1164 (  interval_lt       10 PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100  interval_lt - ));
 DESCR("less-than");
-DATA(insert OID = 1165 (  interval_le       PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100  interval_le - ));
+DATA(insert OID = 1165 (  interval_le       10 PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100  interval_le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 1166 (  interval_ge       PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100  interval_ge - ));
+DATA(insert OID = 1166 (  interval_ge       10 PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100  interval_ge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 1167 (  interval_gt       PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100  interval_gt - ));
+DATA(insert OID = 1167 (  interval_gt       10 PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100  interval_gt - ));
 DESCR("greater-than");
-DATA(insert OID = 1168 (  interval_um       PGUID 12 f t t t 1 f 1186 "1186" 100 0 0 100  interval_um - ));
+DATA(insert OID = 1168 (  interval_um       10 PGUID 12 f t t t 1 f 1186 "1186" 100 0 0 100  interval_um - ));
 DESCR("subtract");
-DATA(insert OID = 1169 (  interval_pl       PGUID 12 f t t t 2 f 1186 "1186 1186" 100 0 0 100  interval_pl - ));
+DATA(insert OID = 1169 (  interval_pl       10 PGUID 12 f t t t 2 f 1186 "1186 1186" 100 0 0 100  interval_pl - ));
 DESCR("add");
-DATA(insert OID = 1170 (  interval_mi       PGUID 12 f t t t 2 f 1186 "1186 1186" 100 0 0 100  interval_mi - ));
+DATA(insert OID = 1170 (  interval_mi       10 PGUID 12 f t t t 2 f 1186 "1186 1186" 100 0 0 100  interval_mi - ));
 DESCR("subtract");
-DATA(insert OID = 1171 (  date_part           PGUID 12 f t f t 2 f  701 "25 1184" 100 0 0 100  timestamptz_part - ));
+DATA(insert OID = 1171 (  date_part           10 PGUID 12 f t f t 2 f  701 "25 1184" 100 0 0 100  timestamptz_part -
));
 DESCR("extract field from timestamp with time zone");
-DATA(insert OID = 1172 (  date_part           PGUID 12 f t t t 2 f  701 "25 1186" 100 0 0 100  interval_part - ));
+DATA(insert OID = 1172 (  date_part           10 PGUID 12 f t t t 2 f  701 "25 1186" 100 0 0 100  interval_part - ));
 DESCR("extract field from interval");

-DATA(insert OID = 1173 (  timestamptz       PGUID 12 f t f t 1 f 1184 "702" 100 0 0 100  abstime_timestamptz - ));
+DATA(insert OID = 1173 (  timestamptz       10 PGUID 12 f t f t 1 f 1184 "702" 100 0 0 100  abstime_timestamptz - ));
 DESCR("convert abstime to timestamp with time zone");
-DATA(insert OID = 1174 (  timestamptz       PGUID 12 f t f t 1 f 1184 "1082" 100 0 0 100  date_timestamptz - ));
+DATA(insert OID = 1174 (  timestamptz       10 PGUID 12 f t f t 1 f 1184 "1082" 100 0 0 100  date_timestamptz - ));
 DESCR("convert date to timestamp with time zone");
-DATA(insert OID = 1176 (  timestamptz       PGUID 14 f t f t 2 f 1184 "1082 1083" 100 0 0 100  "select timestamptz($1
+$2)" - )); 
+DATA(insert OID = 1176 (  timestamptz       10 PGUID 14 f t f t 2 f 1184 "1082 1083" 100 0 0 100  "select
timestamptz($1+ $2)" - )); 
 DESCR("convert date and time to timestamp with time zone");
-DATA(insert OID = 1177 (  interval           PGUID 12 f t t t 1 f 1186 "703" 100 0 0 100  reltime_interval - ));
+DATA(insert OID = 1177 (  interval           10 PGUID 12 f t t t 1 f 1186 "703" 100 0 0 100  reltime_interval - ));
 DESCR("convert reltime to interval");
-DATA(insert OID = 1178 (  date               PGUID 12 f t f t 1 f 1082 "1184" 100 0 0 100  timestamptz_date - ));
+DATA(insert OID = 1178 (  date               10 PGUID 12 f t f t 1 f 1082 "1184" 100 0 0 100  timestamptz_date - ));
 DESCR("convert timestamp with time zone to date");
-DATA(insert OID = 1179 (  date               PGUID 12 f t f t 1 f 1082 "702" 100 0 0 100  abstime_date - ));
+DATA(insert OID = 1179 (  date               10 PGUID 12 f t f t 1 f 1082 "702" 100 0 0 100  abstime_date - ));
 DESCR("convert abstime to date");
-DATA(insert OID = 1180 (  abstime           PGUID 12 f t f t 1 f  702 "1184" 100 0 0 100  timestamptz_abstime - ));
+DATA(insert OID = 1180 (  abstime           10 PGUID 12 f t f t 1 f  702 "1184" 100 0 0 100  timestamptz_abstime - ));
 DESCR("convert timestamp with time zone to abstime");
-DATA(insert OID = 1181 (  age               PGUID 12 f t f t 1 f 23 "28" 100 0 0 100  xid_age - ));
+DATA(insert OID = 1181 (  age               10 PGUID 12 f t f t 1 f 23 "28" 100 0 0 100  xid_age - ));
 DESCR("age of a transaction ID, in transactions before current transaction");

-DATA(insert OID = 1188 (  timestamptz_mi   PGUID 12 f t t t 2 f 1186 "1184 1184" 100 0 0 100  timestamp_mi - ));
+DATA(insert OID = 1188 (  timestamptz_mi   10 PGUID 12 f t t t 2 f 1186 "1184 1184" 100 0 0 100  timestamp_mi - ));
 DESCR("subtract");
-DATA(insert OID = 1189 (  timestamptz_pl_span PGUID 12 f t t t 2 f 1184 "1184 1186" 100 0 0 100  timestamp_pl_span -
));
+DATA(insert OID = 1189 (  timestamptz_pl_span 10 PGUID 12 f t t t 2 f 1184 "1184 1186" 100 0 0 100  timestamp_pl_span
-)); 
 DESCR("plus");
-DATA(insert OID = 1190 (  timestamptz_mi_span PGUID 12 f t t t 2 f 1184 "1184 1186" 100 0 0 100  timestamp_mi_span -
));
+DATA(insert OID = 1190 (  timestamptz_mi_span 10 PGUID 12 f t t t 2 f 1184 "1184 1186" 100 0 0 100  timestamp_mi_span
-)); 
 DESCR("minus");
-DATA(insert OID = 1191 (  timestamptz        PGUID 12 f t f t 1 f 1184 "25" 100 0 0 100  text_timestamptz - ));
+DATA(insert OID = 1191 (  timestamptz        10 PGUID 12 f t f t 1 f 1184 "25" 100 0 0 100  text_timestamptz - ));
 DESCR("convert text to timestamp with time zone");
-DATA(insert OID = 1192 (  text                PGUID 12 f t f t 1 f     25 "1184" 100 0 0 100  timestamptz_text - ));
+DATA(insert OID = 1192 (  text                10 PGUID 12 f t f t 1 f     25 "1184" 100 0 0 100  timestamptz_text -
));
 DESCR("convert timestamp to text");
-DATA(insert OID = 1193 (  text                PGUID 12 f t t t 1 f     25 "1186" 100 0 0 100  interval_text - ));
+DATA(insert OID = 1193 (  text                10 PGUID 12 f t t t 1 f     25 "1186" 100 0 0 100  interval_text - ));
 DESCR("convert interval to text");
-DATA(insert OID = 1194 (  reltime            PGUID 12 f t t t 1 f    703 "1186" 100 0 0 100  interval_reltime - ));
+DATA(insert OID = 1194 (  reltime            10 PGUID 12 f t t t 1 f    703 "1186" 100 0 0 100  interval_reltime - ));
 DESCR("convert interval to reltime");
-DATA(insert OID = 1195 (  timestamptz_smaller PGUID 12 f t t t 2 f 1184 "1184 1184" 100 0 0 100  timestamp_smaller -
));
+DATA(insert OID = 1195 (  timestamptz_smaller 10 PGUID 12 f t t t 2 f 1184 "1184 1184" 100 0 0 100  timestamp_smaller
-)); 
 DESCR("smaller of two");
-DATA(insert OID = 1196 (  timestamptz_larger  PGUID 12 f t t t 2 f 1184 "1184 1184" 100 0 0 100  timestamp_larger -
));
+DATA(insert OID = 1196 (  timestamptz_larger  10 PGUID 12 f t t t 2 f 1184 "1184 1184" 100 0 0 100  timestamp_larger -
));
 DESCR("larger of two");
-DATA(insert OID = 1197 (  interval_smaller    PGUID 12 f t t t 2 f 1186 "1186 1186" 100 0 0 100  interval_smaller -
));
+DATA(insert OID = 1197 (  interval_smaller    10 PGUID 12 f t t t 2 f 1186 "1186 1186" 100 0 0 100  interval_smaller -
));
 DESCR("smaller of two");
-DATA(insert OID = 1198 (  interval_larger    PGUID 12 f t t t 2 f 1186 "1186 1186" 100 0 0 100  interval_larger - ));
+DATA(insert OID = 1198 (  interval_larger    10 PGUID 12 f t t t 2 f 1186 "1186 1186" 100 0 0 100  interval_larger -
));
 DESCR("larger of two");
-DATA(insert OID = 1199 (  age                PGUID 12 f t t t 2 f 1186 "1184 1184" 100 0 0 100  timestamptz_age - ));
+DATA(insert OID = 1199 (  age                10 PGUID 12 f t t t 2 f 1186 "1184 1184" 100 0 0 100  timestamptz_age -
));
 DESCR("date difference preserving months and years");

 /* OIDS 1200 - 1299 */

-DATA(insert OID = 1200 (  reltime           PGUID 12 f t t t 1 f  703 "23" 100 0 0 100  int4reltime - ));
+DATA(insert OID = 1200 (  reltime           10 PGUID 12 f t t t 1 f  703 "23" 100 0 0 100  int4reltime - ));
 DESCR("convert int4 to reltime");

-DATA(insert OID = 1215 (  obj_description    PGUID 14 f t f t 2 f    25 "26 19" 100 0 0 100  "select description from
pg_descriptionwhere objoid = $1 and classoid = (select oid from pg_class where relname = $2) and objsubid = 0" - )); 
+DATA(insert OID = 1215 (  obj_description    10 PGUID 14 f t f t 2 f    25 "26 19" 100 0 0 100  "select description
frompg_description where objoid = $1 and classoid = (select oid from pg_class where relname = $2) and objsubid = 0" -
));
 DESCR("get description for object id and catalog name");
-DATA(insert OID = 1216 (  col_description    PGUID 14 f t f t 2 f    25 "26 23" 100 0 0 100  "select description from
pg_descriptionwhere objoid = $1 and classoid = (select oid from pg_class where relname = \'pg_class\') and objsubid =
$2"- )); 
+DATA(insert OID = 1216 (  col_description    10 PGUID 14 f t f t 2 f    25 "26 23" 100 0 0 100  "select description
frompg_description where objoid = $1 and classoid = (select oid from pg_class where relname = \'pg_class\') and
objsubid= $2" - )); 
 DESCR("get description for table column");

-DATA(insert OID = 1217 (  date_trunc       PGUID 12 f t t t 2 f 1184 "25 1184" 100 0 0 100  timestamptz_trunc - ));
+DATA(insert OID = 1217 (  date_trunc       10 PGUID 12 f t t t 2 f 1184 "25 1184" 100 0 0 100  timestamptz_trunc - ));
 DESCR("truncate timestamp with time zone to specified units");
-DATA(insert OID = 1218 (  date_trunc       PGUID 12 f t t t 2 f 1186 "25 1186" 100 0 0 100  interval_trunc - ));
+DATA(insert OID = 1218 (  date_trunc       10 PGUID 12 f t t t 2 f 1186 "25 1186" 100 0 0 100  interval_trunc - ));
 DESCR("truncate interval to specified units");

-DATA(insert OID = 1219 (  int8inc           PGUID 12 f t t t 1 f 20 "20" 100 0 0 100  int8inc - ));
+DATA(insert OID = 1219 (  int8inc           10 PGUID 12 f t t t 1 f 20 "20" 100 0 0 100  int8inc - ));
 DESCR("increment");
-DATA(insert OID = 1230 (  int8abs           PGUID 12 f t t t 1 f 20 "20" 100 0 0 100  int8abs - ));
+DATA(insert OID = 1230 (  int8abs           10 PGUID 12 f t t t 1 f 20 "20" 100 0 0 100  int8abs - ));
 DESCR("absolute value");

-DATA(insert OID = 1236 (  int8larger       PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8larger - ));
+DATA(insert OID = 1236 (  int8larger       10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8larger - ));
 DESCR("larger of two");
-DATA(insert OID = 1237 (  int8smaller       PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8smaller - ));
+DATA(insert OID = 1237 (  int8smaller       10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8smaller - ));
 DESCR("smaller of two");

-DATA(insert OID = 1238 (  texticregexeq    PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  texticregexeq - ));
+DATA(insert OID = 1238 (  texticregexeq    10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  texticregexeq - ));
 DESCR("matches regex., case-insensitive");
-DATA(insert OID = 1239 (  texticregexne    PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  texticregexne - ));
+DATA(insert OID = 1239 (  texticregexne    10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  texticregexne - ));
 DESCR("does not match regex., case-insensitive");
-DATA(insert OID = 1240 (  nameicregexeq    PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  nameicregexeq - ));
+DATA(insert OID = 1240 (  nameicregexeq    10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  nameicregexeq - ));
 DESCR("matches regex., case-insensitive");
-DATA(insert OID = 1241 (  nameicregexne    PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  nameicregexne - ));
+DATA(insert OID = 1241 (  nameicregexne    10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  nameicregexne - ));
 DESCR("does not match regex., case-insensitive");

-DATA(insert OID = 1251 (  int4abs           PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  int4abs - ));
+DATA(insert OID = 1251 (  int4abs           10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  int4abs - ));
 DESCR("absolute value");
-DATA(insert OID = 1253 (  int2abs           PGUID 12 f t t t 1 f 21 "21" 100 0 0 100  int2abs - ));
+DATA(insert OID = 1253 (  int2abs           10 PGUID 12 f t t t 1 f 21 "21" 100 0 0 100  int2abs - ));
 DESCR("absolute value");

-DATA(insert OID = 1263 (  interval           PGUID 12 f t f t 1 f 1186 "25" 100 0 0 100  text_interval - ));
+DATA(insert OID = 1263 (  interval           10 PGUID 12 f t f t 1 f 1186 "25" 100 0 0 100  text_interval - ));
 DESCR("convert text to interval");

-DATA(insert OID = 1271 (  overlaps           PGUID 12 f t t f 4 f 16 "1266 1266 1266 1266" 100 0 0 100
overlaps_timetz- )); 
+DATA(insert OID = 1271 (  overlaps           10 PGUID 12 f t t f 4 f 16 "1266 1266 1266 1266" 100 0 0 100
overlaps_timetz- )); 
 DESCR("SQL92 interval comparison");
-DATA(insert OID = 1272 (  datetime_pl       PGUID 12 f t t t 2 f 1114 "1082 1083" 100 0 0 100  datetime_timestamp -
));
+DATA(insert OID = 1272 (  datetime_pl       10 PGUID 12 f t t t 2 f 1114 "1082 1083" 100 0 0 100  datetime_timestamp -
));
 DESCR("convert date and time to timestamp");

-DATA(insert OID = 1274 (  int84pl           PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100  int84pl - ));
+DATA(insert OID = 1274 (  int84pl           10 PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100  int84pl - ));
 DESCR("add");
-DATA(insert OID = 1275 (  int84mi           PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100  int84mi - ));
+DATA(insert OID = 1275 (  int84mi           10 PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100  int84mi - ));
 DESCR("subtract");
-DATA(insert OID = 1276 (  int84mul           PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100  int84mul - ));
+DATA(insert OID = 1276 (  int84mul           10 PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100  int84mul - ));
 DESCR("multiply");
-DATA(insert OID = 1277 (  int84div           PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100  int84div - ));
+DATA(insert OID = 1277 (  int84div           10 PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100  int84div - ));
 DESCR("divide");
-DATA(insert OID = 1278 (  int48pl           PGUID 12 f t t t 2 f 20 "23 20" 100 0 0 100  int48pl - ));
+DATA(insert OID = 1278 (  int48pl           10 PGUID 12 f t t t 2 f 20 "23 20" 100 0 0 100  int48pl - ));
 DESCR("add");
-DATA(insert OID = 1279 (  int48mi           PGUID 12 f t t t 2 f 20 "23 20" 100 0 0 100  int48mi - ));
+DATA(insert OID = 1279 (  int48mi           10 PGUID 12 f t t t 2 f 20 "23 20" 100 0 0 100  int48mi - ));
 DESCR("subtract");
-DATA(insert OID = 1280 (  int48mul           PGUID 12 f t t t 2 f 20 "23 20" 100 0 0 100  int48mul - ));
+DATA(insert OID = 1280 (  int48mul           10 PGUID 12 f t t t 2 f 20 "23 20" 100 0 0 100  int48mul - ));
 DESCR("multiply");
-DATA(insert OID = 1281 (  int48div           PGUID 12 f t t t 2 f 20 "23 20" 100 0 0 100  int48div - ));
+DATA(insert OID = 1281 (  int48div           10 PGUID 12 f t t t 2 f 20 "23 20" 100 0 0 100  int48div - ));
 DESCR("divide");

-DATA(insert OID = 1288 (  text               PGUID 12 f t t t 1 f 25 "20" 100 0 0 100  int8_text - ));
+DATA(insert OID = 1288 (  text               10 PGUID 12 f t t t 1 f 25 "20" 100 0 0 100  int8_text - ));
 DESCR("convert int8 to text");
-DATA(insert OID = 1289 (  int8               PGUID 12 f t t t 1 f 20 "25" 100 0 0 100  text_int8 - ));
+DATA(insert OID = 1289 (  int8               10 PGUID 12 f t t t 1 f 20 "25" 100 0 0 100  text_int8 - ));
 DESCR("convert text to int8");

-DATA(insert OID = 1290 (  _bpchar           PGUID 12 f t t t 2 f 1014 "1014 23" 100 0 0 100  _bpchar - ));
+DATA(insert OID = 1290 (  _bpchar           10 PGUID 12 f t t t 2 f 1014 "1014 23" 100 0 0 100  _bpchar - ));
 DESCR("adjust char()[] to typmod length");
-DATA(insert OID = 1291 (  _varchar           PGUID 12 f t t t 2 f 1015 "1015 23" 100 0 0 100  _varchar - ));
+DATA(insert OID = 1291 (  _varchar           10 PGUID 12 f t t t 2 f 1015 "1015 23" 100 0 0 100  _varchar - ));
 DESCR("adjust varchar()[] to typmod length");

-DATA(insert OID = 1292 ( tideq               PGUID 12 f t t t 2 f 16 "27 27" 100 0 0 100  tideq - ));
+DATA(insert OID = 1292 ( tideq               10 PGUID 12 f t t t 2 f 16 "27 27" 100 0 0 100  tideq - ));
 DESCR("equal");
-DATA(insert OID = 1293 ( currtid           PGUID 12 f t f t 2 f 27 "26 27" 100 0 0 100  currtid_byreloid - ));
+DATA(insert OID = 1293 ( currtid           10 PGUID 12 f t f t 2 f 27 "26 27" 100 0 0 100  currtid_byreloid - ));
 DESCR("latest tid of a tuple");
-DATA(insert OID = 1294 ( currtid2           PGUID 12 f t f t 2 f 27 "25 27" 100 0 0 100  currtid_byrelname - ));
+DATA(insert OID = 1294 ( currtid2           10 PGUID 12 f t f t 2 f 27 "25 27" 100 0 0 100  currtid_byrelname - ));
 DESCR("latest tid of a tuple");

-DATA(insert OID = 1296 (  timedate_pl       PGUID 14 f t t t 2 f 1114 "1083 1082" 100 0 0 100  "select ($2 + $1)" -
));
+DATA(insert OID = 1296 (  timedate_pl       10 PGUID 14 f t t t 2 f 1114 "1083 1082" 100 0 0 100  "select ($2 + $1)" -
));
 DESCR("convert time and date to timestamp");
-DATA(insert OID = 1297 (  datetimetz_pl    PGUID 12 f t t t 2 f 1184 "1082 1266" 100 0 0 100  datetimetz_timestamptz -
));
+DATA(insert OID = 1297 (  datetimetz_pl    10 PGUID 12 f t t t 2 f 1184 "1082 1266" 100 0 0 100
datetimetz_timestamptz- )); 
 DESCR("convert date and time with time zone to timestamp with time zone");
-DATA(insert OID = 1298 (  timetzdate_pl    PGUID 14 f t t t 2 f 1184 "1266 1082" 100 0 0 100  "select ($2 + $1)" - ));
+DATA(insert OID = 1298 (  timetzdate_pl    10 PGUID 14 f t t t 2 f 1184 "1266 1082" 100 0 0 100  "select ($2 + $1)" -
));
 DESCR("convert time with time zone and date to timestamp");
-DATA(insert OID = 1299 (  now               PGUID 12 f t f t 0 f 1184 "0" 100 0 0 100  now - ));
+DATA(insert OID = 1299 (  now               10 PGUID 12 f t f t 0 f 1184 "0" 100 0 0 100  now - ));
 DESCR("current transaction time");

 /* OIDS 1300 - 1399 */

-DATA(insert OID = 1300 (  positionsel           PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  positionsel - ));
+DATA(insert OID = 1300 (  positionsel           10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  positionsel - ));
 DESCR("restriction selectivity for position-comparison operators");
-DATA(insert OID = 1301 (  positionjoinsel       PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  positionjoinsel - ));
+DATA(insert OID = 1301 (  positionjoinsel       10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  positionjoinsel -
));
 DESCR("join selectivity for position-comparison operators");
-DATA(insert OID = 1302 (  contsel           PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  contsel - ));
+DATA(insert OID = 1302 (  contsel           10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  contsel - ));
 DESCR("restriction selectivity for containment comparison operators");
-DATA(insert OID = 1303 (  contjoinsel       PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  contjoinsel - ));
+DATA(insert OID = 1303 (  contjoinsel       10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  contjoinsel - ));
 DESCR("join selectivity for containment comparison operators");

-DATA(insert OID = 1304 ( overlaps             PGUID 12 f t t f 4 f 16 "1184 1184 1184 1184" 100 0 0 100
overlaps_timestamp- )); 
+DATA(insert OID = 1304 ( overlaps             10 PGUID 12 f t t f 4 f 16 "1184 1184 1184 1184" 100 0 0 100
overlaps_timestamp- )); 
 DESCR("SQL92 interval comparison");
-DATA(insert OID = 1305 ( overlaps             PGUID 14 f t t f 4 f 16 "1184 1186 1184 1186" 100 0 0 100  "select ($1,
($1+ $2)) overlaps ($3, ($3 + $4))" - )); 
+DATA(insert OID = 1305 ( overlaps             10 PGUID 14 f t t f 4 f 16 "1184 1186 1184 1186" 100 0 0 100  "select
($1,($1 + $2)) overlaps ($3, ($3 + $4))" - )); 
 DESCR("SQL92 interval comparison");
-DATA(insert OID = 1306 ( overlaps             PGUID 14 f t t f 4 f 16 "1184 1184 1184 1186" 100 0 0 100  "select ($1,
$2)overlaps ($3, ($3 + $4))" - )); 
+DATA(insert OID = 1306 ( overlaps             10 PGUID 14 f t t f 4 f 16 "1184 1184 1184 1186" 100 0 0 100  "select
($1,$2) overlaps ($3, ($3 + $4))" - )); 
 DESCR("SQL92 interval comparison");
-DATA(insert OID = 1307 ( overlaps             PGUID 14 f t t f 4 f 16 "1184 1186 1184 1184" 100 0 0 100  "select ($1,
($1+ $2)) overlaps ($3, $4)" - )); 
+DATA(insert OID = 1307 ( overlaps             10 PGUID 14 f t t f 4 f 16 "1184 1186 1184 1184" 100 0 0 100  "select
($1,($1 + $2)) overlaps ($3, $4)" - )); 
 DESCR("SQL92 interval comparison");

-DATA(insert OID = 1308 ( overlaps             PGUID 12 f t t f 4 f 16 "1083 1083 1083 1083" 100 0 0 100  overlaps_time
-)); 
+DATA(insert OID = 1308 ( overlaps             10 PGUID 12 f t t f 4 f 16 "1083 1083 1083 1083" 100 0 0 100
overlaps_time- )); 
 DESCR("SQL92 interval comparison");
-DATA(insert OID = 1309 ( overlaps             PGUID 14 f t t f 4 f 16 "1083 1186 1083 1186" 100 0 0 100  "select ($1,
($1+ $2)) overlaps ($3, ($3 + $4))" - )); 
+DATA(insert OID = 1309 ( overlaps             10 PGUID 14 f t t f 4 f 16 "1083 1186 1083 1186" 100 0 0 100  "select
($1,($1 + $2)) overlaps ($3, ($3 + $4))" - )); 
 DESCR("SQL92 interval comparison");
-DATA(insert OID = 1310 ( overlaps             PGUID 14 f t t f 4 f 16 "1083 1083 1083 1186" 100 0 0 100  "select ($1,
$2)overlaps ($3, ($3 + $4))" - )); 
+DATA(insert OID = 1310 ( overlaps             10 PGUID 14 f t t f 4 f 16 "1083 1083 1083 1186" 100 0 0 100  "select
($1,$2) overlaps ($3, ($3 + $4))" - )); 
 DESCR("SQL92 interval comparison");
-DATA(insert OID = 1311 ( overlaps             PGUID 14 f t t f 4 f 16 "1083 1186 1083 1083" 100 0 0 100  "select ($1,
($1+ $2)) overlaps ($3, $4)" - )); 
+DATA(insert OID = 1311 ( overlaps             10 PGUID 14 f t t f 4 f 16 "1083 1186 1083 1083" 100 0 0 100  "select
($1,($1 + $2)) overlaps ($3, $4)" - )); 
 DESCR("SQL92 interval comparison");

-DATA(insert OID = 1312 (  timestamp_in         PGUID 12 f t f t 1 f 1114 "0" 100 0 0 100  timestamp_in - ));
+DATA(insert OID = 1312 (  timestamp_in         10 PGUID 12 f t f t 1 f 1114 "0" 100 0 0 100  timestamp_in - ));
 DESCR("(internal)");
-DATA(insert OID = 1313 (  timestamp_out         PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  timestamp_out - ));
+DATA(insert OID = 1313 (  timestamp_out         10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100  timestamp_out - ));
 DESCR("(internal)");
-DATA(insert OID = 1314 (  timestamptz_cmp     PGUID 12 f t t t 2 f    23 "1184 1184" 100 0 0 100  timestamp_cmp - ));
+DATA(insert OID = 1314 (  timestamptz_cmp     10 PGUID 12 f t t t 2 f    23 "1184 1184" 100 0 0 100  timestamp_cmp -
));
 DESCR("less-equal-greater");
-DATA(insert OID = 1315 (  interval_cmp         PGUID 12 f t t t 2 f    23 "1186 1186" 100 0 0 100  interval_cmp - ));
+DATA(insert OID = 1315 (  interval_cmp         10 PGUID 12 f t t t 2 f    23 "1186 1186" 100 0 0 100  interval_cmp -
));
 DESCR("less-equal-greater");
-DATA(insert OID = 1316 (  time                 PGUID 12 f t t t 1 f 1083 "1114" 100 0 0 100  timestamp_time - ));
+DATA(insert OID = 1316 (  time                 10 PGUID 12 f t t t 1 f 1083 "1114" 100 0 0 100  timestamp_time - ));
 DESCR("convert timestamp to time");

-DATA(insert OID = 1317 (  length             PGUID 12 f t t t 1 f    23 "25" 100 0 0 100  textlen - ));
+DATA(insert OID = 1317 (  length             10 PGUID 12 f t t t 1 f    23 "25" 100 0 0 100  textlen - ));
 DESCR("length");
-DATA(insert OID = 1318 (  length             PGUID 12 f t t t 1 f    23 "1042" 100 0 0 100  bpcharlen - ));
+DATA(insert OID = 1318 (  length             10 PGUID 12 f t t t 1 f    23 "1042" 100 0 0 100  bpcharlen - ));
 DESCR("character length");
-DATA(insert OID = 1319 (  length             PGUID 12 f t t t 1 f    23 "1043" 100 0 0 100  varcharlen - ));
+DATA(insert OID = 1319 (  length             10 PGUID 12 f t t t 1 f    23 "1043" 100 0 0 100  varcharlen - ));
 DESCR("character length");

-DATA(insert OID = 1326 (  interval_div         PGUID 12 f t t t 2 f 1186 "1186 701" 100 0 0 100  interval_div - ));
+DATA(insert OID = 1326 (  interval_div         10 PGUID 12 f t t t 2 f 1186 "1186 701" 100 0 0 100  interval_div - ));
 DESCR("divide");

-DATA(insert OID = 1339 (  dlog10             PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dlog10 - ));
+DATA(insert OID = 1339 (  dlog10             10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dlog10 - ));
 DESCR("base 10 logarithm");
-DATA(insert OID = 1340 (  log                 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dlog10 - ));
+DATA(insert OID = 1340 (  log                 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dlog10 - ));
 DESCR("base 10 logarithm");
-DATA(insert OID = 1341 (  ln                 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dlog1 - ));
+DATA(insert OID = 1341 (  ln                 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dlog1 - ));
 DESCR("natural logarithm");
-DATA(insert OID = 1342 (  round                 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dround - ));
+DATA(insert OID = 1342 (  round                 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dround - ));
 DESCR("round to nearest integer");
-DATA(insert OID = 1343 (  trunc                 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dtrunc - ));
+DATA(insert OID = 1343 (  trunc                 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dtrunc - ));
 DESCR("truncate to integer");
-DATA(insert OID = 1344 (  sqrt                 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dsqrt - ));
+DATA(insert OID = 1344 (  sqrt                 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dsqrt - ));
 DESCR("square root");
-DATA(insert OID = 1345 (  cbrt                 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dcbrt - ));
+DATA(insert OID = 1345 (  cbrt                 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dcbrt - ));
 DESCR("cube root");
-DATA(insert OID = 1346 (  pow                 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  dpow - ));
+DATA(insert OID = 1346 (  pow                 10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  dpow - ));
 DESCR("exponentiation");
-DATA(insert OID = 1347 (  exp                 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dexp - ));
+DATA(insert OID = 1347 (  exp                 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dexp - ));
 DESCR("exponential");

 /*
  * This form of obj_description is now deprecated, since it will fail if
  * OIDs are not unique across system catalogs.  Use the other forms instead.
  */
-DATA(insert OID = 1348 (  obj_description     PGUID 14 f t f t 1 f    25 "26" 100 0 0 100  "select description from
pg_descriptionwhere objoid = $1 and objsubid = 0" - )); 
+DATA(insert OID = 1348 (  obj_description     10 PGUID 14 f t f t 1 f    25 "26" 100 0 0 100  "select description from
pg_descriptionwhere objoid = $1 and objsubid = 0" - )); 
 DESCR("get description for object id (deprecated)");
-DATA(insert OID = 1349 (  oidvectortypes     PGUID 12 f t f t 1 f    25 "30" 100 0 0 100  oidvectortypes - ));
+DATA(insert OID = 1349 (  oidvectortypes     10 PGUID 12 f t f t 1 f    25 "30" 100 0 0 100  oidvectortypes - ));
 DESCR("print type names of oidvector field");


-DATA(insert OID = 1350 (  timetz_in           PGUID 12 f t f t 1 f 1266 "0" 100 0 0 100  timetz_in - ));
+DATA(insert OID = 1350 (  timetz_in           10 PGUID 12 f t f t 1 f 1266 "0" 100 0 0 100  timetz_in - ));
 DESCR("(internal)");
-DATA(insert OID = 1351 (  timetz_out       PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  timetz_out - ));
+DATA(insert OID = 1351 (  timetz_out       10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  timetz_out - ));
 DESCR("(internal)");
-DATA(insert OID = 1352 (  timetz_eq           PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100  timetz_eq - ));
+DATA(insert OID = 1352 (  timetz_eq           10 PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100  timetz_eq - ));
 DESCR("equal");
-DATA(insert OID = 1353 (  timetz_ne           PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100  timetz_ne - ));
+DATA(insert OID = 1353 (  timetz_ne           10 PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100  timetz_ne - ));
 DESCR("not equal");
-DATA(insert OID = 1354 (  timetz_lt           PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100  timetz_lt - ));
+DATA(insert OID = 1354 (  timetz_lt           10 PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100  timetz_lt - ));
 DESCR("less-than");
-DATA(insert OID = 1355 (  timetz_le           PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100  timetz_le - ));
+DATA(insert OID = 1355 (  timetz_le           10 PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100  timetz_le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 1356 (  timetz_ge           PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100  timetz_ge - ));
+DATA(insert OID = 1356 (  timetz_ge           10 PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100  timetz_ge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 1357 (  timetz_gt           PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100  timetz_gt - ));
+DATA(insert OID = 1357 (  timetz_gt           10 PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100  timetz_gt - ));
 DESCR("greater-than");
-DATA(insert OID = 1358 (  timetz_cmp       PGUID 12 f t t t 2 f 23 "1266 1266" 100 0 0 100  timetz_cmp - ));
+DATA(insert OID = 1358 (  timetz_cmp       10 PGUID 12 f t t t 2 f 23 "1266 1266" 100 0 0 100  timetz_cmp - ));
 DESCR("less-equal-greater");
-DATA(insert OID = 1359 (  timestamptz       PGUID 12 f t t t 2 f 1184 "1082 1266" 100 0 0 100  datetimetz_timestamptz
-)); 
+DATA(insert OID = 1359 (  timestamptz       10 PGUID 12 f t t t 2 f 1184 "1082 1266" 100 0 0 100
datetimetz_timestamptz- )); 
 DESCR("convert date and time with time zone to timestamp with time zone");

-DATA(insert OID = 1362 (  time                 PGUID 14 f t t t 1 f 1083 "1083" 100 0 0 100  "select $1" - ));
+DATA(insert OID = 1362 (  time                 10 PGUID 14 f t t t 1 f 1083 "1083" 100 0 0 100  "select $1" - ));
 DESCR("convert (noop)");
-DATA(insert OID = 1364 (  time                 PGUID 14 f t t t 1 f 1083 "702" 100 0 0 100  "select time(cast($1 as
timestampwithout time zone))" - )); 
+DATA(insert OID = 1364 (  time                 10 PGUID 14 f t t t 1 f 1083 "702" 100 0 0 100  "select time(cast($1 as
timestampwithout time zone))" - )); 
 DESCR("convert abstime to time");
-DATA(insert OID = 1365 (  abstime             PGUID 14 f t t t 1 f  702 "702" 100 0 0 100  "select $1" - ));
+DATA(insert OID = 1365 (  abstime             10 PGUID 14 f t t t 1 f  702 "702" 100 0 0 100  "select $1" - ));
 DESCR("convert (noop)");
-DATA(insert OID = 1367 (  reltime             PGUID 14 f t t t 1 f  703 "703" 100 0 0 100  "select $1" - ));
+DATA(insert OID = 1367 (  reltime             10 PGUID 14 f t t t 1 f  703 "703" 100 0 0 100  "select $1" - ));
 DESCR("convert (noop)");
-DATA(insert OID = 1368 (  timestamptz         PGUID 14 f t t t 1 f 1184 "1184" 100 0 0 100  "select $1" - ));
+DATA(insert OID = 1368 (  timestamptz         10 PGUID 14 f t t t 1 f 1184 "1184" 100 0 0 100  "select $1" - ));
 DESCR("convert (noop)");
-DATA(insert OID = 1369 (  interval             PGUID 14 f t t t 1 f 1186 "1186" 100 0 0 100  "select $1" - ));
+DATA(insert OID = 1369 (  interval             10 PGUID 14 f t t t 1 f 1186 "1186" 100 0 0 100  "select $1" - ));
 DESCR("convert (noop)");
-DATA(insert OID = 1370 (  interval             PGUID 12 f t t t 1 f 1186 "1083" 100 0 0 100  time_interval - ));
+DATA(insert OID = 1370 (  interval             10 PGUID 12 f t t t 1 f 1186 "1083" 100 0 0 100  time_interval - ));
 DESCR("convert time to interval");
-DATA(insert OID = 1371 (  date                 PGUID 14 f t t t 1 f 1082 "1082" 100 0 0 100  "select $1" - ));
+DATA(insert OID = 1371 (  date                 10 PGUID 14 f t t t 1 f 1082 "1082" 100 0 0 100  "select $1" - ));
 DESCR("convert (noop)");
-DATA(insert OID = 1372 (  char_length         PGUID 12 f t t t 1 f    23     "1042" 100 0 0 100  bpcharlen - ));
+DATA(insert OID = 1372 (  char_length         10 PGUID 12 f t t t 1 f    23     "1042" 100 0 0 100  bpcharlen - ));
 DESCR("character length");
-DATA(insert OID = 1373 (  char_length         PGUID 12 f t t t 1 f    23     "1043" 100 0 0 100  varcharlen - ));
+DATA(insert OID = 1373 (  char_length         10 PGUID 12 f t t t 1 f    23     "1043" 100 0 0 100  varcharlen - ));
 DESCR("character length");

-DATA(insert OID = 1374 (  octet_length             PGUID 12 f t t t 1 f    23     "25" 100 0 0 100  textoctetlen - ));
+DATA(insert OID = 1374 (  octet_length             10 PGUID 12 f t t t 1 f    23     "25" 100 0 0 100  textoctetlen -
));
 DESCR("octet length");
-DATA(insert OID = 1375 (  octet_length             PGUID 12 f t t t 1 f    23     "1042" 100 0 0 100  bpcharoctetlen -
));
+DATA(insert OID = 1375 (  octet_length             10 PGUID 12 f t t t 1 f    23     "1042" 100 0 0 100
bpcharoctetlen- )); 
 DESCR("octet length");
-DATA(insert OID = 1376 (  octet_length             PGUID 12 f t t t 1 f    23     "1043" 100 0 0 100  varcharoctetlen
-)); 
+DATA(insert OID = 1376 (  octet_length             10 PGUID 12 f t t t 1 f    23     "1043" 100 0 0 100
varcharoctetlen- )); 
 DESCR("octet length");

-DATA(insert OID = 1377 (  time_larger       PGUID 12 f t t t 2 f 1083 "1083 1083" 100 0 0 100  time_larger - ));
+DATA(insert OID = 1377 (  time_larger       10 PGUID 12 f t t t 2 f 1083 "1083 1083" 100 0 0 100  time_larger - ));
 DESCR("larger of two");
-DATA(insert OID = 1378 (  time_smaller       PGUID 12 f t t t 2 f 1083 "1083 1083" 100 0 0 100  time_smaller - ));
+DATA(insert OID = 1378 (  time_smaller       10 PGUID 12 f t t t 2 f 1083 "1083 1083" 100 0 0 100  time_smaller - ));
 DESCR("smaller of two");
-DATA(insert OID = 1379 (  timetz_larger    PGUID 12 f t t t 2 f 1266 "1266 1266" 100 0 0 100  timetz_larger - ));
+DATA(insert OID = 1379 (  timetz_larger    10 PGUID 12 f t t t 2 f 1266 "1266 1266" 100 0 0 100  timetz_larger - ));
 DESCR("larger of two");
-DATA(insert OID = 1380 (  timetz_smaller   PGUID 12 f t t t 2 f 1266 "1266 1266" 100 0 0 100  timetz_smaller - ));
+DATA(insert OID = 1380 (  timetz_smaller   10 PGUID 12 f t t t 2 f 1266 "1266 1266" 100 0 0 100  timetz_smaller - ));
 DESCR("smaller of two");

-DATA(insert OID = 1381 (  char_length       PGUID 12 f t t t 1 f 23 "25" 100 0 0 100  textlen - ));
+DATA(insert OID = 1381 (  char_length       10 PGUID 12 f t t t 1 f 23 "25" 100 0 0 100  textlen - ));
 DESCR("length");

-DATA(insert OID = 1382 (  date_part    PGUID 14 f t f t 2 f  701 "25 702" 100 0 0 100  "select date_part($1,
timestamptz($2))"- )); 
+DATA(insert OID = 1382 (  date_part    10 PGUID 14 f t f t 2 f  701 "25 702" 100 0 0 100  "select date_part($1,
timestamptz($2))"- )); 
 DESCR("extract field from abstime");
-DATA(insert OID = 1383 (  date_part    PGUID 14 f t f t 2 f  701 "25 703" 100 0 0 100  "select date_part($1,
interval($2))"- )); 
+DATA(insert OID = 1383 (  date_part    10 PGUID 14 f t f t 2 f  701 "25 703" 100 0 0 100  "select date_part($1,
interval($2))"- )); 
 DESCR("extract field from reltime");
-DATA(insert OID = 1384 (  date_part    PGUID 14 f t t t 2 f  701 "25 1082" 100 0 0 100  "select date_part($1, cast($2
astimestamp without time zone))" - )); 
+DATA(insert OID = 1384 (  date_part    10 PGUID 14 f t t t 2 f  701 "25 1082" 100 0 0 100  "select date_part($1,
cast($2as timestamp without time zone))" - )); 
 DESCR("extract field from date");
-DATA(insert OID = 1385 (  date_part    PGUID 14 f t t t 2 f  701 "25 1083" 100 0 0 100  "select date_part($1,
interval($2))"- )); 
+DATA(insert OID = 1385 (  date_part    10 PGUID 14 f t t t 2 f  701 "25 1083" 100 0 0 100  "select date_part($1,
interval($2))"- )); 
 DESCR("extract field from time");
-DATA(insert OID = 1386 (  age           PGUID 14 f t f t 1 f 1186 "1184" 100 0 0 100  "select age(cast(current_date as
timestampwith time zone), $1)" - )); 
+DATA(insert OID = 1386 (  age           10 PGUID 14 f t f t 1 f 1186 "1184" 100 0 0 100  "select age(cast(current_date
astimestamp with time zone), $1)" - )); 
 DESCR("date difference from today preserving months and years");

-DATA(insert OID = 1387 (  timetz           PGUID 14 f t t t 1 f 1266 "1266" 100 0 0 100  "select $1" - ));
+DATA(insert OID = 1387 (  timetz           10 PGUID 14 f t t t 1 f 1266 "1266" 100 0 0 100  "select $1" - ));
 DESCR("noop conversion");
-DATA(insert OID = 1388 (  timetz           PGUID 12 f t f t 1 f 1266 "1184" 100 0 0 100  timestamptz_timetz - ));
+DATA(insert OID = 1388 (  timetz           10 PGUID 12 f t f t 1 f 1266 "1184" 100 0 0 100  timestamptz_timetz - ));
 DESCR("convert timestamp to timetz");

-DATA(insert OID = 1389 (  isfinite       PGUID 12 f t t t 1 f 16 "1184" 100 0 0 100  timestamp_finite - ));
+DATA(insert OID = 1389 (  isfinite       10 PGUID 12 f t t t 1 f 16 "1184" 100 0 0 100  timestamp_finite - ));
 DESCR("boolean test");
-DATA(insert OID = 1390 (  isfinite       PGUID 12 f t t t 1 f 16 "1186" 100 0 0 100  interval_finite - ));
+DATA(insert OID = 1390 (  isfinite       10 PGUID 12 f t t t 1 f 16 "1186" 100 0 0 100  interval_finite - ));
 DESCR("boolean test");


-DATA(insert OID = 1391 (  factorial           PGUID 12 f t t t 1 f 23 "21" 100 0 0 100  int2fac - ));
+DATA(insert OID = 1391 (  factorial           10 PGUID 12 f t t t 1 f 23 "21" 100 0 0 100  int2fac - ));
 DESCR("factorial");
-DATA(insert OID = 1392 (  factorial           PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  int4fac - ));
+DATA(insert OID = 1392 (  factorial           10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  int4fac - ));
 DESCR("factorial");
-DATA(insert OID = 1393 (  factorial           PGUID 12 f t t t 1 f 20 "20" 100 0 0 100  int8fac - ));
+DATA(insert OID = 1393 (  factorial           10 PGUID 12 f t t t 1 f 20 "20" 100 0 0 100  int8fac - ));
 DESCR("factorial");
-DATA(insert OID = 1394 (  abs               PGUID 12 f t t t 1 f 700 "700" 100 0 0 100  float4abs - ));
+DATA(insert OID = 1394 (  abs               10 PGUID 12 f t t t 1 f 700 "700" 100 0 0 100  float4abs - ));
 DESCR("absolute value");
-DATA(insert OID = 1395 (  abs               PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  float8abs - ));
+DATA(insert OID = 1395 (  abs               10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  float8abs - ));
 DESCR("absolute value");
-DATA(insert OID = 1396 (  abs               PGUID 12 f t t t 1 f 20 "20" 100 0 0 100  int8abs - ));
+DATA(insert OID = 1396 (  abs               10 PGUID 12 f t t t 1 f 20 "20" 100 0 0 100  int8abs - ));
 DESCR("absolute value");
-DATA(insert OID = 1397 (  abs               PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  int4abs - ));
+DATA(insert OID = 1397 (  abs               10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  int4abs - ));
 DESCR("absolute value");
-DATA(insert OID = 1398 (  abs               PGUID 12 f t t t 1 f 21 "21" 100 0 0 100  int2abs - ));
+DATA(insert OID = 1398 (  abs               10 PGUID 12 f t t t 1 f 21 "21" 100 0 0 100  int2abs - ));
 DESCR("absolute value");

 /* OIDS 1400 - 1499 */

-DATA(insert OID = 1400 (  name           PGUID 12 f t t t 1 f 19 "1043" 100 0 0 100  text_name - ));
+DATA(insert OID = 1400 (  name           10 PGUID 12 f t t t 1 f 19 "1043" 100 0 0 100  text_name - ));
 DESCR("convert varchar to name");
-DATA(insert OID = 1401 (  varchar       PGUID 12 f t t t 1 f 1043 "19" 100 0 0 100  name_text - ));
+DATA(insert OID = 1401 (  varchar       10 PGUID 12 f t t t 1 f 1043 "19" 100 0 0 100  name_text - ));
 DESCR("convert name to varchar");

-DATA(insert OID = 1402 (  float4       PGUID 14 f t t t 1 f  700    "700" 100 0 0 100  "select $1" - ));
+DATA(insert OID = 1402 (  float4       10 PGUID 14 f t t t 1 f  700    "700" 100 0 0 100  "select $1" - ));
 DESCR("convert float4 to float4 (no-op)");
-DATA(insert OID = 1403 (  int2           PGUID 14 f t t t 1 f 21     "21" 100 0 0 100  "select $1" - ));
+DATA(insert OID = 1403 (  int2           10 PGUID 14 f t t t 1 f 21     "21" 100 0 0 100  "select $1" - ));
 DESCR("convert (no-op)");
-DATA(insert OID = 1404 (  float8       PGUID 14 f t t t 1 f  701    "701" 100 0 0 100  "select $1" - ));
+DATA(insert OID = 1404 (  float8       10 PGUID 14 f t t t 1 f  701    "701" 100 0 0 100  "select $1" - ));
 DESCR("convert (no-op)");
-DATA(insert OID = 1405 (  int4           PGUID 14 f t t t 1 f 23     "23" 100 0 0 100  "select $1" - ));
+DATA(insert OID = 1405 (  int4           10 PGUID 14 f t t t 1 f 23     "23" 100 0 0 100  "select $1" - ));
 DESCR("convert (no-op)");

-DATA(insert OID = 1406 (  isvertical        PGUID 12 f t t t 2 f    16 "600 600" 100 0 0 100  point_vert - ));
+DATA(insert OID = 1406 (  isvertical        10 PGUID 12 f t t t 2 f    16 "600 600" 100 0 0 100  point_vert - ));
 DESCR("vertically aligned?");
-DATA(insert OID = 1407 (  ishorizontal        PGUID 12 f t t t 2 f    16 "600 600" 100 0 0 100  point_horiz - ));
+DATA(insert OID = 1407 (  ishorizontal        10 PGUID 12 f t t t 2 f    16 "600 600" 100 0 0 100  point_horiz - ));
 DESCR("horizontally aligned?");
-DATA(insert OID = 1408 (  isparallel        PGUID 12 f t t t 2 f    16 "601 601" 100 0 0 100  lseg_parallel - ));
+DATA(insert OID = 1408 (  isparallel        10 PGUID 12 f t t t 2 f    16 "601 601" 100 0 0 100  lseg_parallel - ));
 DESCR("parallel?");
-DATA(insert OID = 1409 (  isperp            PGUID 12 f t t t 2 f    16 "601 601" 100 0 0 100  lseg_perp - ));
+DATA(insert OID = 1409 (  isperp            10 PGUID 12 f t t t 2 f    16 "601 601" 100 0 0 100  lseg_perp - ));
 DESCR("perpendicular?");
-DATA(insert OID = 1410 (  isvertical        PGUID 12 f t t t 1 f    16 "601" 100 0 0 100  lseg_vertical - ));
+DATA(insert OID = 1410 (  isvertical        10 PGUID 12 f t t t 1 f    16 "601" 100 0 0 100  lseg_vertical - ));
 DESCR("vertical?");
-DATA(insert OID = 1411 (  ishorizontal        PGUID 12 f t t t 1 f    16 "601" 100 0 0 100  lseg_horizontal - ));
+DATA(insert OID = 1411 (  ishorizontal        10 PGUID 12 f t t t 1 f    16 "601" 100 0 0 100  lseg_horizontal - ));
 DESCR("horizontal?");
-DATA(insert OID = 1412 (  isparallel        PGUID 12 f t t t 2 f    16 "628 628" 100 0 0 100  line_parallel - ));
+DATA(insert OID = 1412 (  isparallel        10 PGUID 12 f t t t 2 f    16 "628 628" 100 0 0 100  line_parallel - ));
 DESCR("lines parallel?");
-DATA(insert OID = 1413 (  isperp            PGUID 12 f t t t 2 f    16 "628 628" 100 0 0 100  line_perp - ));
+DATA(insert OID = 1413 (  isperp            10 PGUID 12 f t t t 2 f    16 "628 628" 100 0 0 100  line_perp - ));
 DESCR("lines perpendicular?");
-DATA(insert OID = 1414 (  isvertical        PGUID 12 f t t t 1 f    16 "628" 100 0 0 100  line_vertical - ));
+DATA(insert OID = 1414 (  isvertical        10 PGUID 12 f t t t 1 f    16 "628" 100 0 0 100  line_vertical - ));
 DESCR("lines vertical?");
-DATA(insert OID = 1415 (  ishorizontal        PGUID 12 f t t t 1 f    16 "628" 100 0 0 100  line_horizontal - ));
+DATA(insert OID = 1415 (  ishorizontal        10 PGUID 12 f t t t 1 f    16 "628" 100 0 0 100  line_horizontal - ));
 DESCR("lines horizontal?");
-DATA(insert OID = 1416 (  point                PGUID 12 f t t t 1 f 600 "718" 100 0 0 100  circle_center - ));
+DATA(insert OID = 1416 (  point                10 PGUID 12 f t t t 1 f 600 "718" 100 0 0 100  circle_center - ));
 DESCR("center of");

-DATA(insert OID = 1417 (  isnottrue            PGUID 12 f t t f 1 f 16 "16" 100 0 0 100  isnottrue - ));
+DATA(insert OID = 1417 (  isnottrue            10 PGUID 12 f t t f 1 f 16 "16" 100 0 0 100  isnottrue - ));
 DESCR("bool is not true (ie, false or unknown)");
-DATA(insert OID = 1418 (  isnotfalse        PGUID 12 f t t f 1 f 16 "16" 100 0 0 100  isnotfalse - ));
+DATA(insert OID = 1418 (  isnotfalse        10 PGUID 12 f t t f 1 f 16 "16" 100 0 0 100  isnotfalse - ));
 DESCR("bool is not false (ie, true or unknown)");

-DATA(insert OID = 1419 (  time                PGUID 12 f t t t 1 f 1083 "1186" 100 0 0 100  interval_time - ));
+DATA(insert OID = 1419 (  time                10 PGUID 12 f t t t 1 f 1083 "1186" 100 0 0 100  interval_time - ));
 DESCR("convert interval to time");

-DATA(insert OID = 1421 (  box                PGUID 12 f t t t 2 f 603 "600 600" 100 0 0 100  points_box - ));
+DATA(insert OID = 1421 (  box                10 PGUID 12 f t t t 2 f 603 "600 600" 100 0 0 100  points_box - ));
 DESCR("convert points to box");
-DATA(insert OID = 1422 (  box_add            PGUID 12 f t t t 2 f 603 "603 600" 100 0 0 100  box_add - ));
+DATA(insert OID = 1422 (  box_add            10 PGUID 12 f t t t 2 f 603 "603 600" 100 0 0 100  box_add - ));
 DESCR("add point to box (translate)");
-DATA(insert OID = 1423 (  box_sub            PGUID 12 f t t t 2 f 603 "603 600" 100 0 0 100  box_sub - ));
+DATA(insert OID = 1423 (  box_sub            10 PGUID 12 f t t t 2 f 603 "603 600" 100 0 0 100  box_sub - ));
 DESCR("subtract point from box (translate)");
-DATA(insert OID = 1424 (  box_mul            PGUID 12 f t t t 2 f 603 "603 600" 100 0 0 100  box_mul - ));
+DATA(insert OID = 1424 (  box_mul            10 PGUID 12 f t t t 2 f 603 "603 600" 100 0 0 100  box_mul - ));
 DESCR("multiply box by point (scale)");
-DATA(insert OID = 1425 (  box_div            PGUID 12 f t t t 2 f 603 "603 600" 100 0 0 100  box_div - ));
+DATA(insert OID = 1425 (  box_div            10 PGUID 12 f t t t 2 f 603 "603 600" 100 0 0 100  box_div - ));
 DESCR("divide box by point (scale)");
-DATA(insert OID = 1426 (  path_contain_pt    PGUID 14 f t t t 2 f    16 "602 600" 100 0 0 100  "select on_ppath($2,
$1)"- )); 
+DATA(insert OID = 1426 (  path_contain_pt    10 PGUID 14 f t t t 2 f    16 "602 600" 100 0 0 100  "select on_ppath($2,
$1)"- )); 
 DESCR("path contains point?");
-DATA(insert OID = 1428 (  poly_contain_pt    PGUID 12 f t t t 2 f    16 "604 600" 100 0 0 100  poly_contain_pt - ));
+DATA(insert OID = 1428 (  poly_contain_pt    10 PGUID 12 f t t t 2 f    16 "604 600" 100 0 0 100  poly_contain_pt -
));
 DESCR("polygon contains point?");
-DATA(insert OID = 1429 (  pt_contained_poly PGUID 12 f t t t 2 f    16 "600 604" 100 0 0 100  pt_contained_poly - ));
+DATA(insert OID = 1429 (  pt_contained_poly 10 PGUID 12 f t t t 2 f    16 "600 604" 100 0 0 100  pt_contained_poly -
));
 DESCR("point contained by polygon?");

-DATA(insert OID = 1430 (  isclosed            PGUID 12 f t t t 1 f    16 "602" 100 0 0 100  path_isclosed - ));
+DATA(insert OID = 1430 (  isclosed            10 PGUID 12 f t t t 1 f    16 "602" 100 0 0 100  path_isclosed - ));
 DESCR("path closed?");
-DATA(insert OID = 1431 (  isopen            PGUID 12 f t t t 1 f    16 "602" 100 0 0 100  path_isopen - ));
+DATA(insert OID = 1431 (  isopen            10 PGUID 12 f t t t 1 f    16 "602" 100 0 0 100  path_isopen - ));
 DESCR("path open?");
-DATA(insert OID = 1432 (  path_npoints        PGUID 12 f t t t 1 f    23 "602" 100 0 0 100  path_npoints - ));
+DATA(insert OID = 1432 (  path_npoints        10 PGUID 12 f t t t 1 f    23 "602" 100 0 0 100  path_npoints - ));
 DESCR("# points in path");

 /* pclose and popen might better be named close and open, but that crashes initdb.
  * - thomas 97/04/20
  */

-DATA(insert OID = 1433 (  pclose            PGUID 12 f t t t 1 f 602 "602" 100 0 0 100  path_close - ));
+DATA(insert OID = 1433 (  pclose            10 PGUID 12 f t t t 1 f 602 "602" 100 0 0 100  path_close - ));
 DESCR("close path");
-DATA(insert OID = 1434 (  popen                PGUID 12 f t t t 1 f 602 "602" 100 0 0 100  path_open - ));
+DATA(insert OID = 1434 (  popen                10 PGUID 12 f t t t 1 f 602 "602" 100 0 0 100  path_open - ));
 DESCR("open path");
-DATA(insert OID = 1435 (  path_add            PGUID 12 f t t t 2 f 602 "602 602" 100 0 0 100  path_add - ));
+DATA(insert OID = 1435 (  path_add            10 PGUID 12 f t t t 2 f 602 "602 602" 100 0 0 100  path_add - ));
 DESCR("concatenate open paths");
-DATA(insert OID = 1436 (  path_add_pt        PGUID 12 f t t t 2 f 602 "602 600" 100 0 0 100  path_add_pt - ));
+DATA(insert OID = 1436 (  path_add_pt        10 PGUID 12 f t t t 2 f 602 "602 600" 100 0 0 100  path_add_pt - ));
 DESCR("add (translate path)");
-DATA(insert OID = 1437 (  path_sub_pt        PGUID 12 f t t t 2 f 602 "602 600" 100 0 0 100  path_sub_pt - ));
+DATA(insert OID = 1437 (  path_sub_pt        10 PGUID 12 f t t t 2 f 602 "602 600" 100 0 0 100  path_sub_pt - ));
 DESCR("subtract (translate path)");
-DATA(insert OID = 1438 (  path_mul_pt        PGUID 12 f t t t 2 f 602 "602 600" 100 0 0 100  path_mul_pt - ));
+DATA(insert OID = 1438 (  path_mul_pt        10 PGUID 12 f t t t 2 f 602 "602 600" 100 0 0 100  path_mul_pt - ));
 DESCR("multiply (rotate/scale path)");
-DATA(insert OID = 1439 (  path_div_pt        PGUID 12 f t t t 2 f 602 "602 600" 100 0 0 100  path_div_pt - ));
+DATA(insert OID = 1439 (  path_div_pt        10 PGUID 12 f t t t 2 f 602 "602 600" 100 0 0 100  path_div_pt - ));
 DESCR("divide (rotate/scale path)");

-DATA(insert OID = 1440 (  point                PGUID 12 f t t t 2 f 600 "701 701" 100 0 0 100  construct_point - ));
+DATA(insert OID = 1440 (  point                10 PGUID 12 f t t t 2 f 600 "701 701" 100 0 0 100  construct_point -
));
 DESCR("convert x, y to point");
-DATA(insert OID = 1441 (  point_add            PGUID 12 f t t t 2 f 600 "600 600" 100 0 0 100  point_add - ));
+DATA(insert OID = 1441 (  point_add            10 PGUID 12 f t t t 2 f 600 "600 600" 100 0 0 100  point_add - ));
 DESCR("add points (translate)");
-DATA(insert OID = 1442 (  point_sub            PGUID 12 f t t t 2 f 600 "600 600" 100 0 0 100  point_sub - ));
+DATA(insert OID = 1442 (  point_sub            10 PGUID 12 f t t t 2 f 600 "600 600" 100 0 0 100  point_sub - ));
 DESCR("subtract points (translate)");
-DATA(insert OID = 1443 (  point_mul            PGUID 12 f t t t 2 f 600 "600 600" 100 0 0 100  point_mul - ));
+DATA(insert OID = 1443 (  point_mul            10 PGUID 12 f t t t 2 f 600 "600 600" 100 0 0 100  point_mul - ));
 DESCR("multiply points (scale/rotate)");
-DATA(insert OID = 1444 (  point_div            PGUID 12 f t t t 2 f 600 "600 600" 100 0 0 100  point_div - ));
+DATA(insert OID = 1444 (  point_div            10 PGUID 12 f t t t 2 f 600 "600 600" 100 0 0 100  point_div - ));
 DESCR("divide points (scale/rotate)");

-DATA(insert OID = 1445 (  poly_npoints        PGUID 12 f t t t 1 f    23 "604" 100 0 0 100  poly_npoints - ));
+DATA(insert OID = 1445 (  poly_npoints        10 PGUID 12 f t t t 1 f    23 "604" 100 0 0 100  poly_npoints - ));
 DESCR("number of points in polygon");
-DATA(insert OID = 1446 (  box                PGUID 12 f t t t 1 f 603 "604" 100 0 0 100  poly_box - ));
+DATA(insert OID = 1446 (  box                10 PGUID 12 f t t t 1 f 603 "604" 100 0 0 100  poly_box - ));
 DESCR("convert polygon to bounding box");
-DATA(insert OID = 1447 (  path                PGUID 12 f t t t 1 f 602 "604" 100 0 0 100  poly_path - ));
+DATA(insert OID = 1447 (  path                10 PGUID 12 f t t t 1 f 602 "604" 100 0 0 100  poly_path - ));
 DESCR("convert polygon to path");
-DATA(insert OID = 1448 (  polygon            PGUID 12 f t t t 1 f 604 "603" 100 0 0 100  box_poly - ));
+DATA(insert OID = 1448 (  polygon            10 PGUID 12 f t t t 1 f 604 "603" 100 0 0 100  box_poly - ));
 DESCR("convert box to polygon");
-DATA(insert OID = 1449 (  polygon            PGUID 12 f t t t 1 f 604 "602" 100 0 0 100  path_poly - ));
+DATA(insert OID = 1449 (  polygon            10 PGUID 12 f t t t 1 f 604 "602" 100 0 0 100  path_poly - ));
 DESCR("convert path to polygon");

-DATA(insert OID = 1450 (  circle_in            PGUID 12 f t t t 1 f 718 "0" 100 0 0 100  circle_in - ));
+DATA(insert OID = 1450 (  circle_in            10 PGUID 12 f t t t 1 f 718 "0" 100 0 0 100  circle_in - ));
 DESCR("(internal)");
-DATA(insert OID = 1451 (  circle_out        PGUID 12 f t t t 1 f    23    "718" 100 0 0 100  circle_out - ));
+DATA(insert OID = 1451 (  circle_out        10 PGUID 12 f t t t 1 f    23    "718" 100 0 0 100  circle_out - ));
 DESCR("(internal)");
-DATA(insert OID = 1452 (  circle_same        PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_same - ));
+DATA(insert OID = 1452 (  circle_same        10 PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_same - ));
 DESCR("same as");
-DATA(insert OID = 1453 (  circle_contain    PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_contain - ));
+DATA(insert OID = 1453 (  circle_contain    10 PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_contain - ));
 DESCR("contains");
-DATA(insert OID = 1454 (  circle_left        PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_left - ));
+DATA(insert OID = 1454 (  circle_left        10 PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_left - ));
 DESCR("is left of");
-DATA(insert OID = 1455 (  circle_overleft    PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_overleft - ));
+DATA(insert OID = 1455 (  circle_overleft    10 PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_overleft -
));
 DESCR("overlaps, but does not extend to right of");
-DATA(insert OID = 1456 (  circle_overright    PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_overright - ));
+DATA(insert OID = 1456 (  circle_overright    10 PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_overright -
));
 DESCR("");
-DATA(insert OID = 1457 (  circle_right        PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_right - ));
+DATA(insert OID = 1457 (  circle_right        10 PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_right - ));
 DESCR("is right of");
-DATA(insert OID = 1458 (  circle_contained    PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_contained - ));
+DATA(insert OID = 1458 (  circle_contained    10 PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_contained -
));
 DESCR("");
-DATA(insert OID = 1459 (  circle_overlap    PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_overlap - ));
+DATA(insert OID = 1459 (  circle_overlap    10 PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_overlap - ));
 DESCR("overlaps");
-DATA(insert OID = 1460 (  circle_below        PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_below - ));
+DATA(insert OID = 1460 (  circle_below        10 PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_below - ));
 DESCR("is below");
-DATA(insert OID = 1461 (  circle_above        PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_above - ));
+DATA(insert OID = 1461 (  circle_above        10 PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_above - ));
 DESCR("is above");
-DATA(insert OID = 1462 (  circle_eq            PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_eq - ));
+DATA(insert OID = 1462 (  circle_eq            10 PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_eq - ));
 DESCR("equal by area");
-DATA(insert OID = 1463 (  circle_ne            PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_ne - ));
+DATA(insert OID = 1463 (  circle_ne            10 PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_ne - ));
 DESCR("not equal by area");
-DATA(insert OID = 1464 (  circle_lt            PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_lt - ));
+DATA(insert OID = 1464 (  circle_lt            10 PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_lt - ));
 DESCR("less-than by area");
-DATA(insert OID = 1465 (  circle_gt            PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_gt - ));
+DATA(insert OID = 1465 (  circle_gt            10 PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_gt - ));
 DESCR("greater-than by area");
-DATA(insert OID = 1466 (  circle_le            PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_le - ));
+DATA(insert OID = 1466 (  circle_le            10 PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_le - ));
 DESCR("less-than-or-equal by area");
-DATA(insert OID = 1467 (  circle_ge            PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_ge - ));
+DATA(insert OID = 1467 (  circle_ge            10 PGUID 12 f t t t 2 f    16 "718 718" 100 0 0 100  circle_ge - ));
 DESCR("greater-than-or-equal by area");
-DATA(insert OID = 1468 (  area                PGUID 12 f t t t 1 f 701 "718" 100 0 0 100  circle_area - ));
+DATA(insert OID = 1468 (  area                10 PGUID 12 f t t t 1 f 701 "718" 100 0 0 100  circle_area - ));
 DESCR("area of circle");
-DATA(insert OID = 1469 (  diameter            PGUID 12 f t t t 1 f 701 "718" 100 0 0 100  circle_diameter - ));
+DATA(insert OID = 1469 (  diameter            10 PGUID 12 f t t t 1 f 701 "718" 100 0 0 100  circle_diameter - ));
 DESCR("diameter of circle");
-DATA(insert OID = 1470 (  radius            PGUID 12 f t t t 1 f 701 "718" 100 0 0 100  circle_radius - ));
+DATA(insert OID = 1470 (  radius            10 PGUID 12 f t t t 1 f 701 "718" 100 0 0 100  circle_radius - ));
 DESCR("radius of circle");
-DATA(insert OID = 1471 (  circle_distance    PGUID 12 f t t t 2 f 701 "718 718" 100 0 0 100  circle_distance - ));
+DATA(insert OID = 1471 (  circle_distance    10 PGUID 12 f t t t 2 f 701 "718 718" 100 0 0 100  circle_distance - ));
 DESCR("distance between");
-DATA(insert OID = 1472 (  circle_center        PGUID 12 f t t t 1 f 600 "718" 100 0 0 100  circle_center - ));
+DATA(insert OID = 1472 (  circle_center        10 PGUID 12 f t t t 1 f 600 "718" 100 0 0 100  circle_center - ));
 DESCR("center of");
-DATA(insert OID = 1473 (  circle            PGUID 12 f t t t 2 f 718 "600 701" 100 0 0 100  cr_circle - ));
+DATA(insert OID = 1473 (  circle            10 PGUID 12 f t t t 2 f 718 "600 701" 100 0 0 100  cr_circle - ));
 DESCR("convert point and radius to circle");
-DATA(insert OID = 1474 (  circle            PGUID 12 f t t t 1 f 718 "604" 100 0 0 100  poly_circle - ));
+DATA(insert OID = 1474 (  circle            10 PGUID 12 f t t t 1 f 718 "604" 100 0 0 100  poly_circle - ));
 DESCR("convert polygon to circle");
-DATA(insert OID = 1475 (  polygon            PGUID 12 f t t t 2 f 604 "23 718" 100 0 0 100  circle_poly - ));
+DATA(insert OID = 1475 (  polygon            10 PGUID 12 f t t t 2 f 604 "23 718" 100 0 0 100  circle_poly - ));
 DESCR("convert vertex count and circle to polygon");
-DATA(insert OID = 1476 (  dist_pc            PGUID 12 f t t t 2 f 701 "600 718" 100 0 0 100  dist_pc - ));
+DATA(insert OID = 1476 (  dist_pc            10 PGUID 12 f t t t 2 f 701 "600 718" 100 0 0 100  dist_pc - ));
 DESCR("distance between point and circle");
-DATA(insert OID = 1477 (  circle_contain_pt PGUID 12 f t t t 2 f    16 "718 600" 100 0 0 100  circle_contain_pt - ));
+DATA(insert OID = 1477 (  circle_contain_pt 10 PGUID 12 f t t t 2 f    16 "718 600" 100 0 0 100  circle_contain_pt -
));
 DESCR("circle contains point?");
-DATA(insert OID = 1478 (  pt_contained_circle    PGUID 12 f t t t 2 f    16 "600 718" 100 0 0 100  pt_contained_circle
-)); 
+DATA(insert OID = 1478 (  pt_contained_circle    10 PGUID 12 f t t t 2 f    16 "600 718" 100 0 0 100
pt_contained_circle- )); 
 DESCR("point inside circle?");
-DATA(insert OID = 1479 (  circle            PGUID 12 f t t t 1 f 718 "603" 100 0 0 100  box_circle - ));
+DATA(insert OID = 1479 (  circle            10 PGUID 12 f t t t 1 f 718 "603" 100 0 0 100  box_circle - ));
 DESCR("convert box to circle");
-DATA(insert OID = 1480 (  box                PGUID 12 f t t t 1 f 603 "718" 100 0 0 100  circle_box - ));
+DATA(insert OID = 1480 (  box                10 PGUID 12 f t t t 1 f 603 "718" 100 0 0 100  circle_box - ));
 DESCR("convert circle to box");
-DATA(insert OID = 1481 (  tinterval             PGUID 12 f t t t 2 f 704 "702 702" 100 0 0 100 mktinterval - ));
+DATA(insert OID = 1481 (  tinterval             10 PGUID 12 f t t t 2 f 704 "702 702" 100 0 0 100 mktinterval - ));
 DESCR("convert to tinterval");

-DATA(insert OID = 1482 (  lseg_ne            PGUID 12 f t t t 2 f    16 "601 601" 100 0 0 100  lseg_ne - ));
+DATA(insert OID = 1482 (  lseg_ne            10 PGUID 12 f t t t 2 f    16 "601 601" 100 0 0 100  lseg_ne - ));
 DESCR("not equal");
-DATA(insert OID = 1483 (  lseg_lt            PGUID 12 f t t t 2 f    16 "601 601" 100 0 0 100  lseg_lt - ));
+DATA(insert OID = 1483 (  lseg_lt            10 PGUID 12 f t t t 2 f    16 "601 601" 100 0 0 100  lseg_lt - ));
 DESCR("less-than by length");
-DATA(insert OID = 1484 (  lseg_le            PGUID 12 f t t t 2 f    16 "601 601" 100 0 0 100  lseg_le - ));
+DATA(insert OID = 1484 (  lseg_le            10 PGUID 12 f t t t 2 f    16 "601 601" 100 0 0 100  lseg_le - ));
 DESCR("less-than-or-equal by length");
-DATA(insert OID = 1485 (  lseg_gt            PGUID 12 f t t t 2 f    16 "601 601" 100 0 0 100  lseg_gt - ));
+DATA(insert OID = 1485 (  lseg_gt            10 PGUID 12 f t t t 2 f    16 "601 601" 100 0 0 100  lseg_gt - ));
 DESCR("greater-than by length");
-DATA(insert OID = 1486 (  lseg_ge            PGUID 12 f t t t 2 f    16 "601 601" 100 0 0 100  lseg_ge - ));
+DATA(insert OID = 1486 (  lseg_ge            10 PGUID 12 f t t t 2 f    16 "601 601" 100 0 0 100  lseg_ge - ));
 DESCR("greater-than-or-equal by length");
-DATA(insert OID = 1487 (  lseg_length        PGUID 12 f t t t 1 f 701 "601" 100 0 0 100  lseg_length - ));
+DATA(insert OID = 1487 (  lseg_length        10 PGUID 12 f t t t 1 f 701 "601" 100 0 0 100  lseg_length - ));
 DESCR("distance between endpoints");
-DATA(insert OID = 1488 (  close_ls            PGUID 12 f t t t 2 f 600 "628 601" 100 0 0 100  close_ls - ));
+DATA(insert OID = 1488 (  close_ls            10 PGUID 12 f t t t 2 f 600 "628 601" 100 0 0 100  close_ls - ));
 DESCR("closest point to line on line segment");
-DATA(insert OID = 1489 (  close_lseg        PGUID 12 f t t t 2 f 600 "601 601" 100 0 0 100  close_lseg - ));
+DATA(insert OID = 1489 (  close_lseg        10 PGUID 12 f t t t 2 f 600 "601 601" 100 0 0 100  close_lseg - ));
 DESCR("closest point to line segment on line segment");

-DATA(insert OID = 1490 (  line_in            PGUID 12 f t t t 1 f 628 "0" 100 0 0 100  line_in - ));
+DATA(insert OID = 1490 (  line_in            10 PGUID 12 f t t t 1 f 628 "0" 100 0 0 100  line_in - ));
 DESCR("(internal)");
-DATA(insert OID = 1491 (  line_out            PGUID 12 f t t t 1 f 23  "628" 100 0 0 100  line_out - ));
+DATA(insert OID = 1491 (  line_out            10 PGUID 12 f t t t 1 f 23  "628" 100 0 0 100  line_out - ));
 DESCR("(internal)");
-DATA(insert OID = 1492 (  line_eq            PGUID 12 f t t t 2 f  16 "628 628" 100 0 0 100  line_eq - ));
+DATA(insert OID = 1492 (  line_eq            10 PGUID 12 f t t t 2 f  16 "628 628" 100 0 0 100  line_eq - ));
 DESCR("lines equal?");
-DATA(insert OID = 1493 (  line                PGUID 12 f t t t 2 f 628 "600 600" 100 0 0 100  line_construct_pp - ));
+DATA(insert OID = 1493 (  line                10 PGUID 12 f t t t 2 f 628 "600 600" 100 0 0 100  line_construct_pp -
));
 DESCR("line from points");
-DATA(insert OID = 1494 (  line_interpt        PGUID 12 f t t t 2 f 600 "628 628" 100 0 0 100  line_interpt - ));
+DATA(insert OID = 1494 (  line_interpt        10 PGUID 12 f t t t 2 f 600 "628 628" 100 0 0 100  line_interpt - ));
 DESCR("intersection point");
-DATA(insert OID = 1495 (  line_intersect    PGUID 12 f t t t 2 f    16 "628 628" 100 0 0 100  line_intersect - ));
+DATA(insert OID = 1495 (  line_intersect    10 PGUID 12 f t t t 2 f    16 "628 628" 100 0 0 100  line_intersect - ));
 DESCR("lines intersect?");
-DATA(insert OID = 1496 (  line_parallel        PGUID 12 f t t t 2 f    16 "628 628" 100 0 0 100  line_parallel - ));
+DATA(insert OID = 1496 (  line_parallel        10 PGUID 12 f t t t 2 f    16 "628 628" 100 0 0 100  line_parallel -
));
 DESCR("lines parallel?");
-DATA(insert OID = 1497 (  line_perp            PGUID 12 f t t t 2 f    16 "628 628" 100 0 0 100  line_perp - ));
+DATA(insert OID = 1497 (  line_perp            10 PGUID 12 f t t t 2 f    16 "628 628" 100 0 0 100  line_perp - ));
 DESCR("lines perpendicular?");
-DATA(insert OID = 1498 (  line_vertical        PGUID 12 f t t t 1 f    16 "628" 100 0 0 100  line_vertical - ));
+DATA(insert OID = 1498 (  line_vertical        10 PGUID 12 f t t t 1 f    16 "628" 100 0 0 100  line_vertical - ));
 DESCR("lines vertical?");
-DATA(insert OID = 1499 (  line_horizontal    PGUID 12 f t t t 1 f    16 "628" 100 0 0 100  line_horizontal - ));
+DATA(insert OID = 1499 (  line_horizontal    10 PGUID 12 f t t t 1 f    16 "628" 100 0 0 100  line_horizontal - ));
 DESCR("lines horizontal?");

 /* OIDS 1500 - 1599 */

-DATA(insert OID = 1530 (  length            PGUID 12 f t t t 1 f 701 "601" 100 0 0 100  lseg_length - ));
+DATA(insert OID = 1530 (  length            10 PGUID 12 f t t t 1 f 701 "601" 100 0 0 100  lseg_length - ));
 DESCR("distance between endpoints");
-DATA(insert OID = 1531 (  length            PGUID 12 f t t t 1 f 701 "602" 100 0 0 100  path_length - ));
+DATA(insert OID = 1531 (  length            10 PGUID 12 f t t t 1 f 701 "602" 100 0 0 100  path_length - ));
 DESCR("sum of path segments");


-DATA(insert OID = 1532 (  point                PGUID 12 f t t t 1 f 600 "601" 100 0 0 100  lseg_center - ));
+DATA(insert OID = 1532 (  point                10 PGUID 12 f t t t 1 f 600 "601" 100 0 0 100  lseg_center - ));
 DESCR("center of");
-DATA(insert OID = 1533 (  point                PGUID 12 f t t t 1 f 600 "602" 100 0 0 100  path_center - ));
+DATA(insert OID = 1533 (  point                10 PGUID 12 f t t t 1 f 600 "602" 100 0 0 100  path_center - ));
 DESCR("center of");
-DATA(insert OID = 1534 (  point                PGUID 12 f t t t 1 f 600 "603" 100 0 0 100  box_center - ));
+DATA(insert OID = 1534 (  point                10 PGUID 12 f t t t 1 f 600 "603" 100 0 0 100  box_center - ));
 DESCR("center of");
-DATA(insert OID = 1540 (  point                PGUID 12 f t t t 1 f 600 "604" 100 0 0 100  poly_center - ));
+DATA(insert OID = 1540 (  point                10 PGUID 12 f t t t 1 f 600 "604" 100 0 0 100  poly_center - ));
 DESCR("center of");
-DATA(insert OID = 1541 (  lseg                PGUID 12 f t t t 1 f 601 "603" 100 0 0 100  box_diagonal - ));
+DATA(insert OID = 1541 (  lseg                10 PGUID 12 f t t t 1 f 601 "603" 100 0 0 100  box_diagonal - ));
 DESCR("diagonal of");
-DATA(insert OID = 1542 (  center            PGUID 12 f t t t 1 f 600 "603" 100 0 0 100  box_center - ));
+DATA(insert OID = 1542 (  center            10 PGUID 12 f t t t 1 f 600 "603" 100 0 0 100  box_center - ));
 DESCR("center of");
-DATA(insert OID = 1543 (  center            PGUID 12 f t t t 1 f 600 "718" 100 0 0 100  circle_center - ));
+DATA(insert OID = 1543 (  center            10 PGUID 12 f t t t 1 f 600 "718" 100 0 0 100  circle_center - ));
 DESCR("center of");
-DATA(insert OID = 1544 (  polygon            PGUID 14 f t t t 1 f 604 "718" 100 0 0 100  "select polygon(12, $1)" -
));
+DATA(insert OID = 1544 (  polygon            10 PGUID 14 f t t t 1 f 604 "718" 100 0 0 100  "select polygon(12, $1)" -
));
 DESCR("convert circle to 12-vertex polygon");
-DATA(insert OID = 1545 (  npoints            PGUID 12 f t t t 1 f    23 "602" 100 0 0 100  path_npoints - ));
+DATA(insert OID = 1545 (  npoints            10 PGUID 12 f t t t 1 f    23 "602" 100 0 0 100  path_npoints - ));
 DESCR("# points in path");
-DATA(insert OID = 1556 (  npoints            PGUID 12 f t t t 1 f    23 "604" 100 0 0 100  poly_npoints - ));
+DATA(insert OID = 1556 (  npoints            10 PGUID 12 f t t t 1 f    23 "604" 100 0 0 100  poly_npoints - ));
 DESCR("number of points in polygon");

-DATA(insert OID = 1564 (  bit_in            PGUID 12 f t t t 1 f 1560 "0" 100 0 0 100  bit_in - ));
+DATA(insert OID = 1564 (  bit_in            10 PGUID 12 f t t t 1 f 1560 "0" 100 0 0 100  bit_in - ));
 DESCR("(internal)");
-DATA(insert OID = 1565 (  bit_out            PGUID 12 f t t t 1 f   23 "0" 100 0 0 100  bit_out - ));
+DATA(insert OID = 1565 (  bit_out            10 PGUID 12 f t t t 1 f   23 "0" 100 0 0 100  bit_out - ));
 DESCR("(internal)");

-DATA(insert OID = 1569 (  like                PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  textlike - ));
+DATA(insert OID = 1569 (  like                10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  textlike - ));
 DESCR("matches LIKE expression");
-DATA(insert OID = 1570 (  notlike            PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  textnlike - ));
+DATA(insert OID = 1570 (  notlike            10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100  textnlike - ));
 DESCR("does not match LIKE expression");
-DATA(insert OID = 1571 (  like                PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  namelike - ));
+DATA(insert OID = 1571 (  like                10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  namelike - ));
 DESCR("matches LIKE expression");
-DATA(insert OID = 1572 (  notlike            PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  namenlike - ));
+DATA(insert OID = 1572 (  notlike            10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  namenlike - ));
 DESCR("does not match LIKE expression");
-DATA(insert OID = 1573 (  int8                PGUID 14 f t t t 1 f    20 "20" 100 0 0 100  "select $1" - ));
+DATA(insert OID = 1573 (  int8                10 PGUID 14 f t t t 1 f    20 "20" 100 0 0 100  "select $1" - ));
 DESCR("convert int8 to int8 (no-op)");


 /* SEQUENCEs nextval & currval functions */
-DATA(insert OID = 1574 (  nextval            PGUID 12 f t f t 1 f 20 "25" 100 0 0 100  nextval - ));
+DATA(insert OID = 1574 (  nextval            10 PGUID 12 f t f t 1 f 20 "25" 100 0 0 100  nextval - ));
 DESCR("sequence next value");
-DATA(insert OID = 1575 (  currval            PGUID 12 f t f t 1 f 20 "25" 100 0 0 100  currval - ));
+DATA(insert OID = 1575 (  currval            10 PGUID 12 f t f t 1 f 20 "25" 100 0 0 100  currval - ));
 DESCR("sequence current value");
-DATA(insert OID = 1576 (  setval            PGUID 12 f t f t 2 f 20 "25 20" 100 0 0 100  setval - ));
+DATA(insert OID = 1576 (  setval            10 PGUID 12 f t f t 2 f 20 "25 20" 100 0 0 100  setval - ));
 DESCR("set sequence value");
-DATA(insert OID = 1765 (  setval            PGUID 12 f t f t 3 f 20 "25 20 16" 100 0 0 100  setval_and_iscalled - ));
+DATA(insert OID = 1765 (  setval            10 PGUID 12 f t f t 3 f 20 "25 20 16" 100 0 0 100  setval_and_iscalled -
));
 DESCR("set sequence value and iscalled status");

-DATA(insert OID = 1579 (  varbit_in            PGUID 12 f t t t 1 f 1562 "0" 100 0 0 100  varbit_in - ));
+DATA(insert OID = 1579 (  varbit_in            10 PGUID 12 f t t t 1 f 1562 "0" 100 0 0 100  varbit_in - ));
 DESCR("(internal)");
-DATA(insert OID = 1580 (  varbit_out        PGUID 12 f t t t 1 f   23 "0" 100 0 0 100  varbit_out - ));
+DATA(insert OID = 1580 (  varbit_out        10 PGUID 12 f t t t 1 f   23 "0" 100 0 0 100  varbit_out - ));
 DESCR("(internal)");

-DATA(insert OID = 1581 (  biteq                PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100  biteq - ));
+DATA(insert OID = 1581 (  biteq                10 PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100  biteq - ));
 DESCR("equal");
-DATA(insert OID = 1582 (  bitne                PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100  bitne - ));
+DATA(insert OID = 1582 (  bitne                10 PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100  bitne - ));
 DESCR("not equal");
-DATA(insert OID = 1592 (  bitge                PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100  bitge - ));
+DATA(insert OID = 1592 (  bitge                10 PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100  bitge - ));
 DESCR("greater than or equal");
-DATA(insert OID = 1593 (  bitgt                PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100  bitgt - ));
+DATA(insert OID = 1593 (  bitgt                10 PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100  bitgt - ));
 DESCR("greater than");
-DATA(insert OID = 1594 (  bitle                PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100  bitle - ));
+DATA(insert OID = 1594 (  bitle                10 PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100  bitle - ));
 DESCR("less than or equal");
-DATA(insert OID = 1595 (  bitlt                PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100  bitlt - ));
+DATA(insert OID = 1595 (  bitlt                10 PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100  bitlt - ));
 DESCR("less than");
-DATA(insert OID = 1596 (  bitcmp            PGUID 12 f t t t 2 f 23 "1560 1560" 100 0 0 100  bitcmp - ));
+DATA(insert OID = 1596 (  bitcmp            10 PGUID 12 f t t t 2 f 23 "1560 1560" 100 0 0 100  bitcmp - ));
 DESCR("compare");

-DATA(insert OID = 1598 (  random            PGUID 12 f t f t 0 f 701 "0" 100 0 0 100  drandom - ));
+DATA(insert OID = 1598 (  random            10 PGUID 12 f t f t 0 f 701 "0" 100 0 0 100  drandom - ));
 DESCR("random value");
-DATA(insert OID = 1599 (  setseed            PGUID 12 f t f t 1 f  23 "701" 100 0 0 100  setseed - ));
+DATA(insert OID = 1599 (  setseed            10 PGUID 12 f t f t 1 f  23 "701" 100 0 0 100  setseed - ));
 DESCR("set random seed");

 /* OIDS 1600 - 1699 */

-DATA(insert OID = 1600 (  asin                PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dasin - ));
+DATA(insert OID = 1600 (  asin                10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dasin - ));
 DESCR("arcsine");
-DATA(insert OID = 1601 (  acos                PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dacos - ));
+DATA(insert OID = 1601 (  acos                10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dacos - ));
 DESCR("arccosine");
-DATA(insert OID = 1602 (  atan                PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  datan - ));
+DATA(insert OID = 1602 (  atan                10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  datan - ));
 DESCR("arctangent");
-DATA(insert OID = 1603 (  atan2                PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  datan2 - ));
+DATA(insert OID = 1603 (  atan2                10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100  datan2 - ));
 DESCR("arctangent, two arguments");
-DATA(insert OID = 1604 (  sin                PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dsin - ));
+DATA(insert OID = 1604 (  sin                10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dsin - ));
 DESCR("sine");
-DATA(insert OID = 1605 (  cos                PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dcos - ));
+DATA(insert OID = 1605 (  cos                10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dcos - ));
 DESCR("cosine");
-DATA(insert OID = 1606 (  tan                PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dtan - ));
+DATA(insert OID = 1606 (  tan                10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dtan - ));
 DESCR("tangent");
-DATA(insert OID = 1607 (  cot                PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dcot - ));
+DATA(insert OID = 1607 (  cot                10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  dcot - ));
 DESCR("cotangent");
-DATA(insert OID = 1608 (  degrees            PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  degrees - ));
+DATA(insert OID = 1608 (  degrees            10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  degrees - ));
 DESCR("radians to degrees");
-DATA(insert OID = 1609 (  radians            PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  radians - ));
+DATA(insert OID = 1609 (  radians            10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100  radians - ));
 DESCR("degrees to radians");
-DATA(insert OID = 1610 (  pi                PGUID 12 f t t t 0 f 701 "0" 100 0 0 100  dpi - ));
+DATA(insert OID = 1610 (  pi                10 PGUID 12 f t t t 0 f 701 "0" 100 0 0 100  dpi - ));
 DESCR("PI");

-DATA(insert OID = 1618 (  interval_mul        PGUID 12 f t t t 2 f 1186 "1186 701" 100 0 0 100  interval_mul - ));
+DATA(insert OID = 1618 (  interval_mul        10 PGUID 12 f t t t 2 f 1186 "1186 701" 100 0 0 100  interval_mul - ));
 DESCR("multiply interval");
-DATA(insert OID = 1619 (  varchar            PGUID 12 f t t t 1 f 1043 "23" 100 0 0 100  int4_text - ));
+DATA(insert OID = 1619 (  varchar            10 PGUID 12 f t t t 1 f 1043 "23" 100 0 0 100  int4_text - ));
 DESCR("convert int4 to varchar");

-DATA(insert OID = 1620 (  ascii                PGUID 12 f t t t 1 f 23 "25" 100 0 0 100  ascii - ));
+DATA(insert OID = 1620 (  ascii                10 PGUID 12 f t t t 1 f 23 "25" 100 0 0 100  ascii - ));
 DESCR("convert first char to int4");
-DATA(insert OID = 1621 (  chr                PGUID 12 f t t t 1 f 25 "23" 100 0 0 100  chr - ));
+DATA(insert OID = 1621 (  chr                10 PGUID 12 f t t t 1 f 25 "23" 100 0 0 100  chr - ));
 DESCR("convert int4 to char");
-DATA(insert OID = 1622 (  repeat            PGUID 12 f t t t 2 f 25 "25 23" 100 0 0 100  repeat - ));
+DATA(insert OID = 1622 (  repeat            10 PGUID 12 f t t t 2 f 25 "25 23" 100 0 0 100  repeat - ));
 DESCR("replicate string int4 times");

-DATA(insert OID = 1623 (  varchar            PGUID 12 f t t t 1 f 1043 "20" 100 0 0 100  int8_text - ));
+DATA(insert OID = 1623 (  varchar            10 PGUID 12 f t t t 1 f 1043 "20" 100 0 0 100  int8_text - ));
 DESCR("convert int8 to varchar");
-DATA(insert OID = 1624 (  mul_d_interval    PGUID 12 f t t t 2 f 1186 "701 1186" 100 0 0 100  mul_d_interval - ));
+DATA(insert OID = 1624 (  mul_d_interval    10 PGUID 12 f t t t 2 f 1186 "701 1186" 100 0 0 100  mul_d_interval - ));

-DATA(insert OID = 1633 (  texticlike        PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 texticlike - ));
+DATA(insert OID = 1633 (  texticlike        10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 texticlike - ));
 DESCR("matches LIKE expression, case-insensitive");
-DATA(insert OID = 1634 (  texticnlike        PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 texticnlike - ));
+DATA(insert OID = 1634 (  texticnlike        10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 texticnlike - ));
 DESCR("does not match LIKE expression, case-insensitive");
-DATA(insert OID = 1635 (  nameiclike        PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  nameiclike - ));
+DATA(insert OID = 1635 (  nameiclike        10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  nameiclike - ));
 DESCR("matches LIKE expression, case-insensitive");
-DATA(insert OID = 1636 (  nameicnlike        PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  nameicnlike - ));
+DATA(insert OID = 1636 (  nameicnlike        10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100  nameicnlike - ));
 DESCR("does not match LIKE expression, case-insensitive");
-DATA(insert OID = 1637 (  like_escape        PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100 like_escape - ));
+DATA(insert OID = 1637 (  like_escape        10 PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100 like_escape - ));
 DESCR("convert match pattern to use backslash escapes");

-DATA(insert OID = 1689 (  update_pg_pwd          PGUID 12 f t f t 0 f 0  ""  100 0 0 100  update_pg_pwd - ));
+DATA(insert OID = 1689 (  update_pg_pwd          10 PGUID 12 f t f t 0 f 0  ""  100 0 0 100  update_pg_pwd - ));
 DESCR("update pg_pwd file");

 /* Oracle Compatibility Related Functions - By Edmund Mergl <E.Mergl@bawue.de> */
-DATA(insert OID =  868 (  strpos       PGUID 12 f t t t 2 f 23 "25 25" 100 0 0 100  textpos - ));
+DATA(insert OID =  868 (  strpos       10 PGUID 12 f t t t 2 f 23 "25 25" 100 0 0 100  textpos - ));
 DESCR("find position of substring");
-DATA(insert OID =  870 (  lower           PGUID 12 f t t t 1 f 25 "25" 100 0 0 100  lower - ));
+DATA(insert OID =  870 (  lower           10 PGUID 12 f t t t 1 f 25 "25" 100 0 0 100  lower - ));
 DESCR("lowercase");
-DATA(insert OID =  871 (  upper           PGUID 12 f t t t 1 f 25 "25" 100 0 0 100  upper - ));
+DATA(insert OID =  871 (  upper           10 PGUID 12 f t t t 1 f 25 "25" 100 0 0 100  upper - ));
 DESCR("uppercase");
-DATA(insert OID =  872 (  initcap       PGUID 12 f t t t 1 f 25 "25" 100 0 0 100  initcap - ));
+DATA(insert OID =  872 (  initcap       10 PGUID 12 f t t t 1 f 25 "25" 100 0 0 100  initcap - ));
 DESCR("capitalize each word");
-DATA(insert OID =  873 (  lpad           PGUID 12 f t t t 3 f 25 "25 23 25" 100 0 0 100  lpad - ));
+DATA(insert OID =  873 (  lpad           10 PGUID 12 f t t t 3 f 25 "25 23 25" 100 0 0 100  lpad - ));
 DESCR("left-pad string to length");
-DATA(insert OID =  874 (  rpad           PGUID 12 f t t t 3 f 25 "25 23 25" 100 0 0 100  rpad - ));
+DATA(insert OID =  874 (  rpad           10 PGUID 12 f t t t 3 f 25 "25 23 25" 100 0 0 100  rpad - ));
 DESCR("right-pad string to length");
-DATA(insert OID =  875 (  ltrim           PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100  ltrim - ));
+DATA(insert OID =  875 (  ltrim           10 PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100  ltrim - ));
 DESCR("left-pad string to length");
-DATA(insert OID =  876 (  rtrim           PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100  rtrim - ));
+DATA(insert OID =  876 (  rtrim           10 PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100  rtrim - ));
 DESCR("right-pad string to length");
-DATA(insert OID =  877 (  substr       PGUID 12 f t t t 3 f 25 "25 23 23" 100 0 0 100  text_substr - ));
+DATA(insert OID =  877 (  substr       10 PGUID 12 f t t t 3 f 25 "25 23 23" 100 0 0 100  text_substr - ));
 DESCR("return portion of string");
-DATA(insert OID =  878 (  translate    PGUID 12 f t t t 3 f 25 "25 25 25" 100 0 0 100  translate - ));
+DATA(insert OID =  878 (  translate    10 PGUID 12 f t t t 3 f 25 "25 25 25" 100 0 0 100  translate - ));
 DESCR("map a set of character appearing in string");
-DATA(insert OID =  879 (  lpad           PGUID 14 f t t t 2 f 25 "25 23" 100 0 0 100  "select lpad($1, $2, \' \')" -
));
+DATA(insert OID =  879 (  lpad           10 PGUID 14 f t t t 2 f 25 "25 23" 100 0 0 100  "select lpad($1, $2, \' \')"
-)); 
 DESCR("left-pad string to length");
-DATA(insert OID =  880 (  rpad           PGUID 14 f t t t 2 f 25 "25 23" 100 0 0 100  "select rpad($1, $2, \' \')" -
));
+DATA(insert OID =  880 (  rpad           10 PGUID 14 f t t t 2 f 25 "25 23" 100 0 0 100  "select rpad($1, $2, \' \')"
-)); 
 DESCR("right-pad string to length");
-DATA(insert OID =  881 (  ltrim           PGUID 14 f t t t 1 f 25 "25" 100 0 0 100  "select ltrim($1, \' \')" - ));
+DATA(insert OID =  881 (  ltrim           10 PGUID 14 f t t t 1 f 25 "25" 100 0 0 100  "select ltrim($1, \' \')" - ));
 DESCR("remove initial characters from string");
-DATA(insert OID =  882 (  rtrim           PGUID 14 f t t t 1 f 25 "25" 100 0 0 100  "select rtrim($1, \' \')" - ));
+DATA(insert OID =  882 (  rtrim           10 PGUID 14 f t t t 1 f 25 "25" 100 0 0 100  "select rtrim($1, \' \')" - ));
 DESCR("remove trailing characters from string");
-DATA(insert OID =  883 (  substr       PGUID 14 f t t t 2 f 25 "25 23" 100 0 0 100  "select substr($1, $2, -1)" - ));
+DATA(insert OID =  883 (  substr       10 PGUID 14 f t t t 2 f 25 "25 23" 100 0 0 100  "select substr($1, $2, -1)" -
));
 DESCR("return portion of string");
-DATA(insert OID =  884 (  btrim           PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100  btrim - ));
+DATA(insert OID =  884 (  btrim           10 PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100  btrim - ));
 DESCR("trim both ends of string");
-DATA(insert OID =  885 (  btrim           PGUID 14 f t t t 1 f 25 "25" 100 0 0 100  "select btrim($1, \' \')" - ));
+DATA(insert OID =  885 (  btrim           10 PGUID 14 f t t t 1 f 25 "25" 100 0 0 100  "select btrim($1, \' \')" - ));
 DESCR("trim both ends of string");

-DATA(insert OID =  936 (  substring    PGUID 12 f t t t 3 f 25 "25 23 23" 100 0 0 100  text_substr - ));
+DATA(insert OID =  936 (  substring    10 PGUID 12 f t t t 3 f 25 "25 23 23" 100 0 0 100  text_substr - ));
 DESCR("return portion of string");
-DATA(insert OID =  937 (  substring    PGUID 14 f t t t 2 f 25 "25 23" 100 0 0 100  "select substring($1, $2, -1)" -
));
+DATA(insert OID =  937 (  substring    10 PGUID 14 f t t t 2 f 25 "25 23" 100 0 0 100  "select substring($1, $2, -1)"
-)); 
 DESCR("return portion of string");

 /* for multi-byte support */

 /* return database encoding name */
-DATA(insert OID = 1039 (  getdatabaseencoding       PGUID 12 f t f t 0 f 19 "0" 100 0 0 100  getdatabaseencoding - ));
+DATA(insert OID = 1039 (  getdatabaseencoding       10 PGUID 12 f t f t 0 f 19 "0" 100 0 0 100  getdatabaseencoding -
));
 DESCR("encoding name of current database");

 /* return client encoding name i.e. session encoding */
-DATA(insert OID = 810 (  pg_client_encoding       PGUID 12 f t f t 0 f 19 "0" 100 0 0 100  pg_client_encoding - ));
+DATA(insert OID = 810 (  pg_client_encoding       10 PGUID 12 f t f t 0 f 19 "0" 100 0 0 100  pg_client_encoding - ));
 DESCR("encoding name of current database");

-DATA(insert OID = 1717 (  convert           PGUID 12 f t f t 2 f 25 "25 19" 100 0 0 100  pg_convert - ));
+DATA(insert OID = 1717 (  convert           10 PGUID 12 f t f t 2 f 25 "25 19" 100 0 0 100  pg_convert - ));
 DESCR("convert string with specified destination encoding name");

-DATA(insert OID = 1813 (  convert           PGUID 12 f t f t 3 f 25 "25 19 19" 100 0 0 100  pg_convert2 - ));
+DATA(insert OID = 1813 (  convert           10 PGUID 12 f t f t 3 f 25 "25 19 19" 100 0 0 100  pg_convert2 - ));
 DESCR("convert string with specified encoding names");

-DATA(insert OID = 1264 (  pg_char_to_encoding       PGUID 12 f t f t 1 f 23 "19" 100 0 0 100  PG_char_to_encoding -
));
+DATA(insert OID = 1264 (  pg_char_to_encoding       10 PGUID 12 f t f t 1 f 23 "19" 100 0 0 100  PG_char_to_encoding -
));
 DESCR("convert encoding name to encoding id");

-DATA(insert OID = 1597 (  pg_encoding_to_char       PGUID 12 f t f t 1 f 19 "23" 100 0 0 100  PG_encoding_to_char -
));
+DATA(insert OID = 1597 (  pg_encoding_to_char       10 PGUID 12 f t f t 1 f 19 "23" 100 0 0 100  PG_encoding_to_char -
));
 DESCR("convert encoding id to encoding name");

-DATA(insert OID = 1638 (  oidgt                   PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100  oidgt - ));
+DATA(insert OID = 1638 (  oidgt                   10 PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100  oidgt - ));
 DESCR("greater-than");
-DATA(insert OID = 1639 (  oidge                   PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100  oidge - ));
+DATA(insert OID = 1639 (  oidge                   10 PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100  oidge - ));
 DESCR("greater-than-or-equal");

 /* System-view support functions */
-DATA(insert OID = 1640 (  pg_get_ruledef       PGUID 12 f t f t 1 f 25 "19" 100 0 0 100  pg_get_ruledef - ));
+DATA(insert OID = 1640 (  pg_get_ruledef       10 PGUID 12 f t f t 1 f 25 "19" 100 0 0 100  pg_get_ruledef - ));
 DESCR("source text of a rule");
-DATA(insert OID = 1641 (  pg_get_viewdef       PGUID 12 f t f t 1 f 25 "19" 100 0 0 100  pg_get_viewdef - ));
+DATA(insert OID = 1641 (  pg_get_viewdef       10 PGUID 12 f t f t 1 f 25 "19" 100 0 0 100  pg_get_viewdef - ));
 DESCR("select statement of a view");
-DATA(insert OID = 1642 (  pg_get_userbyid       PGUID 12 f t f t 1 f 19 "23" 100 0 0 100  pg_get_userbyid - ));
+DATA(insert OID = 1642 (  pg_get_userbyid       10 PGUID 12 f t f t 1 f 19 "23" 100 0 0 100  pg_get_userbyid - ));
 DESCR("user name by UID (with fallback)");
-DATA(insert OID = 1643 (  pg_get_indexdef       PGUID 12 f t f t 1 f 25 "26" 100 0 0 100  pg_get_indexdef - ));
+DATA(insert OID = 1643 (  pg_get_indexdef       10 PGUID 12 f t f t 1 f 25 "26" 100 0 0 100  pg_get_indexdef - ));
 DESCR("index description");
-DATA(insert OID = 1716 (  pg_get_expr           PGUID 12 f t f t 2 f 25 "25 26" 100 0 0 100  pg_get_expr - ));
+DATA(insert OID = 1716 (  pg_get_expr           10 PGUID 12 f t f t 2 f 25 "25 26" 100 0 0 100  pg_get_expr - ));
 DESCR("deparse an encoded expression");


 /* Generic referential integrity constraint triggers */
-DATA(insert OID = 1644 (  RI_FKey_check_ins        PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_check_ins - ));
+DATA(insert OID = 1644 (  RI_FKey_check_ins        10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_check_ins - ));
 DESCR("referential integrity FOREIGN KEY ... REFERENCES");
-DATA(insert OID = 1645 (  RI_FKey_check_upd        PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_check_upd - ));
+DATA(insert OID = 1645 (  RI_FKey_check_upd        10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_check_upd - ));
 DESCR("referential integrity FOREIGN KEY ... REFERENCES");
-DATA(insert OID = 1646 (  RI_FKey_cascade_del    PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_cascade_del - ));
+DATA(insert OID = 1646 (  RI_FKey_cascade_del    10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_cascade_del - ));
 DESCR("referential integrity ON DELETE CASCADE");
-DATA(insert OID = 1647 (  RI_FKey_cascade_upd    PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_cascade_upd - ));
+DATA(insert OID = 1647 (  RI_FKey_cascade_upd    10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_cascade_upd - ));
 DESCR("referential integrity ON UPDATE CASCADE");
-DATA(insert OID = 1648 (  RI_FKey_restrict_del    PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_restrict_del - ));
+DATA(insert OID = 1648 (  RI_FKey_restrict_del    10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_restrict_del - ));
 DESCR("referential integrity ON DELETE RESTRICT");
-DATA(insert OID = 1649 (  RI_FKey_restrict_upd    PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_restrict_upd - ));
+DATA(insert OID = 1649 (  RI_FKey_restrict_upd    10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_restrict_upd - ));
 DESCR("referential integrity ON UPDATE RESTRICT");
-DATA(insert OID = 1650 (  RI_FKey_setnull_del    PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_setnull_del - ));
+DATA(insert OID = 1650 (  RI_FKey_setnull_del    10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_setnull_del - ));
 DESCR("referential integrity ON DELETE SET NULL");
-DATA(insert OID = 1651 (  RI_FKey_setnull_upd    PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_setnull_upd - ));
+DATA(insert OID = 1651 (  RI_FKey_setnull_upd    10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_setnull_upd - ));
 DESCR("referential integrity ON UPDATE SET NULL");
-DATA(insert OID = 1652 (  RI_FKey_setdefault_del PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_setdefault_del - ));
+DATA(insert OID = 1652 (  RI_FKey_setdefault_del 10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_setdefault_del -
));
 DESCR("referential integrity ON DELETE SET DEFAULT");
-DATA(insert OID = 1653 (  RI_FKey_setdefault_upd PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_setdefault_upd - ));
+DATA(insert OID = 1653 (  RI_FKey_setdefault_upd 10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_setdefault_upd -
));
 DESCR("referential integrity ON UPDATE SET DEFAULT");
-DATA(insert OID = 1654 (  RI_FKey_noaction_del PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_noaction_del - ));
+DATA(insert OID = 1654 (  RI_FKey_noaction_del 10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_noaction_del - ));
 DESCR("referential integrity ON DELETE NO ACTION");
-DATA(insert OID = 1655 (  RI_FKey_noaction_upd PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_noaction_upd - ));
+DATA(insert OID = 1655 (  RI_FKey_noaction_upd 10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100  RI_FKey_noaction_upd - ));
 DESCR("referential integrity ON UPDATE NO ACTION");

-DATA(insert OID = 1666 (  varbiteq            PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100  biteq - ));
+DATA(insert OID = 1666 (  varbiteq            10 PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100  biteq - ));
 DESCR("equal");
-DATA(insert OID = 1667 (  varbitne            PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100  bitne - ));
+DATA(insert OID = 1667 (  varbitne            10 PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100  bitne - ));
 DESCR("not equal");
-DATA(insert OID = 1668 (  varbitge            PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100  bitge - ));
+DATA(insert OID = 1668 (  varbitge            10 PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100  bitge - ));
 DESCR("greater than or equal");
-DATA(insert OID = 1669 (  varbitgt            PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100  bitgt - ));
+DATA(insert OID = 1669 (  varbitgt            10 PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100  bitgt - ));
 DESCR("greater than");
-DATA(insert OID = 1670 (  varbitle            PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100  bitle - ));
+DATA(insert OID = 1670 (  varbitle            10 PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100  bitle - ));
 DESCR("less than or equal");
-DATA(insert OID = 1671 (  varbitlt            PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100  bitlt - ));
+DATA(insert OID = 1671 (  varbitlt            10 PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100  bitlt - ));
 DESCR("less than");
-DATA(insert OID = 1672 (  varbitcmp            PGUID 12 f t t t 2 f 23 "1562 1562" 100 0 0 100  bitcmp - ));
+DATA(insert OID = 1672 (  varbitcmp            10 PGUID 12 f t t t 2 f 23 "1562 1562" 100 0 0 100  bitcmp - ));
 DESCR("compare");

-DATA(insert OID = 1673 (  bitand            PGUID 12 f t t t 2 f 1560 "1560 1560" 100 0 0 100  bitand - ));
+DATA(insert OID = 1673 (  bitand            10 PGUID 12 f t t t 2 f 1560 "1560 1560" 100 0 0 100  bitand - ));
 DESCR("bitwise and");
-DATA(insert OID = 1674 (  bitor                PGUID 12 f t t t 2 f 1560 "1560 1560" 100 0 0 100  bitor - ));
+DATA(insert OID = 1674 (  bitor                10 PGUID 12 f t t t 2 f 1560 "1560 1560" 100 0 0 100  bitor - ));
 DESCR("bitwise or");
-DATA(insert OID = 1675 (  bitxor            PGUID 12 f t t t 2 f 1560 "1560 1560" 100 0 0 100  bitxor - ));
+DATA(insert OID = 1675 (  bitxor            10 PGUID 12 f t t t 2 f 1560 "1560 1560" 100 0 0 100  bitxor - ));
 DESCR("bitwise exclusive or");
-DATA(insert OID = 1676 (  bitnot            PGUID 12 f t t t 1 f 1560 "1560" 100 0 0 100  bitnot - ));
+DATA(insert OID = 1676 (  bitnot            10 PGUID 12 f t t t 1 f 1560 "1560" 100 0 0 100  bitnot - ));
 DESCR("bitwise negation");
-DATA(insert OID = 1677 (  bitshiftleft        PGUID 12 f t t t 2 f 1560 "1560 23" 100 0 0 100  bitshiftleft - ));
+DATA(insert OID = 1677 (  bitshiftleft        10 PGUID 12 f t t t 2 f 1560 "1560 23" 100 0 0 100  bitshiftleft - ));
 DESCR("bitwise left shift");
-DATA(insert OID = 1678 (  bitshiftright        PGUID 12 f t t t 2 f 1560 "1560 23" 100 0 0 100  bitshiftright - ));
+DATA(insert OID = 1678 (  bitshiftright        10 PGUID 12 f t t t 2 f 1560 "1560 23" 100 0 0 100  bitshiftright - ));
 DESCR("bitwise right shift");
-DATA(insert OID = 1679 (  bitcat            PGUID 12 f t t t 2 f 1560 "1560 1560" 100 0 0 100  bitcat - ));
+DATA(insert OID = 1679 (  bitcat            10 PGUID 12 f t t t 2 f 1560 "1560 1560" 100 0 0 100  bitcat - ));
 DESCR("bitwise concatenation");
-DATA(insert OID = 1680 (  substring            PGUID 12 f t t t 3 f 1560 "1560 23 23" 100 0 0 100  bitsubstr - ));
+DATA(insert OID = 1680 (  substring            10 PGUID 12 f t t t 3 f 1560 "1560 23 23" 100 0 0 100  bitsubstr - ));
 DESCR("return portion of bitstring");
-DATA(insert OID = 1681 (  length            PGUID 12 f t t t 1 f 23 "1560" 100 0 0 100  bitlength - ));
+DATA(insert OID = 1681 (  length            10 PGUID 12 f t t t 1 f 23 "1560" 100 0 0 100  bitlength - ));
 DESCR("bitstring length");
-DATA(insert OID = 1682 (  octet_length        PGUID 12 f t t t 1 f 23 "1560" 100 0 0 100  bitoctetlength - ));
+DATA(insert OID = 1682 (  octet_length        10 PGUID 12 f t t t 1 f 23 "1560" 100 0 0 100  bitoctetlength - ));
 DESCR("octet length");
-DATA(insert OID = 1683 (  bitfromint4        PGUID 12 f t t t 1 f 1560 "23" 100 0 0 100  bitfromint4 - ));
+DATA(insert OID = 1683 (  bitfromint4        10 PGUID 12 f t t t 1 f 1560 "23" 100 0 0 100  bitfromint4 - ));
 DESCR("int4 to bitstring");
-DATA(insert OID = 1684 (  bittoint4            PGUID 12 f t t t 1 f 23 "1560" 100 0 0 100  bittoint4 - ));
+DATA(insert OID = 1684 (  bittoint4            10 PGUID 12 f t t t 1 f 23 "1560" 100 0 0 100  bittoint4 - ));
 DESCR("bitstring to int4");

-DATA(insert OID = 1685 (  bit               PGUID 12 f t t t 2 f 1560 "1560 23" 100 0 0 100  bit - ));
+DATA(insert OID = 1685 (  bit               10 PGUID 12 f t t t 2 f 1560 "1560 23" 100 0 0 100  bit - ));
 DESCR("adjust bit() to typmod length");
-DATA(insert OID = 1686 (  _bit               PGUID 12 f t t t 2 f 1561 "1561 23" 100 0 0 100  _bit - ));
+DATA(insert OID = 1686 (  _bit               10 PGUID 12 f t t t 2 f 1561 "1561 23" 100 0 0 100  _bit - ));
 DESCR("adjust bit()[] to typmod length");
-DATA(insert OID = 1687 (  varbit           PGUID 12 f t t t 2 f 1562 "1562 23" 100 0 0 100  varbit - ));
+DATA(insert OID = 1687 (  varbit           10 PGUID 12 f t t t 2 f 1562 "1562 23" 100 0 0 100  varbit - ));
 DESCR("adjust varbit() to typmod length");
-DATA(insert OID = 1688 (  _varbit           PGUID 12 f t t t 2 f 1563 "1563 23" 100 0 0 100  _varbit - ));
+DATA(insert OID = 1688 (  _varbit           10 PGUID 12 f t t t 2 f 1563 "1563 23" 100 0 0 100  _varbit - ));
 DESCR("adjust varbit()[] to typmod length");

-DATA(insert OID = 1698 (  position           PGUID 12 f t t t 2 f 23 "1560 1560" 100 0 0 100 bitposition - ));
+DATA(insert OID = 1698 (  position           10 PGUID 12 f t t t 2 f 23 "1560 1560" 100 0 0 100 bitposition - ));
 DESCR("return position of sub-bitstring");
-DATA(insert OID = 1699 (  substring            PGUID 14 f t t t 2 f 1560 "1560 23" 100 0 0 100  "select substring($1,
$2,-1)" - )); 
+DATA(insert OID = 1699 (  substring            10 PGUID 14 f t t t 2 f 1560 "1560 23" 100 0 0 100  "select
substring($1,$2, -1)" - )); 
 DESCR("return portion of bitstring");


 /* for mac type support */
-DATA(insert OID = 436 (  macaddr_in            PGUID 12 f t t t 1 f 829 "0" 100 0 0 100  macaddr_in - ));
+DATA(insert OID = 436 (  macaddr_in            10 PGUID 12 f t t t 1 f 829 "0" 100 0 0 100  macaddr_in - ));
 DESCR("(internal)");
-DATA(insert OID = 437 (  macaddr_out        PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  macaddr_out - ));
+DATA(insert OID = 437 (  macaddr_out        10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  macaddr_out - ));
 DESCR("(internal)");

-DATA(insert OID = 752 (  text                PGUID 12 f t t t 1 f 25 "829" 100 0 0 100  macaddr_text - ));
+DATA(insert OID = 752 (  text                10 PGUID 12 f t t t 1 f 25 "829" 100 0 0 100  macaddr_text - ));
 DESCR("MAC address to text");
-DATA(insert OID = 753 (  trunc                PGUID 12 f t t t 1 f 829 "829" 100 0 0 100  macaddr_trunc - ));
+DATA(insert OID = 753 (  trunc                10 PGUID 12 f t t t 1 f 829 "829" 100 0 0 100  macaddr_trunc - ));
 DESCR("MAC manufacturer fields");
-DATA(insert OID = 767 (  macaddr            PGUID 12 f t t t 1 f 829 "25" 100 0 0 100  text_macaddr - ));
+DATA(insert OID = 767 (  macaddr            10 PGUID 12 f t t t 1 f 829 "25" 100 0 0 100  text_macaddr - ));
 DESCR("text to MAC address");

-DATA(insert OID = 830 (  macaddr_eq            PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100  macaddr_eq - ));
+DATA(insert OID = 830 (  macaddr_eq            10 PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100  macaddr_eq - ));
 DESCR("equal");
-DATA(insert OID = 831 (  macaddr_lt            PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100  macaddr_lt - ));
+DATA(insert OID = 831 (  macaddr_lt            10 PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100  macaddr_lt - ));
 DESCR("less-than");
-DATA(insert OID = 832 (  macaddr_le            PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100  macaddr_le - ));
+DATA(insert OID = 832 (  macaddr_le            10 PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100  macaddr_le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 833 (  macaddr_gt            PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100  macaddr_gt - ));
+DATA(insert OID = 833 (  macaddr_gt            10 PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100  macaddr_gt - ));
 DESCR("greater-than");
-DATA(insert OID = 834 (  macaddr_ge            PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100  macaddr_ge - ));
+DATA(insert OID = 834 (  macaddr_ge            10 PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100  macaddr_ge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 835 (  macaddr_ne            PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100  macaddr_ne - ));
+DATA(insert OID = 835 (  macaddr_ne            10 PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100  macaddr_ne - ));
 DESCR("not equal");
-DATA(insert OID = 836 (  macaddr_cmp        PGUID 12 f t t t 2 f 23 "829 829" 100 0 0 100  macaddr_cmp - ));
+DATA(insert OID = 836 (  macaddr_cmp        10 PGUID 12 f t t t 2 f 23 "829 829" 100 0 0 100  macaddr_cmp - ));
 DESCR("less-equal-greater");

 /* for inet type support */
-DATA(insert OID = 910 (  inet_in            PGUID 12 f t t t 1 f 869 "0" 100 0 0 100  inet_in - ));
+DATA(insert OID = 910 (  inet_in            10 PGUID 12 f t t t 1 f 869 "0" 100 0 0 100  inet_in - ));
 DESCR("(internal)");
-DATA(insert OID = 911 (  inet_out            PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  inet_out - ));
+DATA(insert OID = 911 (  inet_out            10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  inet_out - ));
 DESCR("(internal)");

 /* for cidr type support */
-DATA(insert OID = 1267 (  cidr_in            PGUID 12 f t t t 1 f 650 "0" 100 0 0 100  cidr_in - ));
+DATA(insert OID = 1267 (  cidr_in            10 PGUID 12 f t t t 1 f 650 "0" 100 0 0 100  cidr_in - ));
 DESCR("(internal)");
-DATA(insert OID = 1427 (  cidr_out            PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  cidr_out - ));
+DATA(insert OID = 1427 (  cidr_out            10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  cidr_out - ));
 DESCR("(internal)");

 /* these are used for both inet and cidr */
-DATA(insert OID = 920 (  network_eq            PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_eq - ));
+DATA(insert OID = 920 (  network_eq            10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_eq - ));
 DESCR("equal");
-DATA(insert OID = 921 (  network_lt            PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_lt - ));
+DATA(insert OID = 921 (  network_lt            10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_lt - ));
 DESCR("less-than");
-DATA(insert OID = 922 (  network_le            PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_le - ));
+DATA(insert OID = 922 (  network_le            10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 923 (  network_gt            PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_gt - ));
+DATA(insert OID = 923 (  network_gt            10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_gt - ));
 DESCR("greater-than");
-DATA(insert OID = 924 (  network_ge            PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_ge - ));
+DATA(insert OID = 924 (  network_ge            10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_ge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 925 (  network_ne            PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_ne - ));
+DATA(insert OID = 925 (  network_ne            10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_ne - ));
 DESCR("not equal");
-DATA(insert OID = 926 (  network_cmp        PGUID 12 f t t t 2 f 23 "869 869" 100 0 0 100  network_cmp - ));
+DATA(insert OID = 926 (  network_cmp        10 PGUID 12 f t t t 2 f 23 "869 869" 100 0 0 100  network_cmp - ));
 DESCR("less-equal-greater");
-DATA(insert OID = 927 (  network_sub        PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_sub - ));
+DATA(insert OID = 927 (  network_sub        10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_sub - ));
 DESCR("is-subnet");
-DATA(insert OID = 928 (  network_subeq        PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_subeq - ));
+DATA(insert OID = 928 (  network_subeq        10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_subeq - ));
 DESCR("is-subnet-or-equal");
-DATA(insert OID = 929 (  network_sup        PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_sup - ));
+DATA(insert OID = 929 (  network_sup        10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_sup - ));
 DESCR("is-supernet");
-DATA(insert OID = 930 (  network_supeq        PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_supeq - ));
+DATA(insert OID = 930 (  network_supeq        10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100  network_supeq - ));
 DESCR("is-supernet-or-equal");

 /* inet/cidr functions */
-DATA(insert OID = 605 (  abbrev                PGUID 12 f t t t 1 f 25 "869" 100 0 0 100  network_abbrev - ));
+DATA(insert OID = 605 (  abbrev                10 PGUID 12 f t t t 1 f 25 "869" 100 0 0 100  network_abbrev - ));
 DESCR("abbreviated display of inet/cidr value");
-DATA(insert OID = 683 (  network            PGUID 12 f t t t 1 f 650 "869" 100 0 0 100  network_network - ));
+DATA(insert OID = 683 (  network            10 PGUID 12 f t t t 1 f 650 "869" 100 0 0 100  network_network - ));
 DESCR("network part of address");
-DATA(insert OID = 696 (  netmask            PGUID 12 f t t t 1 f 869 "869" 100 0 0 100  network_netmask - ));
+DATA(insert OID = 696 (  netmask            10 PGUID 12 f t t t 1 f 869 "869" 100 0 0 100  network_netmask - ));
 DESCR("netmask of address");
-DATA(insert OID = 697 (  masklen            PGUID 12 f t t t 1 f 23 "869" 100 0 0 100  network_masklen - ));
+DATA(insert OID = 697 (  masklen            10 PGUID 12 f t t t 1 f 23 "869" 100 0 0 100  network_masklen - ));
 DESCR("netmask length");
-DATA(insert OID = 698 (  broadcast            PGUID 12 f t t t 1 f 869 "869" 100 0 0 100  network_broadcast - ));
+DATA(insert OID = 698 (  broadcast            10 PGUID 12 f t t t 1 f 869 "869" 100 0 0 100  network_broadcast - ));
 DESCR("broadcast address of network");
-DATA(insert OID = 699 (  host                PGUID 12 f t t t 1 f 25 "869" 100 0 0 100  network_host - ));
+DATA(insert OID = 699 (  host                10 PGUID 12 f t t t 1 f 25 "869" 100 0 0 100  network_host - ));
 DESCR("show address octets only");
-DATA(insert OID = 730 (  text                PGUID 12 f t t t 1 f 25 "869" 100 0 0 100  network_show - ));
+DATA(insert OID = 730 (  text                10 PGUID 12 f t t t 1 f 25 "869" 100 0 0 100  network_show - ));
 DESCR("show all parts of inet/cidr value");
-DATA(insert OID = 1713 (  inet                PGUID 12 f t t t 1 f 869 "25" 100 0 0 100  text_inet - ));
+DATA(insert OID = 1713 (  inet                10 PGUID 12 f t t t 1 f 869 "25" 100 0 0 100  text_inet - ));
 DESCR("text to inet");
-DATA(insert OID = 1714 (  cidr                PGUID 12 f t t t 1 f 650 "25" 100 0 0 100  text_cidr - ));
+DATA(insert OID = 1714 (  cidr                10 PGUID 12 f t t t 1 f 650 "25" 100 0 0 100  text_cidr - ));
 DESCR("text to cidr");
-DATA(insert OID = 1715 (  set_masklen        PGUID 12 f t t t 2 f 869 "869 23" 100 0 0 100  inet_set_masklen - ));
+DATA(insert OID = 1715 (  set_masklen        10 PGUID 12 f t t t 2 f 869 "869 23" 100 0 0 100  inet_set_masklen - ));
 DESCR("change the netmask of an inet");

-DATA(insert OID = 1690 ( time_mi_time        PGUID 12 f t t t 2 f 1186 "1083 1083" 100 0 0 100  time_mi_time - ));
+DATA(insert OID = 1690 ( time_mi_time        10 PGUID 12 f t t t 2 f 1186 "1083 1083" 100 0 0 100  time_mi_time - ));
 DESCR("minus");

-DATA(insert OID =  1691 (  boolle            PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100  boolle - ));
+DATA(insert OID =  1691 (  boolle            10 PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100  boolle - ));
 DESCR("less-than-or-equal");
-DATA(insert OID =  1692 (  boolge            PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100  boolge - ));
+DATA(insert OID =  1692 (  boolge            10 PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100  boolge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 1693 (  btboolcmp            PGUID 12 f t t t 2 f 23 "16 16" 100 0 0 100  btboolcmp - ));
+DATA(insert OID = 1693 (  btboolcmp            10 PGUID 12 f t t t 2 f 23 "16 16" 100 0 0 100  btboolcmp - ));
 DESCR("btree less-equal-greater");

-DATA(insert OID = 1696 (  timetz_hash        PGUID 12 f t t t 1 f 23 "1266" 100 0 0 100  timetz_hash - ));
+DATA(insert OID = 1696 (  timetz_hash        10 PGUID 12 f t t t 1 f 23 "1266" 100 0 0 100  timetz_hash - ));
 DESCR("hash");
-DATA(insert OID = 1697 (  interval_hash        PGUID 12 f t t t 1 f 23 "1186" 100 0 0 100  interval_hash - ));
+DATA(insert OID = 1697 (  interval_hash        10 PGUID 12 f t t t 1 f 23 "1186" 100 0 0 100  interval_hash - ));
 DESCR("hash");


 /* OID's 1700 - 1799 NUMERIC data type */
-DATA(insert OID = 1701 ( numeric_in                PGUID 12 f t t t 3 f 1700 "0 26 23" 100 0 0 100  numeric_in - ));
+DATA(insert OID = 1701 ( numeric_in                10 PGUID 12 f t t t 3 f 1700 "0 26 23" 100 0 0 100  numeric_in -
));
 DESCR("(internal)");
-DATA(insert OID = 1702 ( numeric_out            PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  numeric_out - ));
+DATA(insert OID = 1702 ( numeric_out            10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  numeric_out - ));
 DESCR("(internal)");
-DATA(insert OID = 1703 ( numeric                PGUID 12 f t t t 2 f 1700 "1700 23" 100 0 0 100  numeric - ));
+DATA(insert OID = 1703 ( numeric                10 PGUID 12 f t t t 2 f 1700 "1700 23" 100 0 0 100  numeric - ));
 DESCR("adjust numeric to typmod precision/scale");
-DATA(insert OID = 1704 ( numeric_abs            PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_abs - ));
+DATA(insert OID = 1704 ( numeric_abs            10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_abs - ));
 DESCR("absolute value");
-DATA(insert OID = 1705 ( abs                    PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_abs - ));
+DATA(insert OID = 1705 ( abs                    10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_abs - ));
 DESCR("absolute value");
-DATA(insert OID = 1706 ( sign                    PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_sign - ));
+DATA(insert OID = 1706 ( sign                    10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_sign - ));
 DESCR("sign of value");
-DATA(insert OID = 1707 ( round                    PGUID 12 f t t t 2 f 1700 "1700 23" 100 0 0 100  numeric_round - ));
+DATA(insert OID = 1707 ( round                    10 PGUID 12 f t t t 2 f 1700 "1700 23" 100 0 0 100  numeric_round -
));
 DESCR("value rounded to 'scale'");
-DATA(insert OID = 1708 ( round                    PGUID 14 f t t t 1 f 1700 "1700" 100 0 0 100  "select round($1,0)" -
));
+DATA(insert OID = 1708 ( round                    10 PGUID 14 f t t t 1 f 1700 "1700" 100 0 0 100  "select
round($1,0)"- )); 
 DESCR("value rounded to 'scale' of zero");
-DATA(insert OID = 1709 ( trunc                    PGUID 12 f t t t 2 f 1700 "1700 23" 100 0 0 100  numeric_trunc - ));
+DATA(insert OID = 1709 ( trunc                    10 PGUID 12 f t t t 2 f 1700 "1700 23" 100 0 0 100  numeric_trunc -
));
 DESCR("value truncated to 'scale'");
-DATA(insert OID = 1710 ( trunc                    PGUID 14 f t t t 1 f 1700 "1700" 100 0 0 100  "select trunc($1,0)" -
));
+DATA(insert OID = 1710 ( trunc                    10 PGUID 14 f t t t 1 f 1700 "1700" 100 0 0 100  "select
trunc($1,0)"- )); 
 DESCR("value truncated to 'scale' of zero");
-DATA(insert OID = 1711 ( ceil                    PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_ceil - ));
+DATA(insert OID = 1711 ( ceil                    10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_ceil - ));
 DESCR("smallest integer >= value");
-DATA(insert OID = 1712 ( floor                    PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_floor - ));
+DATA(insert OID = 1712 ( floor                    10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_floor - ));
 DESCR("largest integer <= value");
-DATA(insert OID = 1718 ( numeric_eq                PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100  numeric_eq - ));
+DATA(insert OID = 1718 ( numeric_eq                10 PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100  numeric_eq -
));
 DESCR("equal");
-DATA(insert OID = 1719 ( numeric_ne                PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100  numeric_ne - ));
+DATA(insert OID = 1719 ( numeric_ne                10 PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100  numeric_ne -
));
 DESCR("not equal");
-DATA(insert OID = 1720 ( numeric_gt                PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100  numeric_gt - ));
+DATA(insert OID = 1720 ( numeric_gt                10 PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100  numeric_gt -
));
 DESCR("greater-than");
-DATA(insert OID = 1721 ( numeric_ge                PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100  numeric_ge - ));
+DATA(insert OID = 1721 ( numeric_ge                10 PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100  numeric_ge -
));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 1722 ( numeric_lt                PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100  numeric_lt - ));
+DATA(insert OID = 1722 ( numeric_lt                10 PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100  numeric_lt -
));
 DESCR("less-than");
-DATA(insert OID = 1723 ( numeric_le                PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100  numeric_le - ));
+DATA(insert OID = 1723 ( numeric_le                10 PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100  numeric_le -
));
 DESCR("less-than-or-equal");
-DATA(insert OID = 1724 ( numeric_add            PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_add - ));
+DATA(insert OID = 1724 ( numeric_add            10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_add -
));
 DESCR("add");
-DATA(insert OID = 1725 ( numeric_sub            PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_sub - ));
+DATA(insert OID = 1725 ( numeric_sub            10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_sub -
));
 DESCR("subtract");
-DATA(insert OID = 1726 ( numeric_mul            PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_mul - ));
+DATA(insert OID = 1726 ( numeric_mul            10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_mul -
));
 DESCR("multiply");
-DATA(insert OID = 1727 ( numeric_div            PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_div - ));
+DATA(insert OID = 1727 ( numeric_div            10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_div -
));
 DESCR("divide");
-DATA(insert OID = 1728 ( mod                    PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_mod - ));
+DATA(insert OID = 1728 ( mod                    10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_mod -
));
 DESCR("modulus");
-DATA(insert OID = 1729 ( numeric_mod            PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_mod - ));
+DATA(insert OID = 1729 ( numeric_mod            10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_mod -
));
 DESCR("modulus");
-DATA(insert OID = 1730 ( sqrt                    PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_sqrt - ));
+DATA(insert OID = 1730 ( sqrt                    10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_sqrt - ));
 DESCR("square root");
-DATA(insert OID = 1731 ( numeric_sqrt            PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_sqrt - ));
+DATA(insert OID = 1731 ( numeric_sqrt            10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_sqrt - ));
 DESCR("square root");
-DATA(insert OID = 1732 ( exp                    PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_exp - ));
+DATA(insert OID = 1732 ( exp                    10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_exp - ));
 DESCR("e raised to the power of n");
-DATA(insert OID = 1733 ( numeric_exp            PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_exp - ));
+DATA(insert OID = 1733 ( numeric_exp            10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_exp - ));
 DESCR("e raised to the power of n");
-DATA(insert OID = 1734 ( ln                        PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_ln - ));
+DATA(insert OID = 1734 ( ln                        10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_ln - ));
 DESCR("natural logarithm of n");
-DATA(insert OID = 1735 ( numeric_ln                PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_ln - ));
+DATA(insert OID = 1735 ( numeric_ln                10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_ln - ));
 DESCR("natural logarithm of n");
-DATA(insert OID = 1736 ( log                    PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_log - ));
+DATA(insert OID = 1736 ( log                    10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_log -
));
 DESCR("logarithm base m of n");
-DATA(insert OID = 1737 ( numeric_log            PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_log - ));
+DATA(insert OID = 1737 ( numeric_log            10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_log -
));
 DESCR("logarithm base m of n");
-DATA(insert OID = 1738 ( pow                    PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_power - ));
+DATA(insert OID = 1738 ( pow                    10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_power -
));
 DESCR("m raised to the power of n");
-DATA(insert OID = 1739 ( numeric_power            PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_power -
));
+DATA(insert OID = 1739 ( numeric_power            10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_power
-)); 
 DESCR("m raised to the power of n");
-DATA(insert OID = 1740 ( numeric                PGUID 12 f t t t 1 f 1700 "23" 100 0 0 100  int4_numeric - ));
+DATA(insert OID = 1740 ( numeric                10 PGUID 12 f t t t 1 f 1700 "23" 100 0 0 100  int4_numeric - ));
 DESCR("(internal)");
-DATA(insert OID = 1741 ( log                    PGUID 14 f t t t 1 f 1700 "1700" 100 0 0 100  "select log(10, $1)" -
));
+DATA(insert OID = 1741 ( log                    10 PGUID 14 f t t t 1 f 1700 "1700" 100 0 0 100  "select log(10, $1)"
-)); 
 DESCR("logarithm base 10 of n");
-DATA(insert OID = 1742 ( numeric                PGUID 12 f t t t 1 f 1700 "700" 100 0 0 100  float4_numeric - ));
+DATA(insert OID = 1742 ( numeric                10 PGUID 12 f t t t 1 f 1700 "700" 100 0 0 100  float4_numeric - ));
 DESCR("(internal)");
-DATA(insert OID = 1743 ( numeric                PGUID 12 f t t t 1 f 1700 "701" 100 0 0 100  float8_numeric - ));
+DATA(insert OID = 1743 ( numeric                10 PGUID 12 f t t t 1 f 1700 "701" 100 0 0 100  float8_numeric - ));
 DESCR("(internal)");
-DATA(insert OID = 1744 ( int4                    PGUID 12 f t t t 1 f 23 "1700" 100 0 0 100  numeric_int4 - ));
+DATA(insert OID = 1744 ( int4                    10 PGUID 12 f t t t 1 f 23 "1700" 100 0 0 100  numeric_int4 - ));
 DESCR("(internal)");
-DATA(insert OID = 1745 ( float4                    PGUID 12 f t t t 1 f 700 "1700" 100 0 0 100  numeric_float4 - ));
+DATA(insert OID = 1745 ( float4                    10 PGUID 12 f t t t 1 f 700 "1700" 100 0 0 100  numeric_float4 -
));
 DESCR("(internal)");
-DATA(insert OID = 1746 ( float8                    PGUID 12 f t t t 1 f 701 "1700" 100 0 0 100  numeric_float8 - ));
+DATA(insert OID = 1746 ( float8                    10 PGUID 12 f t t t 1 f 701 "1700" 100 0 0 100  numeric_float8 -
));
 DESCR("(internal)");

-DATA(insert OID = 1747 ( time_pl_interval        PGUID 12 f t t t 2 f 1083 "1083 1186" 100 0 0 100  time_pl_interval -
));
+DATA(insert OID = 1747 ( time_pl_interval        10 PGUID 12 f t t t 2 f 1083 "1083 1186" 100 0 0 100
time_pl_interval- )); 
 DESCR("plus");
-DATA(insert OID = 1748 ( time_mi_interval        PGUID 12 f t t t 2 f 1083 "1083 1186" 100 0 0 100  time_mi_interval -
));
+DATA(insert OID = 1748 ( time_mi_interval        10 PGUID 12 f t t t 2 f 1083 "1083 1186" 100 0 0 100
time_mi_interval- )); 
 DESCR("minus");
-DATA(insert OID = 1749 ( timetz_pl_interval        PGUID 12 f t t t 2 f 1266 "1266 1186" 100 0 0 100
timetz_pl_interval- )); 
+DATA(insert OID = 1749 ( timetz_pl_interval        10 PGUID 12 f t t t 2 f 1266 "1266 1186" 100 0 0 100
timetz_pl_interval- )); 
 DESCR("plus");
-DATA(insert OID = 1750 ( timetz_mi_interval        PGUID 12 f t t t 2 f 1266 "1266 1186" 100 0 0 100
timetz_mi_interval- )); 
+DATA(insert OID = 1750 ( timetz_mi_interval        10 PGUID 12 f t t t 2 f 1266 "1266 1186" 100 0 0 100
timetz_mi_interval- )); 
 DESCR("minus");

-DATA(insert OID = 1764 ( numeric_inc            PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_inc - ));
+DATA(insert OID = 1764 ( numeric_inc            10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_inc - ));
 DESCR("increment by one");
-DATA(insert OID = 1766 ( numeric_smaller        PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_smaller -
));
+DATA(insert OID = 1766 ( numeric_smaller        10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_smaller
-)); 
 DESCR("smaller of two numbers");
-DATA(insert OID = 1767 ( numeric_larger            PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100  numeric_larger -
));
+DATA(insert OID = 1767 ( numeric_larger            10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100
numeric_larger- )); 
 DESCR("larger of two numbers");
-DATA(insert OID = 1769 ( numeric_cmp            PGUID 12 f t t t 2 f 23 "1700 1700" 100 0 0 100  numeric_cmp - ));
+DATA(insert OID = 1769 ( numeric_cmp            10 PGUID 12 f t t t 2 f 23 "1700 1700" 100 0 0 100  numeric_cmp - ));
 DESCR("compare two numbers");
-DATA(insert OID = 1771 ( numeric_uminus            PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_uminus - ));
+DATA(insert OID = 1771 ( numeric_uminus            10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_uminus -
));
 DESCR("negate");
-DATA(insert OID = 1779 ( int8                    PGUID 12 f t t t 1 f 20 "1700" 100 0 0 100  numeric_int8 - ));
+DATA(insert OID = 1779 ( int8                    10 PGUID 12 f t t t 1 f 20 "1700" 100 0 0 100  numeric_int8 - ));
 DESCR("(internal)");
-DATA(insert OID = 1781 ( numeric                PGUID 12 f t t t 1 f 1700 "20" 100 0 0 100  int8_numeric - ));
+DATA(insert OID = 1781 ( numeric                10 PGUID 12 f t t t 1 f 1700 "20" 100 0 0 100  int8_numeric - ));
 DESCR("(internal)");
-DATA(insert OID = 1782 ( numeric                PGUID 12 f t t t 1 f 1700 "21" 100 0 0 100  int2_numeric - ));
+DATA(insert OID = 1782 ( numeric                10 PGUID 12 f t t t 1 f 1700 "21" 100 0 0 100  int2_numeric - ));
 DESCR("(internal)");
-DATA(insert OID = 1783 ( int2                    PGUID 12 f t t t 1 f 21 "1700" 100 0 0 100  numeric_int2 - ));
+DATA(insert OID = 1783 ( int2                    10 PGUID 12 f t t t 1 f 21 "1700" 100 0 0 100  numeric_int2 - ));
 DESCR("(internal)");

 /* formatting */
-DATA(insert OID = 1770 ( to_char            PGUID 12 f t f t 2 f    25 "1184 25" 100 0 0 100  timestamptz_to_char -
));
+DATA(insert OID = 1770 ( to_char            10 PGUID 12 f t f t 2 f    25 "1184 25" 100 0 0 100  timestamptz_to_char -
));
 DESCR("format timestamp with time zone to text");
-DATA(insert OID = 1772 ( to_char            PGUID 12 f t t t 2 f    25 "1700 25" 100 0 0 100  numeric_to_char - ));
+DATA(insert OID = 1772 ( to_char            10 PGUID 12 f t t t 2 f    25 "1700 25" 100 0 0 100  numeric_to_char - ));
 DESCR("format numeric to text");
-DATA(insert OID = 1773 ( to_char            PGUID 12 f t t t 2 f    25 "23 25" 100 0 0 100  int4_to_char - ));
+DATA(insert OID = 1773 ( to_char            10 PGUID 12 f t t t 2 f    25 "23 25" 100 0 0 100  int4_to_char - ));
 DESCR("format int4 to text");
-DATA(insert OID = 1774 ( to_char            PGUID 12 f t t t 2 f    25 "20 25" 100 0 0 100  int8_to_char - ));
+DATA(insert OID = 1774 ( to_char            10 PGUID 12 f t t t 2 f    25 "20 25" 100 0 0 100  int8_to_char - ));
 DESCR("format int8 to text");
-DATA(insert OID = 1775 ( to_char            PGUID 12 f t t t 2 f    25 "700 25" 100 0 0 100  float4_to_char - ));
+DATA(insert OID = 1775 ( to_char            10 PGUID 12 f t t t 2 f    25 "700 25" 100 0 0 100  float4_to_char - ));
 DESCR("format float4 to text");
-DATA(insert OID = 1776 ( to_char            PGUID 12 f t t t 2 f    25 "701 25" 100 0 0 100  float8_to_char - ));
+DATA(insert OID = 1776 ( to_char            10 PGUID 12 f t t t 2 f    25 "701 25" 100 0 0 100  float8_to_char - ));
 DESCR("format float8 to text");
-DATA(insert OID = 1777 ( to_number            PGUID 12 f t t t 2 f    1700 "25 25" 100 0 0 100  numeric_to_number -
));
+DATA(insert OID = 1777 ( to_number            10 PGUID 12 f t t t 2 f    1700 "25 25" 100 0 0 100  numeric_to_number -
));
 DESCR("convert text to numeric");
-DATA(insert OID = 1778 ( to_timestamp        PGUID 12 f t f t 2 f    1184 "25 25" 100 0 0 100  to_timestamp - ));
+DATA(insert OID = 1778 ( to_timestamp        10 PGUID 12 f t f t 2 f    1184 "25 25" 100 0 0 100  to_timestamp - ));
 DESCR("convert text to timestamp");
-DATA(insert OID = 1780 ( to_date            PGUID 12 f t t t 2 f    1082 "25 25" 100 0 0 100  to_date - ));
+DATA(insert OID = 1780 ( to_date            10 PGUID 12 f t t t 2 f    1082 "25 25" 100 0 0 100  to_date - ));
 DESCR("convert text to date");
-DATA(insert OID = 1768 ( to_char            PGUID 12 f t t t 2 f    25 "1186 25" 100 0 0 100  interval_to_char - ));
+DATA(insert OID = 1768 ( to_char            10 PGUID 12 f t t t 2 f    25 "1186 25" 100 0 0 100  interval_to_char -
));
 DESCR("format interval to text");

-DATA(insert OID =  1282 ( quote_ident       PGUID 12 f t t t 1 f 25 "25" 100 0 0 100 quote_ident - ));
+DATA(insert OID =  1282 ( quote_ident       10 PGUID 12 f t t t 1 f 25 "25" 100 0 0 100 quote_ident - ));
 DESCR("quote an identifier for usage in a querystring");
-DATA(insert OID =  1283 ( quote_literal    PGUID 12 f t t t 1 f 25 "25" 100 0 0 100 quote_literal - ));
+DATA(insert OID =  1283 ( quote_literal    10 PGUID 12 f t t t 1 f 25 "25" 100 0 0 100 quote_literal - ));
 DESCR("quote a literal for usage in a querystring");

-DATA(insert OID = 1798 (  oidin               PGUID 12 f t t t 1 f 26 "0" 100 0 0 100  oidin - ));
+DATA(insert OID = 1798 (  oidin               10 PGUID 12 f t t t 1 f 26 "0" 100 0 0 100  oidin - ));
 DESCR("(internal)");
-DATA(insert OID = 1799 (  oidout           PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  oidout - ));
+DATA(insert OID = 1799 (  oidout           10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100  oidout - ));
 DESCR("(internal)");


-DATA(insert OID = 1810 (  bit_length       PGUID 14 f t t t 1 f 23 "17" 100 0 0 100 "select octet_length($1) * 8" -
));
+DATA(insert OID = 1810 (  bit_length       10 PGUID 14 f t t t 1 f 23 "17" 100 0 0 100 "select octet_length($1) * 8" -
));
 DESCR("length in bits");
-DATA(insert OID = 1811 (  bit_length       PGUID 14 f t t t 1 f    23 "25" 100 0 0 100 "select octet_length($1) * 8" -
));
+DATA(insert OID = 1811 (  bit_length       10 PGUID 14 f t t t 1 f    23 "25" 100 0 0 100 "select octet_length($1) *
8"- )); 
 DESCR("length in bits");
-DATA(insert OID = 1812 (  bit_length       PGUID 14 f t t t 1 f 23 "1560" 100 0 0 100 "select length($1)" - ));
+DATA(insert OID = 1812 (  bit_length       10 PGUID 14 f t t t 1 f 23 "1560" 100 0 0 100 "select length($1)" - ));
 DESCR("length in bits");

 /* Selectivity estimators for LIKE and related operators */
-DATA(insert OID = 1814 ( iclikesel            PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  iclikesel - ));
+DATA(insert OID = 1814 ( iclikesel            10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  iclikesel - ));
 DESCR("restriction selectivity of ILIKE");
-DATA(insert OID = 1815 ( icnlikesel            PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  icnlikesel - ));
+DATA(insert OID = 1815 ( icnlikesel            10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  icnlikesel - ));
 DESCR("restriction selectivity of NOT ILIKE");
-DATA(insert OID = 1816 ( iclikejoinsel        PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  iclikejoinsel - ));
+DATA(insert OID = 1816 ( iclikejoinsel        10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  iclikejoinsel - ));
 DESCR("join selectivity of ILIKE");
-DATA(insert OID = 1817 ( icnlikejoinsel        PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  icnlikejoinsel - ));
+DATA(insert OID = 1817 ( icnlikejoinsel        10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  icnlikejoinsel - ));
 DESCR("join selectivity of NOT ILIKE");
-DATA(insert OID = 1818 ( regexeqsel            PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  regexeqsel - ));
+DATA(insert OID = 1818 ( regexeqsel            10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  regexeqsel - ));
 DESCR("restriction selectivity of regex match");
-DATA(insert OID = 1819 ( likesel            PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  likesel - ));
+DATA(insert OID = 1819 ( likesel            10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  likesel - ));
 DESCR("restriction selectivity of LIKE");
-DATA(insert OID = 1820 ( icregexeqsel        PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  icregexeqsel - ));
+DATA(insert OID = 1820 ( icregexeqsel        10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  icregexeqsel - ));
 DESCR("restriction selectivity of case-insensitive regex match");
-DATA(insert OID = 1821 ( regexnesel            PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  regexnesel - ));
+DATA(insert OID = 1821 ( regexnesel            10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  regexnesel - ));
 DESCR("restriction selectivity of regex non-match");
-DATA(insert OID = 1822 ( nlikesel            PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  nlikesel - ));
+DATA(insert OID = 1822 ( nlikesel            10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  nlikesel - ));
 DESCR("restriction selectivity of NOT LIKE");
-DATA(insert OID = 1823 ( icregexnesel        PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  icregexnesel - ));
+DATA(insert OID = 1823 ( icregexnesel        10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100  icregexnesel - ));
 DESCR("restriction selectivity of case-insensitive regex non-match");
-DATA(insert OID = 1824 ( regexeqjoinsel        PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  regexeqjoinsel - ));
+DATA(insert OID = 1824 ( regexeqjoinsel        10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  regexeqjoinsel - ));
 DESCR("join selectivity of regex match");
-DATA(insert OID = 1825 ( likejoinsel        PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  likejoinsel - ));
+DATA(insert OID = 1825 ( likejoinsel        10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  likejoinsel - ));
 DESCR("join selectivity of LIKE");
-DATA(insert OID = 1826 ( icregexeqjoinsel    PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  icregexeqjoinsel - ));
+DATA(insert OID = 1826 ( icregexeqjoinsel    10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  icregexeqjoinsel - ));
 DESCR("join selectivity of case-insensitive regex match");
-DATA(insert OID = 1827 ( regexnejoinsel        PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  regexnejoinsel - ));
+DATA(insert OID = 1827 ( regexnejoinsel        10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  regexnejoinsel - ));
 DESCR("join selectivity of regex non-match");
-DATA(insert OID = 1828 ( nlikejoinsel        PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  nlikejoinsel - ));
+DATA(insert OID = 1828 ( nlikejoinsel        10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  nlikejoinsel - ));
 DESCR("join selectivity of NOT LIKE");
-DATA(insert OID = 1829 ( icregexnejoinsel    PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  icregexnejoinsel - ));
+DATA(insert OID = 1829 ( icregexnejoinsel    10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100  icregexnejoinsel - ));
 DESCR("join selectivity of case-insensitive regex non-match");

 /* Aggregate-related functions */
-DATA(insert OID = 1830 (  float8_avg       PGUID 12 f t t t 1 f 701 "1022" 100 0 0 100  float8_avg - ));
+DATA(insert OID = 1830 (  float8_avg       10 PGUID 12 f t t t 1 f 701 "1022" 100 0 0 100  float8_avg - ));
 DESCR("AVG aggregate final function");
-DATA(insert OID = 1831 (  float8_variance  PGUID 12 f t t t 1 f 701 "1022" 100 0 0 100  float8_variance - ));
+DATA(insert OID = 1831 (  float8_variance  10 PGUID 12 f t t t 1 f 701 "1022" 100 0 0 100  float8_variance - ));
 DESCR("VARIANCE aggregate final function");
-DATA(insert OID = 1832 (  float8_stddev    PGUID 12 f t t t 1 f 701 "1022" 100 0 0 100  float8_stddev - ));
+DATA(insert OID = 1832 (  float8_stddev    10 PGUID 12 f t t t 1 f 701 "1022" 100 0 0 100  float8_stddev - ));
 DESCR("STDDEV aggregate final function");
-DATA(insert OID = 1833 (  numeric_accum    PGUID 12 f t t t 2 f 1231 "1231 1700" 100 0 0 100  numeric_accum - ));
+DATA(insert OID = 1833 (  numeric_accum    10 PGUID 12 f t t t 2 f 1231 "1231 1700" 100 0 0 100  numeric_accum - ));
 DESCR("aggregate transition function");
-DATA(insert OID = 1834 (  int2_accum       PGUID 12 f t t t 2 f 1231 "1231 21" 100 0 0 100  int2_accum - ));
+DATA(insert OID = 1834 (  int2_accum       10 PGUID 12 f t t t 2 f 1231 "1231 21" 100 0 0 100  int2_accum - ));
 DESCR("aggregate transition function");
-DATA(insert OID = 1835 (  int4_accum       PGUID 12 f t t t 2 f 1231 "1231 23" 100 0 0 100  int4_accum - ));
+DATA(insert OID = 1835 (  int4_accum       10 PGUID 12 f t t t 2 f 1231 "1231 23" 100 0 0 100  int4_accum - ));
 DESCR("aggregate transition function");
-DATA(insert OID = 1836 (  int8_accum       PGUID 12 f t t t 2 f 1231 "1231 20" 100 0 0 100  int8_accum - ));
+DATA(insert OID = 1836 (  int8_accum       10 PGUID 12 f t t t 2 f 1231 "1231 20" 100 0 0 100  int8_accum - ));
 DESCR("aggregate transition function");
-DATA(insert OID = 1837 (  numeric_avg       PGUID 12 f t t t 1 f 1700 "1231" 100 0 0 100  numeric_avg - ));
+DATA(insert OID = 1837 (  numeric_avg       10 PGUID 12 f t t t 1 f 1700 "1231" 100 0 0 100  numeric_avg - ));
 DESCR("AVG aggregate final function");
-DATA(insert OID = 1838 (  numeric_variance PGUID 12 f t t t 1 f 1700 "1231" 100 0 0 100  numeric_variance - ));
+DATA(insert OID = 1838 (  numeric_variance 10 PGUID 12 f t t t 1 f 1700 "1231" 100 0 0 100  numeric_variance - ));
 DESCR("VARIANCE aggregate final function");
-DATA(insert OID = 1839 (  numeric_stddev   PGUID 12 f t t t 1 f 1700 "1231" 100 0 0 100  numeric_stddev - ));
+DATA(insert OID = 1839 (  numeric_stddev   10 PGUID 12 f t t t 1 f 1700 "1231" 100 0 0 100  numeric_stddev - ));
 DESCR("STDDEV aggregate final function");
-DATA(insert OID = 1840 (  int2_sum           PGUID 12 f t t f 2 f 20 "20 21" 100 0 0 100  int2_sum - ));
+DATA(insert OID = 1840 (  int2_sum           10 PGUID 12 f t t f 2 f 20 "20 21" 100 0 0 100  int2_sum - ));
 DESCR("SUM(int2) transition function");
-DATA(insert OID = 1841 (  int4_sum           PGUID 12 f t t f 2 f 20 "20 23" 100 0 0 100  int4_sum - ));
+DATA(insert OID = 1841 (  int4_sum           10 PGUID 12 f t t f 2 f 20 "20 23" 100 0 0 100  int4_sum - ));
 DESCR("SUM(int4) transition function");
-DATA(insert OID = 1842 (  int8_sum           PGUID 12 f t t f 2 f 1700 "1700 20" 100 0 0 100  int8_sum - ));
+DATA(insert OID = 1842 (  int8_sum           10 PGUID 12 f t t f 2 f 1700 "1700 20" 100 0 0 100  int8_sum - ));
 DESCR("SUM(int8) transition function");
-DATA(insert OID = 1843 (  interval_accum   PGUID 12 f t t t 2 f 1187 "1187 1186" 100 0 0 100  interval_accum - ));
+DATA(insert OID = 1843 (  interval_accum   10 PGUID 12 f t t t 2 f 1187 "1187 1186" 100 0 0 100  interval_accum - ));
 DESCR("aggregate transition function");
-DATA(insert OID = 1844 (  interval_avg       PGUID 12 f t t t 1 f 1186 "1187" 100 0 0 100  interval_avg - ));
+DATA(insert OID = 1844 (  interval_avg       10 PGUID 12 f t t t 1 f 1186 "1187" 100 0 0 100  interval_avg - ));
 DESCR("AVG aggregate final function");
-DATA(insert OID = 1962 (  int2_avg_accum   PGUID 12 f t t t 2 f 1016 "1016 21" 100 0 0 100  int2_avg_accum - ));
+DATA(insert OID = 1962 (  int2_avg_accum   10 PGUID 12 f t t t 2 f 1016 "1016 21" 100 0 0 100  int2_avg_accum - ));
 DESCR("AVG(int2) transition function");
-DATA(insert OID = 1963 (  int4_avg_accum   PGUID 12 f t t t 2 f 1016 "1016 23" 100 0 0 100  int4_avg_accum - ));
+DATA(insert OID = 1963 (  int4_avg_accum   10 PGUID 12 f t t t 2 f 1016 "1016 23" 100 0 0 100  int4_avg_accum - ));
 DESCR("AVG(int4) transition function");
-DATA(insert OID = 1964 (  int8_avg           PGUID 12 f t t t 1 f 1700 "1016" 100 0 0 100  int8_avg - ));
+DATA(insert OID = 1964 (  int8_avg           10 PGUID 12 f t t t 1 f 1700 "1016" 100 0 0 100  int8_avg - ));
 DESCR("AVG(int) aggregate final function");

 /* To ASCII conversion */
-DATA(insert OID = 1845 ( to_ascii    PGUID 12 f t t t 1 f    25 "25" 100 0 0 100  to_ascii_default - ));
+DATA(insert OID = 1845 ( to_ascii    10 PGUID 12 f t t t 1 f    25 "25" 100 0 0 100  to_ascii_default - ));
 DESCR("encode text from DB encoding to ASCII text");
-DATA(insert OID = 1846 ( to_ascii    PGUID 12 f t t t 2 f    25 "25 23" 100 0 0 100  to_ascii_enc - ));
+DATA(insert OID = 1846 ( to_ascii    10 PGUID 12 f t t t 2 f    25 "25 23" 100 0 0 100  to_ascii_enc - ));
 DESCR("encode text from encoding to ASCII text");
-DATA(insert OID = 1847 ( to_ascii    PGUID 12 f t t t 2 f    25 "25 19" 100 0 0 100  to_ascii_encname - ));
+DATA(insert OID = 1847 ( to_ascii    10 PGUID 12 f t t t 2 f    25 "25 19" 100 0 0 100  to_ascii_encname - ));
 DESCR("encode text from encoding to ASCII text");

-DATA(insert OID = 1848 ( interval_pl_time        PGUID 12 f t t t 2 f 1083 "1186 1083" 100 0 0 100  interval_pl_time -
));
+DATA(insert OID = 1848 ( interval_pl_time        10 PGUID 12 f t t t 2 f 1083 "1186 1083" 100 0 0 100
interval_pl_time- )); 
 DESCR("plus");

-DATA(insert OID = 1850 (  int28eq           PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100  int28eq - ));
+DATA(insert OID = 1850 (  int28eq           10 PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100  int28eq - ));
 DESCR("equal");
-DATA(insert OID = 1851 (  int28ne           PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100  int28ne - ));
+DATA(insert OID = 1851 (  int28ne           10 PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100  int28ne - ));
 DESCR("not equal");
-DATA(insert OID = 1852 (  int28lt           PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100  int28lt - ));
+DATA(insert OID = 1852 (  int28lt           10 PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100  int28lt - ));
 DESCR("less-than");
-DATA(insert OID = 1853 (  int28gt           PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100  int28gt - ));
+DATA(insert OID = 1853 (  int28gt           10 PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100  int28gt - ));
 DESCR("greater-than");
-DATA(insert OID = 1854 (  int28le           PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100  int28le - ));
+DATA(insert OID = 1854 (  int28le           10 PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100  int28le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 1855 (  int28ge           PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100  int28ge - ));
+DATA(insert OID = 1855 (  int28ge           10 PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100  int28ge - ));
 DESCR("greater-than-or-equal");

-DATA(insert OID = 1856 (  int82eq           PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100  int82eq - ));
+DATA(insert OID = 1856 (  int82eq           10 PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100  int82eq - ));
 DESCR("equal");
-DATA(insert OID = 1857 (  int82ne           PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100  int82ne - ));
+DATA(insert OID = 1857 (  int82ne           10 PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100  int82ne - ));
 DESCR("not equal");
-DATA(insert OID = 1858 (  int82lt           PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100  int82lt - ));
+DATA(insert OID = 1858 (  int82lt           10 PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100  int82lt - ));
 DESCR("less-than");
-DATA(insert OID = 1859 (  int82gt           PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100  int82gt - ));
+DATA(insert OID = 1859 (  int82gt           10 PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100  int82gt - ));
 DESCR("greater-than");
-DATA(insert OID = 1860 (  int82le           PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100  int82le - ));
+DATA(insert OID = 1860 (  int82le           10 PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100  int82le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 1861 (  int82ge           PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100  int82ge - ));
+DATA(insert OID = 1861 (  int82ge           10 PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100  int82ge - ));
 DESCR("greater-than-or-equal");

-DATA(insert OID = 1892 (  int2and           PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2and - ));
+DATA(insert OID = 1892 (  int2and           10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2and - ));
 DESCR("binary and");
-DATA(insert OID = 1893 (  int2or           PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2or - ));
+DATA(insert OID = 1893 (  int2or           10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2or - ));
 DESCR("binary or");
-DATA(insert OID = 1894 (  int2xor           PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2xor - ));
+DATA(insert OID = 1894 (  int2xor           10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100  int2xor - ));
 DESCR("binary xor");
-DATA(insert OID = 1895 (  int2not           PGUID 12 f t t t 1 f 21 "21" 100 0 0 100  int2not - ));
+DATA(insert OID = 1895 (  int2not           10 PGUID 12 f t t t 1 f 21 "21" 100 0 0 100  int2not - ));
 DESCR("binary not");
-DATA(insert OID = 1896 (  int2shl           PGUID 12 f t t t 2 f 21 "21 23" 100 0 0 100  int2shl - ));
+DATA(insert OID = 1896 (  int2shl           10 PGUID 12 f t t t 2 f 21 "21 23" 100 0 0 100  int2shl - ));
 DESCR("binary shift left");
-DATA(insert OID = 1897 (  int2shr           PGUID 12 f t t t 2 f 21 "21 23" 100 0 0 100  int2shr - ));
+DATA(insert OID = 1897 (  int2shr           10 PGUID 12 f t t t 2 f 21 "21 23" 100 0 0 100  int2shr - ));
 DESCR("binary shift right");

-DATA(insert OID = 1898 (  int4and           PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4and - ));
+DATA(insert OID = 1898 (  int4and           10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4and - ));
 DESCR("binary and");
-DATA(insert OID = 1899 (  int4or           PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4or - ));
+DATA(insert OID = 1899 (  int4or           10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4or - ));
 DESCR("binary or");
-DATA(insert OID = 1900 (  int4xor           PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4xor - ));
+DATA(insert OID = 1900 (  int4xor           10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4xor - ));
 DESCR("binary xor");
-DATA(insert OID = 1901 (  int4not           PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  int4not - ));
+DATA(insert OID = 1901 (  int4not           10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100  int4not - ));
 DESCR("binary not");
-DATA(insert OID = 1902 (  int4shl           PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4shl - ));
+DATA(insert OID = 1902 (  int4shl           10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4shl - ));
 DESCR("binary shift left");
-DATA(insert OID = 1903 (  int4shr           PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4shr - ));
+DATA(insert OID = 1903 (  int4shr           10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100  int4shr - ));
 DESCR("binary shift right");

-DATA(insert OID = 1904 (  int8and           PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8and - ));
+DATA(insert OID = 1904 (  int8and           10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8and - ));
 DESCR("binary and");
-DATA(insert OID = 1905 (  int8or           PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8or - ));
+DATA(insert OID = 1905 (  int8or           10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8or - ));
 DESCR("binary or");
-DATA(insert OID = 1906 (  int8xor           PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8xor - ));
+DATA(insert OID = 1906 (  int8xor           10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100  int8xor - ));
 DESCR("binary xor");
-DATA(insert OID = 1907 (  int8not           PGUID 12 f t t t 1 f 20 "20" 100 0 0 100  int8not - ));
+DATA(insert OID = 1907 (  int8not           10 PGUID 12 f t t t 1 f 20 "20" 100 0 0 100  int8not - ));
 DESCR("binary not");
-DATA(insert OID = 1908 (  int8shl           PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100  int8shl - ));
+DATA(insert OID = 1908 (  int8shl           10 PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100  int8shl - ));
 DESCR("binary shift left");
-DATA(insert OID = 1909 (  int8shr           PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100  int8shr - ));
+DATA(insert OID = 1909 (  int8shr           10 PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100  int8shr - ));
 DESCR("binary shift right");

-DATA(insert OID = 1910 (  int8up           PGUID 12 f t t t 1 f 20  "20"   100 0 0 100  int8up - ));
+DATA(insert OID = 1910 (  int8up           10 PGUID 12 f t t t 1 f 20  "20"   100 0 0 100  int8up - ));
 DESCR("unary plus");
-DATA(insert OID = 1911 (  int2up           PGUID 12 f t t t 1 f 21  "21"   100 0 0 100  int2up - ));
+DATA(insert OID = 1911 (  int2up           10 PGUID 12 f t t t 1 f 21  "21"   100 0 0 100  int2up - ));
 DESCR("unary plus");
-DATA(insert OID = 1912 (  int4up           PGUID 12 f t t t 1 f 23  "23"   100 0 0 100  int4up - ));
+DATA(insert OID = 1912 (  int4up           10 PGUID 12 f t t t 1 f 23  "23"   100 0 0 100  int4up - ));
 DESCR("unary plus");
-DATA(insert OID = 1913 (  float4up           PGUID 12 f t t t 1 f 700 "700"  100 0 0 100  float4up - ));
+DATA(insert OID = 1913 (  float4up           10 PGUID 12 f t t t 1 f 700 "700"  100 0 0 100  float4up - ));
 DESCR("unary plus");
-DATA(insert OID = 1914 (  float8up           PGUID 12 f t t t 1 f 701 "701"  100 0 0 100  float8up - ));
+DATA(insert OID = 1914 (  float8up           10 PGUID 12 f t t t 1 f 701 "701"  100 0 0 100  float8up - ));
 DESCR("unary plus");
-DATA(insert OID = 1915 (  numeric_uplus       PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_uplus - ));
+DATA(insert OID = 1915 (  numeric_uplus       10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100  numeric_uplus - ));
 DESCR("unary plus");

-DATA(insert OID = 1922 (  has_table_privilege           PGUID 12 f t f t 3 f 16 "19 19 25" 100 0 0 100
has_table_privilege_name_name- )); 
+DATA(insert OID = 1922 (  has_table_privilege           10 PGUID 12 f t f t 3 f 16 "19 19 25" 100 0 0 100
has_table_privilege_name_name- )); 
 DESCR("user privilege on relation by username, relname");
-DATA(insert OID = 1923 (  has_table_privilege           PGUID 12 f t f t 3 f 16 "19 26 25" 100 0 0 100
has_table_privilege_name_id- )); 
+DATA(insert OID = 1923 (  has_table_privilege           10 PGUID 12 f t f t 3 f 16 "19 26 25" 100 0 0 100
has_table_privilege_name_id- )); 
 DESCR("user privilege on relation by username, rel oid");
-DATA(insert OID = 1924 (  has_table_privilege           PGUID 12 f t f t 3 f 16 "23 19 25" 100 0 0 100
has_table_privilege_id_name- )); 
+DATA(insert OID = 1924 (  has_table_privilege           10 PGUID 12 f t f t 3 f 16 "23 19 25" 100 0 0 100
has_table_privilege_id_name- )); 
 DESCR("user privilege on relation by usesysid, relname");
-DATA(insert OID = 1925 (  has_table_privilege           PGUID 12 f t f t 3 f 16 "23 26 25" 100 0 0 100
has_table_privilege_id_id- )); 
+DATA(insert OID = 1925 (  has_table_privilege           10 PGUID 12 f t f t 3 f 16 "23 26 25" 100 0 0 100
has_table_privilege_id_id- )); 
 DESCR("user privilege on relation by usesysid, rel oid");
-DATA(insert OID = 1926 (  has_table_privilege           PGUID 12 f t f t 2 f 16 "19 25" 100 0 0 100
has_table_privilege_name- )); 
+DATA(insert OID = 1926 (  has_table_privilege           10 PGUID 12 f t f t 2 f 16 "19 25" 100 0 0 100
has_table_privilege_name- )); 
 DESCR("current user privilege on relation by relname");
-DATA(insert OID = 1927 (  has_table_privilege           PGUID 12 f t f t 2 f 16 "26 25" 100 0 0 100
has_table_privilege_id- )); 
+DATA(insert OID = 1927 (  has_table_privilege           10 PGUID 12 f t f t 2 f 16 "26 25" 100 0 0 100
has_table_privilege_id- )); 
 DESCR("current user privilege on relation by rel oid");


-DATA(insert OID = 1928 (  pg_stat_get_numscans            PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_numscans- )); 
+DATA(insert OID = 1928 (  pg_stat_get_numscans            10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_numscans- )); 
 DESCR("Statistics: Number of scans done for table/index");
-DATA(insert OID = 1929 (  pg_stat_get_tuples_returned    PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_tuples_returned- )); 
+DATA(insert OID = 1929 (  pg_stat_get_tuples_returned    10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_tuples_returned- )); 
 DESCR("Statistics: Number of tuples read by seqscan");
-DATA(insert OID = 1930 (  pg_stat_get_tuples_fetched    PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_tuples_fetched- )); 
+DATA(insert OID = 1930 (  pg_stat_get_tuples_fetched    10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_tuples_fetched- )); 
 DESCR("Statistics: Number of tuples fetched by idxscan");
-DATA(insert OID = 1931 (  pg_stat_get_tuples_inserted    PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_tuples_inserted- )); 
+DATA(insert OID = 1931 (  pg_stat_get_tuples_inserted    10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_tuples_inserted- )); 
 DESCR("Statistics: Number of tuples inserted");
-DATA(insert OID = 1932 (  pg_stat_get_tuples_updated    PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_tuples_updated- )); 
+DATA(insert OID = 1932 (  pg_stat_get_tuples_updated    10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_tuples_updated- )); 
 DESCR("Statistics: Number of tuples updated");
-DATA(insert OID = 1933 (  pg_stat_get_tuples_deleted    PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_tuples_deleted- )); 
+DATA(insert OID = 1933 (  pg_stat_get_tuples_deleted    10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_tuples_deleted- )); 
 DESCR("Statistics: Number of tuples deleted");
-DATA(insert OID = 1934 (  pg_stat_get_blocks_fetched    PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_blocks_fetched- )); 
+DATA(insert OID = 1934 (  pg_stat_get_blocks_fetched    10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_blocks_fetched- )); 
 DESCR("Statistics: Number of blocks fetched");
-DATA(insert OID = 1935 (  pg_stat_get_blocks_hit        PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_blocks_hit- )); 
+DATA(insert OID = 1935 (  pg_stat_get_blocks_hit        10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_blocks_hit- )); 
 DESCR("Statistics: Number of blocks found in cache");
-DATA(insert OID = 1936 (  pg_stat_get_backend_idset        PGUID 12 f t f t 0 t 23 "" 100 0 0 100
pg_stat_get_backend_idset- )); 
+DATA(insert OID = 1936 (  pg_stat_get_backend_idset        10 PGUID 12 f t f t 0 t 23 "" 100 0 0 100
pg_stat_get_backend_idset- )); 
 DESCR("Statistics: Currently active backend IDs");
-DATA(insert OID = 1937 (  pg_stat_get_backend_pid        PGUID 12 f t f t 1 f 23 "23" 100 0 0 100
pg_stat_get_backend_pid- )); 
+DATA(insert OID = 1937 (  pg_stat_get_backend_pid        10 PGUID 12 f t f t 1 f 23 "23" 100 0 0 100
pg_stat_get_backend_pid- )); 
 DESCR("Statistics: PID of backend");
-DATA(insert OID = 1938 (  pg_stat_get_backend_dbid        PGUID 12 f t f t 1 f 26 "23" 100 0 0 100
pg_stat_get_backend_dbid- )); 
+DATA(insert OID = 1938 (  pg_stat_get_backend_dbid        10 PGUID 12 f t f t 1 f 26 "23" 100 0 0 100
pg_stat_get_backend_dbid- )); 
 DESCR("Statistics: Database ID of backend");
-DATA(insert OID = 1939 (  pg_stat_get_backend_userid    PGUID 12 f t f t 1 f 26 "23" 100 0 0 100
pg_stat_get_backend_userid- )); 
+DATA(insert OID = 1939 (  pg_stat_get_backend_userid    10 PGUID 12 f t f t 1 f 26 "23" 100 0 0 100
pg_stat_get_backend_userid- )); 
 DESCR("Statistics: User ID of backend");
-DATA(insert OID = 1940 (  pg_stat_get_backend_activity    PGUID 12 f t f t 1 f 25 "23" 100 0 0 100
pg_stat_get_backend_activity- )); 
+DATA(insert OID = 1940 (  pg_stat_get_backend_activity    10 PGUID 12 f t f t 1 f 25 "23" 100 0 0 100
pg_stat_get_backend_activity- )); 
 DESCR("Statistics: Current query of backend");
-DATA(insert OID = 1941 (  pg_stat_get_db_numbackends    PGUID 12 f t f t 1 f 23 "26" 100 0 0 100
pg_stat_get_db_numbackends- )); 
+DATA(insert OID = 1941 (  pg_stat_get_db_numbackends    10 PGUID 12 f t f t 1 f 23 "26" 100 0 0 100
pg_stat_get_db_numbackends- )); 
 DESCR("Statistics: Number of backends in database");
-DATA(insert OID = 1942 (  pg_stat_get_db_xact_commit    PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_db_xact_commit- )); 
+DATA(insert OID = 1942 (  pg_stat_get_db_xact_commit    10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_db_xact_commit- )); 
 DESCR("Statistics: Transactions committed");
-DATA(insert OID = 1943 (  pg_stat_get_db_xact_rollback    PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_db_xact_rollback- )); 
+DATA(insert OID = 1943 (  pg_stat_get_db_xact_rollback    10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_db_xact_rollback- )); 
 DESCR("Statistics: Transactions rolled back");
-DATA(insert OID = 1944 (  pg_stat_get_db_blocks_fetched    PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_db_blocks_fetched- )); 
+DATA(insert OID = 1944 (  pg_stat_get_db_blocks_fetched    10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_db_blocks_fetched- )); 
 DESCR("Statistics: Blocks fetched for database");
-DATA(insert OID = 1945 (  pg_stat_get_db_blocks_hit        PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_db_blocks_hit- )); 
+DATA(insert OID = 1945 (  pg_stat_get_db_blocks_hit        10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100
pg_stat_get_db_blocks_hit- )); 
 DESCR("Statistics: Block found in cache for database");

-DATA(insert OID = 1946 (  encode                        PGUID 12 f t t t 2 f 25 "17 25" 100 0 0 100  binary_encode -
));
+DATA(insert OID = 1946 (  encode                        10 PGUID 12 f t t t 2 f 25 "17 25" 100 0 0 100  binary_encode
-)); 
 DESCR("Convert bytea value into some ascii-only text string");
-DATA(insert OID = 1947 (  decode                        PGUID 12 f t t t 2 f 17 "25 25" 100 0 0 100  binary_decode -
));
+DATA(insert OID = 1947 (  decode                        10 PGUID 12 f t t t 2 f 17 "25 25" 100 0 0 100  binary_decode
-)); 
 DESCR("Convert ascii-encoded text string into bytea value");

-DATA(insert OID = 1948 (  byteaeq           PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100  byteaeq - ));
+DATA(insert OID = 1948 (  byteaeq           10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100  byteaeq - ));
 DESCR("equal");
-DATA(insert OID = 1949 (  bytealt           PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100  bytealt - ));
+DATA(insert OID = 1949 (  bytealt           10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100  bytealt - ));
 DESCR("less-than");
-DATA(insert OID = 1950 (  byteale           PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100  byteale - ));
+DATA(insert OID = 1950 (  byteale           10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100  byteale - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 1951 (  byteagt           PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100  byteagt - ));
+DATA(insert OID = 1951 (  byteagt           10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100  byteagt - ));
 DESCR("greater-than");
-DATA(insert OID = 1952 (  byteage           PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100  byteage - ));
+DATA(insert OID = 1952 (  byteage           10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100  byteage - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 1953 (  byteane           PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100  byteane - ));
+DATA(insert OID = 1953 (  byteane           10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100  byteane - ));
 DESCR("not equal");
-DATA(insert OID = 1954 (  byteacmp           PGUID 12 f t t t 2 f 23 "17 17" 100 0 0 100  byteacmp - ));
+DATA(insert OID = 1954 (  byteacmp           10 PGUID 12 f t t t 2 f 23 "17 17" 100 0 0 100  byteacmp - ));
 DESCR("less-equal-greater");

-DATA(insert OID = 1961 (  timestamp           PGUID 12 f t t t 2 f 1114 "1114 23" 100 0 0 100  timestamp_scale - ));
+DATA(insert OID = 1961 (  timestamp           10 PGUID 12 f t t t 2 f 1114 "1114 23" 100 0 0 100  timestamp_scale -
));
 DESCR("adjust time precision");

-DATA(insert OID = 1965 (  oidlarger           PGUID 12 f t t t 2 f 26 "26 26" 100 0 0 100  oidlarger - ));
+DATA(insert OID = 1965 (  oidlarger           10 PGUID 12 f t t t 2 f 26 "26 26" 100 0 0 100  oidlarger - ));
 DESCR("larger of two");
-DATA(insert OID = 1966 (  oidsmaller       PGUID 12 f t t t 2 f 26 "26 26" 100 0 0 100  oidsmaller - ));
+DATA(insert OID = 1966 (  oidsmaller       10 PGUID 12 f t t t 2 f 26 "26 26" 100 0 0 100  oidsmaller - ));
 DESCR("smaller of two");

-DATA(insert OID = 1967 (  timestamptz       PGUID 12 f t t t 2 f 1184 "1184 23" 100 0 0 100  timestamptz_scale - ));
+DATA(insert OID = 1967 (  timestamptz       10 PGUID 12 f t t t 2 f 1184 "1184 23" 100 0 0 100  timestamptz_scale -
));
 DESCR("adjust time precision");
-DATA(insert OID = 1968 (  time               PGUID 12 f t t t 2 f 1083 "1083 23" 100 0 0 100  time_scale - ));
+DATA(insert OID = 1968 (  time               10 PGUID 12 f t t t 2 f 1083 "1083 23" 100 0 0 100  time_scale - ));
 DESCR("adjust time precision");
-DATA(insert OID = 1969 (  timetz           PGUID 12 f t t t 2 f 1266 "1266 23" 100 0 0 100  timetz_scale - ));
+DATA(insert OID = 1969 (  timetz           10 PGUID 12 f t t t 2 f 1266 "1266 23" 100 0 0 100  timetz_scale - ));
 DESCR("adjust time with time zone precision");

-DATA(insert OID = 2005 (  bytealike           PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 bytealike - ));
+DATA(insert OID = 2005 (  bytealike           10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 bytealike - ));
 DESCR("matches LIKE expression");
-DATA(insert OID = 2006 (  byteanlike       PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 byteanlike - ));
+DATA(insert OID = 2006 (  byteanlike       10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 byteanlike - ));
 DESCR("does not match LIKE expression");
-DATA(insert OID = 2007 (  like               PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100  bytealike - ));
+DATA(insert OID = 2007 (  like               10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100  bytealike - ));
 DESCR("matches LIKE expression");
-DATA(insert OID = 2008 (  notlike           PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100  byteanlike - ));
+DATA(insert OID = 2008 (  notlike           10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100  byteanlike - ));
 DESCR("does not match LIKE expression");
-DATA(insert OID = 2009 (  like_escape       PGUID 12 f t t t 2 f 17 "17 17" 100 0 0 100 like_escape_bytea - ));
+DATA(insert OID = 2009 (  like_escape       10 PGUID 12 f t t t 2 f 17 "17 17" 100 0 0 100 like_escape_bytea - ));
 DESCR("convert match pattern to use backslash escapes");
-DATA(insert OID = 2010 (  length           PGUID 12 f t t t 1 f 23 "17" 100 0 0 100  byteaoctetlen - ));
+DATA(insert OID = 2010 (  length           10 PGUID 12 f t t t 1 f 23 "17" 100 0 0 100  byteaoctetlen - ));
 DESCR("octet length");
-DATA(insert OID = 2011 (  byteacat           PGUID 12 f t t t 2 f 17 "17 17" 100 0 0 100    byteacat - ));
+DATA(insert OID = 2011 (  byteacat           10 PGUID 12 f t t t 2 f 17 "17 17" 100 0 0 100    byteacat - ));
 DESCR("concatenate");
-DATA(insert OID = 2012 (  substring           PGUID 12 f t t t 3 f 17 "17 23 23" 100 0 0 100  bytea_substr - ));
+DATA(insert OID = 2012 (  substring           10 PGUID 12 f t t t 3 f 17 "17 23 23" 100 0 0 100  bytea_substr - ));
 DESCR("return portion of string");
-DATA(insert OID = 2013 (  substring           PGUID 14 f t t t 2 f 17 "17 23" 100 0 0 100    "select substring($1, $2,
-1)"- )); 
+DATA(insert OID = 2013 (  substring           10 PGUID 14 f t t t 2 f 17 "17 23" 100 0 0 100    "select substring($1,
$2,-1)" - )); 
 DESCR("return portion of string");
-DATA(insert OID = 2014 (  position           PGUID 12 f t t t 2 f 23 "17 17" 100 0 0 100    byteapos - ));
+DATA(insert OID = 2014 (  position           10 PGUID 12 f t t t 2 f 23 "17 17" 100 0 0 100    byteapos - ));
 DESCR("return position of substring");
-DATA(insert OID = 2015 (  btrim               PGUID 12 f t t t 2 f 17 "17 17" 100 0 0 100    byteatrim - ));
+DATA(insert OID = 2015 (  btrim               10 PGUID 12 f t t t 2 f 17 "17 17" 100 0 0 100    byteatrim - ));
 DESCR("trim both ends of string");

-DATA(insert OID = 2020 (  date_trunc        PGUID 12 f t t t 2 f 1114 "25 1114" 100 0 0 100  timestamp_trunc - ));
+DATA(insert OID = 2020 (  date_trunc        10 PGUID 12 f t t t 2 f 1114 "25 1114" 100 0 0 100  timestamp_trunc - ));
 DESCR("truncate timestamp to specified units");
-DATA(insert OID = 2021 (  date_part            PGUID 12 f t t t 2 f  701 "25 1114" 100 0 0 100  timestamp_part - ));
+DATA(insert OID = 2021 (  date_part            10 PGUID 12 f t t t 2 f  701 "25 1114" 100 0 0 100  timestamp_part -
));
 DESCR("extract field from timestamp");
-DATA(insert OID = 2022 (  timestamp            PGUID 12 f t f t 1 f 1114 "25" 100 0 0 100  text_timestamp - ));
+DATA(insert OID = 2022 (  timestamp            10 PGUID 12 f t f t 1 f 1114 "25" 100 0 0 100  text_timestamp - ));
 DESCR("convert text to timestamp");
-DATA(insert OID = 2023 (  timestamp            PGUID 12 f t f t 1 f 1114 "702" 100 0 0 100  abstime_timestamp - ));
+DATA(insert OID = 2023 (  timestamp            10 PGUID 12 f t f t 1 f 1114 "702" 100 0 0 100  abstime_timestamp - ));
 DESCR("convert abstime to timestamp");
-DATA(insert OID = 2024 (  timestamp            PGUID 12 f t t t 1 f 1114 "1082" 100 0 0 100  date_timestamp - ));
+DATA(insert OID = 2024 (  timestamp            10 PGUID 12 f t t t 1 f 1114 "1082" 100 0 0 100  date_timestamp - ));
 DESCR("convert date to timestamp");
-DATA(insert OID = 2025 (  timestamp            PGUID 12 f t t t 2 f 1114 "1082 1083" 100 0 0 100  datetime_timestamp -
));
+DATA(insert OID = 2025 (  timestamp            10 PGUID 12 f t t t 2 f 1114 "1082 1083" 100 0 0 100
datetime_timestamp- )); 
 DESCR("convert date and time to timestamp");
-DATA(insert OID = 2026 (  timestamp            PGUID 14 f t t t 1 f 1114 "1114" 100 0 0 100  "select $1" - ));
+DATA(insert OID = 2026 (  timestamp            10 PGUID 14 f t t t 1 f 1114 "1114" 100 0 0 100  "select $1" - ));
 DESCR("convert (noop)");
-DATA(insert OID = 2027 (  timestamp            PGUID 12 f t f t 1 f 1114 "1184" 100 0 0 100  timestamptz_timestamp -
));
+DATA(insert OID = 2027 (  timestamp            10 PGUID 12 f t f t 1 f 1114 "1184" 100 0 0 100  timestamptz_timestamp
-)); 
 DESCR("convert date and time with time zone to timestamp");
-DATA(insert OID = 2028 (  timestamptz        PGUID 12 f t f t 1 f 1184 "1114" 100 0 0 100  timestamp_timestamptz - ));
+DATA(insert OID = 2028 (  timestamptz        10 PGUID 12 f t f t 1 f 1184 "1114" 100 0 0 100  timestamp_timestamptz -
));
 DESCR("convert date and time with time zone to timestamp");
-DATA(insert OID = 2029 (  date                PGUID 12 f t t t 1 f 1082 "1114" 100 0 0 100  timestamp_date - ));
+DATA(insert OID = 2029 (  date                10 PGUID 12 f t t t 1 f 1082 "1114" 100 0 0 100  timestamp_date - ));
 DESCR("convert timestamp to date");
-DATA(insert OID = 2030 (  abstime            PGUID 12 f t f t 1 f  702 "1114" 100 0 0 100  timestamp_abstime - ));
+DATA(insert OID = 2030 (  abstime            10 PGUID 12 f t f t 1 f  702 "1114" 100 0 0 100  timestamp_abstime - ));
 DESCR("convert timestamp to abstime");
-DATA(insert OID = 2031 (  timestamp_mi        PGUID 12 f t t t 2 f 1186 "1114 1114" 100 0 0 100  timestamp_mi - ));
+DATA(insert OID = 2031 (  timestamp_mi        10 PGUID 12 f t t t 2 f 1186 "1114 1114" 100 0 0 100  timestamp_mi - ));
 DESCR("subtract");
-DATA(insert OID = 2032 (  timestamp_pl_span PGUID 12 f t t t 2 f 1114 "1114 1186" 100 0 0 100  timestamp_pl_span - ));
+DATA(insert OID = 2032 (  timestamp_pl_span 10 PGUID 12 f t t t 2 f 1114 "1114 1186" 100 0 0 100  timestamp_pl_span -
));
 DESCR("plus");
-DATA(insert OID = 2033 (  timestamp_mi_span PGUID 12 f t t t 2 f 1114 "1114 1186" 100 0 0 100  timestamp_mi_span - ));
+DATA(insert OID = 2033 (  timestamp_mi_span 10 PGUID 12 f t t t 2 f 1114 "1114 1186" 100 0 0 100  timestamp_mi_span -
));
 DESCR("minus");
-DATA(insert OID = 2034 (  text                PGUID 12 f t f t 1 f   25 "1114" 100 0 0 100  timestamp_text - ));
+DATA(insert OID = 2034 (  text                10 PGUID 12 f t f t 1 f   25 "1114" 100 0 0 100  timestamp_text - ));
 DESCR("convert timestamp to text");
-DATA(insert OID = 2035 (  timestamp_smaller PGUID 12 f t t t 2 f 1114 "1114 1114" 100 0 0 100  timestamp_smaller - ));
+DATA(insert OID = 2035 (  timestamp_smaller 10 PGUID 12 f t t t 2 f 1114 "1114 1114" 100 0 0 100  timestamp_smaller -
));
 DESCR("smaller of two");
-DATA(insert OID = 2036 (  timestamp_larger    PGUID 12 f t t t 2 f 1114 "1114 1114" 100 0 0 100  timestamp_larger -
));
+DATA(insert OID = 2036 (  timestamp_larger    10 PGUID 12 f t t t 2 f 1114 "1114 1114" 100 0 0 100  timestamp_larger -
));
 DESCR("larger of two");
-DATA(insert OID = 2037 (  timetz            PGUID 12 f t f t 2 f 1266 "25 1266" 100 0 0 100  timetz_zone - ));
+DATA(insert OID = 2037 (  timetz            10 PGUID 12 f t f t 2 f 1266 "25 1266" 100 0 0 100  timetz_zone - ));
 DESCR("time with time zone");
-DATA(insert OID = 2038 (  timetz            PGUID 12 f t t t 2 f 1266 "1186 1266" 100 0 0 100  timetz_izone - ));
+DATA(insert OID = 2038 (  timetz            10 PGUID 12 f t t t 2 f 1266 "1186 1266" 100 0 0 100  timetz_izone - ));
 DESCR("time with time zone");
-DATA(insert OID = 2041 ( overlaps            PGUID 12 f t t f 4 f 16 "1114 1114 1114 1114" 100 0 0 100
overlaps_timestamp- )); 
+DATA(insert OID = 2041 ( overlaps            10 PGUID 12 f t t f 4 f 16 "1114 1114 1114 1114" 100 0 0 100
overlaps_timestamp- )); 
 DESCR("SQL92 interval comparison");
-DATA(insert OID = 2042 ( overlaps            PGUID 14 f t t f 4 f 16 "1114 1186 1114 1186" 100 0 0 100  "select ($1,
($1+ $2)) overlaps ($3, ($3 + $4))" - )); 
+DATA(insert OID = 2042 ( overlaps            10 PGUID 14 f t t f 4 f 16 "1114 1186 1114 1186" 100 0 0 100  "select
($1,($1 + $2)) overlaps ($3, ($3 + $4))" - )); 
 DESCR("SQL92 interval comparison");
-DATA(insert OID = 2043 ( overlaps            PGUID 14 f t t f 4 f 16 "1114 1114 1114 1186" 100 0 0 100  "select ($1,
$2)overlaps ($3, ($3 + $4))" - )); 
+DATA(insert OID = 2043 ( overlaps            10 PGUID 14 f t t f 4 f 16 "1114 1114 1114 1186" 100 0 0 100  "select
($1,$2) overlaps ($3, ($3 + $4))" - )); 
 DESCR("SQL92 interval comparison");
-DATA(insert OID = 2044 ( overlaps            PGUID 14 f t t f 4 f 16 "1114 1186 1114 1114" 100 0 0 100  "select ($1,
($1+ $2)) overlaps ($3, $4)" - )); 
+DATA(insert OID = 2044 ( overlaps            10 PGUID 14 f t t f 4 f 16 "1114 1186 1114 1114" 100 0 0 100  "select
($1,($1 + $2)) overlaps ($3, $4)" - )); 
 DESCR("SQL92 interval comparison");
-DATA(insert OID = 2045 (  timestamp_cmp        PGUID 12 f t t t 2 f    23 "1114 1114" 100 0 0 100  timestamp_cmp - ));
+DATA(insert OID = 2045 (  timestamp_cmp        10 PGUID 12 f t t t 2 f    23 "1114 1114" 100 0 0 100  timestamp_cmp -
));
 DESCR("less-equal-greater");
-DATA(insert OID = 2046 (  time                PGUID 12 f t t t 1 f 1083 "1266" 100 0 0 100  timetz_time - ));
+DATA(insert OID = 2046 (  time                10 PGUID 12 f t t t 1 f 1083 "1266" 100 0 0 100  timetz_time - ));
 DESCR("convert time with time zone to time");
-DATA(insert OID = 2047 (  timetz            PGUID 12 f t f t 1 f 1266 "1083" 100 0 0 100  time_timetz - ));
+DATA(insert OID = 2047 (  timetz            10 PGUID 12 f t f t 1 f 1266 "1083" 100 0 0 100  time_timetz - ));
 DESCR("convert time to timetz");
-DATA(insert OID = 2048 (  isfinite            PGUID 12 f t t t 1 f   16 "1114" 100 0 0 100  timestamp_finite - ));
+DATA(insert OID = 2048 (  isfinite            10 PGUID 12 f t t t 1 f   16 "1114" 100 0 0 100  timestamp_finite - ));
 DESCR("boolean test");
-DATA(insert OID = 2049 ( to_char            PGUID 12 f t f t 2 f    25 "1114 25" 100 0 0 100  timestamp_to_char - ));
+DATA(insert OID = 2049 ( to_char            10 PGUID 12 f t f t 2 f    25 "1114 25" 100 0 0 100  timestamp_to_char -
));
 DESCR("format timestamp to text");
-DATA(insert OID = 2050 ( interval_mi_time    PGUID 14 f t t t 2 f 1083 "1186 1083" 100 0 0 100  "select $2 - $1" - ));
+DATA(insert OID = 2050 ( interval_mi_time    10 PGUID 14 f t t t 2 f 1083 "1186 1083" 100 0 0 100  "select $2 - $1" -
));
 DESCR("minus");
-DATA(insert OID = 2051 ( interval_mi_timetz    PGUID 14 f t t t 2 f 1266 "1186 1266" 100 0 0 100  "select $2 - $1" -
));
+DATA(insert OID = 2051 ( interval_mi_timetz    10 PGUID 14 f t t t 2 f 1266 "1186 1266" 100 0 0 100  "select $2 - $1"
-)); 
 DESCR("minus");
-DATA(insert OID = 2052 (  timestamp_eq        PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100  timestamp_eq - ));
+DATA(insert OID = 2052 (  timestamp_eq        10 PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100  timestamp_eq - ));
 DESCR("equal");
-DATA(insert OID = 2053 (  timestamp_ne        PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100  timestamp_ne - ));
+DATA(insert OID = 2053 (  timestamp_ne        10 PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100  timestamp_ne - ));
 DESCR("not equal");
-DATA(insert OID = 2054 (  timestamp_lt        PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100  timestamp_lt - ));
+DATA(insert OID = 2054 (  timestamp_lt        10 PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100  timestamp_lt - ));
 DESCR("less-than");
-DATA(insert OID = 2055 (  timestamp_le        PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100  timestamp_le - ));
+DATA(insert OID = 2055 (  timestamp_le        10 PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100  timestamp_le - ));
 DESCR("less-than-or-equal");
-DATA(insert OID = 2056 (  timestamp_ge        PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100  timestamp_ge - ));
+DATA(insert OID = 2056 (  timestamp_ge        10 PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100  timestamp_ge - ));
 DESCR("greater-than-or-equal");
-DATA(insert OID = 2057 (  timestamp_gt        PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100  timestamp_gt - ));
+DATA(insert OID = 2057 (  timestamp_gt        10 PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100  timestamp_gt - ));
 DESCR("greater-than");
-DATA(insert OID = 2058 (  age                PGUID 12 f t t t 2 f 1186 "1114 1114" 100 0 0 100  timestamp_age - ));
+DATA(insert OID = 2058 (  age                10 PGUID 12 f t t t 2 f 1186 "1114 1114" 100 0 0 100  timestamp_age - ));
 DESCR("date difference preserving months and years");
-DATA(insert OID = 2059 (  age                PGUID 14 f t f t 1 f 1186 "1114" 100 0 0 100  "select
age(cast(current_dateas timestamp without time zone), $1)" - )); 
+DATA(insert OID = 2059 (  age                10 PGUID 14 f t f t 1 f 1186 "1114" 100 0 0 100  "select
age(cast(current_dateas timestamp without time zone), $1)" - )); 
 DESCR("date difference from today preserving months and years");
-DATA(insert OID = 2069 (  timezone            PGUID 12 f t f t 2 f 1184 "25 1114" 100 0 0 100  timestamp_zone - ));
+DATA(insert OID = 2069 (  timezone            10 PGUID 12 f t f t 2 f 1184 "25 1114" 100 0 0 100  timestamp_zone - ));
 DESCR("time zone");
-DATA(insert OID = 2070 (  timezone            PGUID 12 f t f t 2 f 1184 "1186 1114" 100 0 0 100  timestamp_izone - ));
+DATA(insert OID = 2070 (  timezone            10 PGUID 12 f t f t 2 f 1184 "1186 1114" 100 0 0 100  timestamp_izone -
));
 DESCR("time zone");


@@ -2869,6 +2871,7 @@
  * prototypes for functions pg_proc.c
  */
 extern Oid ProcedureCreate(char *procedureName,
+                Oid packId,
                 bool replace,
                 bool returnsSet,
                 char *returnTypeName,
Index: src/include/catalog/pg_type.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/catalog/pg_type.h,v
retrieving revision 1.112
diff -u -r1.112 pg_type.h
--- src/include/catalog/pg_type.h    2001/09/28 08:09:14    1.112
+++ src/include/catalog/pg_type.h    2001/10/17 16:42:01
@@ -39,6 +39,7 @@
 CATALOG(pg_type) BOOTSTRAP
 {
     NameData    typname;
+    Oid            typpack;
     int4        typowner;

     /*
@@ -158,24 +159,25 @@
  *        compiler constants for pg_type
  * ----------------
  */
-#define Natts_pg_type                    17
+#define Natts_pg_type                    18
 #define Anum_pg_type_typname            1
-#define Anum_pg_type_typowner            2
-#define Anum_pg_type_typlen                3
-#define Anum_pg_type_typprtlen            4
-#define Anum_pg_type_typbyval            5
-#define Anum_pg_type_typtype            6
-#define Anum_pg_type_typisdefined        7
-#define Anum_pg_type_typdelim            8
-#define Anum_pg_type_typrelid            9
-#define Anum_pg_type_typelem            10
-#define Anum_pg_type_typinput            11
-#define Anum_pg_type_typoutput            12
-#define Anum_pg_type_typreceive            13
-#define Anum_pg_type_typsend            14
-#define Anum_pg_type_typalign            15
-#define Anum_pg_type_typstorage            16
-#define Anum_pg_type_typdefault            17
+#define Anum_pg_type_typpack            2
+#define Anum_pg_type_typowner            3
+#define Anum_pg_type_typlen                4
+#define Anum_pg_type_typprtlen            5
+#define Anum_pg_type_typbyval            6
+#define Anum_pg_type_typtype            7
+#define Anum_pg_type_typisdefined        8
+#define Anum_pg_type_typdelim            9
+#define Anum_pg_type_typrelid            10
+#define Anum_pg_type_typelem            11
+#define Anum_pg_type_typinput            12
+#define Anum_pg_type_typoutput            13
+#define Anum_pg_type_typreceive            14
+#define Anum_pg_type_typsend            15
+#define Anum_pg_type_typalign            16
+#define Anum_pg_type_typstorage            17
+#define Anum_pg_type_typdefault            18

 /* ----------------
  *        initial contents of pg_type
@@ -190,82 +192,82 @@
 */

 /* OIDS 1 - 99 */
-DATA(insert OID = 16 (    bool       PGUID  1   1 t b t \054 0   0 boolin boolout boolin boolout c p _null_ ));
+DATA(insert OID = 16 (    bool       10 PGUID  1   1 t b t \054 0   0 boolin boolout boolin boolout c p _null_ ));
 DESCR("boolean, 'true'/'false'");
 #define BOOLOID            16

-DATA(insert OID = 17 (    bytea       PGUID -1  -1 f b t \054 0  0 byteain byteaout byteain byteaout i x _null_ ));
+DATA(insert OID = 17 (    bytea       10 PGUID -1  -1 f b t \054 0  0 byteain byteaout byteain byteaout i x _null_ ));
 DESCR("variable-length string, binary values escaped");
 #define BYTEAOID        17

-DATA(insert OID = 18 (    char       PGUID  1   1 t b t \054 0   0 charin charout charin charout c p _null_ ));
+DATA(insert OID = 18 (    char       10 PGUID  1   1 t b t \054 0   0 charin charout charin charout c p _null_ ));
 DESCR("single character");
 #define CHAROID            18

-DATA(insert OID = 19 (    name       PGUID NAMEDATALEN NAMEDATALEN  f b t \054 0    18 namein nameout namein nameout i
p_null_ )); 
+DATA(insert OID = 19 (    name       10 PGUID NAMEDATALEN NAMEDATALEN  f b t \054 0    18 namein nameout namein
nameouti p _null_ )); 
 DESCR("31-character type for storing system identifiers");
 #define NAMEOID            19

-DATA(insert OID = 20 (    int8       PGUID  8  20 f b t \054 0   0 int8in int8out int8in int8out d p _null_ ));
+DATA(insert OID = 20 (    int8       10 PGUID  8  20 f b t \054 0   0 int8in int8out int8in int8out d p _null_ ));
 DESCR("~18 digit integer, 8-byte storage");
 #define INT8OID            20

-DATA(insert OID = 21 (    int2       PGUID  2   5 t b t \054 0   0 int2in int2out int2in int2out s p _null_ ));
+DATA(insert OID = 21 (    int2       10 PGUID  2   5 t b t \054 0   0 int2in int2out int2in int2out s p _null_ ));
 DESCR("-32 thousand to 32 thousand, 2-byte storage");
 #define INT2OID            21

-DATA(insert OID = 22 (    int2vector PGUID INDEX_MAX_KEYS*2 -1 f b t \054 0  21 int2vectorin int2vectorout
int2vectorinint2vectorout i p _null_ )); 
+DATA(insert OID = 22 (    int2vector 10 PGUID INDEX_MAX_KEYS*2 -1 f b t \054 0  21 int2vectorin int2vectorout
int2vectorinint2vectorout i p _null_ )); 
 DESCR("array of INDEX_MAX_KEYS int2 integers, used in system tables");
 #define INT2VECTOROID    22

-DATA(insert OID = 23 (    int4       PGUID  4  10 t b t \054 0   0 int4in int4out int4in int4out i p _null_ ));
+DATA(insert OID = 23 (    int4       10 PGUID  4  10 t b t \054 0   0 int4in int4out int4in int4out i p _null_ ));
 DESCR("-2 billion to 2 billion integer, 4-byte storage");
 #define INT4OID            23

-DATA(insert OID = 24 (    regproc    PGUID  4  16 t b t \054 0   0 regprocin regprocout regprocin regprocout i p
_null_)); 
+DATA(insert OID = 24 (    regproc    10 PGUID  4  16 t b t \054 0   0 regprocin regprocout regprocin regprocout i p
_null_)); 
 DESCR("registered procedure");
 #define REGPROCOID        24

-DATA(insert OID = 25 (    text       PGUID -1  -1 f b t \054 0  0 textin textout textin textout i x _null_ ));
+DATA(insert OID = 25 (    text       10 PGUID -1  -1 f b t \054 0  0 textin textout textin textout i x _null_ ));
 DESCR("variable-length string, no limit specified");
 #define TEXTOID            25

-DATA(insert OID = 26 (    oid           PGUID  4  10 t b t \054 0   0 oidin oidout oidin oidout i p _null_ ));
+DATA(insert OID = 26 (    oid           10 PGUID  4  10 t b t \054 0   0 oidin oidout oidin oidout i p _null_ ));
 DESCR("object identifier(oid), maximum 4 billion");
 #define OIDOID            26

-DATA(insert OID = 27 (    tid           PGUID  6  19 f b t \054 0   0 tidin tidout tidin tidout i p _null_ ));
+DATA(insert OID = 27 (    tid           10 PGUID  6  19 f b t \054 0   0 tidin tidout tidin tidout i p _null_ ));
 DESCR("(Block, offset), physical location of tuple");
 #define TIDOID        27

-DATA(insert OID = 28 (    xid           PGUID  4  12 t b t \054 0   0 xidin xidout xidin xidout i p _null_ ));
+DATA(insert OID = 28 (    xid           10 PGUID  4  12 t b t \054 0   0 xidin xidout xidin xidout i p _null_ ));
 DESCR("transaction id");
 #define XIDOID 28

-DATA(insert OID = 29 (    cid           PGUID  4  10 t b t \054 0   0 cidin cidout cidin cidout i p _null_ ));
+DATA(insert OID = 29 (    cid           10 PGUID  4  10 t b t \054 0   0 cidin cidout cidin cidout i p _null_ ));
 DESCR("command identifier type, sequence in transaction id");
 #define CIDOID 29

-DATA(insert OID = 30 (    oidvector  PGUID INDEX_MAX_KEYS*4 -1 f b t \054 0  26 oidvectorin oidvectorout oidvectorin
oidvectorouti p _null_ )); 
+DATA(insert OID = 30 (    oidvector  10 PGUID INDEX_MAX_KEYS*4 -1 f b t \054 0  26 oidvectorin oidvectorout
oidvectorinoidvectorout i p _null_ )); 
 DESCR("array of INDEX_MAX_KEYS oids, used in system tables");
 #define OIDVECTOROID    30

-DATA(insert OID = 32 (    SET           PGUID -1  -1 f b t \054 0   0 textin textout textin textout i p _null_ ));
+DATA(insert OID = 32 (    SET           10 PGUID -1  -1 f b t \054 0   0 textin textout textin textout i p _null_ ));
 DESCR("set of tuples");

-DATA(insert OID = 71 (    pg_type         PGUID 4 4 t c t \054 1247 0 int4in int4out int4in int4out i p _null_));
-DATA(insert OID = 75 (    pg_attribute PGUID 4 4 t c t \054 1249 0 int4in int4out int4in int4out i p _null_));
-DATA(insert OID = 81 (    pg_proc         PGUID 4 4 t c t \054 1255 0 int4in int4out int4in int4out i p _null_));
-DATA(insert OID = 83 (    pg_class     PGUID 4 4 t c t \054 1259 0 int4in int4out int4in int4out i p _null_));
-DATA(insert OID = 86 (    pg_shadow     PGUID 4 4 t c t \054 1260 0 int4in int4out int4in int4out i p _null_));
-DATA(insert OID = 87 (    pg_group     PGUID 4 4 t c t \054 1261 0 int4in int4out int4in int4out i p _null_));
-DATA(insert OID = 88 (    pg_database  PGUID 4 4 t c t \054 1262 0 int4in int4out int4in int4out i p _null_));
+DATA(insert OID = 71 (    pg_type         10 PGUID 4 4 t c t \054 1247 0 int4in int4out int4in int4out i p _null_));
+DATA(insert OID = 75 (    pg_attribute 10 PGUID 4 4 t c t \054 1249 0 int4in int4out int4in int4out i p _null_));
+DATA(insert OID = 81 (    pg_proc         10 PGUID 4 4 t c t \054 1255 0 int4in int4out int4in int4out i p _null_));
+DATA(insert OID = 83 (    pg_class     10 PGUID 4 4 t c t \054 1259 0 int4in int4out int4in int4out i p _null_));
+DATA(insert OID = 86 (    pg_shadow     10 PGUID 4 4 t c t \054 1260 0 int4in int4out int4in int4out i p _null_));
+DATA(insert OID = 87 (    pg_group     10 PGUID 4 4 t c t \054 1261 0 int4in int4out int4in int4out i p _null_));
+DATA(insert OID = 88 (    pg_database  10 PGUID 4 4 t c t \054 1262 0 int4in int4out int4in int4out i p _null_));

 /* OIDS 100 - 199 */

 /* OIDS 200 - 299 */

-DATA(insert OID = 210 (  smgr       PGUID 2    12 t b t \054 0 0 smgrin smgrout smgrin smgrout s p _null_ ));
+DATA(insert OID = 210 (  smgr       10 PGUID 2    12 t b t \054 0 0 smgrin smgrout smgrin smgrout s p _null_ ));
 DESCR("storage manager");

 /* OIDS 300 - 399 */
@@ -275,167 +277,167 @@
 /* OIDS 500 - 599 */

 /* OIDS 600 - 699 */
-DATA(insert OID = 600 (  point       PGUID 16  24 f b t \054 0 701 point_in point_out point_in point_out d p _null_
));
+DATA(insert OID = 600 (  point       10 PGUID 16  24 f b t \054 0 701 point_in point_out point_in point_out d p _null_
));
 DESCR("geometric point '(x, y)'");
 #define POINTOID        600
-DATA(insert OID = 601 (  lseg       PGUID 32  48 f b t \054 0 600 lseg_in lseg_out lseg_in lseg_out d p _null_ ));
+DATA(insert OID = 601 (  lseg       10 PGUID 32  48 f b t \054 0 600 lseg_in lseg_out lseg_in lseg_out d p _null_ ));
 DESCR("geometric line segment '(pt1,pt2)'");
 #define LSEGOID            601
-DATA(insert OID = 602 (  path       PGUID -1  -1 f b t \054 0 0 path_in path_out path_in path_out d x _null_ ));
+DATA(insert OID = 602 (  path       10 PGUID -1  -1 f b t \054 0 0 path_in path_out path_in path_out d x _null_ ));
 DESCR("geometric path '(pt1,...)'");
 #define PATHOID            602
-DATA(insert OID = 603 (  box       PGUID 32 100 f b t \073 0 600 box_in box_out box_in box_out d p _null_ ));
+DATA(insert OID = 603 (  box       10 PGUID 32 100 f b t \073 0 600 box_in box_out box_in box_out d p _null_ ));
 DESCR("geometric box '(lower left,upper right)'");
 #define BOXOID            603
-DATA(insert OID = 604 (  polygon   PGUID -1  -1 f b t \054 0   0 poly_in poly_out poly_in poly_out d x _null_ ));
+DATA(insert OID = 604 (  polygon   10 PGUID -1  -1 f b t \054 0   0 poly_in poly_out poly_in poly_out d x _null_ ));
 DESCR("geometric polygon '(pt1,...)'");
 #define POLYGONOID        604

-DATA(insert OID = 628 (  line       PGUID 32  48 f b t \054 0 701 line_in line_out line_in line_out d p _null_ ));
+DATA(insert OID = 628 (  line       10 PGUID 32  48 f b t \054 0 701 line_in line_out line_in line_out d p _null_ ));
 DESCR("geometric line '(pt1,pt2)'");
 #define LINEOID            628
-DATA(insert OID = 629 (  _line       PGUID  -1 -1 f b t \054 0 628 array_in array_out array_in array_out d x _null_
));
+DATA(insert OID = 629 (  _line       10 PGUID  -1 -1 f b t \054 0 628 array_in array_out array_in array_out d x _null_
));
 DESCR("");

 /* OIDS 700 - 799 */

-DATA(insert OID = 700 (  float4    PGUID  4  12 f b t \054 0   0 float4in float4out float4in float4out i p _null_ ));
+DATA(insert OID = 700 (  float4    10 PGUID  4  12 f b t \054 0   0 float4in float4out float4in float4out i p _null_
));
 DESCR("single-precision floating point number, 4-byte storage");
 #define FLOAT4OID 700
-DATA(insert OID = 701 (  float8    PGUID  8  24 f b t \054 0   0 float8in float8out float8in float8out d p _null_ ));
+DATA(insert OID = 701 (  float8    10 PGUID  8  24 f b t \054 0   0 float8in float8out float8in float8out d p _null_
));
 DESCR("double-precision floating point number, 8-byte storage");
 #define FLOAT8OID 701
-DATA(insert OID = 702 (  abstime   PGUID  4  20 t b t \054 0   0 nabstimein nabstimeout nabstimein nabstimeout i p
_null_)); 
+DATA(insert OID = 702 (  abstime   10 PGUID  4  20 t b t \054 0   0 nabstimein nabstimeout nabstimein nabstimeout i p
_null_)); 
 DESCR("absolute, limited-range date and time (Unix system time)");
 #define ABSTIMEOID        702
-DATA(insert OID = 703 (  reltime   PGUID  4  20 t b t \054 0   0 reltimein reltimeout reltimein reltimeout i p _null_
));
+DATA(insert OID = 703 (  reltime   10 PGUID  4  20 t b t \054 0   0 reltimein reltimeout reltimein reltimeout i p
_null_)); 
 DESCR("relative, limited-range time interval (Unix delta time)");
 #define RELTIMEOID        703
-DATA(insert OID = 704 (  tinterval PGUID 12  47 f b t \054 0   0 tintervalin tintervalout tintervalin tintervalout i p
_null_)); 
+DATA(insert OID = 704 (  tinterval 10 PGUID 12  47 f b t \054 0   0 tintervalin tintervalout tintervalin tintervalout
ip _null_ )); 
 DESCR("(abstime,abstime), time interval");
 #define TINTERVALOID    704
-DATA(insert OID = 705 (  unknown   PGUID -1  -1 f b t \054 0   0 textin textout textin textout i p _null_ ));
+DATA(insert OID = 705 (  unknown   10 PGUID -1  -1 f b t \054 0   0 textin textout textin textout i p _null_ ));
 DESCR("");
 #define UNKNOWNOID        705

-DATA(insert OID = 718 (  circle    PGUID  24 47 f b t \054 0    0 circle_in circle_out circle_in circle_out d p _null_
));
+DATA(insert OID = 718 (  circle    10 PGUID  24 47 f b t \054 0    0 circle_in circle_out circle_in circle_out d p
_null_)); 
 DESCR("geometric circle '(center,radius)'");
 #define CIRCLEOID        718
-DATA(insert OID = 719 (  _circle   PGUID  -1 -1 f b t \054 0  718 array_in array_out array_in array_out d x _null_ ));
-DATA(insert OID = 790 (  money       PGUID   4 24 f b t \054 0    0 cash_in cash_out cash_in cash_out i p _null_ ));
+DATA(insert OID = 719 (  _circle   10 PGUID  -1 -1 f b t \054 0  718 array_in array_out array_in array_out d x _null_
));
+DATA(insert OID = 790 (  money       10 PGUID   4 24 f b t \054 0    0 cash_in cash_out cash_in cash_out i p _null_
));
 DESCR("$d,ddd.cc, money");
 #define CASHOID 790
-DATA(insert OID = 791 (  _money    PGUID  -1 -1 f b t \054 0  790 array_in array_out array_in array_out i x _null_ ));
+DATA(insert OID = 791 (  _money    10 PGUID  -1 -1 f b t \054 0  790 array_in array_out array_in array_out i x _null_
));

 /* OIDS 800 - 899 */
-DATA(insert OID = 829 ( macaddr    PGUID  6 -1 f b t \054 0 0 macaddr_in macaddr_out macaddr_in macaddr_out i p _null_
));
+DATA(insert OID = 829 ( macaddr    10 PGUID  6 -1 f b t \054 0 0 macaddr_in macaddr_out macaddr_in macaddr_out i p
_null_)); 
 DESCR("XX:XX:XX:XX:XX:XX, MAC address");
 #define MACADDROID 829
-DATA(insert OID = 869 ( inet       PGUID  -1 -1 f b t \054 0 0 inet_in inet_out inet_in inet_out i p _null_ ));
+DATA(insert OID = 869 ( inet       10 PGUID  -1 -1 f b t \054 0 0 inet_in inet_out inet_in inet_out i p _null_ ));
 DESCR("IP address/netmask, host address, netmask optional");
 #define INETOID 869
-DATA(insert OID = 650 ( cidr       PGUID  -1 -1 f b t \054 0 0 cidr_in cidr_out cidr_in cidr_out i p _null_ ));
+DATA(insert OID = 650 ( cidr       10 PGUID  -1 -1 f b t \054 0 0 cidr_in cidr_out cidr_in cidr_out i p _null_ ));
 DESCR("network IP address/netmask, network address");
 #define CIDROID 650

 /* OIDS 900 - 999 */

 /* OIDS 1000 - 1099 */
-DATA(insert OID = 1000 (  _bool         PGUID -1  -1 f b t \054 0    16 array_in array_out array_in array_out i x
_null_)); 
-DATA(insert OID = 1001 (  _bytea     PGUID -1  -1 f b t \054 0    17 array_in array_out array_in array_out i x _null_
));
-DATA(insert OID = 1002 (  _char         PGUID -1  -1 f b t \054 0    18 array_in array_out array_in array_out i x
_null_)); 
-DATA(insert OID = 1003 (  _name         PGUID -1  -1 f b t \054 0    19 array_in array_out array_in array_out i x
_null_)); 
-DATA(insert OID = 1005 (  _int2         PGUID -1  -1 f b t \054 0    21 array_in array_out array_in array_out i x
_null_)); 
-DATA(insert OID = 1006 (  _int2vector PGUID -1 -1 f b t \054 0    22 array_in array_out array_in array_out i x _null_
));
-DATA(insert OID = 1007 (  _int4         PGUID -1  -1 f b t \054 0    23 array_in array_out array_in array_out i x
_null_)); 
-DATA(insert OID = 1008 (  _regproc     PGUID -1  -1 f b t \054 0    24 array_in array_out array_in array_out i x
_null_)); 
-DATA(insert OID = 1009 (  _text         PGUID -1  -1 f b t \054 0    25 array_in array_out array_in array_out i x
_null_)); 
-DATA(insert OID = 1028 (  _oid         PGUID -1  -1 f b t \054 0    26 array_in array_out array_in array_out i x
_null_)); 
-DATA(insert OID = 1010 (  _tid         PGUID -1  -1 f b t \054 0    27 array_in array_out array_in array_out i x
_null_)); 
-DATA(insert OID = 1011 (  _xid         PGUID -1  -1 f b t \054 0    28 array_in array_out array_in array_out i x
_null_)); 
-DATA(insert OID = 1012 (  _cid         PGUID -1  -1 f b t \054 0    29 array_in array_out array_in array_out i x
_null_)); 
-DATA(insert OID = 1013 (  _oidvector PGUID -1  -1 f b t \054 0    30 array_in array_out array_in array_out i x _null_
));
-DATA(insert OID = 1014 (  _bpchar     PGUID -1  -1 f b t \054 0 1042 array_in array_out array_in array_out i x _null_
));
-DATA(insert OID = 1015 (  _varchar     PGUID -1  -1 f b t \054 0 1043 array_in array_out array_in array_out i x _null_
));
-DATA(insert OID = 1016 (  _int8         PGUID -1  -1 f b t \054 0    20 array_in array_out array_in array_out d x
_null_)); 
-DATA(insert OID = 1017 (  _point     PGUID -1  -1 f b t \054 0 600 array_in array_out array_in array_out d x _null_
));
-DATA(insert OID = 1018 (  _lseg         PGUID -1  -1 f b t \054 0 601 array_in array_out array_in array_out d x _null_
));
-DATA(insert OID = 1019 (  _path         PGUID -1  -1 f b t \054 0 602 array_in array_out array_in array_out d x _null_
));
-DATA(insert OID = 1020 (  _box         PGUID -1  -1 f b t \073 0 603 array_in array_out array_in array_out d x _null_
));
-DATA(insert OID = 1021 (  _float4     PGUID -1  -1 f b t \054 0 700 array_in array_out array_in array_out i x _null_
));
-DATA(insert OID = 1022 (  _float8     PGUID -1  -1 f b t \054 0 701 array_in array_out array_in array_out d x _null_
));
-DATA(insert OID = 1023 (  _abstime     PGUID -1  -1 f b t \054 0 702 array_in array_out array_in array_out i x _null_
));
-DATA(insert OID = 1024 (  _reltime     PGUID -1  -1 f b t \054 0 703 array_in array_out array_in array_out i x _null_
));
-DATA(insert OID = 1025 (  _tinterval PGUID -1  -1 f b t \054 0 704 array_in array_out array_in array_out i x _null_
));
-DATA(insert OID = 1027 (  _polygon     PGUID -1  -1 f b t \054 0 604 array_in array_out array_in array_out d x _null_
));
+DATA(insert OID = 1000 (  _bool         10 PGUID -1  -1 f b t \054 0    16 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1001 (  _bytea     10 PGUID -1  -1 f b t \054 0    17 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1002 (  _char         10 PGUID -1  -1 f b t \054 0    18 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1003 (  _name         10 PGUID -1  -1 f b t \054 0    19 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1005 (  _int2         10 PGUID -1  -1 f b t \054 0    21 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1006 (  _int2vector 10 PGUID -1 -1 f b t \054 0    22 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1007 (  _int4         10 PGUID -1  -1 f b t \054 0    23 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1008 (  _regproc     10 PGUID -1  -1 f b t \054 0    24 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1009 (  _text         10 PGUID -1  -1 f b t \054 0    25 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1028 (  _oid         10 PGUID -1  -1 f b t \054 0    26 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1010 (  _tid         10 PGUID -1  -1 f b t \054 0    27 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1011 (  _xid         10 PGUID -1  -1 f b t \054 0    28 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1012 (  _cid         10 PGUID -1  -1 f b t \054 0    29 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1013 (  _oidvector 10 PGUID -1  -1 f b t \054 0    30 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1014 (  _bpchar     10 PGUID -1  -1 f b t \054 0 1042 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1015 (  _varchar     10 PGUID -1  -1 f b t \054 0 1043 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1016 (  _int8         10 PGUID -1  -1 f b t \054 0    20 array_in array_out array_in array_out d x
_null_)); 
+DATA(insert OID = 1017 (  _point     10 PGUID -1  -1 f b t \054 0 600 array_in array_out array_in array_out d x _null_
));
+DATA(insert OID = 1018 (  _lseg         10 PGUID -1  -1 f b t \054 0 601 array_in array_out array_in array_out d x
_null_)); 
+DATA(insert OID = 1019 (  _path         10 PGUID -1  -1 f b t \054 0 602 array_in array_out array_in array_out d x
_null_)); 
+DATA(insert OID = 1020 (  _box         10 PGUID -1  -1 f b t \073 0 603 array_in array_out array_in array_out d x
_null_)); 
+DATA(insert OID = 1021 (  _float4     10 PGUID -1  -1 f b t \054 0 700 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1022 (  _float8     10 PGUID -1  -1 f b t \054 0 701 array_in array_out array_in array_out d x
_null_)); 
+DATA(insert OID = 1023 (  _abstime     10 PGUID -1  -1 f b t \054 0 702 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1024 (  _reltime     10 PGUID -1  -1 f b t \054 0 703 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1025 (  _tinterval 10 PGUID -1  -1 f b t \054 0 704 array_in array_out array_in array_out i x _null_
));
+DATA(insert OID = 1027 (  _polygon     10 PGUID -1  -1 f b t \054 0 604 array_in array_out array_in array_out d x
_null_)); 
 /*
  *    Note: the size of aclitem needs to match sizeof(AclItem) in acl.h.
  *    Thanks to some padding, this will be 8 on all platforms.
  *    We also have an Assert to make sure.
  */
 #define ACLITEMSIZE 8
-DATA(insert OID = 1033 (  aclitem     PGUID 8   -1 f b t \054 0 0 aclitemin aclitemout aclitemin aclitemout i p _null_
));
+DATA(insert OID = 1033 (  aclitem     10 PGUID 8   -1 f b t \054 0 0 aclitemin aclitemout aclitemin aclitemout i p
_null_)); 
 DESCR("access control list");
-DATA(insert OID = 1034 (  _aclitem     PGUID -1 -1 f b t \054 0 1033 array_in array_out array_in array_out i x _null_
));
-DATA(insert OID = 1040 (  _macaddr     PGUID -1 -1 f b t \054 0  829 array_in array_out array_in array_out i x _null_
));
-DATA(insert OID = 1041 (  _inet    PGUID -1 -1 f b t \054 0  869 array_in array_out array_in array_out i x _null_ ));
-DATA(insert OID = 651  (  _cidr    PGUID -1 -1 f b t \054 0  650 array_in array_out array_in array_out i x _null_ ));
-DATA(insert OID = 1042 ( bpchar         PGUID -1  -1 f b t \054 0    0 bpcharin bpcharout bpcharin bpcharout i x
_null_)); 
+DATA(insert OID = 1034 (  _aclitem     10 PGUID -1 -1 f b t \054 0 1033 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1040 (  _macaddr     10 PGUID -1 -1 f b t \054 0  829 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1041 (  _inet    10 PGUID -1 -1 f b t \054 0  869 array_in array_out array_in array_out i x _null_
));
+DATA(insert OID = 651  (  _cidr    10 PGUID -1 -1 f b t \054 0  650 array_in array_out array_in array_out i x _null_
));
+DATA(insert OID = 1042 ( bpchar         10 PGUID -1  -1 f b t \054 0    0 bpcharin bpcharout bpcharin bpcharout i x
_null_)); 
 DESCR("char(length), blank-padded string, fixed storage length");
 #define BPCHAROID        1042
-DATA(insert OID = 1043 ( varchar     PGUID -1  -1 f b t \054 0    0 varcharin varcharout varcharin varcharout i x
_null_)); 
+DATA(insert OID = 1043 ( varchar     10 PGUID -1  -1 f b t \054 0    0 varcharin varcharout varcharin varcharout i x
_null_)); 
 DESCR("varchar(length), non-blank-padded string, variable storage length");
 #define VARCHAROID        1043

-DATA(insert OID = 1082 ( date         PGUID    4  10 t b t \054 0    0 date_in date_out date_in date_out i p _null_
));
+DATA(insert OID = 1082 ( date         10 PGUID    4  10 t b t \054 0    0 date_in date_out date_in date_out i p _null_
));
 DESCR("ANSI SQL date");
 #define DATEOID            1082
-DATA(insert OID = 1083 ( time         PGUID    8  16 f b t \054 0    0 time_in time_out time_in time_out d p _null_
));
+DATA(insert OID = 1083 ( time         10 PGUID    8  16 f b t \054 0    0 time_in time_out time_in time_out d p _null_
));
 DESCR("hh:mm:ss, ANSI SQL time");
 #define TIMEOID            1083

 /* OIDS 1100 - 1199 */
-DATA(insert OID = 1114 ( timestamp     PGUID    8  47 f b t \054 0    0 timestamp_in timestamp_out timestamp_in
timestamp_outd p _null_ )); 
+DATA(insert OID = 1114 ( timestamp     10 PGUID    8  47 f b t \054 0    0 timestamp_in timestamp_out timestamp_in
timestamp_outd p _null_ )); 
 DESCR("date and time");
 #define TIMESTAMPOID    1114
-DATA(insert OID = 1115 ( _timestamp  PGUID    -1 -1 f b t \054 0    1184 array_in array_out array_in array_out d x
_null_)); 
-DATA(insert OID = 1182 ( _date         PGUID    -1 -1 f b t \054 0    1082 array_in array_out array_in array_out i x
_null_)); 
-DATA(insert OID = 1183 ( _time         PGUID    -1 -1 f b t \054 0    1083 array_in array_out array_in array_out d x
_null_)); 
-DATA(insert OID = 1184 ( timestamptz PGUID    8  47 f b t \054 0    0 timestamptz_in timestamptz_out timestamptz_in
timestamptz_outd p _null_ )); 
+DATA(insert OID = 1115 ( _timestamp  10 PGUID    -1 -1 f b t \054 0    1184 array_in array_out array_in array_out d x
_null_)); 
+DATA(insert OID = 1182 ( _date         10 PGUID    -1 -1 f b t \054 0    1082 array_in array_out array_in array_out i
x_null_ )); 
+DATA(insert OID = 1183 ( _time         10 PGUID    -1 -1 f b t \054 0    1083 array_in array_out array_in array_out d
x_null_ )); 
+DATA(insert OID = 1184 ( timestamptz 10 PGUID    8  47 f b t \054 0    0 timestamptz_in timestamptz_out timestamptz_in
timestamptz_outd p _null_ )); 
 DESCR("date and time with time zone");
 #define TIMESTAMPTZOID    1184
-DATA(insert OID = 1185 ( _timestamptz PGUID    -1 -1 f b t \054 0    1184 array_in array_out array_in array_out d x
_null_)); 
-DATA(insert OID = 1186 ( interval     PGUID 12  47 f b t \054 0    0 interval_in interval_out interval_in interval_out
dp _null_ )); 
+DATA(insert OID = 1185 ( _timestamptz 10 PGUID    -1 -1 f b t \054 0    1184 array_in array_out array_in array_out d x
_null_)); 
+DATA(insert OID = 1186 ( interval     10 PGUID 12  47 f b t \054 0    0 interval_in interval_out interval_in
interval_outd p _null_ )); 
 DESCR("@ <number> <units>, time interval");
 #define INTERVALOID        1186
-DATA(insert OID = 1187 ( _interval     PGUID    -1 -1 f b t \054 0    1186 array_in array_out array_in array_out d x
_null_)); 
+DATA(insert OID = 1187 ( _interval     10 PGUID    -1 -1 f b t \054 0    1186 array_in array_out array_in array_out d
x_null_ )); 

 /* OIDS 1200 - 1299 */
-DATA(insert OID = 1231 (  _numeric     PGUID -1  -1 f b t \054 0    1700 array_in array_out array_in array_out i x
_null_)); 
-DATA(insert OID = 1266 ( timetz         PGUID 12  22 f b t \054 0    0 timetz_in timetz_out timetz_in timetz_out d p
_null_)); 
+DATA(insert OID = 1231 (  _numeric     10 PGUID -1  -1 f b t \054 0    1700 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1266 ( timetz         10 PGUID 12  22 f b t \054 0    0 timetz_in timetz_out timetz_in timetz_out d
p_null_ )); 
 DESCR("hh:mm:ss, ANSI SQL time");
 #define TIMETZOID        1266
-DATA(insert OID = 1270 ( _timetz     PGUID    -1 -1 f b t \054 0    1266 array_in array_out array_in array_out d x
_null_)); 
+DATA(insert OID = 1270 ( _timetz     10 PGUID    -1 -1 f b t \054 0    1266 array_in array_out array_in array_out d x
_null_)); 

 /* OIDS 1500 - 1599 */
-DATA(insert OID = 1560 ( bit         PGUID -1  -1 f b t \054 0    0 bit_in bit_out bit_in bit_out i x _null_ ));
+DATA(insert OID = 1560 ( bit         10 PGUID -1  -1 f b t \054 0    0 bit_in bit_out bit_in bit_out i x _null_ ));
 DESCR("fixed-length bit string");
 #define BITOID     1560
-DATA(insert OID = 1561 ( _bit         PGUID    -1 -1 f b t \054 0    1560 array_in array_out array_in array_out i x
_null_)); 
-DATA(insert OID = 1562 ( varbit         PGUID -1  -1 f b t \054 0    0 varbit_in varbit_out varbit_in varbit_out i x
_null_)); 
+DATA(insert OID = 1561 ( _bit         10 PGUID    -1 -1 f b t \054 0    1560 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1562 ( varbit         10 PGUID -1  -1 f b t \054 0    0 varbit_in varbit_out varbit_in varbit_out i
x_null_ )); 
 DESCR("variable-length bit string");
 #define VARBITOID      1562
-DATA(insert OID = 1563 ( _varbit     PGUID    -1 -1 f b t \054 0    1562 array_in array_out array_in array_out i x
_null_)); 
+DATA(insert OID = 1563 ( _varbit     10 PGUID    -1 -1 f b t \054 0    1562 array_in array_out array_in array_out i x
_null_)); 

 /* OIDS 1600 - 1699 */

 /* OIDS 1700 - 1799 */
-DATA(insert OID = 1700 ( numeric       PGUID -1  -1 f b t \054 0  0 numeric_in numeric_out numeric_in numeric_out i m
_null_)); 
+DATA(insert OID = 1700 ( numeric       10 PGUID -1  -1 f b t \054 0  0 numeric_in numeric_out numeric_in numeric_out i
m_null_ )); 
 DESCR("numeric(precision, decimal), arbitrary precision number");
 #define NUMERICOID        1700

 /* OID 1790 */
-DATA(insert OID = 1790 ( refcursor       PGUID -1  -1 f b t \054 0  0 textin textout textin textout i x _null_ ));
+DATA(insert OID = 1790 ( refcursor       10 PGUID -1  -1 f b t \054 0  0 textin textout textin textout i x _null_ ));
 DESCR("reference cursor (portal name)");
 #define REFCURSOROID    1790

@@ -443,19 +445,21 @@
 /*
  * prototypes for functions in pg_type.c
  */
+struct DefElem;
 extern Oid    TypeGet(char *typeName, bool *defined);
-extern Oid    TypeShellMake(char *typeName);
+extern Oid    TypeShellMake(char *typeName, Oid packId);
 extern Oid TypeCreate(char *typeName,
+           Oid packId,
            Oid assignedTypeOid,
            Oid relationOid,
            int16 internalSize,
            int16 externalSize,
            char typeType,
            char typDelim,
-           char *inputProcedure,
-           char *outputProcedure,
-           char *receiveProcedure,
-           char *sendProcedure,
+           struct DefElem *inputProcedure,
+           struct DefElem *outputProcedure,
+           struct DefElem *receiveProcedure,
+           struct DefElem *sendProcedure,
            char *elementTypeName,
            char *defaultTypeValue,
            bool passedByValue,
Index: src/include/commands/defrem.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/commands/defrem.h,v
retrieving revision 1.25
diff -u -r1.25 defrem.h
--- src/include/commands/defrem.h    2001/09/08 01:10:21    1.25
+++ src/include/commands/defrem.h    2001/10/17 16:42:01
@@ -36,9 +36,10 @@
  * prototypes in define.c
  */
 extern void CreateFunction(ProcedureStmt *stmt);
-extern void DefineOperator(char *name, List *parameters);
-extern void DefineAggregate(char *name, List *parameters);
-extern void DefineType(char *name, List *parameters);
+extern void DefineOperator(char *name, Oid packId, List *parameters);
+extern void DefineAggregate(char *name, Oid packId, List *parameters);
+extern void DefineType(char *name, Oid packId, List *parameters);
+extern void CreatePackage(PackageStmt *stmt);

 /*
  * prototypes in remove.c
@@ -48,5 +49,7 @@
                char *typeName1, char *typeName2);
 extern void RemoveType(char *typeName);
 extern void RemoveAggregate(char *aggName, char *aggType);
+extern void RemovePackage(char *packname);
+extern void DoRemovePackage(Oid packID, char *packname);

 #endif     /* DEFREM_H */
Index: src/include/executor/spi.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/executor/spi.h,v
retrieving revision 1.28
diff -u -r1.28 spi.h
--- src/include/executor/spi.h    2001/08/02 18:08:43    1.28
+++ src/include/executor/spi.h    2001/10/17 16:42:02
@@ -82,8 +82,10 @@
 extern void SPI_push(void);
 extern void SPI_pop(void);
 extern int    SPI_exec(char *src, int tcount);
+extern int    SPI_pack_exec(char *src, Oid packId,int tcount);
 extern int    SPI_execp(void *plan, Datum *values, char *Nulls, int tcount);
 extern void *SPI_prepare(char *src, int nargs, Oid *argtypes);
+extern void *SPI_pack_prepare(char *src, Oid packId, int nargs, Oid *argtypes);
 extern void *SPI_saveplan(void *plan);
 extern int  SPI_freeplan(void *plan);

Index: src/include/nodes/nodes.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/nodes/nodes.h,v
retrieving revision 1.93
diff -u -r1.93 nodes.h
--- src/include/nodes/nodes.h    2001/07/16 19:12:58    1.93
+++ src/include/nodes/nodes.h    2001/10/17 16:42:02
@@ -194,6 +194,9 @@
     T_DropGroupStmt,
     T_ReindexStmt,
     T_CheckPointStmt,
+    T_PackageStmt,
+    T_PackageGlobal,
+    T_RemovePackageStmt,

     T_A_Expr = 700,
     T_Attr,
Index: src/include/nodes/parsenodes.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/nodes/parsenodes.h,v
retrieving revision 1.146
diff -u -r1.146 parsenodes.h
--- src/include/nodes/parsenodes.h    2001/10/12 00:07:15    1.146
+++ src/include/nodes/parsenodes.h    2001/10/17 16:42:03
@@ -296,6 +296,8 @@
     List       *args;            /* list of (T_String) Values or NULL */
     bool        before;            /* BEFORE/AFTER */
     bool        row;            /* ROW/STATEMENT */
+    bool        packexact;        /* exact package specification */
+    Oid            package;        /* package context */
     char        actions[4];        /* Insert, Update, Delete */
     char       *lang;            /* currently not used, always NULL */
     char       *text;            /* AS 'text' */
@@ -425,6 +427,7 @@
     int            defType;        /* OPERATOR|P_TYPE|AGGREGATE */
     char       *defname;
     List       *definition;        /* a list of DefElem */
+    Oid            package;        /* context in which to add */
 } DefineStmt;


@@ -519,6 +522,7 @@
 typedef struct ProcedureStmt
 {
     NodeTag        type;
+    Oid            package;        /* package context function is in */
     bool        replace;        /* T => replace if already exists */
     char       *funcname;        /* name of function to create */
     List       *argTypes;        /* list of argument types (TypeName nodes) */
@@ -529,6 +533,40 @@
 } ProcedureStmt;

 /* ----------------------
+ *     Load Package Body Statement
+ * ----------------------
+ */
+typedef struct PackageStmt
+{
+    NodeTag        type;
+    char       *packname;        /* name of package to create */
+    /*
+     * Now for the lists of what we can have in a package
+     *
+     * All items in a given list are added before the next list is
+     * processed. They are added in the order listed here, starting
+     * with variables.
+     */
+    List       *variables;        /* list of CreateStmt */
+    List       *initfuncs;        /* list of ProcedureStmt */
+    List       *types;            /* list of DefineStmt */
+    List       *functions;        /* list of ProcedureStmt */
+    List       *aggregates;        /* list of DefineStmt */
+    List       *operators;        /* list of DefineStmt */
+} PackageStmt;
+
+/* ----------------------
+ *     Global declaration for package
+ * ----------------------
+ */
+typedef struct PackageGlobal
+{
+    NodeTag        type;
+    char       *name;
+    char       *typetext;
+} PackageGlobal;
+
+/* ----------------------
  *        Drop Aggregate Statement
  * ----------------------
  */
@@ -551,6 +589,16 @@
 } RemoveFuncStmt;

 /* ----------------------
+ *     Drop Package Statement
+ * ----------------------
+ */
+typedef struct RemovePackageStmt
+{
+    NodeTag        type;
+    char       *packname;        /* package to drop */
+} RemovePackageStmt;
+
+/* ----------------------
  *        Drop Operator Statement
  * ----------------------
  */
@@ -1133,14 +1181,19 @@
  * indicates we saw 'foo(DISTINCT ...)'.  In either case, the construct
  * *must* be an aggregate call.  Otherwise, it might be either an
  * aggregate or some other kind of function.
+ *
+ * package_exact indicates we got this function name as "package.function".
+ * If it's not in that package, don't look in standard.
  */
 typedef struct FuncCall
 {
     NodeTag        type;
+    Oid            package;        /* package either we're in or to look in */
     char       *funcname;        /* name of function */
     List       *args;            /* the arguments (list of exprs) */
     bool        agg_star;        /* argument was really '*' */
     bool        agg_distinct;    /* arguments were labeled DISTINCT */
+    bool        package_exact;    /* look only in given package */
 } FuncCall;

 /*
@@ -1219,20 +1272,29 @@
 typedef struct IndexElem
 {
     NodeTag        type;
+    Oid            packId;            /* package context for function */
     char       *name;            /* name of attribute to index, or function */
     List       *args;            /* list of names of function arguments */
     char       *class;            /* name of desired opclass; NULL = default */
+    bool        package_exact;    /* were we given a package ID for the func? */
 } IndexElem;

 /*
  * DefElem -
  *      a definition (used in definition lists in the form of defname = arg)
+ *
+ * A few places may pass a name that might be a function name. In those
+ * places, we pass along package info. arg will be non-NULL in these cases.
+ * packexact means we were handed a package ID. package is either the
+ * exact package, or the package context.
  */
 typedef struct DefElem
 {
     NodeTag        type;
+    Oid            package;
     char       *defname;
     Node       *arg;            /* a (Value *) or a (TypeName *) */
+    bool        packexact;
 } DefElem;


Index: src/include/nodes/primnodes.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/nodes/primnodes.h,v
retrieving revision 1.54
diff -u -r1.54 primnodes.h
--- src/include/nodes/primnodes.h    2001/05/07 00:43:25    1.54
+++ src/include/nodes/primnodes.h    2001/10/17 16:42:04
@@ -281,7 +281,8 @@
 typedef struct Aggref
 {
     NodeTag        type;
-    char       *aggname;        /* name of the aggregate */
+    char       *aggname;        /* name of the aggregate, for messages */
+    Oid            aggId;            /* oid of the aggregate */
     Oid            basetype;        /* base type Oid of the aggregate (ie,
                                  * input type) */
     Oid            aggtype;        /* type Oid of final result of the
Index: src/include/parser/gramparse.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/parser/gramparse.h,v
retrieving revision 1.16
diff -u -r1.16 gramparse.h
--- src/include/parser/gramparse.h    2001/09/20 14:20:28    1.16
+++ src/include/parser/gramparse.h    2001/10/17 16:42:04
@@ -24,7 +24,7 @@
 extern void yyerror(const char *message);

 /* from gram.y */
-extern void parser_init(Oid *typev, int nargs);
+extern void parser_init(Oid packId, Oid *typev, int nargs);
 extern Oid    param_type(int t);
 extern int    yyparse(void);
 extern char *xlateSqlFunc(char *name);
Index: src/include/parser/parse_agg.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/parser/parse_agg.h,v
retrieving revision 1.17
diff -u -r1.17 parse_agg.h
--- src/include/parser/parse_agg.h    2001/01/24 19:43:27    1.17
+++ src/include/parser/parse_agg.h    2001/10/17 16:42:04
@@ -18,7 +18,7 @@

 extern void AddAggToParseState(ParseState *pstate, Aggref *aggref);
 extern void parseCheckAggregates(ParseState *pstate, Query *qry, Node *qual);
-extern Aggref *ParseAgg(ParseState *pstate, char *aggname, Oid basetype,
+extern Aggref *ParseAgg(ParseState *pstate, Oid aggId, Oid basetype,
          List *args, bool agg_star, bool agg_distinct,
          int precedence);
 extern void agg_error(char *caller, char *aggname, Oid basetypeID);
Index: src/include/parser/parse_func.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/parser/parse_func.h,v
retrieving revision 1.32
diff -u -r1.32 parse_func.h
--- src/include/parser/parse_func.h    2001/10/04 22:06:46    1.32
+++ src/include/parser/parse_func.h    2001/10/17 16:42:04
@@ -35,6 +35,7 @@
 typedef struct _CandidateList
 {
     Oid           *args;
+    Oid            oid;
     struct _CandidateList *next;
 }           *CandidateList;

@@ -52,16 +53,20 @@
 extern Node *ParseFuncOrColumn(ParseState *pstate,
                   char *funcname, List *fargs,
                   bool agg_star, bool agg_distinct,
-                  int precedence);
+                  int precedence, Oid packId, bool pack_explicit);

-extern FuncDetailCode func_get_detail(char *funcname, List *fargs,
-                                      int nargs, Oid *argtypes,
+extern FuncDetailCode func_get_detail(char *funcname, Oid packId,
+                                      List *fargs, int nargs, Oid *argtypes,
                                       Oid *funcid, Oid *rettype,
                                       bool *retset, Oid **true_typeids);

 extern bool typeInheritsFrom(Oid subclassTypeId, Oid superclassTypeId);

-extern void func_error(char *caller, char *funcname,
+extern void func_error(char *caller, char *funcname, Oid packID, bool exact,
            int nargs, Oid *argtypes, char *msg);
+
+struct DefElem; struct HeapTupleData;
+extern struct HeapTupleData *GetFuncFromDefElem(struct DefElem *node, int nargs,
+            Oid *fnArgs, char *caller, char *type1, char *type2);

 #endif     /* PARSE_FUNC_H */
Index: src/include/parser/parser.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/parser/parser.h,v
retrieving revision 1.8
diff -u -r1.8 parser.h
--- src/include/parser/parser.h    2001/01/24 19:43:27    1.8
+++ src/include/parser/parser.h    2001/10/17 16:42:04
@@ -16,6 +16,6 @@

 #include "parser/parse_node.h"

-extern List *parser(char *str, Oid *typev, int nargs);
+extern List *parser(char *str, Oid packId, Oid *typev, int nargs);

 #endif     /* PARSER_H */
Index: src/include/tcop/tcopprot.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/tcop/tcopprot.h,v
retrieving revision 1.42
diff -u -r1.42 tcopprot.h
--- src/include/tcop/tcopprot.h    2001/09/07 16:12:49    1.42
+++ src/include/tcop/tcopprot.h    2001/10/17 16:42:05
@@ -34,7 +34,7 @@
 #ifndef BOOTSTRAP_INCLUDE

 extern List *pg_parse_and_rewrite(char *query_string,
-                     Oid *typev, int nargs);
+                     Oid packId, Oid *typev, int nargs);
 extern Plan *pg_plan_query(Query *querytree);
 extern void pg_exec_query_string(char *query_string,
                      CommandDest dest,
Index: src/include/utils/acl.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/utils/acl.h,v
retrieving revision 1.36
diff -u -r1.36 acl.h
--- src/include/utils/acl.h    2001/06/12 16:34:27    1.36
+++ src/include/utils/acl.h    2001/10/17 16:42:05
@@ -202,6 +202,7 @@

 extern bool pg_ownercheck(Oid userid, const char *name, int cacheid);
 extern bool pg_oper_ownercheck(Oid userid, Oid oprid);
+extern bool pg_pack_ownercheck(Oid userid, char *packname);
 extern bool pg_func_ownercheck(Oid userid, char *funcname,
                                int nargs, Oid *arglist);
 extern bool pg_aggr_ownercheck(Oid userid, char *aggname,
Index: src/include/utils/syscache.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/include/utils/syscache.h,v
retrieving revision 1.33
diff -u -r1.33 syscache.h
--- src/include/utils/syscache.h    2001/08/21 16:36:06    1.33
+++ src/include/utils/syscache.h    2001/10/17 16:42:05
@@ -29,32 +29,36 @@
  */

 #define AGGNAME            0
-#define AMNAME            1
-#define AMOPOPID        2
-#define AMOPSTRATEGY    3
-#define AMPROCNUM        4
-#define ATTNAME            5
-#define ATTNUM            6
-#define CLAAMNAME        7
-#define CLAOID            8
-#define GRONAME            9
-#define GROSYSID        10
-#define INDEXRELID        11
-#define INHRELID        12
-#define LANGNAME        13
-#define LANGOID            14
-#define OPERNAME        15
-#define OPEROID            16
-#define PROCNAME        17
-#define PROCOID            18
-#define RELNAME            19
-#define RELOID            20
-#define RULENAME        21
-#define SHADOWNAME        22
-#define SHADOWSYSID        23
-#define STATRELATT        24
-#define TYPENAME        25
-#define TYPEOID            26
+#define AGGOID            1
+#define AMNAME            2
+#define AMOPOPID        3
+#define AMOPSTRATEGY    4
+#define AMPROCNUM        5
+#define ATTNAME            6
+#define ATTNUM            7
+#define CLAAMNAME        8
+#define CLAOID            9
+#define GRONAME            10
+#define GROSYSID        11
+#define INDEXRELID        12
+#define INHRELID        13
+#define LANGNAME        14
+#define LANGOID            15
+#define OPERNAME        16
+#define OPEROID            17
+#define PACKAGENAME        18
+#define PACKAGEOID        19
+#define PACKAGEGLOBAL    20
+#define PROCNAME        21
+#define PROCOID            22
+#define RELNAME            23
+#define RELOID            24
+#define RULENAME        25
+#define SHADOWNAME        26
+#define SHADOWSYSID        27
+#define STATRELATT        28
+#define TYPENAME        29
+#define TYPEOID            30

 extern void InitCatalogCache(void);

@@ -72,5 +76,9 @@

 extern Datum SysCacheGetAttr(int cacheId, HeapTuple tup,
                 AttrNumber attributeNumber, bool *isNull);
+
+#ifndef STANDARDPackageId
+#define STANDARDPackageId 10
+#endif

 #endif     /* SYSCACHE_H */
Index: src/pl/plpgsql/src/gram.y
===================================================================
RCS file: /projects/cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v
retrieving revision 1.27
diff -u -r1.27 gram.y
--- src/pl/plpgsql/src/gram.y    2001/10/09 15:59:56    1.27
+++ src/pl/plpgsql/src/gram.y    2001/10/17 16:42:13
@@ -196,6 +196,7 @@
 %token    T_WORD
 %token    T_NUMBER
 %token    T_ERROR
+%token    T_GLOBALDECL

 %token    O_OPTION
 %token    O_DUMP
@@ -209,6 +210,11 @@
                 | T_TRIGGER comp_optsect pl_block opt_semi
                     {
                         yylval.program = (PLpgSQL_stmt_block *)$3;
+                    }
+                | T_GLOBALDECL decl_statement
+                    {
+                        /* all work done in growing namespace */
+                        yylval.program = NULL;
                     }
                 ;

Index: src/pl/plpgsql/src/pl_comp.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/pl/plpgsql/src/pl_comp.c,v
retrieving revision 1.36
diff -u -r1.36 pl_comp.c
--- src/pl/plpgsql/src/pl_comp.c    2001/10/09 15:59:56    1.36
+++ src/pl/plpgsql/src/pl_comp.c    2001/10/17 16:42:14
@@ -133,14 +133,10 @@
         elog(ERROR, "plpgsql: cache lookup for proc %u failed", fn_oid);

     /*
-     * Setup the scanner input and error info
+     * Setup the error info
      */
     procStruct = (Form_pg_proc) GETSTRUCT(procTup);
-    proc_source = DatumGetCString(DirectFunctionCall1(textout,
-                                  PointerGetDatum(&procStruct->prosrc)));
-    plpgsql_setinput(proc_source, functype);
     plpgsql_error_funcname = pstrdup(NameStr(procStruct->proname));
-    plpgsql_error_lineno = 0;

     /*
      * Catch elog() so we can provide notice about where the error is
@@ -169,15 +165,28 @@
      * Initialize the compiler
      */
     plpgsql_ns_init();
-    plpgsql_ns_push(NULL);
     plpgsql_DumpExecTree = 0;

     datums_alloc = 128;
-    plpgsql_nDatums = 0;
     plpgsql_Datums = palloc(sizeof(PLpgSQL_datum *) * datums_alloc);
-    datums_last = 0;

     /*
+     * Now that we have our langId and packId, finish initing our context
+     */
+    datums_last = plpgsql_packagecontext(procStruct->propack,
+                                         procStruct->prolang, &datums_alloc);
+    plpgsql_nDatums = datums_last;
+    plpgsql_ns_push(NULL);
+
+    /*
+     * Setup the scanner input and error info
+     */
+    proc_source = DatumGetCString(DirectFunctionCall1(textout,
+                                  PointerGetDatum(&procStruct->prosrc)));
+    plpgsql_setinput(proc_source, functype);
+    plpgsql_error_lineno = 0;
+
+    /*
      * Create the new function node
      */
     function = malloc(sizeof(PLpgSQL_function));
@@ -186,6 +195,8 @@

     function->fn_name = strdup(NameStr(procStruct->proname));
     function->fn_oid = fn_oid;
+    function->fn_pack = procStruct->propack;
+    function->fn_lang = procStruct->prolang;
     function->fn_xmin = procTup->t_data->t_xmin;
     function->fn_cmin = procTup->t_data->t_cmin;
     function->fn_functype = functype;
@@ -524,6 +535,9 @@

     ReleaseSysCache(procTup);

+    /* Remove the plackage context we added */
+    plpgsql_pack_pop();
+
     /*
      * Restore the previous elog() jump target
      */
@@ -1191,6 +1205,7 @@
         var->value = (Datum) 0;
         var->isnull = true;
         var->freeval = false;
+        var->useMalloc = false;

         ReleaseSysCache(typetup);
         ReleaseSysCache(attrtup);
Index: src/pl/plpgsql/src/pl_exec.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v
retrieving revision 1.47
diff -u -r1.47 pl_exec.c
--- src/pl/plpgsql/src/pl_exec.c    2001/08/02 21:31:23    1.47
+++ src/pl/plpgsql/src/pl_exec.c    2001/10/17 16:42:16
@@ -48,6 +48,7 @@
 #include "pl.tab.h"

 #include "access/heapam.h"
+#include "catalog/pg_package.h"
 #include "catalog/pg_proc.h"
 #include "catalog/pg_type.h"
 #include "commands/trigger.h"
@@ -150,7 +151,156 @@
                 int32 reqtypmod,
                 bool *isnull);
 static void exec_set_found(PLpgSQL_execstate * estate, bool state);
+static int exec_prep_package(PLpgSQL_execstate * estate, Oid packId,
+                             Oid langId, PLpgSQL_function * func);
+static void exec_init_datum(PLpgSQL_execstate * estate, PLpgSQL_datum *d);

+/* ----------
+ * exec_prep_package   Make sure a package has been inited, and
+ *                     return the number of globals from it
+ * ----------
+ */
+int
+exec_prep_package(PLpgSQL_execstate * estate, Oid packId, Oid langId,
+                  PLpgSQL_function * func)
+{
+    PLpgSQL_pack   *p;
+
+
+    for(p = pack_list; p; p = p->next)
+        if ((p->ourId == packId) && (p->langId == langId))
+        {
+            int i;
+
+            for (i = 0; i < p->varcount; i++)
+            {
+                switch (p->variables[i]->dtype)
+                {
+                    case PLPGSQL_DTYPE_VAR:
+                    case PLPGSQL_DTYPE_REC:
+                    case PLPGSQL_DTYPE_ROW:
+                    case PLPGSQL_DTYPE_RECFIELD:
+                        estate->datums[i] = p->variables[i];
+                        break;
+
+                    default:
+                        elog(ERROR, "unknown dtype %d in exec_pack_prep()",
+                            p->variables[i]->dtype);
+                }
+            }
+            if (p->inited == false)
+            {
+                int             i;
+                HeapTuple       tuple;
+                PLpgSQL_dstring ds;
+                Oid            *typeId;
+
+                for (i = 0; i < p->varcount; i++)
+                {
+                    switch (p->variables[i]->dtype)
+                    {
+                        case PLPGSQL_DTYPE_VAR:
+                            {
+                                /*
+                                 * Duplicate the setting to null which
+                                 * usually happens for local variables
+                                 */
+                                PLpgSQL_var *var = (PLpgSQL_var *)
+                                                        p->variables[i];
+                                var->value = 0;
+                                var->isnull = true;
+                                var->freeval = false;
+                            }
+                            break;
+
+                        case PLPGSQL_DTYPE_REC:
+                        case PLPGSQL_DTYPE_ROW:
+                        case PLPGSQL_DTYPE_RECFIELD:
+                            /* Not normally set to null */
+                            /* Do we need to do something? */
+                    }
+                    exec_init_datum(estate, p->variables[i]);
+                }
+
+                p->inited = true;
+
+                typeId = palloc(FUNC_MAX_ARGS * sizeof(Oid));
+                MemSet(typeId, 0, FUNC_MAX_ARGS * sizeof(Oid));
+
+                /* Now see about running the init routine */
+                plpgsql_dstring_init(&ds);
+                plpgsql_dstring_append(&ds, "select ");
+
+                tuple = SearchSysCache(PACKAGEOID,
+                                       ObjectIdGetDatum(packId),
+                                       0, 0, 0);
+
+                if (!HeapTupleIsValid(tuple))
+                    elog(ERROR, "package initialization: can't get packname");
+
+                plpgsql_dstring_append(&ds,
+                    DatumGetCString(DirectFunctionCall1(nameout,
+                        NameGetDatum(
+                            &((Form_pg_package) GETSTRUCT(tuple))->packname))));
+                ReleaseSysCache(tuple);
+                i = ds.used+1;
+                plpgsql_dstring_append(&ds, ".__packinit_");
+
+                tuple = SearchSysCache(LANGOID,
+                                       ObjectIdGetDatum(langId),
+                                       0, 0, 0);
+
+                if (!HeapTupleIsValid(tuple))
+                    elog(ERROR, "package initialization: can't get langname");
+
+                plpgsql_dstring_append(&ds,
+                    DatumGetCString(DirectFunctionCall1(nameout,
+                        NameGetDatum(
+                            &((Form_pg_language) GETSTRUCT(tuple))->lanname))));
+
+                ReleaseSysCache(tuple);
+
+                /*
+                 * Now we have "select packname.__packinit_<languagename>" in
+                 * ds. Check to see if __packinit_<languagename> is in this
+                 * package. If not, just exit - we're done. If it is
+                 * listed, make sure we're not it - someone didn't
+                 * explicitly type select packname.__packinit_<languagename>
+                 * at the prompt. If we are it, exit.
+                 *
+                 * Otherwise, do a select which will fire it up. Note that
+                 * since we have installed the package info already, that
+                 * invocation will think the package has been inited.
+                 */
+                tuple = SearchSysCache(PROCNAME,
+                                       PointerGetDatum(&ds.value[i]),
+                                       Int32GetDatum(packId),
+                                       Int32GetDatum(0),
+                                       PointerGetDatum(typeId));
+                if (HeapTupleIsValid(tuple))
+                {
+                    if (tuple->t_data->t_oid != func->fn_oid)
+                    {
+                        plpgsql_dstring_append(&ds, " ();");
+
+                        i = SPI_exec(ds.value, 0);
+
+                        if (i != SPI_OK_SELECT)
+                            elog(ERROR,
+                                 "package init unsuccessful,  returned %d",
+                                 i);
+                        SPI_freetuptable(SPI_tuptable);
+                    }
+                    ReleaseSysCache(tuple);
+                }
+            }
+            return p->varcount;
+        }
+
+    return 0;    /* Why didn't we find a package definition?? */
+}
+
+

 /* ----------
  * plpgsql_exec_function    Called by the call handler for
@@ -161,7 +311,8 @@
 plpgsql_exec_function(PLpgSQL_function * func, FunctionCallInfo fcinfo)
 {
     PLpgSQL_execstate estate;
-    int            i;
+    int            i,
+                globalCount;
     sigjmp_buf    save_restart;
     PLpgSQL_function *save_efunc;
     PLpgSQL_stmt *save_estmt;
@@ -189,8 +340,19 @@
          */
         if (error_info_func != NULL)
         {
-            elog(NOTICE, "Error occurred while executing PL/pgSQL function %s",
-                 error_info_func->fn_name);
+            if (error_info_func->fn_pack != STANDARDPackageId)
+            {
+                elog(NOTICE,
+                     "Error occurred while executing PL/pgSQL function %s"
+                     " of package %d",
+                     error_info_func->fn_name, error_info_func->fn_pack);
+            }
+            else
+            {
+                elog(NOTICE,
+                     "Error occurred while executing PL/pgSQL function %s",
+                     error_info_func->fn_name);
+            }
             if (error_info_stmt != NULL)
             {
                 char       *stmttype;
@@ -278,9 +440,16 @@
     plpgsql_estate_setup(&estate, func);

     /*
+     * make sure our package is initialized, link in the globals, and
+     *      find out how many globals there are.
+     */
+    globalCount = exec_prep_package(&estate, func->fn_pack, func->fn_lang,
+                                    func);
+
+    /*
      * Make local execution copies of all the datums
      */
-    for (i = 0; i < func->ndatums; i++)
+    for (i = globalCount; i < func->ndatums; i++)
     {
         switch (func->datums[i]->dtype)
         {
@@ -457,7 +626,8 @@
                      TriggerData *trigdata)
 {
     PLpgSQL_execstate estate;
-    int            i;
+    int            i,
+                globalCount;
     sigjmp_buf    save_restart;
     PLpgSQL_function *save_efunc;
     PLpgSQL_stmt *save_estmt;
@@ -489,8 +659,19 @@
          */
         if (error_info_func != NULL)
         {
-            elog(NOTICE, "Error occurred while executing PL/pgSQL function %s",
-                 error_info_func->fn_name);
+            if (error_info_func->fn_pack != STANDARDPackageId)
+            {
+                elog(NOTICE,
+                     "Error occurred while executing PL/pgSQL function %s"
+                     " of package %d",
+                     error_info_func->fn_name, error_info_func->fn_pack);
+            }
+            else
+            {
+                elog(NOTICE,
+                     "Error occurred while executing PL/pgSQL function %s",
+                     error_info_func->fn_name);
+            }
             if (error_info_stmt != NULL)
             {
                 char       *stmttype;
@@ -572,9 +753,16 @@
     plpgsql_estate_setup(&estate, func);

     /*
+     * make sure our package is initialized, link in the globals, and
+     *      find out how many globals there are.
+     */
+    globalCount = exec_prep_package(&estate, func->fn_pack, func->fn_lang,
+                                    func);
+
+    /*
      * Make local execution copies of all the datums
      */
-    for (i = 0; i < func->ndatums; i++)
+    for (i = globalCount; i < func->ndatums; i++)
     {
         switch (func->datums[i]->dtype)
         {
@@ -834,6 +1022,73 @@


 /* ----------
+ * exec_init_datum         Initialize one datum
+ * ----------
+ */
+void
+exec_init_datum(PLpgSQL_execstate * estate, PLpgSQL_datum *d)
+{
+    switch (d->dtype)
+    {
+        case PLPGSQL_DTYPE_VAR:
+        {
+            PLpgSQL_var *var = (PLpgSQL_var *) (d);
+
+            if (var->freeval)
+            {
+                if (var->useMalloc)
+                    free((void *)(var->value));
+                else
+                    pfree((void *)(var->value));
+                var->freeval = FALSE;
+            }
+
+            if (!var->isconst || var->isnull)
+            {
+                if (var->default_val == NULL)
+                {
+                    var->value = (Datum) 0;
+                    var->isnull = true;
+                    if (var->notnull)
+                        elog(ERROR,
+                             "variable '%s' declared NOT NULL cannot"
+                             " default to NULL", var->refname);
+                }
+                else
+                {
+                    exec_assign_expr(estate, (PLpgSQL_datum *) var,
+                                     var->default_val);
+                }
+            }
+            break;
+        }
+
+        case PLPGSQL_DTYPE_REC:
+        {
+            PLpgSQL_rec *rec = (PLpgSQL_rec *) (d);
+
+            if (rec->freetup)
+            {
+                heap_freetuple(rec->tup);
+                FreeTupleDesc(rec->tupdesc);
+                rec->freetup = false;
+            }
+
+            rec->tup = NULL;
+            rec->tupdesc = NULL;
+            break;
+        }
+
+        case PLPGSQL_DTYPE_RECFIELD:
+            break;
+
+        default:
+            elog(ERROR, "unknown dtype %d in exec_init_datum()", d->dtype);
+    }
+}
+
+
+/* ----------
  * exec_stmt_block            Execute a block of statements
  * ----------
  */
@@ -850,60 +1105,7 @@
     for (i = 0; i < block->n_initvars; i++)
     {
         n = block->initvarnos[i];
-
-        switch (estate->datums[n]->dtype)
-        {
-            case PLPGSQL_DTYPE_VAR:
-                {
-                    PLpgSQL_var *var = (PLpgSQL_var *) (estate->datums[n]);
-
-                    if (var->freeval)
-                    {
-                        pfree((void *)(var->value));
-                        var->freeval = false;
-                    }
-
-                    if (!var->isconst || var->isnull)
-                    {
-                        if (var->default_val == NULL)
-                        {
-                            var->value = (Datum) 0;
-                            var->isnull = true;
-                            if (var->notnull)
-                                elog(ERROR, "variable '%s' declared NOT NULL cannot default to NULL", var->refname);
-                        }
-                        else
-                        {
-                            exec_assign_expr(estate, (PLpgSQL_datum *) var,
-                                             var->default_val);
-                        }
-                    }
-                }
-                break;
-
-            case PLPGSQL_DTYPE_REC:
-                {
-                    PLpgSQL_rec *rec = (PLpgSQL_rec *) (estate->datums[n]);
-
-                    if (rec->freetup)
-                    {
-                        heap_freetuple(rec->tup);
-                        FreeTupleDesc(rec->tupdesc);
-                        rec->freetup = false;
-                    }
-
-                    rec->tup = NULL;
-                    rec->tupdesc = NULL;
-                }
-                break;
-
-            case PLPGSQL_DTYPE_RECFIELD:
-                break;
-
-            default:
-                elog(ERROR, "unknown dtype %d in exec_stmt_block()", estate->datums[n]->dtype);
-        }
-
+        exec_init_datum(estate, estate->datums[n]);
     }

     /*
@@ -1828,6 +2030,7 @@
     estate->rettupdesc = NULL;
     estate->retisset = func->fn_retset;
     estate->exitlabel = NULL;
+    estate->packId = func->fn_pack;

     estate->trig_nargs = 0;
     estate->trig_argv = NULL;
@@ -1923,9 +2126,10 @@
     /*
      * Generate and save the plan
      */
-    plan = SPI_prepare(expr->query, expr->nparams, argtypes);
+    plan = SPI_pack_prepare(expr->query, estate->packId, expr->nparams,
+                            argtypes);
     if (plan == NULL)
-        elog(ERROR, "SPI_prepare() failed on \"%s\"", expr->query);
+        elog(ERROR, "SPI_pack_prepare() failed on \"%s\"", expr->query);
     expr->plan = SPI_saveplan(plan);
     expr->plan_argtypes = ((_SPI_plan *) expr->plan)->argtypes;
     expr->plan_simple_expr = NULL;
@@ -2232,7 +2436,7 @@
     /*
      * Prepare a plan and open an implicit cursor for the query
      */
-    plan = SPI_prepare(querystr, 0, NULL);
+    plan = SPI_pack_prepare(querystr, estate->packId, 0, NULL);
     if (plan == NULL)
         elog(ERROR, "SPI_prepare() failed for dynamic query \"%s\"", querystr);
     portal = SPI_cursor_open(NULL, plan, NULL, NULL);
@@ -2450,9 +2654,23 @@
          * ----------
          */
         if (curvar->freeval)
-            pfree((void *)(curvar->value));
+        {
+            if (curvar->useMalloc)
+                free((void *)(curvar->value));
+            else
+                pfree((void *)(curvar->value));
+        }

         curvar->value = DirectFunctionCall1(textin, CStringGetDatum(portal->name));
+        if (curvar->useMalloc)
+        {
+            text   *new;
+
+            new = malloc(VARSIZE((text *)curvar->value));
+            memmove(new, (void *)curvar->value, VARSIZE((text *)curvar->value));
+            pfree((void *)curvar->value);
+            curvar->value = PointerGetDatum(new);
+        }
         curvar->isnull = false;
         curvar->freeval = true;

@@ -2574,9 +2792,23 @@
      * ----------
      */
     if (curvar->freeval)
-        pfree((void *)(curvar->value));
+    {
+        if (curvar->useMalloc)
+            free((void *)(curvar->value));
+        else
+            pfree((void *)(curvar->value));
+    }

     curvar->value = DirectFunctionCall1(textin, CStringGetDatum(portal->name));
+    if (curvar->useMalloc)
+    {
+        text   *new;
+
+        new = malloc(VARSIZE((text *)curvar->value));
+        memmove(new, (void *)curvar->value, VARSIZE((text *)curvar->value));
+        pfree((void *)curvar->value);
+        curvar->value = PointerGetDatum(new);
+    }
     curvar->isnull = false;
     curvar->freeval = true;

@@ -2757,8 +2989,11 @@

             if (var->freeval)
             {
-                pfree((void *)(var->value));
-                var->freeval = false;
+                if (var->useMalloc)
+                    free((void *)(var->value));
+                else
+                    pfree((void *)(var->value));
+                var->freeval = FALSE;
             }

             newvalue = exec_cast_value(value, valtype, var->datatype->typoid,
@@ -2778,7 +3013,7 @@
              */
             if (!var->datatype->typbyval && !*isNull)
             {
-                if (newvalue == value)
+                if (newvalue == value || var->useMalloc)
                 {
                     int        len;

@@ -2786,12 +3021,18 @@
                         len = VARSIZE(newvalue);
                     else
                         len = var->datatype->typlen;
-                    var->value = (Datum) palloc(len);
+                    if (var->useMalloc)
+                        var->value = (Datum) malloc(len);
+                    else
+                        var->value = (Datum) palloc(len);
                     memcpy((void *)(var->value), (void *)newvalue, len);
+                    /* if we palloc'd space but should've malloc'd do a pfree */
+                    if (newvalue != value)
+                         pfree((void *)newvalue);
                 }
                 else
                     var->value = newvalue;
-                var->freeval = true;
+                var->freeval = TRUE;
             }
             else
                 var->value = newvalue;
Index: src/pl/plpgsql/src/pl_funcs.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/pl/plpgsql/src/pl_funcs.c,v
retrieving revision 1.16
diff -u -r1.16 pl_funcs.c
--- src/pl/plpgsql/src/pl_funcs.c    2001/10/09 15:59:56    1.16
+++ src/pl/plpgsql/src/pl_funcs.c    2001/10/17 16:42:16
@@ -48,6 +48,12 @@


 /* ----------
+ * Variables for package handling
+ * ----------
+ */
+PLpgSQL_pack *pack_list;
+
+/* ----------
  * Local variables for the namestack handling
  * ----------
  */
@@ -285,13 +291,13 @@
     int            i;

     /*
-     * Lookup in the current namespace only
+     * Lookup in the current namespace only, don't rename package globals
      */

     /*
      * Lookup name in the namestack
      */
-    for (ns = ns_current; ns != NULL; ns = ns->upper)
+    for (ns = ns_current; ns->upper != NULL; ns = ns->upper)
     {
         for (i = 1; i < ns->items_used; i++)
         {
@@ -359,6 +365,217 @@
     return ret;
 }

+/* ----------
+ * plpgsql_packagecontext
+ *                 Find the global variable context for our package
+ * ----------
+ */
+int
+plpgsql_packagecontext(Oid packId, Oid langId, int *datums_alloc)
+{
+    PLpgSQL_pack   *p;
+    int             i,
+                    ret,
+                    proc;
+    char           *ch;
+    PLpgSQL_nsitem *newitem,
+                   *thisOne,
+                  **newitems;
+
+    for(p = pack_list; p; p = p->next)
+        if ((p->ourId == packId) && (p->langId == langId))
+        {
+            /* Set up this package context */
+            p->namespace->upper = ns_current;
+            ns_current = p->namespace;
+
+            while (*datums_alloc < p->varcount)
+            {
+                *datums_alloc *= 2;
+                plpgsql_Datums = repalloc(plpgsql_Datums,
+                                    sizeof(PLpgSQL_datum *) * (*datums_alloc));
+            }
+            if (p->varcount > 0)
+            {
+                memcpy(plpgsql_Datums, p->variables,
+                       sizeof(PLpgSQL_datum *) * p->varcount);
+            }
+
+        return p->varcount;
+    }
+
+    /* ----------
+     * This is the first invocation of a function in this package in
+     *      this backend. So do package init.
+     *
+     * First we make a rather empty entry and put it in the list.
+     *
+     * Then we grab our global variables, and start shoving them into our
+     * new namespace.
+     * ----------
+     */
+
+    p = malloc(sizeof(PLpgSQL_pack));
+
+    p->ourId = packId;
+    p->langId = langId;
+    p->next = pack_list;
+    pack_list = p;
+
+    /* Inline'd plpgsql_ns_push that uses malloc() */
+    p->namespace = malloc(sizeof(PLpgSQL_ns));
+    memset(p->namespace, 0, sizeof(PLpgSQL_ns));
+    p->namespace->upper = ns_current;
+    ns_current = p->namespace;
+
+    plpgsql_nDatums = 0;
+
+    plpgsql_ns_additem(PLPGSQL_NSTYPE_LABEL, 0, NULL);
+
+    ch = palloc(512);
+    snprintf(ch, 512, "select pglobalvname, pglobalvtype from pg_packglobal "
+                       "where pglobalid = %u and pgloballang = %u "
+                       "order by pglobalseq", packId, langId);
+    ret = SPI_exec(ch, 0);
+
+    proc = SPI_processed;
+
+    if ((ret == SPI_OK_SELECT) && (proc > 0))
+    {
+        TupleDesc           tupdesc = SPI_tuptable->tupdesc;
+        SPITupleTable      *tuptable = SPI_tuptable;
+        PLpgSQL_function   *function = palloc(sizeof(PLpgSQL_function));
+        PLpgSQL_dstring    ds;
+
+        plpgsql_dstring_init(&ds);
+        memset(function, 0, sizeof(PLpgSQL_function));
+        plpgsql_curr_compile = function;
+
+        function->fn_pack = packId;
+        function->fn_lang = langId;
+        function->fn_functype = T_GLOBALDECL;
+
+        for (i = 0; i < proc; i++)
+        {
+            HeapTuple tuple = tuptable->vals[i];
+
+            ds.used = 0;
+            ds.value[0] = '\0';
+
+            plpgsql_dstring_append(&ds, SPI_getvalue(tuple, tupdesc, 1));
+            plpgsql_dstring_append(&ds, " ");
+            plpgsql_dstring_append(&ds, SPI_getvalue(tuple, tupdesc, 2));
+            plpgsql_dstring_append(&ds, ";");
+
+            plpgsql_setinput(plpgsql_dstring_get(&ds), T_GLOBALDECL);
+            plpgsql_error_funcname = "Package initialization";
+            plpgsql_error_lineno = 0;
+
+            ret = plpgsql_yyparse();
+            if (ret)
+            {
+                elog(ERROR, "plpgsql: parser returned %d parsing global '%s'",
+                    ret, plpgsql_dstring_get(&ds));
+            }
+            /* ----------
+             * The actual meat of the work was done by yyparse changing the
+             *      namespace.
+             * ----------
+             */
+        }
+        plpgsql_dstring_free(&ds);
+    }
+
+    /* ----------
+     * We just added a lot of things to the namespace using palloc. Redo
+     *      with malloc.
+     *----------
+     */
+    newitems = malloc(sizeof(PLpgSQL_nsitem *) * p->namespace->items_alloc);
+    for (i = 0; i < p->namespace->items_used; i++)
+    {
+        int     j;
+
+        thisOne = p->namespace->items[i];
+
+        j = sizeof(PLpgSQL_nsitem) + strlen(thisOne->name);
+
+        newitem = malloc(j);
+        memcpy(newitem, thisOne, j);
+
+        newitems[i] = newitem;
+    }
+    p->namespace->items = newitems;
+
+    /* ----------
+     * Now finish setting up our state. Will init values and run
+     *      init routine before execing code (but after compiling).
+     * ----------
+     */
+    p->initvarcount = plpgsql_add_initdatums(&p->initvars);
+    p->varcount = plpgsql_nDatums;
+    p->inited = false;
+
+    p->variables = malloc(sizeof(PLpgSQL_datum *) * p->varcount);
+    memcpy(p->variables, plpgsql_Datums, sizeof(PLpgSQL_datum *) * p->varcount);
+
+    /* ----------
+     *  Fix up the data items so that they too aren't using palloc
+     * ----------
+     */
+    for (i = 0; i < p->varcount; i++)
+    {
+        PLpgSQL_datum  *it = p->variables[i];
+
+        it->dUseMalloc = true;
+        switch (it->dtype)
+        {
+            case PLPGSQL_DTYPE_VAR:
+                break;  /* everything aloocated to here is malloc'd */
+
+            case PLPGSQL_DTYPE_REC:
+                break;  /* Don't know what to do yet */
+
+            case PLPGSQL_DTYPE_ROW:
+                /* Probably want to play with fieldnames & varnos */
+                {
+                    void           *new;
+                    PLpgSQL_row    *theRow = (PLpgSQL_row *)it;
+
+                    new = malloc(1024 * sizeof(char *));
+                    memcpy(new, theRow->fieldnames,
+                                sizeof(char *) * theRow->nfields);
+                    pfree(theRow->fieldnames);
+                    theRow->fieldnames = new;
+
+                    new = malloc(1024 * sizeof(int));
+                    memcpy(new, theRow->varnos,
+                                sizeof(int) * theRow->nfields);
+                    pfree(theRow->varnos);
+                    theRow->varnos = new;
+                }
+                break;
+
+
+            case PLPGSQL_DTYPE_RECFIELD:
+                break;  /* looks fine */
+
+            default:
+                break;
+        }
+    }
+
+    return plpgsql_nDatums;
+}
+
+/*
+ * Undo the implicit push done above
+ */
+void
+plpgsql_pack_pop(void)
+{
+    ns_current = ns_current->upper;
+}



Index: src/pl/plpgsql/src/plpgsql.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/pl/plpgsql/src/plpgsql.h,v
retrieving revision 1.19
diff -u -r1.19 plpgsql.h
--- src/pl/plpgsql/src/plpgsql.h    2001/10/09 15:59:56    1.19
+++ src/pl/plpgsql/src/plpgsql.h    2001/10/17 16:42:18
@@ -152,6 +152,7 @@
 {                                /* Generic datum array item        */
     int            dtype;
     int            dno;
+    bool        dUseMalloc;        /* don't palloc, use malloc */
 }            PLpgSQL_datum;


@@ -159,6 +160,7 @@
 {                                /* SQL Query to plan and execute    */
     int            dtype;
     int            exprno;
+    bool        useMalloc;
     char       *query;
     void       *plan;
     Node       *plan_simple_expr;
@@ -173,6 +175,7 @@
 {                                /* Local variable            */
     int            dtype;
     int            varno;
+    bool        useMalloc;
     char       *refname;
     int            lineno;

@@ -193,6 +196,7 @@
 {                                /* Rowtype                */
     int            dtype;
     int            rowno;
+    bool        useMalloc;
     char       *refname;
     int            lineno;
     Oid            rowtypeclass;
@@ -207,6 +211,7 @@
 {                                /* Record of undefined structure    */
     int            dtype;
     int            recno;
+    bool        useMalloc;
     char       *refname;
     int            lineno;

@@ -221,6 +226,7 @@
 {                                /* Field in record            */
     int            dtype;
     int            rfno;
+    bool        useMalloc;
     char       *fieldname;
     int            recno;
 }            PLpgSQL_recfield;
@@ -230,6 +236,7 @@
 {                                /* Positional argument to trigger    */
     int            dtype;
     int            dno;
+    bool        useMalloc;
     PLpgSQL_expr *argnum;
 }            PLpgSQL_trigarg;

@@ -238,6 +245,7 @@
 {                                /* Item in the compilers namestack    */
     int            itemtype;
     int            itemno;
+    bool        useMalloc;
     char        name[1];
 }            PLpgSQL_nsitem;

@@ -250,6 +258,18 @@
     struct PLpgSQL_ns *upper;
 }            PLpgSQL_ns;

+typedef struct PLpgSQL_pack
+{                                /* Package context */
+    struct PLpgSQL_pack       *next;
+    struct PLpgSQL_ns       *namespace;
+    PLpgSQL_datum          **variables;
+    int                       *initvars;
+    Oid                        ourId;
+    Oid                        langId;
+    int                        varcount;
+    int                        initvarcount;
+    bool                    inited;
+}            PLpgSQL_pack;

 typedef struct
 {                                /* List of execution nodes        */
@@ -455,8 +475,10 @@

 typedef struct PLpgSQL_function
 {                                /* Complete compiled function      */
-    char       *fn_name;
     Oid            fn_oid;
+    Oid            fn_pack;
+    Oid            fn_lang;
+    char       *fn_name;
     TransactionId fn_xmin;
     CommandId    fn_cmin;
     int            fn_functype;
@@ -503,6 +525,7 @@
     int            trig_nargs;
     Datum       *trig_argv;

+    Oid            packId;
     int            found_varno;
     int            ndatums;
     PLpgSQL_datum **datums;
@@ -527,6 +550,9 @@
 extern int    plpgsql_error_lineno;
 extern char *plpgsql_error_funcname;

+extern PLpgSQL_function *plpgsql_curr_compile;
+
+extern PLpgSQL_pack *pack_list;
 /* linkage to the real yytext and yylineno variables */
 extern char *plpgsql_base_yytext;
 #define plpgsql_yytext plpgsql_base_yytext
@@ -598,6 +624,8 @@
  */
 extern void plpgsql_dumptree(PLpgSQL_function * func);
 extern char *plpgsql_tolower(char *s);
+extern int plpgsql_packagecontext(Oid packId, Oid langId, int *datums_alloc);
+extern void plpgsql_pack_pop(void);

 /* ----------
  * Externs in gram.y and scan.l
Index: src/test/regress/expected/errors.out
===================================================================
RCS file: /projects/cvsroot/pgsql/src/test/regress/expected/errors.out,v
retrieving revision 1.27
diff -u -r1.27 errors.out
--- src/test/regress/expected/errors.out    2001/10/03 20:54:22    1.27
+++ src/test/regress/expected/errors.out    2001/10/17 16:42:21
@@ -105,7 +105,7 @@
               stype = int4,
               finalfunc = int2um,
               initcond = '0');
-ERROR:  AggregateCreate: function 'int2um(int4)' does not exist
+ERROR:  AggregateCreate: Function 'int2um'('int4') does not exist
 -- left out basetype
 create aggregate newcnt1 (sfunc = int4inc,
               stype = int4,
Index: src/test/regress/expected/sanity_check.out
===================================================================
RCS file: /projects/cvsroot/pgsql/src/test/regress/expected/sanity_check.out,v
retrieving revision 1.16
diff -u -r1.16 sanity_check.out
--- src/test/regress/expected/sanity_check.out    2001/08/27 23:23:34    1.16
+++ src/test/regress/expected/sanity_check.out    2001/10/17 16:42:21
@@ -47,6 +47,8 @@
  pg_largeobject      | t
  pg_opclass          | t
  pg_operator         | t
+ pg_package          | t
+ pg_packglobal       | t
  pg_proc             | t
  pg_relcheck         | t
  pg_rewrite          | t
@@ -59,5 +61,5 @@
  shighway            | t
  tenk1               | t
  tenk2               | t
-(49 rows)
+(51 rows)



pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Ant configuration
Next
From: Stephen Robert Norris
Date:
Subject: Patch to fix memory leak in fetch in Python interface.