Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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)



pgsql-patches by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group