Packages patch

From: Bill Studenmund <wrstuden(at)netbsd(dot)org>
To: <pgsql-patches(at)postgresql(dot)org>
Subject: Packages patch
Date: 2001-10-16 13:24:28
Message-ID: Pine.NEB.4.33.0110160621260.1551-100000@vespasia.home-net.internetconnect.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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, aggbasetype oid_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, oprright oid_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, pglobalseq int4_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, proargtypes oidvector_ops));
+DECLARE_UNIQUE_INDEX(pg_proc_proname_pack_narg_type_index on pg_proc using btree(proname name_ops, propack oid_ops, pronargs int2_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 positionsel positionjoinsel ));
+DATA(insert OID = 1508 ( "&>" 10 PGUID 0 b t f 718 718 16 0 0 0 0 circle_overright positionsel positionjoinsel ));
+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_description where 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 from pg_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_description where 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 from pg_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_description where 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_description where 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 timestamp without 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 timestamp without 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 as timestamp 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($2 as 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 timestamp with 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 as timestamp 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(dot)Mergl(at)bawue(dot)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_date as 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_date as 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 nameout i 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 int2vectorin int2vectorout i p _null_ ));
+DATA(insert OID = 22 ( int2vector 10 PGUID INDEX_MAX_KEYS*2 -1 f b t \054 0 21 int2vectorin int2vectorout int2vectorin int2vectorout 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 oidvectorout i p _null_ ));
+DATA(insert OID = 30 ( oidvector 10 PGUID INDEX_MAX_KEYS*4 -1 f b t \054 0 26 oidvectorin oidvectorout oidvectorin oidvectorout 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 i p _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_out d p _null_ ));
+DATA(insert OID = 1114 ( timestamp 10 PGUID 8 47 f b t \054 0 0 timestamp_in timestamp_out timestamp_in timestamp_out d 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_out d 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_out d 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 d p _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_out d 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)

Browse pgsql-patches by date

  From Date Subject
Next Message Bruce Momjian 2001-10-16 13:42:51 Re: PyGreSQL v3.2 doesn't support INT8 types
Previous Message Bruce Momjian 2001-10-16 13:01:09 Re: FW: [HACKERS] Problem on AIX with current