Packages patch - Mailing list pgsql-patches
From | Bill Studenmund |
---|---|
Subject | Packages patch |
Date | |
Msg-id | Pine.NEB.4.33.0110160621260.1551-100000@vespasia.home-net.internetconnect.net Whole thread Raw |
List | pgsql-patches |
Below please find the current version of the packages patch. It is relative to the head as of 9 AM PDT October 17. Please let me know if pine messes up the diffs; I'll resend them as an attachment if needed. Take care, Bill Index: src/backend/access/common/tupdesc.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/access/common/tupdesc.c,v retrieving revision 1.75 diff -u -r1.75 tupdesc.c --- src/backend/access/common/tupdesc.c 2001/06/25 21:11:43 1.75 +++ src/backend/access/common/tupdesc.c 2001/10/17 16:41:05 @@ -502,7 +502,7 @@ Form_pg_attribute att; att = desc->attrs[attnum - 1]; - att->atttypid = TypeShellMake(relname); + att->atttypid = TypeShellMake(relname, STANDARDPackageId); att->attlen = sizeof(Oid); att->attbyval = true; att->attalign = 'i'; Index: src/backend/catalog/Makefile =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/catalog/Makefile,v retrieving revision 1.37 diff -u -r1.37 Makefile --- src/backend/catalog/Makefile 2001/08/25 18:52:41 1.37 +++ src/backend/catalog/Makefile 2001/10/17 16:41:06 @@ -11,8 +11,8 @@ include $(top_builddir)/src/Makefile.global OBJS = catalog.o heap.o index.o indexing.o aclchk.o \ - pg_aggregate.o pg_largeobject.o pg_operator.o pg_proc.o \ - pg_type.o + pg_aggregate.o pg_largeobject.o pg_operator.o pg_package.o \ + pg_packglobal.o pg_proc.o pg_type.o BKIFILES = postgres.bki postgres.description @@ -31,7 +31,8 @@ pg_operator.h pg_opclass.h pg_am.h pg_amop.h pg_amproc.h \ pg_language.h pg_largeobject.h pg_aggregate.h pg_statistic.h \ pg_rewrite.h pg_trigger.h pg_listener.h pg_description.h \ - pg_database.h pg_shadow.h pg_group.h indexing.h \ + pg_database.h pg_shadow.h pg_group.h \ + pg_package.h pg_packglobal.h indexing.h \ ) pg_includes := $(sort -I$(top_srcdir)/src/include -I$(top_builddir)/src/include) Index: src/backend/catalog/aclchk.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/catalog/aclchk.c,v retrieving revision 1.51 diff -u -r1.51 aclchk.c --- src/backend/catalog/aclchk.c 2001/06/18 16:13:21 1.51 +++ src/backend/catalog/aclchk.c 2001/10/17 16:41:06 @@ -24,6 +24,7 @@ #include "catalog/pg_aggregate.h" #include "catalog/pg_group.h" #include "catalog/pg_operator.h" +#include "catalog/pg_package.h" #include "catalog/pg_proc.h" #include "catalog/pg_shadow.h" #include "catalog/pg_type.h" @@ -542,9 +543,19 @@ ReleaseSysCache(tuple); /* caution: usename is inaccessible beyond this point... */ - tuple = SearchSysCache(cacheid, - PointerGetDatum(name), - 0, 0, 0); + if (cacheid == PROCNAME) + { + tuple = SearchSysCache(cacheid, + PointerGetDatum(name), + ObjectIdGetDatum(STANDARDPackageId), + 0, 0); + } + else + { + tuple = SearchSysCache(cacheid, + PointerGetDatum(name), + 0, 0, 0); + } switch (cacheid) { case RELNAME: @@ -620,6 +631,8 @@ /* * Ownership check for a function (specified by name and argument types). + * + * Applies to functions in the STANDARD package. */ bool pg_func_ownercheck(Oid userid, @@ -657,11 +670,12 @@ tuple = SearchSysCache(PROCNAME, PointerGetDatum(funcname), + ObjectIdGetDatum(STANDARDPackageId), Int32GetDatum(nargs), - PointerGetDatum(arglist), - 0); + PointerGetDatum(arglist)); if (!HeapTupleIsValid(tuple)) - func_error("pg_func_ownercheck", funcname, nargs, arglist, NULL); + func_error("pg_func_ownercheck", funcname, STANDARDPackageId, 0, + nargs, arglist, NULL); owner_id = ((Form_pg_proc) GETSTRUCT(tuple))->proowner; @@ -671,8 +685,58 @@ } /* + * Ownership check for a package. (specified by name). + */ +bool +pg_pack_ownercheck(Oid userid, + char *packname) +{ + HeapTuple tuple; + AclId owner_id; + char *usename; + + tuple = SearchSysCache(SHADOWSYSID, + PointerGetDatum(userid), + 0, 0, 0); + if (!HeapTupleIsValid(tuple)) + elog(ERROR, "pg_pack_ownercheck: invalid user id %u", + (unsigned) userid); + usename = NameStr(((Form_pg_shadow) GETSTRUCT(tuple))->usename); + + /* + * Superusers bypass all permission-checking. + */ + if (((Form_pg_shadow) GETSTRUCT(tuple))->usesuper) + { +#ifdef ACLDEBUG + elog(DEBUG, "pg_pack_ownercheck: user \"%s\" is superuser", + usename); +#endif + ReleaseSysCache(tuple); + return true; + } + + ReleaseSysCache(tuple); + /* caution: usename is inaccessible beyond this point... */ + + tuple = SearchSysCache(PACKAGENAME, + PointerGetDatum(packname), + 0, 0, 0); + if (!HeapTupleIsValid(tuple)) + elog(ERROR, "pg_pack_ownercheck: package \"%s\" not found", packname); + + owner_id = ((Form_pg_package) GETSTRUCT(tuple))->packowner; + + ReleaseSysCache(tuple); + + return userid == owner_id; +} + +/* * Ownership check for an aggregate function (specified by name and * argument type). + * + * Applies to aggregates in the STANDARD package. */ bool pg_aggr_ownercheck(Oid userid, @@ -709,8 +773,9 @@ tuple = SearchSysCache(AGGNAME, PointerGetDatum(aggname), + ObjectIdGetDatum(STANDARDPackageId), ObjectIdGetDatum(basetypeID), - 0, 0); + 0); if (!HeapTupleIsValid(tuple)) agg_error("pg_aggr_ownercheck", aggname, basetypeID); Index: src/backend/catalog/heap.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/catalog/heap.c,v retrieving revision 1.177 diff -u -r1.177 heap.c --- src/backend/catalog/heap.c 2001/10/06 23:21:43 1.177 +++ src/backend/catalog/heap.c 2001/10/17 16:41:08 @@ -657,6 +657,21 @@ static void AddNewRelationType(char *typeName, Oid new_rel_oid, Oid new_type_oid) { + DefElem *inputName; + DefElem *outputName; + + inputName = makeNode(DefElem); + inputName->defname = ""; + inputName->arg = (Node *)makeString("oidin"); + inputName->package = STANDARDPackageId; + inputName->packexact = true; + + outputName = makeNode(DefElem); + outputName->defname = ""; + outputName->arg = (Node *)makeString("oidout"); + outputName->package = STANDARDPackageId; + outputName->packexact = true; + /* * The sizes are set to oid size because it makes implementing sets * MUCH easier, and no one (we hope) uses these fields to figure out @@ -667,16 +682,17 @@ * true makes sets much easier, and it isn't used by anything else. */ TypeCreate(typeName, /* type name */ + STANDARDPackageId, /* containing package */ new_type_oid, /* preassigned oid for type */ new_rel_oid, /* relation oid */ sizeof(Oid), /* internal size */ -1, /* external size */ 'c', /* type-type (catalog) */ ',', /* default array delimiter */ - "oidin", /* input procedure */ - "oidout", /* output procedure */ - "oidin", /* receive procedure */ - "oidout", /* send procedure */ + inputName, /* input procedure */ + outputName, /* output procedure */ + inputName, /* receive procedure */ + outputName, /* send procedure */ NULL, /* array element type - irrelevant */ NULL, /* default type value - none */ true, /* passed by value */ Index: src/backend/catalog/indexing.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/catalog/indexing.c,v retrieving revision 1.82 diff -u -r1.82 indexing.c --- src/backend/catalog/indexing.c 2001/08/21 16:36:01 1.82 +++ src/backend/catalog/indexing.c 2001/10/17 16:41:08 @@ -32,7 +32,7 @@ */ char *Name_pg_aggregate_indices[Num_pg_aggregate_indices] = -{AggregateNameTypeIndex, AggregateOidIndex}; +{AggregateNamePackTypeIndex, AggregateOidIndex}; char *Name_pg_am_indices[Num_pg_am_indices] = {AmNameIndex, AmOidIndex}; char *Name_pg_amop_indices[Num_pg_amop_indices] = @@ -61,6 +61,10 @@ {OpclassAmNameIndex, OpclassOidIndex}; char *Name_pg_operator_indices[Num_pg_operator_indices] = {OperatorOidIndex, OperatorNameIndex}; +char *Name_pg_package_indices[Num_pg_package_indices] = +{PackageOidIndex, PackageNameIndex}; +char *Name_pg_packglobal_indices[Num_pg_packglobal_indices] = +{PackageGlobalIndex}; char *Name_pg_proc_indices[Num_pg_proc_indices] = {ProcedureOidIndex, ProcedureNameIndex}; char *Name_pg_relcheck_indices[Num_pg_relcheck_indices] = Index: src/backend/catalog/pg_aggregate.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/catalog/pg_aggregate.c,v retrieving revision 1.39 diff -u -r1.39 pg_aggregate.c --- src/backend/catalog/pg_aggregate.c 2001/08/10 15:49:39 1.39 +++ src/backend/catalog/pg_aggregate.c 2001/10/17 16:41:08 @@ -46,8 +46,9 @@ */ void AggregateCreate(char *aggName, - char *aggtransfnName, - char *aggfinalfnName, + Oid packId, + struct DefElem *aggtransfnName, + struct DefElem *aggfinalfnName, char *aggbasetypeName, char *aggtranstypeName, char *agginitval) @@ -67,6 +68,7 @@ NameData aname; TupleDesc tupDesc; int i; + char *p; MemSet(fnArgs, 0, FUNC_MAX_ARGS * sizeof(Oid)); @@ -96,8 +98,9 @@ /* make sure there is no existing agg of same name and base type */ if (SearchSysCacheExists(AGGNAME, PointerGetDatum(aggName), + ObjectIdGetDatum(packId), ObjectIdGetDatum(basetype), - 0, 0)) + 0)) elog(ERROR, "aggregate function \"%s\" with base type %s already exists", aggName, aggbasetypeName); @@ -116,22 +119,21 @@ { fnArgs[1] = basetype; nargs = 2; + p = aggbasetypeName; } else + { nargs = 1; - tup = SearchSysCache(PROCNAME, - PointerGetDatum(aggtransfnName), - Int32GetDatum(nargs), - PointerGetDatum(fnArgs), - 0); - if (!HeapTupleIsValid(tup)) - func_error("AggregateCreate", aggtransfnName, nargs, fnArgs, NULL); + p = NULL; + } + tup = GetFuncFromDefElem(aggtransfnName, nargs, fnArgs, "AggregateCreate", + aggtranstypeName, p); transfn = tup->t_data->t_oid; Assert(OidIsValid(transfn)); proc = (Form_pg_proc) GETSTRUCT(tup); if (proc->prorettype != transtype) elog(ERROR, "return type of transition function %s is not %s", - aggtransfnName, aggtranstypeName); + ((TypeName *)aggtransfnName->arg)->name, aggtranstypeName); /* * If the transfn is strict and the initval is NULL, make sure input @@ -152,13 +154,8 @@ { fnArgs[0] = transtype; fnArgs[1] = 0; - tup = SearchSysCache(PROCNAME, - PointerGetDatum(aggfinalfnName), - Int32GetDatum(1), - PointerGetDatum(fnArgs), - 0); - if (!HeapTupleIsValid(tup)) - func_error("AggregateCreate", aggfinalfnName, 1, fnArgs, NULL); + tup = GetFuncFromDefElem(aggfinalfnName, 1, fnArgs, + "AggregateCreate", aggtranstypeName, NULL); finalfn = tup->t_data->t_oid; Assert(OidIsValid(finalfn)); proc = (Form_pg_proc) GETSTRUCT(tup); @@ -183,6 +180,7 @@ } namestrcpy(&aname, aggName); values[Anum_pg_aggregate_aggname - 1] = NameGetDatum(&aname); + values[Anum_pg_aggregate_aggpack - 1] = ObjectIdGetDatum(packId); values[Anum_pg_aggregate_aggowner - 1] = Int32GetDatum(GetUserId()); values[Anum_pg_aggregate_aggtransfn - 1] = ObjectIdGetDatum(transfn); values[Anum_pg_aggregate_aggfinalfn - 1] = ObjectIdGetDatum(finalfn); @@ -218,7 +216,7 @@ } Datum -AggNameGetInitVal(char *aggName, Oid basetype, bool *isNull) +AggIdGetInitVal(Oid aggId, bool *isNull) { HeapTuple tup; Oid transtype, @@ -228,16 +226,14 @@ char *strInitVal; Datum initVal; - Assert(PointerIsValid(aggName)); Assert(PointerIsValid(isNull)); - tup = SearchSysCache(AGGNAME, - PointerGetDatum(aggName), - ObjectIdGetDatum(basetype), - 0, 0); + tup = SearchSysCache(AGGOID, + ObjectIdGetDatum(aggId), + 0, 0, 0); if (!HeapTupleIsValid(tup)) - elog(ERROR, "AggNameGetInitVal: cache lookup failed for aggregate '%s'", - aggName); + elog(ERROR, "AggIdGetInitVal: cache lookup failed for aggregate '%u'", + aggId); transtype = ((Form_pg_aggregate) GETSTRUCT(tup))->aggtranstype; /* @@ -261,7 +257,7 @@ ObjectIdGetDatum(transtype), 0, 0, 0); if (!HeapTupleIsValid(tup)) - elog(ERROR, "AggNameGetInitVal: cache lookup failed on aggregate transition function return type %u", transtype); + elog(ERROR, "AggIdGetInitVal: cache lookup failed on aggregate transition function return type %u", transtype); typinput = ((Form_pg_type) GETSTRUCT(tup))->typinput; typelem = ((Form_pg_type) GETSTRUCT(tup))->typelem; Index: src/backend/catalog/pg_operator.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/catalog/pg_operator.c,v retrieving revision 1.61 diff -u -r1.61 pg_operator.c --- src/backend/catalog/pg_operator.c 2001/08/10 15:49:39 1.61 +++ src/backend/catalog/pg_operator.c 2001/10/17 16:41:09 @@ -43,23 +43,26 @@ static Oid OperatorShellMakeWithOpenRelation(Relation pg_operator_desc, char *operatorName, + Oid packId, Oid leftObjectId, Oid rightObjectId); static Oid OperatorShellMake(char *operatorName, + Oid packId, char *leftTypeName, char *rightTypeName); static void OperatorDef(char *operatorName, + Oid packId, char *leftTypeName, char *rightTypeName, - char *procedureName, + struct DefElem *procedureName, uint16 precedence, bool isLeftAssociative, char *commutatorName, char *negatorName, - char *restrictionName, - char *oinName, + struct DefElem *restrictionName, + struct DefElem *joinName, bool canHash, char *leftSortName, char *rightSortName); @@ -222,6 +225,7 @@ static Oid OperatorShellMakeWithOpenRelation(Relation pg_operator_desc, char *operatorName, + Oid packId, Oid leftObjectId, Oid rightObjectId) { @@ -249,6 +253,7 @@ i = 0; namestrcpy(&oname, operatorName); values[i++] = NameGetDatum(&oname); + values[i++] = ObjectIdGetDatum(packId); values[i++] = Int32GetDatum(GetUserId()); values[i++] = UInt16GetDatum(0); values[i++] = CharGetDatum('b'); /* assume it's binary */ @@ -308,6 +313,7 @@ */ static Oid OperatorShellMake(char *operatorName, + Oid packId, char *leftTypeName, char *rightTypeName) { @@ -343,6 +349,7 @@ */ operatorObjectId = OperatorShellMakeWithOpenRelation(pg_operator_desc, operatorName, + packId, leftObjectId, rightObjectId); @@ -418,6 +425,7 @@ * -------------------------------- * "X" indicates an optional argument (i.e. one that can be NULL) * operatorName; -- operator name + * packId; -- containing package * leftTypeName; -- X left type name * rightTypeName; -- X right type name * procedureName; -- procedure name for operator code @@ -433,15 +441,16 @@ */ static void OperatorDef(char *operatorName, + Oid packId, char *leftTypeName, char *rightTypeName, - char *procedureName, + struct DefElem *procedureName, uint16 precedence, bool isLeftAssociative, char *commutatorName, char *negatorName, - char *restrictionName, - char *joinName, + struct DefElem *restrictionName, + struct DefElem *joinName, bool canHash, char *leftSortName, char *rightSortName) @@ -469,6 +478,7 @@ NameData oname; TupleDesc tupDesc; ScanKeyData opKey[3]; + char *typenames[2]; operatorObjectId = OperatorGet(operatorName, leftTypeName, @@ -524,29 +534,29 @@ * created so we don't have to worry about deleting them later. */ MemSet(typeId, 0, FUNC_MAX_ARGS * sizeof(Oid)); + typenames[1] = NULL; if (!leftTypeName) { typeId[0] = rightTypeId; + typenames[0] = rightTypeName; nargs = 1; } else if (!rightTypeName) { typeId[0] = leftTypeId; + typenames[0] = leftTypeName; nargs = 1; } else { typeId[0] = leftTypeId; typeId[1] = rightTypeId; + typenames[0] = leftTypeName; + typenames[1] = rightTypeName; nargs = 2; } - tup = SearchSysCache(PROCNAME, - PointerGetDatum(procedureName), - Int32GetDatum(nargs), - PointerGetDatum(typeId), - 0); - if (!HeapTupleIsValid(tup)) - func_error("OperatorDef", procedureName, nargs, typeId, NULL); + tup = GetFuncFromDefElem(procedureName, nargs, typeId, "OperatorDef", + typenames[0], typenames[1]); values[Anum_pg_operator_oprcode - 1] = ObjectIdGetDatum(tup->t_data->t_oid); values[Anum_pg_operator_oprresult - 1] = ObjectIdGetDatum(((Form_pg_proc) @@ -567,15 +577,12 @@ typeId[2] = 0; /* args list (opaque type) */ typeId[3] = INT4OID; /* varRelid */ - restOid = GetSysCacheOid(PROCNAME, - PointerGetDatum(restrictionName), - Int32GetDatum(4), - PointerGetDatum(typeId), - 0); - if (!OidIsValid(restOid)) - func_error("OperatorDef", restrictionName, 4, typeId, NULL); + tup = GetFuncFromDefElem(restrictionName, 4, typeId, "OperatorDef", + "restriction function parameters", NULL); + restOid = tup->t_data->t_oid; values[Anum_pg_operator_oprrest - 1] = ObjectIdGetDatum(restOid); + ReleaseSysCache(tup); } else values[Anum_pg_operator_oprrest - 1] = ObjectIdGetDatum(InvalidOid); @@ -592,15 +599,12 @@ typeId[1] = OIDOID; /* operator OID */ typeId[2] = 0; /* args list (opaque type) */ - joinOid = GetSysCacheOid(PROCNAME, - PointerGetDatum(joinName), - Int32GetDatum(3), - PointerGetDatum(typeId), - 0); - if (!OidIsValid(joinOid)) - func_error("OperatorDef", joinName, 3, typeId, NULL); + tup = GetFuncFromDefElem(joinName, 3, typeId, "OperatorDef", + "join function parameters", NULL); + joinOid = tup->t_data->t_oid; values[Anum_pg_operator_oprjoin - 1] = ObjectIdGetDatum(joinOid); + ReleaseSysCache(tup); } else values[Anum_pg_operator_oprjoin - 1] = ObjectIdGetDatum(InvalidOid); @@ -611,6 +615,7 @@ i = 0; namestrcpy(&oname, operatorName); values[i++] = NameGetDatum(&oname); + values[i++] = ObjectIdGetDatum(packId); values[i++] = Int32GetDatum(GetUserId()); values[i++] = UInt16GetDatum(precedence); values[i++] = CharGetDatum(leftTypeName ? (rightTypeName ? 'b' : 'r') : 'l'); @@ -700,6 +705,7 @@ { /* not in catalogs, different from operator */ other_oid = OperatorShellMake(name[j], + packId, otherLeftTypeName, otherRightTypeName); if (!OidIsValid(other_oid)) @@ -994,6 +1000,7 @@ * * "X" indicates an optional argument (i.e. one that can be NULL) * operatorName; -- operator name + * packId; -- owning package * leftTypeName; -- X left type name * rightTypeName; -- X right type name * procedureName; -- procedure for operator @@ -1009,15 +1016,16 @@ */ void OperatorCreate(char *operatorName, + Oid packId, char *leftTypeName, char *rightTypeName, - char *procedureName, + struct DefElem *procedureName, uint16 precedence, bool isLeftAssociative, char *commutatorName, char *negatorName, - char *restrictionName, - char *joinName, + struct DefElem *restrictionName, + struct DefElem *joinName, bool canHash, char *leftSortName, char *rightSortName) @@ -1044,6 +1052,7 @@ * already exist. */ OperatorDef(operatorName, + packId, leftTypeName, rightTypeName, procedureName, Index: src/backend/catalog/pg_package.c =================================================================== RCS file: pg_package.c diff -N pg_package.c --- /dev/null Wed Oct 17 08:50:28 2001 +++ pg_package.c Wed Oct 17 11:41:09 2001 @@ -0,0 +1,170 @@ +/*------------------------------------------------------------------------- + * + * pg_package.c + * routines to support manipulation of the pg_package relation + * + * Portions Copyright (c) 1996-2000, PostgreSQL, Inc + * Portions Copyright (c) 1994, Regents of the University of California + * + * + * IDENTIFICATION + * $Header: /home/projects/pgsql/cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.42 2000/04/12 17:14:56 momjian Exp$ + * + *------------------------------------------------------------------------- + */ +#include "postgres.h" + +#include "access/heapam.h" +#include "catalog/catname.h" +#include "catalog/indexing.h" +#include "catalog/pg_package.h" +#include "miscadmin.h" +#include "optimizer/planner.h" +#include "parser/parse_type.h" +#include "tcop/tcopprot.h" +#include "utils/builtins.h" +#include "utils/fmgrtab.h" +#include "utils/lsyscache.h" +#include "utils/sets.h" +#include "utils/syscache.h" + + +/* ---------------------------------------------------------------- + * PackageCreate + * ---------------------------------------------------------------- + * + * We are passed in the name of the package under test, and if we are + * part of an, "OR REPLACE" clause. + */ +void +PackageCreate(char *packageName, int orreplace) +{ + int i, alreadyexists = 0; + Relation rel; + HeapTuple tup; + char nulls[Natts_pg_package]; + Datum values[Natts_pg_package]; + NameData packname; + TupleDesc tupDesc; + + /* ---------------- + * See if a relation (table, sequence, index) of the same name + * already exists + * ---------------- + */ + + rel = heap_openr(RelationRelationName, RowExclusiveLock); + tup = SearchSysCache(RELNAME, + PointerGetDatum(packageName), + 0, 0, 0); + + if (HeapTupleIsValid(tup)) + { + heap_close(rel, RowExclusiveLock); + elog(ERROR, "Relation named %s already exists", packageName); + } + heap_close(rel, RowExclusiveLock); + + /* ---------------- + * See if the package already exists + * ---------------- + */ + + rel = heap_openr(PackageRelationName, RowExclusiveLock); + tup = SearchSysCache(PACKAGENAME, + PointerGetDatum(packageName), + 0, 0, 0); + + if (HeapTupleIsValid(tup)) + { + if (orreplace == 0) + { + heap_close(rel, RowExclusiveLock); + elog(ERROR, "Package %s already exists and 'OR REPLACE'" + " not specified", packageName); + } + alreadyexists = 1; + } + + /* + * Make sure we can create/update packages + */ + + if (alreadyexists) + { + ReleaseSysCache(tup); + heap_close(rel, RowExclusiveLock); + return; + } + + /* + * All seems OK; prepare the tuple to be inserted into pg_package. + */ + + for (i = 0; i < Natts_pg_package; ++i) + { + nulls[i] = ' '; + values[i] = (Datum) NULL; + } + + i = 0; + namestrcpy(&packname, packageName); + values[i++] = NameGetDatum(&packname); + values[i++] = Int32GetDatum(GetUserId()); + + tupDesc = rel->rd_att; + tup = heap_formtuple(tupDesc, + values, + nulls); + + heap_insert(rel, tup); + + if (RelationGetForm(rel)->relhasindex) + { + Relation idescs[Num_pg_package_indices]; + + CatalogOpenIndices(Num_pg_package_indices, Name_pg_package_indices, idescs); + CatalogIndexInsert(idescs, Num_pg_package_indices, rel, tup); + CatalogCloseIndices(Num_pg_package_indices, idescs); + } + heap_close(rel, RowExclusiveLock); + CommandCounterIncrement(); + return; +} + +/* + * PackageNameFromID + * Get a package's name from its ID + * + * Return 0 if found, and store the name in name. Return 1 if not found. + */ +int +PackageNameFromID(Oid packID, Name name) +{ + HeapTuple tuple; + + tuple = SearchSysCache(PACKAGEOID, + ObjectIdGetDatum(packID), + 0, 0, 0); + if (!HeapTupleIsValid(tuple)) + return 1; + + namecpy(name, &(((Form_pg_package) GETSTRUCT(tuple))->packname)); + + ReleaseSysCache(tuple); + + return 0; +} + +/* + * PackageIdFromName + * Get a package's Oid from its name. Return 0 if not found. + */ +Oid +PackageIdFromName(char *packname) +{ + + return GetSysCacheOid(PACKAGENAME, + PointerGetDatum(packname), + 0, 0, 0); +} Index: src/backend/catalog/pg_packglobal.c =================================================================== RCS file: pg_packglobal.c diff -N pg_packglobal.c --- /dev/null Wed Oct 17 08:50:28 2001 +++ pg_packglobal.c Wed Oct 17 11:41:09 2001 @@ -0,0 +1,102 @@ +/*------------------------------------------------------------------------- + * + * pg_packglobal.c + * routines to support manipulation of the pg_packglobal relation + * + * Portions Copyright (c) 1996-2000, PostgreSQL, Inc + * Portions Copyright (c) 1994, Regents of the University of California + * + * + * IDENTIFICATION + * $Header: /home/projects/pgsql/cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.42 2000/04/12 17:14:56 momjian Exp$ + * + *------------------------------------------------------------------------- + */ +#include "postgres.h" + +#include "access/heapam.h" +#include "catalog/catname.h" +#include "catalog/indexing.h" +#include "catalog/pg_packglobal.h" +#include "miscadmin.h" +#include "parser/parse_type.h" +#include "utils/builtins.h" +#include "utils/syscache.h" + + +/* ---------------------------------------------------------------- + * PackageGlobalCreate + * ---------------------------------------------------------------- + * + * We are passed in the name of the package under test, and if we are + * part of an, "OR REPLACE" clause. + */ +void +PackageGlobalCreate(Oid packId, Oid langId, int4 seqno, char *vname, + char *vtype) +{ + int i; + Relation rel; + HeapTuple tup; + char nulls[Natts_pg_packglobal]; + char replaces[Natts_pg_packglobal]; + Datum values[Natts_pg_packglobal]; + NameData vName; + TupleDesc tupDesc; + + for (i = 0; i < Natts_pg_packglobal; ++i) + { + nulls[i] = ' '; + replaces[i] = 'r'; + values[i] = (Datum) NULL; + } + + i = 0; + namestrcpy(&vName, vname); + values[i++] = ObjectIdGetDatum(packId); + values[i++] = ObjectIdGetDatum(langId); + values[i++] = UInt32GetDatum(seqno); + values[i++] = NameGetDatum(&vName); + values[i++] = DirectFunctionCall1(textin, CStringGetDatum(vtype)); + + + + rel = heap_openr(PackGlobalRelationName, RowExclusiveLock); + tup = SearchSysCache(PACKAGEGLOBAL, + ObjectIdGetDatum(packId), + ObjectIdGetDatum(langId), + UInt32GetDatum(seqno), + 0); + + if (HeapTupleIsValid(tup)) + { + tup = heap_modifytuple(tup, + rel, + values, + nulls, + replaces); + + heap_update(rel, &tup->t_self, tup, NULL); + } + else + { + tupDesc = rel->rd_att; + tup = heap_formtuple(tupDesc, + values, + nulls); + + heap_insert(rel, tup); + } + + if (RelationGetForm(rel)->relhasindex) + { + Relation idescs[Num_pg_packglobal_indices]; + + CatalogOpenIndices(Num_pg_packglobal_indices, + Name_pg_packglobal_indices, idescs); + CatalogIndexInsert(idescs, Num_pg_packglobal_indices, rel, tup); + CatalogCloseIndices(Num_pg_packglobal_indices, idescs); + } + heap_close(rel, RowExclusiveLock); + return; +} Index: src/backend/catalog/pg_proc.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/catalog/pg_proc.c,v retrieving revision 1.61 diff -u -r1.61 pg_proc.c --- src/backend/catalog/pg_proc.c 2001/10/06 23:21:43 1.61 +++ src/backend/catalog/pg_proc.c 2001/10/17 16:41:09 @@ -41,6 +41,7 @@ */ Oid ProcedureCreate(char *procedureName, + Oid packId, bool replace, bool returnsSet, char *returnTypeName, @@ -176,7 +177,7 @@ { elog(NOTICE, "ProcedureCreate: type %s is not yet defined", returnTypeName); - typeObjectId = TypeShellMake(returnTypeName); + typeObjectId = TypeShellMake(returnTypeName, packId); if (!OidIsValid(typeObjectId)) elog(ERROR, "could not create type %s", returnTypeName); @@ -207,7 +208,8 @@ if (languageObjectId == SQLlanguageId) { - querytree_list = pg_parse_and_rewrite(prosrc, typev, parameterCount); + querytree_list = pg_parse_and_rewrite(prosrc, packId, typev, + parameterCount); /* typecheck return value */ checkretval(typeObjectId, querytree_list); } @@ -270,6 +272,7 @@ i = 0; namestrcpy(&procname, procedureName); values[i++] = NameGetDatum(&procname); + values[i++] = ObjectIdGetDatum(packId); values[i++] = Int32GetDatum(GetUserId()); values[i++] = ObjectIdGetDatum(languageObjectId); /* XXX isinherited is always false for now */ @@ -296,9 +299,9 @@ /* Check for pre-existing definition */ oldtup = SearchSysCache(PROCNAME, PointerGetDatum(procedureName), + ObjectIdGetDatum(packId), UInt16GetDatum(parameterCount), - PointerGetDatum(typev), - 0); + PointerGetDatum(typev)); if (HeapTupleIsValid(oldtup)) { Index: src/backend/catalog/pg_type.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/catalog/pg_type.c,v retrieving revision 1.64 diff -u -r1.64 pg_type.c --- src/backend/catalog/pg_type.c 2001/10/12 00:07:14 1.64 +++ src/backend/catalog/pg_type.c 2001/10/17 16:41:10 @@ -26,7 +26,7 @@ static Oid TypeShellMakeWithOpenRelation(Relation pg_type_desc, - char *typeName); + char *typeName, Oid packId); /* ---------------------------------------------------------------- * TypeGetWithOpenRelation @@ -138,7 +138,7 @@ * ---------------------------------------------------------------- */ static Oid -TypeShellMakeWithOpenRelation(Relation pg_type_desc, char *typeName) +TypeShellMakeWithOpenRelation(Relation pg_type_desc, char *typeName, Oid packId) { int i; HeapTuple tup; @@ -163,23 +163,24 @@ i = 0; namestrcpy(&name, typeName); values[i++] = NameGetDatum(&name); /* 1 */ - values[i++] = ObjectIdGetDatum(InvalidOid); /* 2 */ - values[i++] = Int16GetDatum(0); /* 3 */ + values[i++] = ObjectIdGetDatum(packId); /* 2 */ + values[i++] = ObjectIdGetDatum(InvalidOid); /* 3 */ values[i++] = Int16GetDatum(0); /* 4 */ - values[i++] = BoolGetDatum(false); /* 5 */ - values[i++] = CharGetDatum(0); /* 6 */ - values[i++] = BoolGetDatum(false); /* 7 */ - values[i++] = CharGetDatum(0); /* 8 */ - values[i++] = ObjectIdGetDatum(InvalidOid); /* 9 */ + values[i++] = Int16GetDatum(0); /* 5 */ + values[i++] = BoolGetDatum(false); /* 6 */ + values[i++] = CharGetDatum(0); /* 7 */ + values[i++] = BoolGetDatum(false); /* 8 */ + values[i++] = CharGetDatum(0); /* 9 */ values[i++] = ObjectIdGetDatum(InvalidOid); /* 10 */ values[i++] = ObjectIdGetDatum(InvalidOid); /* 11 */ values[i++] = ObjectIdGetDatum(InvalidOid); /* 12 */ values[i++] = ObjectIdGetDatum(InvalidOid); /* 13 */ values[i++] = ObjectIdGetDatum(InvalidOid); /* 14 */ - values[i++] = CharGetDatum('i'); /* 15 */ - values[i++] = CharGetDatum('p'); /* 16 */ + values[i++] = ObjectIdGetDatum(InvalidOid); /* 15 */ + values[i++] = CharGetDatum('i'); /* 16 */ + values[i++] = CharGetDatum('p'); /* 17 */ values[i++] = DirectFunctionCall1(textin, - CStringGetDatum(typeName)); /* 17 */ + CStringGetDatum(typeName)); /* 18 */ /* * create a new type tuple with FormHeapTuple @@ -225,7 +226,7 @@ * ---------------------------------------------------------------- */ Oid -TypeShellMake(char *typeName) +TypeShellMake(char *typeName, Oid packId) { Relation pg_type_desc; Oid typoid; @@ -240,7 +241,7 @@ /* * insert the shell tuple */ - typoid = TypeShellMakeWithOpenRelation(pg_type_desc, typeName); + typoid = TypeShellMakeWithOpenRelation(pg_type_desc, typeName, packId); /* * close pg_type and return the tuple's oid. @@ -263,16 +264,17 @@ */ Oid TypeCreate(char *typeName, + Oid packId, Oid assignedTypeOid, Oid relationOid, /* only for 'c'atalog typeTypes */ int16 internalSize, int16 externalSize, char typeType, char typDelim, - char *inputProcedure, - char *outputProcedure, - char *receiveProcedure, - char *sendProcedure, + struct DefElem *inputProcedure, + struct DefElem *outputProcedure, + struct DefElem *receiveProcedure, + struct DefElem *sendProcedure, char *elementTypeName, char *defaultTypeValue, /* internal rep */ bool passedByValue, @@ -289,8 +291,8 @@ char nulls[Natts_pg_type]; char replaces[Natts_pg_type]; Datum values[Natts_pg_type]; - char *procname; - char *procs[4]; + DefElem *procname; + DefElem *procs[4]; bool defined; NameData name; TupleDesc tupDesc; @@ -347,15 +349,16 @@ i = 0; namestrcpy(&name, typeName); values[i++] = NameGetDatum(&name); /* 1 */ - values[i++] = Int32GetDatum(GetUserId()); /* 2 */ - values[i++] = Int16GetDatum(internalSize); /* 3 */ - values[i++] = Int16GetDatum(externalSize); /* 4 */ - values[i++] = BoolGetDatum(passedByValue); /* 5 */ - values[i++] = CharGetDatum(typeType); /* 6 */ - values[i++] = BoolGetDatum(true); /* 7 */ - values[i++] = CharGetDatum(typDelim); /* 8 */ - values[i++] = ObjectIdGetDatum(typeType == 'c' ? relationOid : InvalidOid); /* 9 */ - values[i++] = ObjectIdGetDatum(elementObjectId); /* 10 */ + values[i++] = ObjectIdGetDatum(packId); /* 2 */ + values[i++] = Int32GetDatum(GetUserId()); /* 3 */ + values[i++] = Int16GetDatum(internalSize); /* 4 */ + values[i++] = Int16GetDatum(externalSize); /* 5 */ + values[i++] = BoolGetDatum(passedByValue); /* 6 */ + values[i++] = CharGetDatum(typeType); /* 7 */ + values[i++] = BoolGetDatum(true); /* 8 */ + values[i++] = CharGetDatum(typDelim); /* 9 */ + values[i++] = ObjectIdGetDatum(typeType == 'c' ? relationOid : InvalidOid); /* 10 */ + values[i++] = ObjectIdGetDatum(elementObjectId); /* 11 */ procs[0] = inputProcedure; procs[1] = outputProcedure; @@ -365,9 +368,14 @@ for (j = 0; j < 4; ++j) { Oid procOid; + Oid thisPack; + char *fn; procname = procs[j]; + fn = ((TypeName *)procname->arg)->name; + thisPack = procname->package; + proc_look_loop: /* * First look for a 1-argument func with all argtypes 0. This is * valid for all four kinds of procedure. @@ -375,10 +383,10 @@ MemSet(argList, 0, FUNC_MAX_ARGS * sizeof(Oid)); procOid = GetSysCacheOid(PROCNAME, - PointerGetDatum(procname), + PointerGetDatum(fn), + ObjectIdGetDatum(thisPack), Int32GetDatum(1), - PointerGetDatum(argList), - 0); + PointerGetDatum(argList)); if (!OidIsValid(procOid)) { @@ -407,27 +415,36 @@ argList[2] = INT4OID; } procOid = GetSysCacheOid(PROCNAME, - PointerGetDatum(procname), + PointerGetDatum(fn), + ObjectIdGetDatum(thisPack), Int32GetDatum(nargs), - PointerGetDatum(argList), - 0); + PointerGetDatum(argList)); } if (!OidIsValid(procOid)) - func_error("TypeCreate", procname, 1, argList, NULL); + { + if ((thisPack != STANDARDPackageId) && + (procname->packexact == false)) + { + thisPack = STANDARDPackageId; + goto proc_look_loop; + } + func_error("TypeCreate", fn, procname->package, + procname->packexact, 1, argList, NULL); + } } - values[i++] = ObjectIdGetDatum(procOid); /* 11 - 14 */ + values[i++] = ObjectIdGetDatum(procOid); /* 12 - 15 */ } /* * set default alignment */ - values[i++] = CharGetDatum(alignment); /* 15 */ + values[i++] = CharGetDatum(alignment); /* 16 */ /* * set default storage for TOAST */ - values[i++] = CharGetDatum(storage); /* 16 */ + values[i++] = CharGetDatum(storage); /* 17 */ /* * initialize the default value for this type. @@ -437,7 +454,7 @@ CStringGetDatum(defaultTypeValue)); else nulls[i] = 'n'; - i++; /* 17 */ + i++; /* 18 */ /* * open pg_type and begin a scan for the type name. Index: src/backend/commands/comment.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/commands/comment.c,v retrieving revision 1.33 diff -u -r1.33 comment.c --- src/backend/commands/comment.c 2001/10/03 20:54:20 1.33 +++ src/backend/commands/comment.c 2001/10/17 16:41:10 @@ -53,6 +53,7 @@ static void CommentRewrite(char *rule, char *comment); static void CommentType(char *type, char *comment); static void CommentAggregate(char *aggregate, List *arguments, char *comment); +static void CommentPackage(char *package, char *comment); static void CommentProc(char *function, List *arguments, char *comment); static void CommentOperator(char *opname, List *arguments, char *comment); static void CommentTrigger(char *trigger, char *relation, char *comments); @@ -99,6 +100,9 @@ case AGGREGATE: CommentAggregate(objname, objlist, comment); break; + case (PACKAGE): + CommentPackage(objname, comment); + break; case FUNCTION: CommentProc(objname, objlist, comment); break; @@ -603,8 +607,9 @@ oid = GetSysCacheOid(AGGNAME, PointerGetDatum(aggregate), + ObjectIdGetDatum(STANDARDPackageId), ObjectIdGetDatum(baseoid), - 0, 0); + 0); if (!OidIsValid(oid)) agg_error("CommentAggregate", aggregate, baseoid); @@ -621,6 +626,48 @@ } /*------------------------------------------------------------------ + * CommentPackage -- + * + * This routine is used to add/drop any user-comments a user might + * have regarding a PACKAGE. The package is specified by name + * and, if found, and the user has appropriate permissions, a + * comment will be added/dropped using the CreateComments() routine. + * The package's name and the comments are the paramters to this routine. + *------------------------------------------------------------------ +*/ + +static void +CommentPackage(char *package, char *comment) +{ + Oid oid, classoid; + + /* First, validate user */ + + if (!pg_pack_ownercheck(GetUserId(), package)) + elog(ERROR, "you are not permitted to comment on package '%s'", + package); + + /* Next, find the package's oid */ + + oid = GetSysCacheOid(PACKAGENAME, + PointerGetDatum(package), + 0, 0, 0); + if (!OidIsValid(oid)) + elog(ERROR, "package '%s' does not exist", package); + + /* pg_package doesn't have a hard-coded OID, so must look it up */ + + classoid = GetSysCacheOid(RELNAME, + PointerGetDatum(PackageRelationName), + 0, 0, 0); + Assert(OidIsValid(classoid)); + + /* Call CreateComments() to create/drop the comments */ + + CreateComments(oid, classoid, 0, comment); +} + +/*------------------------------------------------------------------ * CommentProc -- * * This routine is used to allow a user to provide comments on an @@ -675,11 +722,12 @@ oid = GetSysCacheOid(PROCNAME, PointerGetDatum(function), + ObjectIdGetDatum(STANDARDPackageId), Int32GetDatum(argcount), - PointerGetDatum(argoids), - 0); + PointerGetDatum(argoids)); if (!OidIsValid(oid)) - func_error("CommentProc", function, argcount, argoids, NULL); + func_error("CommentProc", function, STANDARDPackageId, TRUE, argcount, + argoids, NULL); /* Call CreateComments() to create/drop the comments */ Index: src/backend/commands/creatinh.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/commands/creatinh.c,v retrieving revision 1.80 diff -u -r1.80 creatinh.c --- src/backend/commands/creatinh.c 2001/08/16 20:38:53 1.80 +++ src/backend/commands/creatinh.c 2001/10/17 16:41:11 @@ -20,6 +20,7 @@ #include "catalog/indexing.h" #include "catalog/heap.h" #include "catalog/pg_inherits.h" +#include "catalog/pg_package.h" #include "catalog/pg_type.h" #include "commands/creatinh.h" #include "miscadmin.h" @@ -68,6 +69,13 @@ * as parser should have done this already). */ StrNCpy(relname, stmt->relname, NAMEDATALEN); + + /* + * Make sure there's not already a package of the same name. + */ + if (PackageIdFromName(relname) != 0) + elog(ERROR, "name invalid, there is already a package named '%s'", + relname); /* * Look up inheritance ancestors and generate relation schema, Index: src/backend/commands/define.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/commands/define.c,v retrieving revision 1.62 diff -u -r1.62 define.c --- src/backend/commands/define.c 2001/10/13 01:35:25 1.62 +++ src/backend/commands/define.c 2001/10/17 16:41:12 @@ -43,6 +43,8 @@ #include "catalog/pg_aggregate.h" #include "catalog/pg_language.h" #include "catalog/pg_operator.h" +#include "catalog/pg_package.h" +#include "catalog/pg_packglobal.h" #include "catalog/pg_proc.h" #include "catalog/pg_type.h" #include "commands/defrem.h" @@ -325,6 +327,7 @@ * to do so, go ahead and create the function. */ ProcedureCreate(stmt->funcname, + stmt->package, stmt->replace, returnsSet, prorettype, @@ -343,6 +346,280 @@ +/* + * CreatePackage + * Execute a CREATE [OR REPLACE] PACKAGE utility statement. + * + */ +void +CreatePackage(PackageStmt *stmt) +{ + List *p, + *q, + *r, + *early_names; + ProcedureStmt *command; + DefineStmt *def; + DefElem *defelem; + Relation rel; + HeapTuple tup; + Oid packId, + langId; + char langname[NAMEDATALEN]; + + /* can't change "standard" */ + if (!strcmp(stmt->packname, "standard")) + elog(ERROR, "Can't change or replace system package 'standard'"); + + /* look for package */ + rel = heap_openr(PackageRelationName, RowExclusiveLock); + tup = SearchSysCache(PACKAGENAME, + PointerGetDatum(stmt->packname), + 0, 0, 0); + + /* + * During parsing, we should have added the package tuple if it + * didn't exist. So we should have just found it. + */ + if (!HeapTupleIsValid(tup)) + elog(ERROR, "Package %s disapeared during processing. Aborting.", + stmt->packname); + + packId = tup->t_data->t_oid; + ReleaseSysCache(tup); + DoRemovePackage(packId, stmt->packname); + CommandCounterIncrement(); + + /* + * Now scan the types in the package to see if they use input + * and output routines in the package. If so, add the names + * to the early_names list. Once we have the list of names, + * we scan the list of functions for those names. When we find them, + * we add them and remove their entries from the list of functions. + */ + early_names = NULL; + foreach(p, stmt->types) + { + def = lfirst(p); + + foreach(q, def->definition) + { + defelem = lfirst(q); + + if (defelem->packexact == false) + defelem->package = packId; + + if ((defelem->package == packId) && + ((strcasecmp(defelem->defname, "input") == 0) || + (strcasecmp(defelem->defname, "output") == 0) || + (strcasecmp(defelem->defname, "send") == 0) || + (strcasecmp(defelem->defname, "receive") == 0))) + { + /* + * We found a procedure name within this package's context. + * Add the name to the candidate list + */ + char *nam = defGetString(defelem); + + /* see if it's there already */ + foreach (r, early_names) + { + if (strcasecmp(nam, lfirst(r)) == 0) + goto q_loop_again; + /* simulates a continue on the loop on q */ + } + early_names = lappend(early_names, pstrdup(nam)); + } + q_loop_again: ; + } + + } + + /* + * We now are ready to add the new package body. We first create + * any language global variables. Next we add language initialization + * routines (the begin/end part of an oracle package), followed by + * any "early" routines. Then we add any type definitions. Next we + * add the normal functions, followed by the aggregates. The last + * step is to add the operators. Between each of these steps, we call + * CommandCounterIncrement() so that latter steps can see the changes + * made so far. + * + * This order was chosen for two reasons. The ordering of "early" function, + * type, function, and operators & aggregates lets one package add new + * types to postgres. The early functions are type input and output + * routines, letting the type addition succeed. Once the type + * addition(s) succeed(s), the functions can use it/them as input + * and return types. We then can build aggregates and operators based + * on the new type and support functions. + * + * The ordering of language globals followed by initialization routines + * ensures that as functions are added, they can operate - if an SQL + * function is in the package, it will be parsed during package + * addition, which may cause routines in the package to be called. + */ + + /* Add globals */ + foreach(p, stmt->variables) + { + CreateStmt *n = lfirst(p); + int seqno; + + /* elog(DEBUG, "Global node %p", n); */ + case_translate_language_name(n->relname, langname); + + langId = GetSysCacheOid(LANGNAME, + PointerGetDatum(langname), + 0, 0, 0); + + if (!OidIsValid(langId)) + { + heap_close(rel, RowExclusiveLock); + elog(ERROR, "CreatePackageBody: no such language %s", langname); + } + + if ((langId == INTERNALlanguageId) || (langId == ClanguageId) || + (langId == SQLlanguageId)) + { + heap_close(rel, RowExclusiveLock); + elog(ERROR, "CreatePackageBody: language '%s' does not support" + " global variables\n\tDECLARE clause invalid", langname); + } + + if (SearchSysCacheExists(PACKAGEGLOBAL, + ObjectIdGetDatum(packId), + ObjectIdGetDatum(langId), + UInt32GetDatum(1), + 0)) + { + heap_close(rel, RowExclusiveLock); + elog(ERROR, "CreatePackageBody: language '%s' has multiple" + " global variable\n\tDECLARE clauses", langname); + } + + seqno = 1; + foreach(q, n->tableElts) + { + PackageGlobal *m = lfirst(q); + + PackageGlobalCreate(packId, langId, seqno++, m->name, + m->typetext); + } + } + + /* Now for the language initialization routines */ + if (stmt->initfuncs != NIL) + { + char funcname[NAMEDATALEN]; + Value *rettype = makeString("int4"); + + foreach(p, stmt->initfuncs) + { + command = lfirst(p); + case_translate_language_name(command->language, langname); + + if (!strcmp(langname, "sql") || !strcmp(langname, "C") || + !strcmp(langname, "internal")) + { + heap_close(rel, RowExclusiveLock); + elog(ERROR, "CreatePackageBody: language '%s' does not support" + " package body routines", langname); + } + + snprintf(funcname, NAMEDATALEN, "__packinit_%s", langname); + command->package = packId; + command->funcname = funcname; + command->returnType = (Node *)rettype; + CreateFunction(command); + } + } + + /* Now for the early functions */ + foreach(p, early_names) + { + char *nam = lfirst(p); + + foreach(q, stmt->functions) + { + command = lfirst(q); + + if (strcasecmp(nam, command->funcname) == 0) + { + command->package = packId; + CreateFunction(command); + + stmt->functions = lremove(command, stmt->functions); + /* Now do a continue on the foreach(q ) loop. */ + goto next_early_name; + } + } + next_early_name: ; + } + CommandCounterIncrement(); + + /* Now do the types */ + foreach(p, stmt->types) + { + def = lfirst(p); + + /* we adjusted the package contexts of the elements above */ + DefineType(def->defname, packId, def->definition); + } + CommandCounterIncrement(); + + /* Add functions */ + foreach(p, stmt->functions) + { + command = lfirst(p); + /* Since SQL commands are parsed now, make all functions added up + * to now visable before parsing */ + case_translate_language_name(command->language, langname); + if (strcmp(langname, "sql") == 0) + CommandCounterIncrement(); + command->package = packId; + CreateFunction(command); + } + CommandCounterIncrement(); + + /* Now for some aggregates */ + foreach(p, stmt->aggregates) + { + def = lfirst(p); + + foreach(q, def->definition) + { + defelem = lfirst(q); + + if (defelem->packexact == false) + defelem->package = packId; + } + + DefineAggregate(def->defname, packId, def->definition); + } + CommandCounterIncrement(); + + /* and finally, operators */ + foreach(p, stmt->operators) + { + def = lfirst(p); + + foreach(q, def->definition) + { + defelem = lfirst(q); + + if (defelem->packexact == false) + defelem->package = packId; + } + + DefineOperator(def->defname, packId, def->definition); + } + CommandCounterIncrement(); + + heap_close(rel, RowExclusiveLock); +} + + + /* -------------------------------- * DefineOperator * @@ -350,26 +627,27 @@ * parameter list generated by the parser and then has * OperatorCreate() do all the actual work. * - * 'parameters' is a list of DefElem + * 'parameters' is a list of DefElem and packId is the owning package * -------------------------------- */ void DefineOperator(char *oprName, + Oid packId, List *parameters) { uint16 precedence = 0; /* operator precedence */ bool canHash = false;/* operator hashes */ bool isLeftAssociative = true; /* operator is left * associative */ - char *functionName = NULL; /* function for operator */ + DefElem *functionName = NULL; /* function for operator */ char *typeName1 = NULL; /* first type name */ char *typeName2 = NULL; /* second type name */ char *commutatorName = NULL; /* optional commutator operator * name */ char *negatorName = NULL; /* optional negator operator name */ - char *restrictionName = NULL; /* optional restrict. sel. + DefElem *restrictionName = NULL; /* optional restrict. sel. * procedure */ - char *joinName = NULL;/* optional join sel. procedure name */ + DefElem *joinName = NULL;/* optional join sel. procedure name */ char *sortName1 = NULL; /* optional first sort operator */ char *sortName2 = NULL; /* optional second sort operator */ List *pl; @@ -396,7 +674,7 @@ elog(ERROR, "setof type not implemented for rightarg"); } else if (strcasecmp(defel->defname, "procedure") == 0) - functionName = defGetString(defel); + functionName = defel; else if (strcasecmp(defel->defname, "precedence") == 0) { /* NOT IMPLEMENTED (never worked in v4.2) */ @@ -412,9 +690,9 @@ else if (strcasecmp(defel->defname, "negator") == 0) negatorName = defGetString(defel); else if (strcasecmp(defel->defname, "restrict") == 0) - restrictionName = defGetString(defel); + restrictionName = defel; else if (strcasecmp(defel->defname, "join") == 0) - joinName = defGetString(defel); + joinName = defel; else if (strcasecmp(defel->defname, "hashes") == 0) canHash = TRUE; else if (strcasecmp(defel->defname, "sort1") == 0) @@ -446,6 +724,7 @@ * now have OperatorCreate do all the work.. */ OperatorCreate(oprName, /* operator name */ + packId, /* containing package */ typeName1, /* first type name */ typeName2, /* second type name */ functionName,/* function for operator */ @@ -468,10 +747,10 @@ * ------------------ */ void -DefineAggregate(char *aggName, List *parameters) +DefineAggregate(char *aggName, Oid packId, List *parameters) { - char *transfuncName = NULL; - char *finalfuncName = NULL; + DefElem *transfuncName = NULL; + DefElem *finalfuncName = NULL; char *baseType = NULL; char *transType = NULL; char *initval = NULL; @@ -486,11 +765,11 @@ * spellings for sfunc, stype, initcond. */ if (strcasecmp(defel->defname, "sfunc") == 0) - transfuncName = defGetString(defel); + transfuncName = defel; else if (strcasecmp(defel->defname, "sfunc1") == 0) - transfuncName = defGetString(defel); + transfuncName = defel; else if (strcasecmp(defel->defname, "finalfunc") == 0) - finalfuncName = defGetString(defel); + finalfuncName = defel; else if (strcasecmp(defel->defname, "basetype") == 0) baseType = defGetString(defel); else if (strcasecmp(defel->defname, "stype") == 0) @@ -520,6 +799,7 @@ * Most of the argument-checking is done inside of AggregateCreate */ AggregateCreate(aggName, /* aggregate name */ + packId, /* containing package */ transfuncName, /* step function name */ finalfuncName, /* final function name */ baseType, /* type of data being aggregated */ @@ -532,15 +812,15 @@ * Registers a new type. */ void -DefineType(char *typeName, List *parameters) +DefineType(char *typeName, Oid packId, List *parameters) { int16 internalLength = -1; /* int2 */ int16 externalLength = -1; /* int2 */ char *elemName = NULL; - char *inputName = NULL; - char *outputName = NULL; - char *sendName = NULL; - char *receiveName = NULL; + DefElem *inputName = NULL; + DefElem *outputName = NULL; + DefElem *sendName = NULL; + DefElem *receiveName = NULL; char *defaultValue = NULL; bool byValue = false; char delimiter = DEFAULT_TYPDELIM; @@ -567,11 +847,11 @@ else if (strcasecmp(defel->defname, "externallength") == 0) externalLength = defGetTypeLength(defel); else if (strcasecmp(defel->defname, "input") == 0) - inputName = defGetString(defel); + inputName = defel; else if (strcasecmp(defel->defname, "output") == 0) - outputName = defGetString(defel); + outputName = defel; else if (strcasecmp(defel->defname, "send") == 0) - sendName = defGetString(defel); + sendName = defel; else if (strcasecmp(defel->defname, "delimiter") == 0) { char *p = defGetString(defel); @@ -579,7 +859,7 @@ delimiter = p[0]; } else if (strcasecmp(defel->defname, "receive") == 0) - receiveName = defGetString(defel); + receiveName = defel; else if (strcasecmp(defel->defname, "element") == 0) elemName = defGetString(defel); else if (strcasecmp(defel->defname, "default") == 0) @@ -646,6 +926,7 @@ * now have TypeCreate do all the real work. */ TypeCreate(typeName, /* type name */ + packId, /* containing package */ InvalidOid, /* preassigned type oid (not done here) */ InvalidOid, /* relation oid (n/a here) */ internalLength, /* internal size */ @@ -668,20 +949,35 @@ */ shadow_type = makeArrayTypeName(typeName); + /* Make name nodes */ + inputName = makeNode(DefElem); + inputName->defname = ""; + inputName->arg = (Node *)makeString("array_in"); + inputName->package = STANDARDPackageId; + inputName->packexact = true; + + outputName = makeNode(DefElem); + outputName->defname = ""; + outputName->arg = (Node *)makeString("array_out"); + outputName->package = STANDARDPackageId; + outputName->packexact = true; + + /* alignment must be 'i' or 'd' for arrays */ alignment = (alignment == 'd') ? 'd' : 'i'; TypeCreate(shadow_type, /* type name */ + packId, /* containing package */ InvalidOid, /* preassigned type oid (not done here) */ InvalidOid, /* relation oid (n/a here) */ -1, /* internal size */ -1, /* external size */ 'b', /* type-type (base type) */ DEFAULT_TYPDELIM,/* array element delimiter */ - "array_in", /* input procedure */ - "array_out", /* output procedure */ - "array_in", /* receive procedure */ - "array_out", /* send procedure */ + inputName, /* input procedure */ + outputName, /* output procedure */ + inputName, /* receive procedure */ + outputName, /* send procedure */ typeName, /* element type name */ NULL, /* never a default type value */ false, /* never passed by value */ Index: src/backend/commands/indexcmds.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/commands/indexcmds.c,v retrieving revision 1.58 diff -u -r1.58 indexcmds.c --- src/backend/commands/indexcmds.c 2001/10/04 22:06:46 1.58 +++ src/backend/commands/indexcmds.c 2001/10/17 16:41:12 @@ -282,18 +282,30 @@ * of input types, and the executor is not currently set up to support * that. So, check to make sure that the selected function has * exact-match or binary-compatible input types. + * + * Note that func_get_detail will only look in one package, so if we + * dont find the function and we were not given a specific package + * context and we are not in STANDARD, then try again in STANDARD. */ - fdresult = func_get_detail(funcIndex->name, funcIndex->args, - nargs, argTypes, + fdresult = func_get_detail(funcIndex->name, funcIndex->packId, + funcIndex->args, nargs, argTypes, &funcid, &rettype, &retset, &true_typeids); + if (fdresult != FUNCDETAIL_NORMAL && + (funcIndex->package_exact == FALSE) && + (funcIndex->packId != STANDARDPackageId)) + i = func_get_detail(funcIndex->name, STANDARDPackageId, + funcIndex->args, nargs, + argTypes, &funcid, &rettype, &retset, + &true_typeids); if (fdresult != FUNCDETAIL_NORMAL) { if (fdresult == FUNCDETAIL_COERCION) elog(ERROR, "DefineIndex: functional index must use a real function, not a type coercion" "\n\tTry specifying the index opclass you want to use, instead"); else - func_error("DefineIndex", funcIndex->name, nargs, argTypes, NULL); + func_error("DefineIndex", funcIndex->name, funcIndex->packId, + funcIndex->package_exact, nargs, argTypes, NULL); } if (retset) @@ -303,7 +315,8 @@ { if (argTypes[i] != true_typeids[i] && !IS_BINARY_COMPATIBLE(argTypes[i], true_typeids[i])) - func_error("DefineIndex", funcIndex->name, nargs, argTypes, + func_error("DefineIndex", funcIndex->name, funcIndex->packId, + funcIndex->package_exact, nargs, argTypes, "Index function must be binary-compatible with table datatype"); } Index: src/backend/commands/proclang.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/commands/proclang.c,v retrieving revision 1.28 diff -u -r1.28 proclang.c --- src/backend/commands/proclang.c 2001/06/13 21:44:40 1.28 +++ src/backend/commands/proclang.c 2001/10/17 16:41:12 @@ -90,9 +90,9 @@ memset(typev, 0, sizeof(typev)); procTup = SearchSysCache(PROCNAME, PointerGetDatum(stmt->plhandler), + ObjectIdGetDatum(STANDARDPackageId), Int32GetDatum(0), - PointerGetDatum(typev), - 0); + PointerGetDatum(typev)); if (!HeapTupleIsValid(procTup)) elog(ERROR, "PL handler function %s() doesn't exist", stmt->plhandler); Index: src/backend/commands/remove.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/commands/remove.c,v retrieving revision 1.63 diff -u -r1.63 remove.c --- src/backend/commands/remove.c 2001/10/03 20:54:20 1.63 +++ src/backend/commands/remove.c 2001/10/17 16:41:13 @@ -16,7 +16,11 @@ #include "access/heapam.h" #include "catalog/catname.h" +#include "catalog/pg_aggregate.h" #include "catalog/pg_language.h" +#include "catalog/pg_operator.h" +#include "catalog/pg_package.h" +#include "catalog/pg_packglobal.h" #include "catalog/pg_proc.h" #include "catalog/pg_type.h" #include "commands/comment.h" @@ -26,6 +30,7 @@ #include "parser/parse_expr.h" #include "parser/parse_func.h" #include "utils/acl.h" +#include "utils/fmgroids.h" #include "utils/builtins.h" #include "utils/syscache.h" @@ -87,6 +92,18 @@ elog(ERROR, "RemoveOperator: operator '%s': permission denied", operatorName); + if (((FormData_pg_operator *)GETSTRUCT(tup))->oprpack + != STANDARDPackageId) + { + NameData package; + heap_close(relation, RowExclusiveLock); + PackageNameFromID(((FormData_pg_operator *)GETSTRUCT(tup))->oprpack, + &package); + elog(ERROR, "RemoveOperator: operator '%s' defined as part of package '%s'" + "\n\t\tCan only be removed via DROP PACKAGE", + operatorName, NameStr(package)); + } + /* Delete any comments associated with this operator */ DeleteComments(tup->t_data->t_oid, RelationGetRelid(relation)); @@ -254,6 +271,18 @@ if (!HeapTupleIsValid(tup)) elog(ERROR, "RemoveType: type '%s' does not exist", typeName); + if (((FormData_pg_type *)GETSTRUCT(tup))->typpack + != STANDARDPackageId) + { + NameData package; + heap_close(relation, RowExclusiveLock); + PackageNameFromID(((FormData_pg_type *)GETSTRUCT(tup))->typpack, + &package); + elog(ERROR, "RemoveType: type '%s' defined as part of package '%s'" + "\n\t\tCan only be removed via DROP PACKAGE", + typeName, NameStr(package)); + } + /* Delete any comments associated with this type */ DeleteComments(tup->t_data->t_oid, RelationGetRelid(relation)); @@ -328,12 +357,13 @@ tup = SearchSysCache(PROCNAME, PointerGetDatum(functionName), + ObjectIdGetDatum(STANDARDPackageId), Int32GetDatum(nargs), - PointerGetDatum(argList), - 0); + PointerGetDatum(argList)); if (!HeapTupleIsValid(tup)) - func_error("RemoveFunction", functionName, nargs, argList, NULL); + func_error("RemoveFunction", functionName, STANDARDPackageId, FALSE, + nargs, argList, NULL); if (((Form_pg_proc) GETSTRUCT(tup))->prolang == INTERNALlanguageId) { @@ -351,6 +381,160 @@ heap_close(relation, RowExclusiveLock); } +/* + * RemovePackageBody + * Handle DROP PACKAGE command + * + * Look up the package name, and if found, call DoRemovePackage() + * to handle the internals deletion. Then remove the package name. + */ +void +RemovePackage(char *packname) +{ + Relation rel; + HeapTuple tup; + Oid packId; + + if (!strcmp(packname, "standard")) + elog(ERROR, "Can't DROP system package 'standard'"); + + rel = heap_openr(PackageRelationName, RowExclusiveLock); + + tup = SearchSysCache(PACKAGENAME, + PointerGetDatum(packname), + 0, 0, 0); + + if (!HeapTupleIsValid(tup)) + elog(ERROR, "Package %s not found", packname); + + packId = tup->t_data->t_oid; + + /* permissions checks are in DoRemovePackageBody() */ + DoRemovePackage(packId, packname); + + DeleteComments(packId, RelationGetRelid(rel)); + + simple_heap_delete(rel, &tup->t_self); + + ReleaseSysCache(tup); + + heap_close(rel, RowExclusiveLock); +} + +/* + * DoRemovePackage + * Removes a package contents + * Performs internals of package deletion. Does NOT delete package name + * from pg_package as this routine may be called in response to the + * SQL commands DROP PACKAGE and CREATE OR UPDATE PACKAGE. + * + * Package name row in pg_package should be locked while calling this + * routine. + */ +void +DoRemovePackage(Oid packId, char *packname) +{ + Relation rel; + HeapTuple tup; + HeapScanDesc scan; + ScanKeyData key[1]; + + /* Do permissions checks here */ + if (!pg_pack_ownercheck(GetUserId(), packname)) + { + elog(ERROR, "DoRemovePackage: package '%s': permission denied", + packname); + } + + /* First clean out pg_proc */ + rel = heap_openr(ProcedureRelationName, RowExclusiveLock); + scan = heap_beginscan(rel, 0, SnapshotNow, 0, (ScanKey) NULL); + while (HeapTupleIsValid(tup = heap_getnext(scan, 0))) + { + Form_pg_proc p; + p = (Form_pg_proc) GETSTRUCT(tup); + if (p->propack == packId) + { + DeleteComments(tup->t_data->t_oid, RelationGetRelid(rel)); + heap_delete(rel, &tup->t_self, NULL); + } + } + heap_endscan(scan); + heap_close(rel, RowExclusiveLock); + + /* now pg_packglobal */ + ScanKeyEntryInitialize(&key[0], + (bits16) 0x0, + (AttrNumber) 1, + (RegProcedure) F_OIDEQ, + ObjectIdGetDatum(packId)); + rel = heap_openr(PackGlobalRelationName, RowExclusiveLock); + scan = heap_beginscan(rel, 0, SnapshotNow, 1, key); + while (HeapTupleIsValid(tup = heap_getnext(scan, 0))) + { + Form_pg_packglobal p; + p = (Form_pg_packglobal) GETSTRUCT(tup); + if (p->pglobalid == packId) + { + DeleteComments(tup->t_data->t_oid, RelationGetRelid(rel)); + heap_delete(rel, &tup->t_self, NULL); + } + } + heap_endscan(scan); + heap_close(rel, RowExclusiveLock); + + /* next pg_aggregate */ + rel = heap_openr(AggregateRelationName, RowExclusiveLock); + + scan = heap_beginscan(rel, 0, SnapshotNow, 0, (ScanKey) NULL); + while (HeapTupleIsValid(tup = heap_getnext(scan, 0))) + { + Form_pg_aggregate p; + p = (Form_pg_aggregate) GETSTRUCT(tup); + if (p->aggpack == packId) + { + DeleteComments(tup->t_data->t_oid, RelationGetRelid(rel)); + heap_delete(rel, &tup->t_self, NULL); + } + } + heap_endscan(scan); + heap_close(rel, RowExclusiveLock); + + /* then pg_operator */ + rel = heap_openr(OperatorRelationName, RowExclusiveLock); + + scan = heap_beginscan(rel, 0, SnapshotNow, 0, (ScanKey) NULL); + while (HeapTupleIsValid(tup = heap_getnext(scan, 0))) + { + Form_pg_operator p; + p = (Form_pg_operator) GETSTRUCT(tup); + if (p->oprpack == packId) + { + DeleteComments(tup->t_data->t_oid, RelationGetRelid(rel)); + heap_delete(rel, &tup->t_self, NULL); + } + } + heap_endscan(scan); + heap_close(rel, RowExclusiveLock); + + /* and finally pg_type */ + rel = heap_openr(TypeRelationName, RowExclusiveLock); + + scan = heap_beginscan(rel, 0, SnapshotNow, 0, (ScanKey) NULL); + while (HeapTupleIsValid(tup = heap_getnext(scan, 0))) + { + Form_pg_type p; + p = (Form_pg_type) GETSTRUCT(tup); + if (p->typpack == packId) + { + DeleteComments(tup->t_data->t_oid, RelationGetRelid(rel)); + heap_delete(rel, &tup->t_self, NULL); + } + } + heap_endscan(scan); + heap_close(rel, RowExclusiveLock); +} + void RemoveAggregate(char *aggName, char *aggType) { @@ -391,8 +575,9 @@ tup = SearchSysCache(AGGNAME, PointerGetDatum(aggName), + ObjectIdGetDatum(STANDARDPackageId), ObjectIdGetDatum(basetypeID), - 0, 0); + 0); if (!HeapTupleIsValid(tup)) agg_error("RemoveAggregate", aggName, basetypeID); Index: src/backend/commands/trigger.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/commands/trigger.c,v retrieving revision 1.96 diff -u -r1.96 trigger.c --- src/backend/commands/trigger.c 2001/08/23 23:06:37 1.96 +++ src/backend/commands/trigger.c 2001/10/17 16:41:14 @@ -165,9 +165,20 @@ MemSet(fargtypes, 0, FUNC_MAX_ARGS * sizeof(Oid)); tuple = SearchSysCache(PROCNAME, PointerGetDatum(stmt->funcname), + ObjectIdGetDatum(stmt->package), Int32GetDatum(0), - PointerGetDatum(fargtypes), - 0); + PointerGetDatum(fargtypes)); + /* If we don't find the right thing in a package, check standard */ + if ((!HeapTupleIsValid(tuple) || + ((Form_pg_proc) GETSTRUCT(tuple))->pronargs != 0) && + (stmt->package != STANDARDPackageId) && (stmt->packexact == false)) + { + tuple = SearchSysCache(PROCNAME, + PointerGetDatum(stmt->funcname), + ObjectIdGetDatum(STANDARDPackageId), + Int32GetDatum(0), + PointerGetDatum(fargtypes)); + } if (!HeapTupleIsValid(tuple)) elog(ERROR, "CreateTrigger: function %s() does not exist", stmt->funcname); Index: src/backend/executor/functions.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/executor/functions.c,v retrieving revision 1.45 diff -u -r1.45 functions.c --- src/backend/executor/functions.c 2001/03/22 06:16:12 1.45 +++ src/backend/executor/functions.c 2001/10/17 16:41:14 @@ -70,7 +70,7 @@ /* non-export function prototypes */ static execution_state *init_execution_state(char *src, - Oid *argOidVect, int nargs); + Oid packId, Oid *argOidVect, int nargs); static void init_sql_fcache(FmgrInfo *finfo); static void postquel_start(execution_state *es); static TupleTableSlot *postquel_getnext(execution_state *es); @@ -82,7 +82,7 @@ static execution_state * -init_execution_state(char *src, Oid *argOidVect, int nargs) +init_execution_state(char *src, Oid packId, Oid *argOidVect, int nargs) { execution_state *newes; execution_state *nextes; @@ -94,7 +94,7 @@ nextes = newes; preves = (execution_state *) NULL; - queryTree_list = pg_parse_and_rewrite(src, argOidVect, nargs); + queryTree_list = pg_parse_and_rewrite(src, packId, argOidVect, nargs); foreach(qtl_item, queryTree_list) { @@ -243,7 +243,8 @@ foid); src = DatumGetCString(DirectFunctionCall1(textout, tmp)); - fcache->func_state = init_execution_state(src, argOidVect, nargs); + fcache->func_state = init_execution_state(src, procedureStruct->propack, + argOidVect, nargs); pfree(src); Index: src/backend/executor/nodeAgg.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/executor/nodeAgg.c,v retrieving revision 1.77 diff -u -r1.77 nodeAgg.c --- src/backend/executor/nodeAgg.c 2001/03/22 06:16:12 1.77 +++ src/backend/executor/nodeAgg.c 2001/10/17 16:41:15 @@ -849,7 +849,8 @@ char *aggname = aggref->aggname; HeapTuple aggTuple; Form_pg_aggregate aggform; - Oid transfn_oid, + Oid aggId = aggref->aggId, + transfn_oid, finalfn_oid; /* Mark Aggref node with its associated index in the result array */ @@ -858,10 +859,9 @@ /* Fill in the peraggstate data */ peraggstate->aggref = aggref; - aggTuple = SearchSysCache(AGGNAME, - PointerGetDatum(aggname), - ObjectIdGetDatum(aggref->basetype), - 0, 0); + aggTuple = SearchSysCache(AGGOID, + ObjectIdGetDatum(aggId), + 0, 0, 0); if (!HeapTupleIsValid(aggTuple)) elog(ERROR, "ExecAgg: cache lookup failed for aggregate %s(%s)", aggname, @@ -877,9 +877,8 @@ &peraggstate->transtypeByVal); peraggstate->initValue = - AggNameGetInitVal(aggname, - aggform->aggbasetype, - &peraggstate->initValueIsNull); + AggIdGetInitVal(aggId, + &peraggstate->initValueIsNull); peraggstate->transfn_oid = transfn_oid = aggform->aggtransfn; peraggstate->finalfn_oid = finalfn_oid = aggform->aggfinalfn; Index: src/backend/executor/spi.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/executor/spi.c,v retrieving revision 1.58 diff -u -r1.58 spi.c --- src/backend/executor/spi.c 2001/10/05 17:28:12 1.58 +++ src/backend/executor/spi.c 2001/10/17 16:41:16 @@ -29,7 +29,7 @@ static int _SPI_connected = -1; static int _SPI_curid = -1; -static int _SPI_execute(char *src, int tcount, _SPI_plan *plan); +static int _SPI_execute(char *src, Oid packId, int tcount, _SPI_plan *plan); static int _SPI_pquery(QueryDesc *queryDesc, EState *state, int tcount); static int _SPI_execute_plan(_SPI_plan *plan, @@ -199,6 +199,12 @@ int SPI_exec(char *src, int tcount) { + return SPI_pack_exec(src, STANDARDPackageId, tcount); +} + +int +SPI_pack_exec(char *src, Oid packId, int tcount) +{ int res; if (src == NULL || tcount < 0) @@ -208,7 +214,7 @@ if (res < 0) return res; - res = _SPI_execute(src, tcount, NULL); + res = _SPI_execute(src, packId, tcount, NULL); _SPI_end_call(true); return res; @@ -241,6 +247,12 @@ void * SPI_prepare(char *src, int nargs, Oid *argtypes) { + return SPI_pack_prepare(src, STANDARDPackageId, nargs, argtypes); +} + +void * +SPI_pack_prepare(char *src, Oid packId, int nargs, Oid *argtypes) +{ _SPI_plan *plan; if (src == NULL || nargs < 0 || (nargs > 0 && argtypes == NULL)) @@ -257,7 +269,7 @@ plan->argtypes = argtypes; plan->nargs = nargs; - SPI_result = _SPI_execute(src, 0, plan); + SPI_result = _SPI_execute(src, packId, 0, plan); if (SPI_result >= 0) /* copy plan to procedure context */ plan = _SPI_copy_plan(plan, _SPI_CPLAN_PROCXT); @@ -857,7 +869,7 @@ */ static int -_SPI_execute(char *src, int tcount, _SPI_plan *plan) +_SPI_execute(char *src, Oid packId, int tcount, _SPI_plan *plan) { List *queryTree_list; List *planTree_list; @@ -886,7 +898,7 @@ argtypes = plan->argtypes; } - queryTree_list = pg_parse_and_rewrite(src, argtypes, nargs); + queryTree_list = pg_parse_and_rewrite(src, packId, argtypes, nargs); _SPI_current->qtlist = queryTree_list; Index: src/backend/nodes/copyfuncs.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v retrieving revision 1.157 diff -u -r1.157 copyfuncs.c --- src/backend/nodes/copyfuncs.c 2001/10/02 21:39:35 1.157 +++ src/backend/nodes/copyfuncs.c 2001/10/17 16:41:18 @@ -869,6 +869,7 @@ * copy remainder of node */ newnode->aggname = pstrdup(from->aggname); + newnode->aggId = from->aggId; newnode->basetype = from->basetype; newnode->aggtype = from->aggtype; Node_Copy(from, newnode, target); Index: src/backend/nodes/equalfuncs.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v retrieving revision 1.105 diff -u -r1.105 equalfuncs.c --- src/backend/nodes/equalfuncs.c 2001/10/02 21:39:35 1.105 +++ src/backend/nodes/equalfuncs.c 2001/10/17 16:41:19 @@ -221,7 +221,7 @@ static bool _equalAggref(Aggref *a, Aggref *b) { - if (strcmp(a->aggname, b->aggname) != 0) + if (a->aggId != b->aggId) return false; if (a->basetype != b->basetype) return false; Index: src/backend/nodes/outfuncs.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/nodes/outfuncs.c,v retrieving revision 1.145 diff -u -r1.145 outfuncs.c --- src/backend/nodes/outfuncs.c 2001/08/21 16:36:02 1.145 +++ src/backend/nodes/outfuncs.c 2001/10/17 16:41:20 @@ -25,6 +25,7 @@ #include "nodes/relation.h" #include "parser/parse.h" #include "utils/datum.h" +#include "utils/syscache.h" #define booltostr(x) ((x) ? "true" : "false") @@ -154,6 +155,8 @@ _outFuncCall(StringInfo str, FuncCall *node) { appendStringInfo(str, "FUNCTION "); + if ((node->package != STANDARDPackageId) && (node->package_exact != true)) + appendStringInfo(str, "from package # %d", (int)node->package); _outToken(str, node->funcname); appendStringInfo(str, " :args "); _outNode(str, node->args); @@ -782,8 +785,8 @@ { appendStringInfo(str, " AGGREG :aggname "); _outToken(str, node->aggname); - appendStringInfo(str, " :basetype %u :aggtype %u :target ", - node->basetype, node->aggtype); + appendStringInfo(str, " :aggid %u :basetype %u :aggtype %u :target ", + node->aggId, node->basetype, node->aggtype); _outNode(str, node->target); appendStringInfo(str, " :aggstar %s :aggdistinct %s ", Index: src/backend/nodes/readfuncs.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/nodes/readfuncs.c,v retrieving revision 1.112 diff -u -r1.112 readfuncs.c --- src/backend/nodes/readfuncs.c 2001/07/03 16:52:48 1.112 +++ src/backend/nodes/readfuncs.c 2001/10/17 16:41:21 @@ -1157,6 +1157,10 @@ token = pg_strtok(&length); /* get aggname */ local_node->aggname = debackslash(token, length); + token = pg_strtok(&length); /* eat :aggId */ + token = pg_strtok(&length); /* get aggId */ + local_node->aggId = atooid(token); + token = pg_strtok(&length); /* eat :basetype */ token = pg_strtok(&length); /* get basetype */ local_node->basetype = atooid(token); Index: src/backend/parser/analyze.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/parser/analyze.c,v retrieving revision 1.201 diff -u -r1.201 analyze.c --- src/backend/parser/analyze.c 2001/10/12 00:07:14 1.201 +++ src/backend/parser/analyze.c 2001/10/17 16:41:25 @@ -85,6 +85,7 @@ static void transformFKConstraints(ParseState *pstate, CreateStmtContext *cxt); static Node *transformTypeRefs(ParseState *pstate, Node *stmt); +static Node *transformPackageRefs(ParseState *pstate, Node *stmt); static void transformTypeRefsList(ParseState *pstate, List *l); static void transformTypeRef(ParseState *pstate, TypeName *tn); @@ -282,6 +283,12 @@ result->utilityStmt = transformTypeRefs(pstate, parseTree); break; + case T_PackageStmt: + result = makeNode(Query); + result->commandType = CMD_UTILITY; + result->utilityStmt = transformPackageRefs(pstate, parseTree); + break; + default: /* @@ -1459,6 +1466,8 @@ fk_trigger->trigname = fkconstraint->constr_name; fk_trigger->relname = cxt->relname; fk_trigger->funcname = "RI_FKey_check_ins"; + fk_trigger->package = STANDARDPackageId; + fk_trigger->packexact = TRUE; fk_trigger->before = false; fk_trigger->row = true; fk_trigger->actions[0] = 'i'; @@ -1513,6 +1522,8 @@ fk_trigger = (CreateTrigStmt *) makeNode(CreateTrigStmt); fk_trigger->trigname = fkconstraint->constr_name; fk_trigger->relname = fkconstraint->pktable_name; + fk_trigger->package = STANDARDPackageId; + fk_trigger->packexact = TRUE; fk_trigger->before = false; fk_trigger->row = true; fk_trigger->actions[0] = 'd'; @@ -1585,6 +1596,8 @@ fk_trigger = (CreateTrigStmt *) makeNode(CreateTrigStmt); fk_trigger->trigname = fkconstraint->constr_name; fk_trigger->relname = fkconstraint->pktable_name; + fk_trigger->package = STANDARDPackageId; + fk_trigger->packexact = TRUE; fk_trigger->before = false; fk_trigger->row = true; fk_trigger->actions[0] = 'u'; @@ -2582,6 +2595,44 @@ qry->utilityStmt = (Node *) stmt; return qry; +} + +/* + * Transform uses of %TYPE in a CREATE PACKAGE statement. + * + * Itteratively call transformTypeRefs() to deal with the define nodes + * in the package. initfuncs aren't touched as they don't contain + * %TYPE statements transformTypeRefs() would change. variables aren't + * touched as their contents are language specific, and languages need + * to be able to deal with %TYPE clauses already. + */ +static Node * +transformPackageRefs(ParseState *pstate, Node *stmt) +{ + PackageStmt *ps = (PackageStmt *) stmt; + List *ele; + + foreach(ele, ps->functions) + { + (void)transformTypeRefs(pstate, (Node *) lfirst(ele)); + } + + foreach(ele, ps->types) + { + (void)transformTypeRefs(pstate, (Node *) lfirst(ele)); + } + + foreach(ele, ps->aggregates) + { + (void)transformTypeRefs(pstate, (Node *) lfirst(ele)); + } + + foreach(ele, ps->operators) + { + (void)transformTypeRefs(pstate, (Node *) lfirst(ele)); + } + + return stmt; } /* Index: src/backend/parser/gram.y =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/parser/gram.y,v retrieving revision 2.262 diff -u -r2.262 gram.y --- src/backend/parser/gram.y 2001/10/10 00:02:42 2.262 +++ src/backend/parser/gram.y 2001/10/17 16:41:29 @@ -51,6 +51,7 @@ #include <ctype.h> #include "access/htup.h" +#include "catalog/pg_package.h" #include "catalog/pg_type.h" #include "nodes/params.h" #include "nodes/parsenodes.h" @@ -69,6 +70,7 @@ extern List *parsetree; /* final parse result is delivered here */ static bool QueryIsRule = FALSE; +static Oid packageId; static Oid *param_type_info; static int pfunc_num_args; @@ -91,6 +93,8 @@ static Node *makeSetOp(SetOperation op, bool all, Node *larg, Node *rarg); static Node *doNegate(Node *n); static void doNegateFloat(Value *v); +static char *checkForPackname(char *, Oid *, bool *); +static Node *checkForPacknameInNode(Node *innode, Oid *pack, bool *isExact); %} @@ -129,14 +133,15 @@ AlterGroupStmt, AlterSchemaStmt, AlterTableStmt, AlterUserStmt, AnalyzeStmt, ClosePortalStmt, ClusterStmt, CommentStmt, ConstraintsSetStmt, - CopyStmt, CreateAsStmt, CreateGroupStmt, CreatePLangStmt, - CreateSchemaStmt, CreateSeqStmt, CreateStmt, CreateTrigStmt, - CreateUserStmt, CreatedbStmt, CursorStmt, DefineStmt, DeleteStmt, - DropGroupStmt, DropPLangStmt, DropSchemaStmt, DropStmt, DropTrigStmt, + CopyStmt, CreateAsStmt, CreateGroupStmt, CreatePackageStmt, + CreatePLangStmt, CreateSchemaStmt, CreateSeqStmt, CreateStmt, + CreateTrigStmt, CreateUserStmt, CreatedbStmt, CursorStmt, + DefineStmt, DeleteStmt, DropGroupStmt, DropPLangStmt, + DropSchemaStmt, DropStmt, DropTrigStmt, DropUserStmt, DropdbStmt, ExplainStmt, FetchStmt, GrantStmt, IndexStmt, InsertStmt, ListenStmt, LoadStmt, LockStmt, NotifyStmt, OptimizableStmt, ProcedureStmt, ReindexStmt, - RemoveAggrStmt, RemoveFuncStmt, RemoveOperStmt, + RemoveAggrStmt, RemoveFuncStmt, RemoveOperStmt, RemovePackageStmt, RenameStmt, RevokeStmt, RuleActionStmt, RuleActionStmtOrEmpty, RuleStmt, SelectStmt, TransactionStmt, TruncateStmt, UnlistenStmt, UpdateStmt, VacuumStmt, VariableResetStmt, @@ -193,10 +198,16 @@ from_clause, from_list, opt_array_bounds, expr_list, attrs, target_list, update_target_list, def_list, opt_indirection, group_clause, TriggerFuncArgs, - select_limit, opt_select_limit + select_limit, opt_select_limit, pack_global_list %type <typnam> func_arg, func_return, func_type, aggr_argtype +%type <node> pack_body, pack_func, pack_init_func, + pack_globals, pack_global, pack_type, pack_op, pack_agg + +%type <ival> opt_package +%type <str> CreatePackageStart + %type <boolean> opt_arg, TriggerForOpt, TriggerForType, OptTemp, OptWithOids %type <list> for_update_clause, opt_for_update_clause, update_list @@ -313,7 +324,7 @@ NATIONAL, NATURAL, NCHAR, NEXT, NO, NOT, NULLIF, NULL_P, NUMERIC, OF, OLD, ON, ONLY, OPTION, OR, ORDER, OUTER_P, OVERLAPS, PARTIAL, POSITION, PRECISION, PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, PUBLIC, - READ, REFERENCES, RELATIVE, REVOKE, RIGHT, ROLLBACK, + READ, REFERENCES, RELATIVE, REPLACE, REVOKE, RIGHT, ROLLBACK, SCHEMA, SCROLL, SECOND_P, SELECT, SESSION, SESSION_USER, SET, SOME, SUBSTRING, TABLE, TEMPORARY, THEN, TIME, TIMESTAMP, TO, TRAILING, TRANSACTION, TRIM, TRUE_P, @@ -341,7 +352,7 @@ * - Todd A. Brandys 1998-01-01? */ %token ABORT_TRANS, ACCESS, AFTER, AGGREGATE, ANALYSE, ANALYZE, - BACKWARD, BEFORE, BINARY, BIT, + BACKWARD, BEFORE, BINARY, BIT, BODY, CACHE, CHECKPOINT, CLUSTER, COMMENT, COPY, CREATEDB, CREATEUSER, CYCLE, DATABASE, DELIMITERS, DO, EACH, ENCODING, EXCLUSIVE, EXPLAIN, @@ -350,7 +361,7 @@ LANCOMPILER, LIMIT, LISTEN, LOAD, LOCATION, LOCK_P, MAXVALUE, MINVALUE, MODE, MOVE, NEW, NOCREATEDB, NOCREATEUSER, NONE, NOTHING, NOTIFY, NOTNULL, - OFFSET, OIDS, OPERATOR, OWNER, PASSWORD, PROCEDURAL, + OFFSET, OIDS, OPERATOR, OWNER, PACKAGE, PASSWORD, PROCEDURAL, REINDEX, RENAME, RESET, RETURNS, ROW, RULE, SEQUENCE, SETOF, SHARE, SHOW, START, STATEMENT, STATISTICS, STDIN, STDOUT, SYSID, @@ -365,7 +376,7 @@ /* Special keywords, not in the query language - see the "lex" file */ %token <str> IDENT, FCONST, SCONST, BITCONST, Op -%token <ival> ICONST, PARAM +%token <ival> ICONST, PACKID, PARAM /* these are not real. they are here so that they get generated as #define's*/ %token OP @@ -478,6 +489,8 @@ | VariableResetStmt | ConstraintsSetStmt | CheckPointStmt + | CreatePackageStmt + | RemovePackageStmt | /*EMPTY*/ { $$ = (Node *)NULL; } ; @@ -1724,13 +1737,21 @@ CreateTrigStmt: CREATE TRIGGER name TriggerActionTime TriggerEvents ON relation_name TriggerForSpec EXECUTE PROCEDURE - name '(' TriggerFuncArgs ')' + opt_package name '(' TriggerFuncArgs ')' { CreateTrigStmt *n = makeNode(CreateTrigStmt); n->trigname = $3; n->relname = $7; - n->funcname = $11; - n->args = $13; + if ($11 == 0) + n->funcname = checkForPackname($12, &n->package, + &n->packexact); + else + { + n->funcname = $12; + n->package = $11; + n->packexact = TRUE; + } + n->args = $14; n->before = $4; n->row = $8; memcpy (n->actions, $5, 4); @@ -1748,13 +1769,22 @@ | CREATE CONSTRAINT TRIGGER name AFTER TriggerEvents ON relation_name OptConstrFromTable ConstraintAttributeSpec - FOR EACH ROW EXECUTE PROCEDURE name '(' TriggerFuncArgs ')' + FOR EACH ROW EXECUTE PROCEDURE opt_package name + '(' TriggerFuncArgs ')' { CreateTrigStmt *n = makeNode(CreateTrigStmt); n->trigname = $4; n->relname = $8; - n->funcname = $16; - n->args = $18; + if ($16 == 0) + n->funcname = checkForPackname($17, &n->package, + &n->packexact); + else + { + n->funcname = $17; + n->package = $16; + n->packexact = TRUE; + } + n->args = $19; n->before = FALSE; n->row = TRUE; memcpy (n->actions, $6, 4); @@ -1845,6 +1875,9 @@ } ; +opt_package: PACKID { $$ = $1; } + | /* EMPTY */ { $$ = 0; } + OptConstrFromTable: /* Empty */ { $$ = ""; @@ -1916,6 +1949,7 @@ n->defType = AGGREGATE; n->defname = $3; n->definition = $4; + n->package = STANDARDPackageId; $$ = (Node *)n; } | CREATE OPERATOR all_Op definition @@ -1924,6 +1958,7 @@ n->defType = OPERATOR; n->defname = $3; n->definition = $4; + n->package = STANDARDPackageId; $$ = (Node *)n; } | CREATE TYPE_P name definition @@ -1932,6 +1967,7 @@ n->defType = TYPE_P; n->defname = $3; n->definition = $4; + n->package = STANDARDPackageId; $$ = (Node *)n; } ; @@ -1947,8 +1983,17 @@ { $$ = makeNode(DefElem); $$->defname = $1; - $$->arg = (Node *)$3; + $$->arg = checkForPacknameInNode((Node *)$3, &$$->package, + &$$->packexact); } + | ColLabel '=' PACKID def_arg + { + $$ = makeNode(DefElem); + $$->defname = $1; + $$->arg = (Node *)$4; + $$->package = $3; + $$->packexact = TRUE; + } | ColLabel { $$ = makeNode(DefElem); @@ -2014,7 +2059,7 @@ * <objname> | AGGREGATE <aggname> (<aggtype>) | FUNCTION * <funcname> (arg1, arg2, ...) | OPERATOR <op> * (leftoperand_typ rightoperand_typ) | TRIGGER <triggername> ON - * <relname> ] IS 'text' + * <relname> | PACKAGE <packagename> ] IS 'text' * *****************************************************************************/ @@ -2093,6 +2138,7 @@ comment_type: DATABASE { $$ = DATABASE; } | INDEX { $$ = INDEX; } + | PACKAGE {$$ = PACKAGE; } | RULE { $$ = RULE; } | SEQUENCE { $$ = SEQUENCE; } | TABLE { $$ = TABLE; } @@ -2430,10 +2476,20 @@ func_index: func_name '(' name_list ')' opt_class { $$ = makeNode(IndexElem); - $$->name = $1; + $$->name = checkForPackname($1, &$$->packId, + &$$->package_exact); $$->args = $3; $$->class = $5; } + | PACKID func_name '(' name_list ')' opt_class + { + $$ = makeNode(IndexElem); + $$->packId = $1; + $$->package_exact = TRUE; + $$->name = $2; + $$->args = $4; + $$->class = $6; + } ; index_elem: attr_name opt_class @@ -2506,6 +2562,7 @@ { ProcedureStmt *n = makeNode(ProcedureStmt); n->replace = $2; + n->package = STANDARDPackageId; n->funcname = $4; n->argTypes = $5; n->returnType = (Node *) $7; @@ -2596,9 +2653,203 @@ * * QUERY: * + * CREATE [OR REPLACE] PACKAGE <packname> as [ + * FUNCTION {CREATE FUNCTION syntax from 'FUNCTION' on } | + * BODY as <filename or code in language as appropriate> + * language <lang> [optional WITH clauses] | + * TYPE {CREATE TYPE syntax following 'TYPE' } | + * AGGREGATE {CREATE AGGREGATE syntax following 'AGGREGATE' } | + * OPERATOR {CREATE OPERATOR syntax from 'OPERATOR' on } | + * DECLARE name 'initializer' [, name 'initializer'] + * LANGUAGE 'langname + * ]* + * + * + *****************************************************************************/ + + +/* + * We perform the mechanics of adding the package name to pg_package + * during parsing so that parts of the package can correctly use + * packname.funcname syntax. As the created package entry is part of this + * transaction, it goes away if we fail due to an error + */ +CreatePackageStart: CREATE opt_or_replace PACKAGE name AS + { + PackageCreate($4, $2); + $$ = $4; + }; + +CreatePackageStmt: CreatePackageStart pack_body + { + PackageStmt *n = (PackageStmt *)$2; + n->packname = $1; + $$ = (Node *)n; + }; + +/* + * A pack_body can consist of any order of pack_init_func, pack_func, + * pack_globals, pack_type, pack_op, and pack_agg. + * + * So pack_body consists of a PackageStmt node. For the first sub + * element we find, we init the node and put the found node on the right + * list. There after, we add found nodes to the right list. + */ +pack_body: pack_func + { + PackageStmt *n = makeNode(PackageStmt); + n->functions = makeList1($1); + $$ = (Node *)n; + } + | pack_init_func + { + PackageStmt *n = makeNode(PackageStmt); + n->initfuncs = makeList1($1); + $$ = (Node *)n; + } + | pack_globals + { + PackageStmt *n = makeNode(PackageStmt); + n->variables = makeList1($1); + $$ = (Node *)n; + } + | pack_type + { + PackageStmt *n = makeNode(PackageStmt); + n->types = makeList1($1); + $$ = (Node *)n; + } + | pack_op + { + PackageStmt *n = makeNode(PackageStmt); + n->operators = makeList1($1); + $$ = (Node *)n; + } + | pack_agg + { + PackageStmt *n = makeNode(PackageStmt); + n->aggregates = makeList1($1); + $$ = (Node *)n; + } + | pack_body pack_func + { + PackageStmt *n = (PackageStmt *)$1; + n->functions = lappend(n->functions, $2); + $$ = $1; + } + | pack_body pack_init_func + { + PackageStmt *n = (PackageStmt *)$1; + n->initfuncs = lappend(n->initfuncs, $2); + $$ = $1; + } + | pack_body pack_globals + { + PackageStmt *n = (PackageStmt *)$1; + n->variables = lappend(n->variables, $2); + $$ = $1; + } + | pack_body pack_type + { + PackageStmt *n = (PackageStmt *)$1; + n->types = lappend(n->types, $2); + $$ = $1; + } + | pack_body pack_op + { + PackageStmt *n = (PackageStmt *)$1; + n->operators = lappend(n->operators, $2); + $$ = $1; + } + | pack_body pack_agg + { + PackageStmt *n = (PackageStmt *)$1; + n->aggregates = lappend(n->aggregates, $2); + $$ = $1; + } + ; + +pack_func: FUNCTION func_name func_args RETURNS func_return + AS func_as LANGUAGE ColId_or_Sconst opt_with + { + ProcedureStmt *n = makeNode(ProcedureStmt); + n->funcname = $2; + n->argTypes = $3; + n->returnType = (Node *)$5; + n->withClause = $10; + n->as = $7; + n->language = $9; + $$ = (Node *)n; + }; + +pack_init_func: BODY AS func_as LANGUAGE ColId_or_Sconst opt_with + { + ProcedureStmt *n = makeNode(ProcedureStmt); + n->funcname = NULL; /* will be filled in later */ + n->argTypes = NULL; + n->returnType = (Node *)NULL; + n->withClause = $6; + n->as = $3; + n->language = $5; + $$ = (Node *)n; + }; + +pack_globals: DECLARE pack_global_list LANGUAGE ColId_or_Sconst + { + CreateStmt *n = makeNode(CreateStmt); + n->tableElts = $2; + n->relname = $4; + $$ = (Node *)n; + } + +pack_global_list: pack_global { $$ = makeList1($1); } + | pack_global_list ',' pack_global { $$ = lappend($1, $3); } + ; + +pack_global: ColId Sconst + { + PackageGlobal *n = makeNode(PackageGlobal); + n->name = $1; + n->typetext = $2; + $$ = (Node *)n; + }; + +pack_type: TYPE_P name definition + { + DefineStmt *n = makeNode(DefineStmt); + n->defType = TYPE_P; + n->defname = $2; + n->definition = $3; + $$ = (Node *)n; + }; + +pack_op: OPERATOR all_Op definition + { + DefineStmt *n = makeNode(DefineStmt); + n->defType = OPERATOR; + n->defname = $2; + n->definition = $3; + $$ = (Node *)n; + }; + +pack_agg: AGGREGATE func_name definition + { + DefineStmt *n = makeNode(DefineStmt); + n->defType = AGGREGATE; + n->defname = $2; + n->definition = $3; + $$ = (Node *)n; + }; + + +/***************************************************************************** + * + * QUERY: + * * DROP FUNCTION funcname (arg1, arg2, ...) * DROP AGGREGATE aggname (aggtype) * DROP OPERATOR opname (leftoperand_typ rightoperand_typ) + * DROP PACKAGE packame * *****************************************************************************/ @@ -2611,6 +2862,14 @@ } ; +RemovePackageStmt: DROP PACKAGE name + { + RemovePackageStmt *n = makeNode(RemovePackageStmt); + n->packname = $3; + $$ = (Node *)n; + } + ; + RemoveAggrStmt: DROP AGGREGATE func_name '(' aggr_argtype ')' { RemoveAggrStmt *n = makeNode(RemoveAggrStmt); @@ -4404,6 +4663,8 @@ List *largs = $2; List *rargs = $6; n->funcname = xlateSqlFunc("overlaps"); + n->package = STANDARDPackageId; + n->package_exact = TRUE; if (length(largs) == 1) largs = lappend(largs, $2); else if (length(largs) != 2) @@ -4479,6 +4740,8 @@ { FuncCall *n = makeNode(FuncCall); n->funcname = "timezone"; + n->package = STANDARDPackageId; + n->package_exact = TRUE; n->args = makeList2($5, $1); n->agg_star = FALSE; n->agg_distinct = FALSE; @@ -4544,6 +4807,8 @@ { FuncCall *n = makeNode(FuncCall); n->funcname = "like_escape"; + n->package = STANDARDPackageId; + n->package_exact = TRUE; n->args = makeList2($3, $5); n->agg_star = FALSE; n->agg_distinct = FALSE; @@ -4555,6 +4820,8 @@ { FuncCall *n = makeNode(FuncCall); n->funcname = "like_escape"; + n->package = STANDARDPackageId; + n->package_exact = TRUE; n->args = makeList2($4, $6); n->agg_star = FALSE; n->agg_distinct = FALSE; @@ -4566,6 +4833,8 @@ { FuncCall *n = makeNode(FuncCall); n->funcname = "like_escape"; + n->package = STANDARDPackageId; + n->package_exact = TRUE; n->args = makeList2($3, $5); n->agg_star = FALSE; n->agg_distinct = FALSE; @@ -4577,6 +4846,8 @@ { FuncCall *n = makeNode(FuncCall); n->funcname = "like_escape"; + n->package = STANDARDPackageId; + n->package_exact = TRUE; n->args = makeList2($4, $6); n->agg_star = FALSE; n->agg_distinct = FALSE; @@ -4832,26 +5103,53 @@ { $$ = $1; } | func_name '(' ')' { + /* Note we can't use the opt_package construct here - + * it generates lots of s/r conficts */ FuncCall *n = makeNode(FuncCall); - n->funcname = $1; + n->funcname = checkForPackname($1, &n->package, + &n->package_exact); n->args = NIL; n->agg_star = FALSE; n->agg_distinct = FALSE; $$ = (Node *)n; } + | PACKID func_name '(' ')' + { + FuncCall *n = makeNode(FuncCall); + n->funcname = $2; + n->package = $1; + n->package_exact = TRUE; + n->args = NIL; + n->agg_star = FALSE; + n->agg_distinct = FALSE; + $$ = (Node *)n; + } | func_name '(' expr_list ')' { FuncCall *n = makeNode(FuncCall); - n->funcname = $1; + n->funcname = checkForPackname($1, &n->package, + &n->package_exact); n->args = $3; n->agg_star = FALSE; n->agg_distinct = FALSE; $$ = (Node *)n; } + | PACKID func_name '(' expr_list ')' + { + FuncCall *n = makeNode(FuncCall); + n->funcname = $2; + n->package = $1; + n->package_exact = TRUE; + n->args = $4; + n->agg_star = FALSE; + n->agg_distinct = FALSE; + $$ = (Node *)n; + } | func_name '(' ALL expr_list ')' { FuncCall *n = makeNode(FuncCall); - n->funcname = $1; + n->funcname = checkForPackname($1, &n->package, + &n->package_exact); n->args = $4; n->agg_star = FALSE; n->agg_distinct = FALSE; @@ -4861,15 +5159,42 @@ */ $$ = (Node *)n; } + | PACKID func_name '(' ALL expr_list ')' + { + FuncCall *n = makeNode(FuncCall); + n->funcname = $2; + n->package = $1; + n->package_exact = TRUE; + n->args = $5; + n->agg_star = FALSE; + n->agg_distinct = FALSE; + /* Ideally we'd mark the FuncCall node to indicate + * "must be an aggregate", but there's no provision + * for that in FuncCall at the moment. + */ + $$ = (Node *)n; + } | func_name '(' DISTINCT expr_list ')' { FuncCall *n = makeNode(FuncCall); - n->funcname = $1; + n->funcname = checkForPackname($1, &n->package, + &n->package_exact); n->args = $4; n->agg_star = FALSE; n->agg_distinct = TRUE; $$ = (Node *)n; } + | PACKID func_name '(' DISTINCT expr_list ')' + { + FuncCall *n = makeNode(FuncCall); + n->funcname = $2; + n->package = $1; + n->package_exact = TRUE; + n->args = $5; + n->agg_star = FALSE; + n->agg_distinct = TRUE; + $$ = (Node *)n; + } | func_name '(' '*' ')' { /* @@ -4889,12 +5214,33 @@ star->val.type = T_Integer; star->val.val.ival = 1; - n->funcname = $1; + n->funcname = checkForPackname($1, &n->package, + &n->package_exact); n->args = makeList1(star); n->agg_star = TRUE; n->agg_distinct = FALSE; $$ = (Node *)n; } + | PACKID func_name '(' '*' ')' + { + /* + * For now, we transform AGGREGATE(*) into AGGREGATE(1). + * + * See comment for non-PACKID version above + */ + FuncCall *n = makeNode(FuncCall); + A_Const *star = makeNode(A_Const); + + star->val.type = T_Integer; + star->val.val.ival = 1; + n->funcname = $2; + n->package = $1; + n->package_exact = TRUE; + n->args = makeList1(star); + n->agg_star = TRUE; + n->agg_distinct = FALSE; + $$ = (Node *)n; + } | CURRENT_DATE opt_empty_parentheses { /* @@ -5037,6 +5383,8 @@ { FuncCall *n = makeNode(FuncCall); n->funcname = "current_user"; + n->package = STANDARDPackageId; + n->package_exact = TRUE; n->args = NIL; n->agg_star = FALSE; n->agg_distinct = FALSE; @@ -5046,6 +5394,8 @@ { FuncCall *n = makeNode(FuncCall); n->funcname = "session_user"; + n->package = STANDARDPackageId; + n->package_exact = TRUE; n->args = NIL; n->agg_star = FALSE; n->agg_distinct = FALSE; @@ -5055,6 +5405,8 @@ { FuncCall *n = makeNode(FuncCall); n->funcname = "current_user"; + n->package = STANDARDPackageId; + n->package_exact = TRUE; n->args = NIL; n->agg_star = FALSE; n->agg_distinct = FALSE; @@ -5064,6 +5416,8 @@ { FuncCall *n = makeNode(FuncCall); n->funcname = "date_part"; + n->package = STANDARDPackageId; + n->package_exact = TRUE; n->args = $3; n->agg_star = FALSE; n->agg_distinct = FALSE; @@ -5074,6 +5428,8 @@ /* position(A in B) is converted to position(B, A) */ FuncCall *n = makeNode(FuncCall); n->funcname = "position"; + n->package = STANDARDPackageId; + n->package_exact = TRUE; n->args = $3; n->agg_star = FALSE; n->agg_distinct = FALSE; @@ -5086,6 +5442,8 @@ */ FuncCall *n = makeNode(FuncCall); n->funcname = "substring"; + n->package = STANDARDPackageId; + n->package_exact = TRUE; n->args = $3; n->agg_star = FALSE; n->agg_distinct = FALSE; @@ -5098,6 +5456,8 @@ */ FuncCall *n = makeNode(FuncCall); n->funcname = "btrim"; + n->package = STANDARDPackageId; + n->package_exact = TRUE; n->args = $4; n->agg_star = FALSE; n->agg_distinct = FALSE; @@ -5107,6 +5467,8 @@ { FuncCall *n = makeNode(FuncCall); n->funcname = "ltrim"; + n->package = STANDARDPackageId; + n->package_exact = TRUE; n->args = $4; n->agg_star = FALSE; n->agg_distinct = FALSE; @@ -5116,6 +5478,8 @@ { FuncCall *n = makeNode(FuncCall); n->funcname = "rtrim"; + n->package = STANDARDPackageId; + n->package_exact = TRUE; n->args = $4; n->agg_star = FALSE; n->agg_distinct = FALSE; @@ -5125,6 +5489,8 @@ { FuncCall *n = makeNode(FuncCall); n->funcname = "btrim"; + n->package = STANDARDPackageId; + n->package_exact = TRUE; n->args = $3; n->agg_star = FALSE; n->agg_distinct = FALSE; @@ -5638,6 +6004,7 @@ | BACKWARD { $$ = "backward"; } | BEFORE { $$ = "before"; } | BEGIN_TRANS { $$ = "begin"; } + | BODY { $$ = "body"; } | BY { $$ = "by"; } | CACHE { $$ = "cache"; } | CASCADE { $$ = "cascade"; } @@ -5702,6 +6069,7 @@ | OPERATOR { $$ = "operator"; } | OPTION { $$ = "option"; } | OWNER { $$ = "owner"; } + | PACKAGE { $$ = "package"; } | PARTIAL { $$ = "partial"; } | PASSWORD { $$ = "password"; } | PENDANT { $$ = "pendant"; } @@ -6146,9 +6514,10 @@ } /* xlateSqlType() */ -void parser_init(Oid *typev, int nargs) +void parser_init(Oid packId, Oid *typev, int nargs) { QueryIsRule = FALSE; + packageId = packId; /* * Keep enough information around to fill out the type of param nodes * used in postquel functions @@ -6234,4 +6603,47 @@ strcpy(newval+1, oldval); v->val.str = newval; } +} + +static Node * +checkForPacknameInNode(Node *innode, Oid *pack, bool *isExact) +{ + char **name; + + if (nodeTag(innode) == T_String) + name = &strVal(innode); + else if (nodeTag(innode) == T_TypeName) + name = &((TypeName *) innode)->name; + else + { + *pack = packageId; + *isExact = FALSE; + return innode; + } + + *name = checkForPackname(*name, pack, isExact); + return innode; +} + + +static char * +checkForPackname(char *name, Oid *pack, bool *isExact) +{ + char *p, + scratch[NAMEDATALEN]; + + if ((p = strchr(name, '.')) != NULL) + { + StrNCpy(scratch, name, p - name + 1); /* +1 for trailing '\0' */ + if ((*pack = PackageIdFromName(scratch)) != 0) + { + *isExact = TRUE; + return p + 1; + } + } + + *pack = packageId; + *isExact = FALSE; + + return name; } Index: src/backend/parser/keywords.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/parser/keywords.c,v retrieving revision 1.99 diff -u -r1.99 keywords.c --- src/backend/parser/keywords.c 2001/10/10 00:02:42 1.99 +++ src/backend/parser/keywords.c 2001/10/17 16:41:29 @@ -51,6 +51,7 @@ {"between", BETWEEN}, {"binary", BINARY}, {"bit", BIT}, + {"body", BODY}, {"both", BOTH}, {"by", BY}, {"cache", CACHE}, @@ -199,6 +200,7 @@ {"outer", OUTER_P}, {"overlaps", OVERLAPS}, {"owner", OWNER}, + {"package", PACKAGE}, {"partial", PARTIAL}, {"password", PASSWORD}, {"path", PATH_P}, Index: src/backend/parser/parse_agg.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/parser/parse_agg.c,v retrieving revision 1.45 diff -u -r1.45 parse_agg.c --- src/backend/parser/parse_agg.c 2001/08/09 18:28:17 1.45 +++ src/backend/parser/parse_agg.c 2001/10/17 16:41:29 @@ -187,22 +187,23 @@ Aggref * -ParseAgg(ParseState *pstate, char *aggname, Oid basetype, +ParseAgg(ParseState *pstate, Oid aggId, Oid basetype, List *args, bool agg_star, bool agg_distinct, int precedence) { HeapTuple aggtuple; Form_pg_aggregate aggform; Aggref *aggref; + char *aggname; - aggtuple = SearchSysCache(AGGNAME, - PointerGetDatum(aggname), - ObjectIdGetDatum(basetype), - 0, 0); + aggtuple = SearchSysCache(AGGOID, + ObjectIdGetDatum(aggId), + 0, 0, 0); /* shouldn't happen --- caller should have checked already */ if (!HeapTupleIsValid(aggtuple)) - agg_error("ParseAgg", aggname, basetype); + elog(ERROR, "Aggregate %d does not exist", aggId); aggform = (Form_pg_aggregate) GETSTRUCT(aggtuple); + aggname = pstrdup(aggform->aggname.data); /* * There used to be a really ugly hack for count(*) here. @@ -220,6 +221,7 @@ aggref = makeNode(Aggref); aggref->aggname = pstrdup(aggname); + aggref->aggId = aggId; aggref->basetype = aggform->aggbasetype; aggref->aggtype = aggform->aggfinaltype; aggref->target = lfirst(args); Index: src/backend/parser/parse_coerce.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/parser/parse_coerce.c,v retrieving revision 2.63 diff -u -r2.63 parse_coerce.c --- src/backend/parser/parse_coerce.c 2001/10/04 17:52:24 2.63 +++ src/backend/parser/parse_coerce.c 2001/10/17 16:41:30 @@ -128,6 +128,8 @@ FuncCall *n = makeNode(FuncCall); n->funcname = typeidTypeName(targetTypeId); + n->package = STANDARDPackageId; + n->package_exact = TRUE; n->args = makeList1(node); n->agg_star = false; n->agg_distinct = false; @@ -241,9 +243,9 @@ ftup = SearchSysCache(PROCNAME, PointerGetDatum(typeidTypeName(targetTypeId)), + ObjectIdGetDatum(STANDARDPackageId), Int32GetDatum(1), - PointerGetDatum(oid_array), - 0); + PointerGetDatum(oid_array)); if (!HeapTupleIsValid(ftup)) return false; /* Make sure the function's result type is as expected, too */ @@ -297,9 +299,9 @@ /* attempt to find with arguments exactly as specified... */ if (SearchSysCacheExists(PROCNAME, PointerGetDatum(funcname), + ObjectIdGetDatum(STANDARDPackageId), Int32GetDatum(2), - PointerGetDatum(oid_array), - 0)) + PointerGetDatum(oid_array))) { A_Const *cons = makeNode(A_Const); FuncCall *func = makeNode(FuncCall); @@ -308,6 +310,8 @@ cons->val.val.ival = atttypmod; func->funcname = funcname; + func->package = STANDARDPackageId; + func->package_exact = TRUE; func->args = makeList2(node, cons); func->agg_star = false; func->agg_distinct = false; Index: src/backend/parser/parse_expr.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/parser/parse_expr.c,v retrieving revision 1.103 diff -u -r1.103 parse_expr.c --- src/backend/parser/parse_expr.c 2001/10/08 21:46:59 1.103 +++ src/backend/parser/parse_expr.c 2001/10/17 16:41:30 @@ -288,7 +288,9 @@ fn->args, fn->agg_star, fn->agg_distinct, - precedence); + precedence, + fn->package, + fn->package_exact); break; } case T_SubLink: Index: src/backend/parser/parse_func.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/parser/parse_func.c,v retrieving revision 1.111 diff -u -r1.111 parse_func.c --- src/backend/parser/parse_func.c 2001/10/04 22:06:46 1.111 +++ src/backend/parser/parse_func.c 2001/10/17 16:41:31 @@ -21,6 +21,7 @@ #include "catalog/indexing.h" #include "catalog/pg_aggregate.h" #include "catalog/pg_inherits.h" +#include "catalog/pg_package.h" #include "catalog/pg_proc.h" #include "nodes/makefuncs.h" #include "parser/parse_agg.h" @@ -41,7 +42,7 @@ static Oid **argtype_inherit(int nargs, Oid *argtypes); static int find_inheritors(Oid relid, Oid **supervec); -static CandidateList func_get_candidates(char *funcname, int nargs); +static CandidateList func_get_candidates(char *funcname, Oid packId, int nargs); static Oid **gen_cross_product(InhPaths *arginh, int nargs); static void make_arguments(ParseState *pstate, int nargs, @@ -55,8 +56,10 @@ static FieldSelect *setup_field_select(Node *input, char *attname, Oid relid); static Oid *func_select_candidate(int nargs, Oid *input_typeids, CandidateList candidates); -static int agg_get_candidates(char *aggname, Oid typeId, CandidateList *candidates); -static Oid agg_select_candidate(Oid typeid, CandidateList candidates); +static int agg_get_candidates(char *aggname, Oid packId, Oid typeId, + CandidateList *candidates); +static Oid agg_select_candidate(Oid typeid, CandidateList candidates, + Oid *aggId); /* @@ -79,7 +82,9 @@ retval = ParseFuncOrColumn(pstate, strVal(lfirst(attr->attrs)), makeList1(param), false, false, - precedence); + precedence, + STANDARDPackageId, + TRUE); } else { @@ -90,7 +95,9 @@ retval = ParseFuncOrColumn(pstate, strVal(lfirst(attr->attrs)), makeList1(ident), false, false, - precedence); + precedence, + STANDARDPackageId, + TRUE); } /* Do more attributes follow this one? */ @@ -99,7 +106,9 @@ retval = ParseFuncOrColumn(pstate, strVal(lfirst(mutator_iter)), makeList1(retval), false, false, - precedence); + precedence, + STANDARDPackageId, + TRUE); } return retval; @@ -123,11 +132,12 @@ Node * ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs, bool agg_star, bool agg_distinct, - int precedence) + int precedence, Oid packId, bool packexact) { Oid rettype = InvalidOid; Oid argrelid = InvalidOid; Oid funcid = InvalidOid; + Oid originalPackId = packId; List *i = NIL; Node *first_arg = NULL; char *refname; @@ -242,46 +252,58 @@ !(IsA(first_arg, Ident) && ((Ident *) first_arg)->isRel); } +could_be_agg_loop: if (could_be_agg) { - Oid basetype = exprType(lfirst(fargs)); + Oid basetype = exprType(lfirst(fargs)), + foundAgg; int ncandidates; CandidateList candidates; + HeapTuple tup; /* try for exact match first... */ - if (SearchSysCacheExists(AGGNAME, - PointerGetDatum(funcname), - ObjectIdGetDatum(basetype), - 0, 0)) - return (Node *) ParseAgg(pstate, funcname, basetype, - fargs, agg_star, agg_distinct, - precedence); + if (HeapTupleIsValid(tup = SearchSysCache(AGGNAME, + PointerGetDatum(funcname), + ObjectIdGetDatum(packId), + ObjectIdGetDatum(basetype), + 0))) + { + foundAgg = tup->t_data->t_oid; + ReleaseSysCache(tup); + return (Node *) ParseAgg(pstate, foundAgg, basetype, fargs, + agg_star, agg_distinct, precedence); + } /* check for aggregate-that-accepts-any-type (eg, COUNT) */ - if (SearchSysCacheExists(AGGNAME, - PointerGetDatum(funcname), - ObjectIdGetDatum(0), - 0, 0)) - return (Node *) ParseAgg(pstate, funcname, 0, - fargs, agg_star, agg_distinct, - precedence); + if (HeapTupleIsValid(tup = SearchSysCache(AGGNAME, + PointerGetDatum(funcname), + ObjectIdGetDatum(packId), + ObjectIdGetDatum(0), + 0))) + { + foundAgg = tup->t_data->t_oid; + ReleaseSysCache(tup); + return (Node *) ParseAgg(pstate, foundAgg, 0, fargs, agg_star, + agg_distinct, precedence); + } /* * No exact match yet, so see if there is another entry in the * aggregate table that is compatible. - thomas 1998-12-05 */ - ncandidates = agg_get_candidates(funcname, basetype, &candidates); + ncandidates = agg_get_candidates(funcname, packId, basetype, + &candidates); if (ncandidates > 0) { - Oid type; + Oid type, aggId; - type = agg_select_candidate(basetype, candidates); + type = agg_select_candidate(basetype, candidates, &aggId); if (OidIsValid(type)) { lfirst(fargs) = coerce_type(pstate, lfirst(fargs), basetype, type, -1); basetype = type; - return (Node *) ParseAgg(pstate, funcname, basetype, + return (Node *) ParseAgg(pstate, aggId, basetype, fargs, agg_star, agg_distinct, precedence); } @@ -295,6 +317,11 @@ if (must_be_agg) { + if ((packId != STANDARDPackageId) && (packexact == false)) + { + packId = STANDARDPackageId; + goto could_be_agg_loop; + } /* * No matching agg, but we had '*' or DISTINCT, so a plain @@ -309,121 +336,126 @@ * If we dropped through to here it's really a function (or a set, * which is implemented as a function). Extract arg type info and * transform relation name arguments into varnodes of the appropriate - * form. + * form. Do it only once in case we are doing an inexact matching. */ - MemSet(oid_array, 0, FUNC_MAX_ARGS * sizeof(Oid)); - - argn = 0; - foreach(i, fargs) + if (packId == originalPackId) { - Node *arg = lfirst(i); + MemSet(oid_array, 0, FUNC_MAX_ARGS * sizeof(Oid)); - if (IsA(arg, Ident) && ((Ident *) arg)->isRel) + argn = 0; + foreach(i, fargs) { - RangeTblEntry *rte; - int vnum; - Node *rteorjoin; - int sublevels_up; + Node *arg = lfirst(i); - /* - * a relation - */ - refname = ((Ident *) arg)->name; - - rteorjoin = refnameRangeOrJoinEntry(pstate, refname, - &sublevels_up); - - if (rteorjoin == NULL) - rte = addImplicitRTE(pstate, refname); - else if (IsA(rteorjoin, RangeTblEntry)) - rte = (RangeTblEntry *) rteorjoin; - else if (IsA(rteorjoin, JoinExpr)) + if (IsA(arg, Ident) && ((Ident *) arg)->isRel) { + RangeTblEntry *rte; + int vnum; + Node *rteorjoin; + int sublevels_up; /* - * The relation name refers to a join. We can't support - * functions on join tuples (since we don't have a named - * type for the join tuples), so error out. + * a relation */ - if (nargs == 1) + refname = ((Ident *) arg)->name; + + rteorjoin = refnameRangeOrJoinEntry(pstate, refname, + &sublevels_up); + + if (rteorjoin == NULL) + rte = addImplicitRTE(pstate, refname); + else if (IsA(rteorjoin, RangeTblEntry)) + rte = (RangeTblEntry *) rteorjoin; + else if (IsA(rteorjoin, JoinExpr)) { + /* - * We have f(x) or more likely x.f where x is a join - * and f is not one of the attribute names of the join - * (else we'd have recognized it above). Give an - * appropriately vague error message. Would be nicer - * to know which syntax was used... + * The relation name refers to a join. We can't support + * functions on join tuples (since we don't have a named + * type for the join tuples), so error out. */ - elog(ERROR, "No such attribute or function %s.%s", - refname, funcname); + if (nargs == 1) + { + /* + * We have f(x) or more likely x.f where x is a join + * and f is not one of the attribute names of the join + * (else we'd have recognized it above). Give an + * appropriately vague error message. Would be nicer + * to know which syntax was used... + */ + elog(ERROR, "No such attribute or function %s.%s", + refname, funcname); + } + else + { + /* + * There are multiple arguments, so it must be a + * function call. + */ + elog(ERROR, + "Cannot pass result of join %s to a function", + refname); + } + rte = NULL; /* keep compiler quiet */ } else { - /* - * There are multiple arguments, so it must be a function - * call. - */ - elog(ERROR, "Cannot pass result of join %s to a function", - refname); + elog(ERROR, "ParseFuncOrColumn: unexpected node type %d", + nodeTag(rteorjoin)); + rte = NULL; /* keep compiler quiet */ } - rte = NULL; /* keep compiler quiet */ - } - else - { - elog(ERROR, "ParseFuncOrColumn: unexpected node type %d", - nodeTag(rteorjoin)); - rte = NULL; /* keep compiler quiet */ - } - vnum = RTERangeTablePosn(pstate, rte, &sublevels_up); + vnum = RTERangeTablePosn(pstate, rte, &sublevels_up); - /* - * The parameter to be passed to the function is the whole tuple - * from the relation. We build a special VarNode to reflect - * this -- it has varno set to the correct range table entry, - * but has varattno == 0 to signal that the whole tuple is the - * argument. Also, it has typmod set to sizeof(Pointer) to - * signal that the runtime representation will be a pointer - * not an Oid. - */ - if (rte->relname == NULL) - { /* - * RTE is a subselect; must fail for lack of a specific type + * The parameter to be passed to the function is the whole tuple + * from the relation. We build a special VarNode to reflect + * this -- it has varno set to the correct range table entry, + * but has varattno == 0 to signal that the whole tuple is the + * argument. Also, it has typmod set to sizeof(Pointer) to + * signal that the runtime representation will be a pointer + * not an Oid. */ - if (nargs == 1) + if (rte->relname == NULL) { /* - * Here, we probably have an unrecognized attribute of a - * sub-select; again can't tell if it was x.f or f(x) + * RTE is a subselect; must fail for lack of a specific type */ - elog(ERROR, "No such attribute or function %s.%s", - refname, funcname); - } - else - { - elog(ERROR, "Cannot pass result of sub-select %s to a function", - refname); + if (nargs == 1) + { + /* + * Here, we probably have an unrecognized attribute of a + * sub-select; again can't tell if it was x.f or f(x) + */ + elog(ERROR, "No such attribute or function %s.%s", + refname, funcname); + } + else + { + elog(ERROR, + "Cannot pass result of sub-select %s to a function", + refname); + } } - } - toid = typenameTypeId(rte->relname); + toid = typenameTypeId(rte->relname); - /* replace it in the arg list */ - lfirst(i) = makeVar(vnum, - InvalidAttrNumber, - toid, - sizeof(Pointer), - sublevels_up); - } - else if (!attisset) - toid = exprType(arg); - else - { + /* replace it in the arg list */ + lfirst(i) = makeVar(vnum, + InvalidAttrNumber, + toid, + sizeof(Pointer), + sublevels_up); + } + else if (!attisset) + toid = exprType(arg); + else + { /* if attisset is true, we already set toid for the single arg */ - } + } - oid_array[argn++] = toid; + oid_array[argn++] = toid; + } } /* @@ -458,7 +490,7 @@ * function's return value. it also returns the true argument types * to the function. */ - fdresult = func_get_detail(funcname, fargs, nargs, oid_array, + fdresult = func_get_detail(funcname, packId, fargs, nargs, oid_array, &funcid, &rettype, &retset, &true_oid_array); if (fdresult == FUNCDETAIL_COERCION) @@ -473,6 +505,16 @@ if (fdresult != FUNCDETAIL_NORMAL) { /* + * Check and see if we should check in STANDARD before giving + * up. + */ + if ((packId != STANDARDPackageId) && (packexact == false)) + { + packId = STANDARDPackageId; + goto could_be_agg_loop; + } + + /* * Oops. Time to die. * * If there is a single argument of complex type, we might be @@ -491,7 +533,8 @@ } /* Else generate a detailed complaint */ - func_error(NULL, funcname, nargs, oid_array, + func_error(NULL, funcname, originalPackId, packexact, nargs, + oid_array, "Unable to identify a function that satisfies the " "given argument types" "\n\tYou may need to add explicit typecasts"); @@ -549,6 +592,7 @@ static int agg_get_candidates(char *aggname, + Oid packId, Oid typeId, CandidateList *candidates) { @@ -558,7 +602,7 @@ HeapTuple tup; Form_pg_aggregate agg; int ncandidates = 0; - ScanKeyData aggKey[1]; + ScanKeyData aggKey[2]; *candidates = NULL; @@ -567,11 +611,16 @@ F_NAMEEQ, NameGetDatum(aggname)); + ScanKeyEntryInitialize(&aggKey[1], 0, + Anum_pg_aggregate_aggpack, + F_OIDEQ, + ObjectIdGetDatum(packId)); + pg_aggregate_desc = heap_openr(AggregateRelationName, AccessShareLock); pg_aggregate_scan = heap_beginscan(pg_aggregate_desc, 0, SnapshotSelf, /* ??? */ - 1, + 2, aggKey); while (HeapTupleIsValid(tup = heap_getnext(pg_aggregate_scan, 0))) @@ -582,6 +631,7 @@ current_candidate->args = (Oid *) palloc(sizeof(Oid)); current_candidate->args[0] = agg->aggbasetype; + current_candidate->oid = tup->t_data->t_oid; current_candidate->next = *candidates; *candidates = current_candidate; ncandidates++; @@ -598,9 +648,12 @@ * Try to choose only one candidate aggregate function from a list of * possible matches. Return value is Oid of input type of aggregate * if successful, else InvalidOid. + * + * If we return a valid type, we store the oid of the respective match + * in *aggId */ static Oid -agg_select_candidate(Oid typeid, CandidateList candidates) +agg_select_candidate(Oid typeid, CandidateList candidates, Oid *aggId) { CandidateList current_candidate; CandidateList last_candidate; @@ -629,7 +682,10 @@ } } if (ncandidates == 1) + { + *aggId = last_candidate->oid; return last_candidate->args[0]; + } /* * If no luck that way, look for candidates which allow coercion and @@ -671,7 +727,10 @@ last_candidate->next = NULL; if (ncandidates == 1) + { + *aggId = candidates->oid; return candidates->args[0]; + } return InvalidOid; } /* agg_select_candidate() */ @@ -682,11 +741,11 @@ * funcname taking nargs arguments exists */ static CandidateList -func_get_candidates(char *funcname, int nargs) +func_get_candidates(char *funcname, Oid packId, int nargs) { Relation heapRelation; Relation idesc; - ScanKeyData skey; + ScanKeyData skey[2]; HeapTupleData tuple; IndexScanDesc sd; RetrieveIndexResult indexRes; @@ -696,15 +755,21 @@ int i; heapRelation = heap_openr(ProcedureRelationName, AccessShareLock); - ScanKeyEntryInitialize(&skey, + ScanKeyEntryInitialize(&skey[0], (bits16) 0x0, (AttrNumber) Anum_pg_proc_proname, (RegProcedure) F_NAMEEQ, (Datum) funcname); + ScanKeyEntryInitialize(&skey[1], + (bits16) 0x0, + (AttrNumber) Anum_pg_proc_propack, + (RegProcedure) F_OIDEQ, + ObjectIdGetDatum(packId)); + idesc = index_openr(ProcedureNameIndex); - sd = index_beginscan(idesc, false, 1, &skey); + sd = index_beginscan(idesc, false, 2, skey); do { @@ -725,6 +790,7 @@ { current_candidate = (CandidateList) palloc(sizeof(struct _CandidateList)); + current_candidate->oid = tuple.t_data->t_oid; current_candidate->args = (Oid *) palloc(FUNC_MAX_ARGS * sizeof(Oid)); MemSet(current_candidate->args, 0, FUNC_MAX_ARGS * sizeof(Oid)); @@ -775,6 +841,7 @@ { matching_candidate = (CandidateList) palloc(sizeof(struct _CandidateList)); + matching_candidate->oid = current_candidate->oid; matching_candidate->args = current_typeids; matching_candidate->next = *candidates; *candidates = matching_candidate; @@ -1115,6 +1182,7 @@ */ FuncDetailCode func_get_detail(char *funcname, + Oid packId, List *fargs, int nargs, Oid *argtypes, @@ -1129,9 +1197,9 @@ /* attempt to find with arguments exactly as specified... */ ftup = SearchSysCache(PROCNAME, PointerGetDatum(funcname), + ObjectIdGetDatum(packId), Int32GetDatum(nargs), - PointerGetDatum(argtypes), - 0); + PointerGetDatum(argtypes)); if (HeapTupleIsValid(ftup)) { @@ -1194,7 +1262,7 @@ * candidates... */ - function_typeids = func_get_candidates(funcname, nargs); + function_typeids = func_get_candidates(funcname, packId, nargs); /* found something, so let's look through them... */ if (function_typeids != NULL) @@ -1224,9 +1292,9 @@ *true_typeids = current_function_typeids->args; ftup = SearchSysCache(PROCNAME, PointerGetDatum(funcname), + ObjectIdGetDatum(packId), Int32GetDatum(nargs), - PointerGetDatum(*true_typeids), - 0); + PointerGetDatum(*true_typeids)); Assert(HeapTupleIsValid(ftup)); break; } @@ -1246,9 +1314,9 @@ /* was able to choose a best candidate */ ftup = SearchSysCache(PROCNAME, PointerGetDatum(funcname), + ObjectIdGetDatum(packId), Int32GetDatum(nargs), - PointerGetDatum(*true_typeids), - 0); + PointerGetDatum(*true_typeids)); Assert(HeapTupleIsValid(ftup)); break; } @@ -1690,10 +1758,14 @@ * argument types */ void -func_error(char *caller, char *funcname, int nargs, Oid *argtypes, char *msg) +func_error(char *caller, char *funcname, Oid packId, bool isexact, int nargs, + Oid *argtypes, char *msg) { char p[(NAMEDATALEN + 2) * FUNC_MAX_ARGS], - *ptr; + *ptr, + packstr[NAMEDATALEN + 2], + m[NAMEDATALEN + 33], + *mp; int i; ptr = p; @@ -1715,16 +1787,139 @@ ptr += strlen(ptr); } + mp = "does not exist"; + if (isexact) + { + if (PackageNameFromID(packId, (NameData *)packstr)) + strcpy(packstr, "Invalid"); + strcat(packstr, "."); + } + else + { + if (packId != STANDARDPackageId) + { + mp = m; + /* use packstr as temporary storage */ + if (PackageNameFromID(packId, (NameData *)packstr)) + { + snprintf(m, NAMEDATALEN+33, + "not found in invalid package context"); + } + else + { + snprintf(m, NAMEDATALEN+33, + "not found from package context '%s'", + packstr); + } + } + packstr[0] = '\0'; + } + if (caller == NULL) { - elog(ERROR, "Function '%s(%s)' does not exist%s%s", - funcname, p, + elog(ERROR, "Function '%s%s(%s)' %s%s%s", + packstr, funcname, p, mp, ((msg != NULL) ? "\n\t" : ""), ((msg != NULL) ? msg : "")); } else { - elog(ERROR, "%s: function '%s(%s)' does not exist%s%s", - caller, funcname, p, + elog(ERROR, "%s: function '%s%s(%s)' %s%s%s", + caller, packstr, funcname, p, mp, ((msg != NULL) ? "\n\t" : ""), ((msg != NULL) ? msg : "")); } +} + +/* + * GetFuncFromDefElem + * Get a pg_proc heap tuple from a DefElem node + * + * We are given a DefElem node and info about the function signature. + * Handle looking in the package context, and then looking in standard + * if permissable. Handle printing error message if not found. + */ +HeapTuple +GetFuncFromDefElem(DefElem *node, int nargs, Oid *fnArgs, char *caller, + char *type1, char *type2) +{ + HeapTuple tup; + char packstr[NAMEDATALEN + 2], + typestr[2 * NAMEDATALEN + 7], + m[NAMEDATALEN+33], + *mp, + *funcname; + + if (nodeTag(node->arg) == T_String) + funcname = strVal(node->arg); + else if (nodeTag(node->arg) == T_TypeName) + funcname = ((TypeName *) node->arg)->name; + else + funcname = NULL; + + tup = SearchSysCache(PROCNAME, + PointerGetDatum(funcname), + ObjectIdGetDatum(node->package), + Int32GetDatum(nargs), + PointerGetDatum(fnArgs)); + + if ((!HeapTupleIsValid(tup) || + ((Form_pg_proc) GETSTRUCT(tup))->pronargs != nargs) + && (node->packexact == false) && (node->package != STANDARDPackageId)) + { + tup = SearchSysCache(PROCNAME, + PointerGetDatum(funcname), + ObjectIdGetDatum(STANDARDPackageId), + Int32GetDatum(nargs), + PointerGetDatum(fnArgs)); + } + + if (HeapTupleIsValid(tup) && + ((Form_pg_proc) GETSTRUCT(tup))->pronargs == nargs) + return tup; + + mp = "does not exist"; + if (node->packexact) + { + if (PackageNameFromID(node->package, (NameData *)packstr)) + strcpy(packstr, "Invalid"); + strcat(packstr, "."); + } + else + { + if (node->package != STANDARDPackageId) + { + mp = m; + /* use packstr as temporary storage */ + if (PackageNameFromID(node->package, (NameData *)packstr)) + { + snprintf(m, NAMEDATALEN+33, + "not found in invalid package context"); + } + else + { + snprintf(m, NAMEDATALEN+33, + "not found from package context '%s'", + packstr); + } + } + packstr[0] = '\0'; + } + + if (type1 == NULL) + { + typestr[0] = '\0'; + } + else if (type2 == NULL) + { + snprintf(typestr, 2 * NAMEDATALEN + 7, "'%s'", type1); + } + else + { + snprintf(typestr, 2 * NAMEDATALEN + 7, "'%s','%s'", type1, type2); + } + + elog(ERROR, "%s%sFunction '%s%s'(%s) %s", + ((caller != NULL) ? caller : ""), ((caller != NULL) ? ": " : ""), + packstr, funcname, typestr, mp); + + return NULL; } Index: src/backend/parser/parse_type.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/parser/parse_type.c,v retrieving revision 1.36 diff -u -r1.36 parse_type.c --- src/backend/parser/parse_type.c 2001/10/09 04:15:38 1.36 +++ src/backend/parser/parse_type.c 2001/10/17 16:41:32 @@ -289,7 +289,7 @@ buf = (char *) palloc(strlen(str) + 16); sprintf(buf, "SELECT (NULL::%s)", str); - raw_parsetree_list = parser(buf, NULL, 0); + raw_parsetree_list = parser(buf, STANDARDPackageId, NULL, 0); /* * Make sure we got back exactly what we expected and no more; Index: src/backend/parser/parser.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/parser/parser.c,v retrieving revision 1.49 diff -u -r1.49 parser.c --- src/backend/parser/parser.c 2001/03/22 03:59:42 1.49 +++ src/backend/parser/parser.c 2001/10/17 16:41:32 @@ -49,7 +49,7 @@ * Returns a list of raw (un-analyzed) parse trees. */ List * -parser(char *str, Oid *typev, int nargs) +parser(char *str, Oid packId, Oid *typev, int nargs) { int yyresult; @@ -58,7 +58,7 @@ have_lookahead = false; scanner_init(); - parser_init(typev, nargs); + parser_init(packId, typev, nargs); parse_expr_init(); yyresult = yyparse(); Index: src/backend/parser/scan.l =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/parser/scan.l,v retrieving revision 1.90 diff -u -r1.90 scan.l --- src/backend/parser/scan.l 2001/09/07 23:17:14 1.90 +++ src/backend/parser/scan.l 2001/10/17 16:41:34 @@ -25,6 +25,7 @@ #include "miscadmin.h" #include "nodes/parsenodes.h" #include "nodes/pg_list.h" +#include "catalog/pg_package.h" #include "parser/gramparse.h" #include "parser/keywords.h" #include "parser/parse.h" @@ -489,6 +490,66 @@ return FCONST; } + +{identifier}\.{identifier} { + ScanKeyword *keyword; + int i, retval; + + /* Break into two words */ + for (i = 0; yytext[i] != '.'; i++) + ; + yytext[i] = '\0'; + + /* Is it a keyword? */ + keyword = ScanKeywordLookup((char*) yytext); + if (keyword != NULL) + { + retval = keyword->value; + yytext[i] = '.'; + goto exiting; + } + + /* + * No. Convert the identifier to lower case, and truncate + * if necessary. + * + * Note: here we use a locale-dependent case conversion, + * which seems appropriate under SQL99 rules, whereas + * the keyword comparison was NOT locale-dependent. + */ + for (i = 0; yytext[i]; i++) + { + if (isupper((unsigned char) yytext[i])) + yytext[i] = tolower((unsigned char) yytext[i]); + } + if (i >= NAMEDATALEN) + { +#ifdef MULTIBYTE + int len; + len = pg_mbcliplen(yytext,i,NAMEDATALEN-1); + elog(NOTICE, "identifier \"%s\" will be truncated to \"%.*s\"", + yytext, len, yytext); + yytext[len] = '\0'; +#else + elog(NOTICE, "identifier \"%s\" will be truncated to \"%.*s\"", + yytext, NAMEDATALEN-1, yytext); + yytext[NAMEDATALEN-1] = '\0'; +#endif + } + if ((yylval.ival = PackageIdFromName((char*)yytext))) + { + retval = PACKID; + ++i; + } + else + { + yylval.str = pstrdup((char*) yytext); + yytext[i] = '.'; + retval = IDENT; + } +exiting: yyless(i); + return retval; + } {identifier} { ScanKeyword *keyword; Index: src/backend/tcop/postgres.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/tcop/postgres.c,v retrieving revision 1.234 diff -u -r1.234 postgres.c --- src/backend/tcop/postgres.c 2001/09/27 16:29:12 1.234 +++ src/backend/tcop/postgres.c 2001/10/17 16:41:38 @@ -61,6 +61,7 @@ #include "utils/guc.h" #include "utils/memutils.h" #include "utils/ps_status.h" +#include "utils/syscache.h" #ifdef MULTIBYTE #include "mb/pg_wchar.h" #endif @@ -126,7 +127,8 @@ static int InteractiveBackend(StringInfo inBuf); static int SocketBackend(StringInfo inBuf); static int ReadCommand(StringInfo inBuf); -static List *pg_parse_query(char *query_string, Oid *typev, int nargs); +static List *pg_parse_query(char *query_string, Oid packId, Oid *typev, + int nargs); static List *pg_analyze_and_rewrite(Node *parsetree); static void start_xact_command(void); static void finish_xact_command(void); @@ -340,6 +342,7 @@ */ List * pg_parse_and_rewrite(char *query_string, /* string to execute */ + Oid packId,/* package we're in */ Oid *typev,/* parameter types */ int nargs) /* number of parameters */ { @@ -350,7 +353,7 @@ /* * (1) parse the request string into a list of raw parse trees. */ - raw_parsetree_list = pg_parse_query(query_string, typev, nargs); + raw_parsetree_list = pg_parse_query(query_string, packId, typev, nargs); /* * (2) Do parse analysis and rule rewrite. @@ -381,7 +384,7 @@ * commands are not processed any further than the raw parse stage. */ static List * -pg_parse_query(char *query_string, Oid *typev, int nargs) +pg_parse_query(char *query_string, Oid packId, Oid *typev, int nargs) { List *raw_parsetree_list; @@ -391,7 +394,7 @@ if (Show_parser_stats) ResetUsage(); - raw_parsetree_list = parser(query_string, typev, nargs); + raw_parsetree_list = parser(query_string, packId, typev, nargs); if (Show_parser_stats) { @@ -649,7 +652,7 @@ * Do basic parsing of the query or queries (this should be safe even * if we are in aborted transaction state!) */ - parsetree_list = pg_parse_query(query_string, NULL, 0); + parsetree_list = pg_parse_query(query_string, STANDARDPackageId, NULL, 0); /* * Switch back to execution context to enter the loop. Index: src/backend/tcop/utility.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/tcop/utility.c,v retrieving revision 1.120 diff -u -r1.120 utility.c --- src/backend/tcop/utility.c 2001/10/12 00:07:14 1.120 +++ src/backend/tcop/utility.c 2001/10/17 16:41:39 @@ -499,13 +499,17 @@ { case OPERATOR: DefineOperator(stmt->defname, /* operator name */ + stmt->package, /* owning package */ stmt->definition); /* rest */ break; case TYPE_P: - DefineType(stmt->defname, stmt->definition); + DefineType(stmt->defname, + stmt->package, /* owning package */ + stmt->definition); break; case AGGREGATE: DefineAggregate(stmt->defname, /* aggregate name */ + stmt->package, /* owning package */ stmt->definition); /* rest */ break; } @@ -528,6 +532,12 @@ CreateFunction((ProcedureStmt *) parsetree); break; + case T_PackageStmt: /* CREATE [OR REPLACE] PACKAGE */ + set_ps_display(commandTag = "CREATE"); + + CreatePackage((PackageStmt *) parsetree); + break; + case T_IndexStmt: /* CREATE INDEX */ { IndexStmt *stmt = (IndexStmt *) parsetree; @@ -587,6 +597,16 @@ set_ps_display(commandTag = "DROP"); RemoveFunction(stmt->funcname, stmt->args); + } + break; + + case T_RemovePackageStmt: + { + RemovePackageStmt *stmt = (RemovePackageStmt *) parsetree; + + set_ps_display(commandTag = "DROP"); + + RemovePackage(stmt->packname); } break; Index: src/backend/utils/Gen_fmgrtab.sh =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/utils/Gen_fmgrtab.sh,v retrieving revision 1.20 diff -u -r1.20 Gen_fmgrtab.sh --- src/backend/utils/Gen_fmgrtab.sh 2001/05/22 12:06:51 1.20 +++ src/backend/utils/Gen_fmgrtab.sh 2001/10/17 16:41:40 @@ -99,7 +99,7 @@ -e 's/[ ]*).*$//' | \ $AWK ' /^#/ { print; next; } -$4 == "12" { print; next; }' > $CPPTMPFILE +$5 == "12" { print; next; }' > $CPPTMPFILE if [ $? -ne 0 ]; then cleanup @@ -232,7 +232,7 @@ Bool["f"] = "false" } { printf (" { %d, \"%s\", %d, %s, %s, %s },\n"), \ - $1, $(NF-1), $9, Bool[$8], Bool[$10], $(NF-1) + $1, $(NF-1), $10, Bool[$9], Bool[$11], $(NF-1) }' $RAWFILE >> "$$-$TABLEFILE" if [ $? -ne 0 ]; then Index: src/backend/utils/adt/regproc.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/utils/adt/regproc.c,v retrieving revision 1.63 diff -u -r1.63 regproc.c --- src/backend/utils/adt/regproc.c 2001/08/21 16:36:04 1.63 +++ src/backend/utils/adt/regproc.c 2001/10/17 16:41:40 @@ -18,6 +18,7 @@ #include "access/heapam.h" #include "catalog/catname.h" #include "catalog/indexing.h" +#include "catalog/pg_package.h" #include "catalog/pg_proc.h" #include "miscadmin.h" #include "utils/builtins.h" @@ -42,7 +43,7 @@ char *pro_name_or_oid = PG_GETARG_CSTRING(0); RegProcedure result = InvalidOid; int matches = 0; - ScanKeyData skey[1]; + ScanKeyData skey[2]; if (pro_name_or_oid[0] == '-' && pro_name_or_oid[1] == '\0') PG_RETURN_OID(InvalidOid); @@ -69,15 +70,34 @@ RetrieveIndexResult indexRes; HeapTupleData tuple; Buffer buffer; + Oid pack = STANDARDPackageId; + char *name = pro_name_or_oid, + *p; + if (((p = strchr(name, '.')) != NULL) && ((p - name) < NAMEDATALEN)) + { + char scratch[NAMEDATALEN]; + + StrNCpy(scratch, name, p - name + 1); /* +1 for trailing \0 */ + if ((pack = PackageIdFromName(scratch)) == 0) + return InvalidOid; + name = p + 1; + } + ScanKeyEntryInitialize(&skey[0], 0x0, (AttrNumber) 1, (RegProcedure) F_NAMEEQ, - CStringGetDatum(pro_name_or_oid)); + CStringGetDatum(name)); + + ScanKeyEntryInitialize(&skey[1], + (bits16) 0x0, + (AttrNumber) 2, + (RegProcedure) F_OIDEQ, + ObjectIdGetDatum(pack)); hdesc = heap_openr(ProcedureRelationName, AccessShareLock); idesc = index_openr(ProcedureNameIndex); - sd = index_beginscan(idesc, false, 1, skey); + sd = index_beginscan(idesc, false, 2, skey); while ((indexRes = index_getnext(sd, ForwardScanDirection))) { @@ -101,6 +121,10 @@ } else { + /* + * Don't worry about packages here - only standard is permitted in + * bootstrap + */ Relation proc; HeapScanDesc procscan; HeapTuple proctup; @@ -110,8 +134,14 @@ (RegProcedure) F_NAMEEQ, CStringGetDatum(pro_name_or_oid)); + ScanKeyEntryInitialize(&skey[1], + (bits16) 0x0, + (AttrNumber) 2, + (RegProcedure) F_OIDEQ, + ObjectIdGetDatum(STANDARDPackageId)); + proc = heap_openr(ProcedureRelationName, AccessShareLock); - procscan = heap_beginscan(proc, 0, SnapshotNow, 1, skey); + procscan = heap_beginscan(proc, 0, SnapshotNow, 2, skey); while (HeapTupleIsValid(proctup = heap_getnext(procscan, 0))) { @@ -157,10 +187,24 @@ if (HeapTupleIsValid(proctup)) { - char *s; + char *s, + *t; + NameData packname; s = NameStr(((Form_pg_proc) GETSTRUCT(proctup))->proname); - StrNCpy(result, s, NAMEDATALEN); + + /* check for being outside of "STANDARD" */ + if (((Form_pg_proc) GETSTRUCT(proctup))->propack != + STANDARDPackageId) + { + PackageNameFromID(((Form_pg_proc) GETSTRUCT(proctup))->propack, + &packname); + t = NameStr(packname); + snprintf(result, NAMEDATALEN, "%s.%s", t, s); + } + else + StrNCpy(result, s, NAMEDATALEN); + ReleaseSysCache(proctup); } else Index: src/backend/utils/adt/sets.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/utils/adt/sets.c,v retrieving revision 1.39 diff -u -r1.39 sets.c --- src/backend/utils/adt/sets.c 2001/10/02 21:39:35 1.39 +++ src/backend/utils/adt/sets.c 2001/10/17 16:41:40 @@ -51,6 +51,7 @@ char repl[Natts_pg_proc]; setoid = ProcedureCreate(procname, /* changed below, after oid known */ + STANDARDPackageId, /* owning package */ false, /* don't replace */ true, /* returnsSet */ typename, /* returnTypeName */ Index: src/backend/utils/cache/syscache.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/utils/cache/syscache.c,v retrieving revision 1.65 diff -u -r1.65 syscache.c --- src/backend/utils/cache/syscache.c 2001/08/21 16:36:05 1.65 +++ src/backend/utils/cache/syscache.c 2001/10/17 16:41:40 @@ -34,6 +34,8 @@ #include "catalog/pg_language.h" #include "catalog/pg_opclass.h" #include "catalog/pg_operator.h" +#include "catalog/pg_package.h" +#include "catalog/pg_packglobal.h" #include "catalog/pg_proc.h" #include "catalog/pg_rewrite.h" #include "catalog/pg_shadow.h" @@ -94,13 +96,23 @@ static struct cachedesc cacheinfo[] = { {AggregateRelationName, /* AGGNAME */ - AggregateNameTypeIndex, + AggregateNamePackTypeIndex, 0, - 2, + 3, { Anum_pg_aggregate_aggname, + Anum_pg_aggregate_aggpack, Anum_pg_aggregate_aggbasetype, + 0 + }}, + {AggregateRelationName, /* AGGOID */ + AggregateOidIndex, + 0, + 1, + { + ObjectIdAttributeNumber, 0, + 0, 0 }}, {AccessMethodRelationName, /* AMNAME */ @@ -263,15 +275,45 @@ 0, 0 }}, + {PackageRelationName, /* PACKAGENAME */ + PackageNameIndex, + 0, + 1, + { + Anum_pg_package_packname, + 0, + 0, + 0 + }}, + {PackageRelationName, /* PACKAGEOID */ + PackageOidIndex, + 0, + 1, + { + ObjectIdAttributeNumber, + 0, + 0, + 0 + }}, + {PackGlobalRelationName, /* PACKAGEGLOBAL */ + PackageGlobalIndex, + 0, + 3, + { + Anum_pg_packglobal_pglobalid, + Anum_pg_packglobal_pgloballang, + Anum_pg_packglobal_pglobalseq, + 0 + }}, {ProcedureRelationName, /* PROCNAME */ ProcedureNameIndex, 0, - 3, + 4, { Anum_pg_proc_proname, + Anum_pg_proc_propack, Anum_pg_proc_pronargs, - Anum_pg_proc_proargtypes, - 0 + Anum_pg_proc_proargtypes }}, {ProcedureRelationName, /* PROCOID */ ProcedureOidIndex, Index: src/backend/utils/fmgr/fmgr.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v retrieving revision 1.55 diff -u -r1.55 fmgr.c --- src/backend/utils/fmgr/fmgr.c 2001/10/06 23:21:44 1.55 +++ src/backend/utils/fmgr/fmgr.c 2001/10/17 16:41:42 @@ -156,6 +156,7 @@ /* * Fast path for builtin functions: don't bother consulting pg_proc */ + finfo->fn_pack = STANDARDPackageId; finfo->fn_nargs = fbp->nargs; finfo->fn_strict = fbp->strict; finfo->fn_retset = fbp->retset; @@ -174,6 +175,7 @@ procedureStruct = (Form_pg_proc) GETSTRUCT(procedureTuple); finfo->fn_nargs = procedureStruct->pronargs; + finfo->fn_pack = procedureStruct->propack; finfo->fn_strict = procedureStruct->proisstrict; finfo->fn_retset = procedureStruct->proretset; Index: src/bin/pg_dump/Makefile =================================================================== RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/Makefile,v retrieving revision 1.31 diff -u -r1.31 Makefile --- src/bin/pg_dump/Makefile 2001/03/24 13:21:14 1.31 +++ src/bin/pg_dump/Makefile 2001/10/17 16:41:43 @@ -14,7 +14,7 @@ include $(top_builddir)/src/Makefile.global OBJS= pg_backup_archiver.o pg_backup_db.o pg_backup_custom.o pg_backup_files.o \ - pg_backup_null.o pg_backup_tar.o + pg_backup_null.o pg_backup_package.o pg_backup_tar.o ifdef STRDUP OBJS+=$(top_builddir)/src/utils/strdup.o @@ -34,8 +34,8 @@ all: submake pg_dump pg_restore pg_dumpall -pg_dump: pg_dump.o common.o $(OBJS) $(libpq_builddir)/libpq.a - $(CC) $(CFLAGS) pg_dump.o common.o $(OBJS) $(libpq) $(LDFLAGS) $(LIBS) -o $@ +pg_dump: pg_dump.o pg_packages.o common.o $(OBJS) $(libpq_builddir)/libpq.a + $(CC) $(CFLAGS) pg_dump.o pg_packages.o common.o $(OBJS) $(libpq) $(LDFLAGS) $(LIBS) -o $@ pg_restore: pg_restore.o $(OBJS) $(libpq_builddir)/libpq.a $(CC) $(CFLAGS) pg_restore.o $(OBJS) $(libpq) $(LDFLAGS) $(LIBS) -o $@ Index: src/bin/pg_dump/common.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/common.c,v retrieving revision 1.58 diff -u -r1.58 common.c --- src/bin/pg_dump/common.c 2001/10/03 20:54:21 1.58 +++ src/bin/pg_dump/common.c 2001/10/17 16:41:43 @@ -42,6 +42,9 @@ #include "strdup.h" #endif +/* XXX Need a better place for this */ +#define STANDARDPackageId 10 + static char **findParentsByOid(TableInfo *tbinfo, int numTables, InhInfo *inhinfo, int numInherits, const char *oid, @@ -58,14 +61,22 @@ * * Can return various special cases for oid 0. * + * if depoid is non-null, strdup the right dependence oid and store it there. + * For non-package types, this oid is just the oid passed in. But for + * types in a package, it's the oid of the package. + * * NOTE: should hash this, but just do linear search for now */ char * -findTypeByOid(TypeInfo *tinfo, int numTypes, const char *oid, OidOptions opts) +findTypeByOid(TypeInfo *tinfo, int numTypes, PackInfo *pinfo, int numPacks, + const char **depoid, const char *oid, OidOptions opts) { - int i; + int i, j; + if (depoid != NULL) + *depoid = NULL; + if (strcmp(oid, "0") == 0) { if ((opts & zeroAsOpaque) != 0) @@ -80,6 +91,8 @@ { if (strcmp(tinfo[i].oid, oid) == 0) { + if ((atooid(oid) > g_last_builtin_oid) && (depoid != NULL)) + *depoid = strdup(oid); if ((opts & useBaseTypeName) != 0) return (char *) fmtId(tinfo[i].typname, false); else @@ -87,6 +100,18 @@ } } + for (j = 0; j < numPacks; j++) + for (i = 0; i < pinfo[j].numTypes; i++) + if (strcmp(pinfo[j].packTypes[i].oid, oid) == 0) + { + if (depoid != NULL) + *depoid = strdup(pinfo[j].oid); + if ((opts & useBaseTypeName) != 0) + return (char *) fmtId(pinfo[j].packTypes[i].typname, false); + else + return pinfo[j].packTypes[i].typedefn; + } + /* no suitable type name was found */ return (NULL); } @@ -100,9 +125,10 @@ * */ char * -findOprByOid(OprInfo *oprinfo, int numOprs, const char *oid) +findOprByOid(OprInfo *oprinfo, int numOprs, PackInfo *pinfo, int numPacks, + const char *oid) { - int i; + int i, j; for (i = 0; i < numOprs; i++) { @@ -110,6 +136,13 @@ return oprinfo[i].oprname; } + for (j = 0; j < numPacks; j++) + for (i = 0; i < pinfo[j].numOprs; i++) + { + if (strcmp(pinfo[j].packOprs[i].oid, oid) == 0) + return pinfo[j].packOprs[i].oprname; + } + /* should never get here */ write_msg(NULL, "failed sanity check, operator with oid %s not found\n", oid); @@ -281,6 +314,7 @@ int numAggregates; int numOperators; int numIndexes; + int numPackages; TypeInfo *tinfo = NULL; FuncInfo *finfo = NULL; AggInfo *agginfo = NULL; @@ -288,22 +322,28 @@ InhInfo *inhinfo = NULL; OprInfo *oprinfo = NULL; IndInfo *indinfo = NULL; + PackInfo *packinfo = NULL; if (g_verbose) + fprintf(stderr, "%s reading package information %s\n", + g_comment_start, g_comment_end); + packinfo = getPackages(&numPackages, &g_has_packages); + + if (g_verbose) write_msg(NULL, "reading user-defined types\n"); - tinfo = getTypes(&numTypes); + tinfo = getTypes(&numTypes, STANDARDPackageId); if (g_verbose) write_msg(NULL, "reading user-defined functions\n"); - finfo = getFuncs(&numFuncs); + finfo = getFuncs(&numFuncs, STANDARDPackageId); if (g_verbose) write_msg(NULL, "reading user-defined aggregate functions\n"); - agginfo = getAggregates(&numAggregates); + agginfo = getAggregates(&numAggregates, STANDARDPackageId); if (g_verbose) write_msg(NULL, "reading user-defined operators\n"); - oprinfo = getOperators(&numOperators); + oprinfo = getOperators(&numOperators, STANDARDPackageId); if (g_verbose) write_msg(NULL, "reading user-defined tables\n"); @@ -332,11 +372,28 @@ dumpDBComment(fout); } + if (!tablename && !dataOnly) + { + if (g_verbose) + write_msg(NULL, "dumping out user-defined procedural languages\n"); + dumpProcLangs(fout, finfo, numFuncs, tinfo, numTypes, packinfo, + numPackages); + } + + if (!tablename && fout && g_has_packages) + { + if (g_verbose) + write_msg(NULL, "dumping out user-defined packages \n"); + dumpPackages(fout, packinfo, numPackages, finfo, numFuncs, + tinfo, numTypes); + } + if (!tablename && fout) { if (g_verbose) write_msg(NULL, "dumping out user-defined types\n"); - dumpTypes(fout, finfo, numFuncs, tinfo, numTypes); + dumpTypes(fout, finfo, numFuncs, tinfo, numTypes, + packinfo, numPackages, 0); } if (g_verbose) @@ -355,29 +412,25 @@ if (!tablename && !dataOnly) { if (g_verbose) - write_msg(NULL, "dumping out user-defined procedural languages\n"); - dumpProcLangs(fout, finfo, numFuncs, tinfo, numTypes); - } - - if (!tablename && !dataOnly) - { - if (g_verbose) write_msg(NULL, "dumping out user-defined functions\n"); - dumpFuncs(fout, finfo, numFuncs, tinfo, numTypes); + dumpFuncs(fout, finfo, numFuncs, tinfo, numTypes, packinfo, + numPackages); } if (!tablename && !dataOnly) { if (g_verbose) write_msg(NULL, "dumping out user-defined aggregate functions\n"); - dumpAggs(fout, agginfo, numAggregates, tinfo, numTypes); + dumpAggs(fout, agginfo, numAggregates, tinfo, numTypes, packinfo, + numPackages, 0); } if (!tablename && !dataOnly) { if (g_verbose) write_msg(NULL, "dumping out user-defined operators\n"); - dumpOprs(fout, oprinfo, numOperators, tinfo, numTypes); + dumpOprs(fout, oprinfo, numOperators, tinfo, numTypes, packinfo, + numPackages, 0); } *numTablesPtr = numTables; @@ -568,18 +621,56 @@ * finds the index (in finfo) of the function with the given name * returns -1 if not found * + * If oid is not NULL, strdup the oid of the found function and store + * it at *oid. + * + * also handle the case of a function being in a package. In that case, + * if oid != NULL, we make sure it is in the package, strdup the package + * oid to *oid, and then return -2. + * * NOTE: should hash this, but just do linear search for now */ int -findFuncByName(FuncInfo *finfo, int numFuncs, const char *name) +findFuncByName(FuncInfo *finfo, int numFuncs, PackInfo *pinfo, int numPacks, + const char **oid, const char *name) { int i; + char *p; + char scratch[NAMEDATALEN]; + + if ((p = strchr(name, '.')) != NULL) + { + StrNCpy(scratch, name, p - name + 1); + name = p + 1; + for (i = 0; i < numPacks; i++) + if (strcmp(scratch, pinfo[i].packname) == 0) + { + int j; + + for (j = 0; j < pinfo[i].numFuncs; j++) + if (strcmp(name, pinfo[i].packFuncs[j].proname) == 0) + { + if (oid != NULL) + *oid = strdup(pinfo[i].packFuncs[j].oid); + return -2; + } + + return -1; + } + + return -1; + } + for (i = 0; i < numFuncs; i++) { if (strcmp(finfo[i].proname, name) == 0) + { + if (oid != NULL) + *oid = strdup(finfo[i].oid); return i; + } } return -1; } Index: src/bin/pg_dump/pg_backup.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_backup.h,v retrieving revision 1.15 diff -u -r1.15 pg_backup.h --- src/bin/pg_dump/pg_backup.h 2001/10/03 21:58:28 1.15 +++ src/bin/pg_dump/pg_backup.h 2001/10/17 16:41:43 @@ -60,7 +60,8 @@ archCustom = 1, archFiles = 2, archTar = 3, - archNull = 4 + archNull = 4, + archPackage = 5 } ArchiveFormat; /* @@ -192,5 +193,8 @@ extern int archprintf(Archive *AH, const char *fmt, ...) /* This extension allows gcc to check the format string */ __attribute__((format(printf, 2, 3))); + +/* Use routine for archPackage archiver */ +extern void Package_Emit(Archive *out, Archive *gatherer); #endif Index: src/bin/pg_dump/pg_backup_archiver.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.c,v retrieving revision 1.33 diff -u -r1.33 pg_backup_archiver.c --- src/bin/pg_dump/pg_backup_archiver.c 2001/09/21 21:58:30 1.33 +++ src/bin/pg_dump/pg_backup_archiver.c 2001/10/17 16:41:45 @@ -1654,6 +1654,10 @@ InitArchiveFmt_Tar(AH); break; + case archPackage: + InitArchiveFmt_Package(AH); + break; + default: die_horribly(AH, modulename, "unrecognized file format '%d'\n", fmt); } Index: src/bin/pg_dump/pg_backup_archiver.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_backup_archiver.h,v retrieving revision 1.37 diff -u -r1.37 pg_backup_archiver.h --- src/bin/pg_dump/pg_backup_archiver.h 2001/08/22 20:23:23 1.37 +++ src/bin/pg_dump/pg_backup_archiver.h 2001/10/17 16:41:45 @@ -303,6 +303,7 @@ extern void InitArchiveFmt_Custom(ArchiveHandle *AH); extern void InitArchiveFmt_Files(ArchiveHandle *AH); extern void InitArchiveFmt_Null(ArchiveHandle *AH); +extern void InitArchiveFmt_Package(ArchiveHandle *AH); extern void InitArchiveFmt_Tar(ArchiveHandle *AH); extern int isValidTarHeader(char *header); Index: src/bin/pg_dump/pg_backup_package.c =================================================================== RCS file: pg_backup_package.c diff -N pg_backup_package.c --- /dev/null Wed Oct 17 08:50:28 2001 +++ pg_backup_package.c Wed Oct 17 11:41:45 2001 @@ -0,0 +1,216 @@ +/*------------------------------------------------------------------------- + * + * pg_backup_package.c + * + * Implementation of an archive that is never saved; it is used by + * dumpPackages() to gather the different components of a package + * (functions, variables, types, operators, and aggregates) so that + * it can generate one TOC entry for the whole package. + * + * Based on pg_backup_null.c + * + * See the headers to pg_restore for more details. + * + * Copyright (c) 2001, Zembu Inc. + * + * Copyright (c) 2000, Philip Warner + * Rights are granted to use this software in any way so long + * as this notice is not removed. + * + * The author is not responsible for loss or damages that may + * result from it's use. + * + * + * IDENTIFICATION + * $Header: /home/projects/pgsql/cvsroot/pgsql/src/bin/pg_dump/pg_backup_null.c,v 1.6 2001/03/24 23:11:14 tgl Exp$ + * + * + *------------------------------------------------------------------------- + */ + +#include "pg_backup.h" +#include "pg_backup_archiver.h" + +#include <stdlib.h> +#include <string.h> +#include <unistd.h> /* for dup */ + +static int _WriteData(ArchiveHandle *AH, const void *data, int dLen); +static void _EndData(ArchiveHandle *AH, TocEntry *te); +static int _WriteByte(ArchiveHandle *AH, const int i); +static int _WriteBuf(ArchiveHandle *AH, const void *buf, int len); +static void _CloseArchive(ArchiveHandle *AH); +static void _PrintTocData(ArchiveHandle *AH, TocEntry *te, RestoreOptions *ropt); + +/* + * Initializer + */ +void +InitArchiveFmt_Package(ArchiveHandle *AH) +{ + /* Assuming static functions, this can be copied for each format. */ + AH->WriteDataPtr = _WriteData; + AH->EndDataPtr = _EndData; + AH->WriteBytePtr = _WriteByte; + AH->WriteBufPtr = _WriteBuf; + AH->ClosePtr = _CloseArchive; + AH->PrintTocDataPtr = _PrintTocData; + + /* + * Now prevent reading... + */ + if (AH->mode == archModeRead) + die_horribly(AH, NULL, "this format can not be read\n"); + +} + +/* + * - Start a new TOC entry + */ + +/*------ + * Called by dumper via archiver from within a data dump routine + * As at V1.3, this is only called for COPY FROM dfata, and BLOB data + *------ + */ +static int +_WriteData(ArchiveHandle *AH, const void *data, int dLen) +{ + /* Just do nothing */ + return dLen; +} + +static void +_EndData(ArchiveHandle *AH, TocEntry *te) +{ + /* Just do nothing */ +} + +/*------ + * Called as part of a RestoreArchive call; for the NULL archive, this + * just sends the data for a given TOC entry to the output. + * Shouldn't be called. + *------ + */ +static void +_PrintTocData(ArchiveHandle *AH, TocEntry *te, RestoreOptions *ropt) +{ + if (te->dataDumper) + { + AH->currToc = te; + (*te->dataDumper) ((Archive *) AH, te->oid, te->dataDumperArg); + AH->currToc = NULL; + } +} + +static int +_WriteByte(ArchiveHandle *AH, const int i) +{ + /* Don't do anything */ + return 0; +} + +static int +_WriteBuf(ArchiveHandle *AH, const void *buf, int len) +{ + /* Don't do anything */ + return len; +} + +static void +_CloseArchive(ArchiveHandle *AH) +{ + /* Nothing to do */ +} + +/* Public */ +/* + * Package_Emit - Take all the TOC entries in the gatherer and make them into + * one large TOC entry added to out. + * + * Used by dumpPackage() so that we can re-use dumpOneFunc(), dumpTypes(), + * dumpOprs(), and dumpAggs(). They just "archive" to an archive of this + * type, and then this routine turns all of the archivings into one large + * ArchiveEntry() call. + * + * Also has two implicit behaviors. 1) After we ArchiveEntry() the package, + * we free all of the TOC entries allocated so far. 2) Append a trailing + * ';' to the create string before making the aggregate TOC entry. Saves + * allocating a TOC entry just to add the ';'. + * + * The only thing we look at in the second and subsequent TOC entries is + * the defn string. + */ +void +Package_Emit(Archive *out, Archive *gathererX) +{ + ArchiveHandle *gatherer = (ArchiveHandle *)gathererX; + PQExpBuffer q; + TocEntry *te = gatherer->toc->next, + *teOld; + + q = createPQExpBuffer(); + + while (te != gatherer->toc) + { + appendPQExpBuffer(q, "%s", te->defn); + te = te->next; + } + + appendPQExpBuffer(q, ";\n"); + + te = gatherer->toc->next; + + ArchiveEntry(out, te->oid, te->name, te->desc, te->depOid, q->data, + te->dropStmt, te->copyStmt, te->owner, te->dataDumper, + te->dataDumperArg); + + /* Start freeing, with the first te special as depOid is not copied */ + + if (te == gatherer->toc) /* ArchiveEntry wasn't called on gatherer! */ + return; + + free(te->name); + free(te->desc); + free(te->oid); + free(te->defn); + free(te->dropStmt); + free(te->owner); + if (te->copyStmt) + free(te->copyStmt); + teOld = te; + te = te->next; + free(teOld); + + while (te != gatherer->toc) + { + free(te->name); + free(te->desc); + free(te->oid); + free(te->defn); + free(te->dropStmt); + free(te->owner); + if (te->depOid) + { + int i; + + for (i = 0; (*te->depOid)[i]; i++) + free((void *)((*te->depOid)[i])); + + free(te->depOid); + } + if (te->copyStmt) + free(te->copyStmt); + teOld = te; + te = te->next; + free(teOld); + } + + /* + * Now that we've deleted all of the new TOC entries, fix the pointers + * back up. + */ + + gatherer->toc->next = gatherer->toc; + gatherer->toc->prev = gatherer->toc; +} Index: src/bin/pg_dump/pg_dump.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v retrieving revision 1.233 diff -u -r1.233 pg_dump.c --- src/bin/pg_dump/pg_dump.c 2001/10/03 20:54:21 1.233 +++ src/bin/pg_dump/pg_dump.c 2001/10/17 16:41:48 @@ -10,6 +10,7 @@ * pg_dump will read the system catalogs in a database and * dump out a script that reproduces * the schema of the database in terms of + * user-defined packages * user-defined types * user-defined functions * tables @@ -73,9 +74,6 @@ /* only checks for 'opts == CONV_ALL' anyway. */ } formatLiteralOptions; -static void dumpComment(Archive *fout, const char *target, const char *oid, - const char *classname, int subid, - const char *((*deps)[])); static void dumpSequence(Archive *fout, TableInfo tbinfo, const bool schemaOnly, const bool dataOnly); static void dumpACL(Archive *fout, TableInfo tbinfo); static void dumpTriggers(Archive *fout, const char *tablename, @@ -84,8 +82,6 @@ TableInfo *tblinfo, int numTables); static void formatStringLiteral(PQExpBuffer buf, const char *str, const formatLiteralOptions opts); static void clearTableInfo(TableInfo *, int); -static void dumpOneFunc(Archive *fout, FuncInfo *finfo, int i, - TypeInfo *tinfo, int numTypes); static Oid findLastBuiltinOid_V71(const char *); static Oid findLastBuiltinOid_V70(void); static void setMaxOid(Archive *fout); @@ -108,6 +104,7 @@ Oid g_last_builtin_oid; /* value of the last builtin oid */ Archive *g_fout; /* the script file */ PGconn *g_conn; /* the database connection */ +bool g_has_packages; /* backend has package support */ bool force_quotes; /* User wants to suppress double-quotes */ bool dumpData; /* dump data using proper insert strings */ @@ -1301,7 +1298,7 @@ * */ TypeInfo * -getTypes(int *numTypes) +getTypes(int *numTypes, Oid packId) { PGresult *res; int ntups; @@ -1354,6 +1351,8 @@ "format_type(pg_type.oid, NULL) as typedefn " "from pg_type"); } + if (g_has_packages) + appendPQExpBuffer(query, " where typpack = '%u'::oid", packId); res = PQexec(g_conn, query->data); if (!res || @@ -1390,6 +1389,7 @@ for (i = 0; i < ntups; i++) { tinfo[i].oid = strdup(PQgetvalue(res, i, i_oid)); + /* tinfo[i].numericoid = atoi(tinfo[i].oid); */ tinfo[i].typowner = strdup(PQgetvalue(res, i, i_typowner)); tinfo[i].typname = strdup(PQgetvalue(res, i, i_typname)); tinfo[i].typlen = strdup(PQgetvalue(res, i, i_typlen)); @@ -1432,6 +1432,8 @@ tinfo[i].isDefined = 0; else tinfo[i].isDefined = 1; + + tinfo[i].dumped = 0; } *numTypes = ntups; @@ -1451,7 +1453,7 @@ * numOprs is set to the number of operators read in */ OprInfo * -getOperators(int *numOprs) +getOperators(int *numOprs, Oid packId) { PGresult *res; int ntups; @@ -1485,6 +1487,8 @@ "oprcanhash, oprlsortop, oprrsortop, " "(select usename from pg_user where oprowner = usesysid) as usename " "from pg_operator"); + if (g_has_packages) + appendPQExpBuffer(query, " where oprpack = '%u'::oid", packId); res = PQexec(g_conn, query->data); if (!res || @@ -1813,7 +1817,7 @@ * numAggs is set to the number of aggregates read in */ AggInfo * -getAggregates(int *numAggs) +getAggregates(int *numAggs, Oid packId) { PGresult *res; int ntups; @@ -1849,6 +1853,8 @@ "(select usename from pg_user where aggowner = usesysid) as usename " "from pg_aggregate"); } + if (g_has_packages) + appendPQExpBuffer(query, " where aggpack = '%u'::oid", packId); res = PQexec(g_conn, query->data); if (!res || @@ -1909,7 +1915,7 @@ * */ FuncInfo * -getFuncs(int *numFuncs) +getFuncs(int *numFuncs, Oid packId) { PGresult *res; int ntups; @@ -1952,6 +1958,8 @@ "where pg_proc.oid > '%u'::oid", g_last_builtin_oid); } + if (g_has_packages) + appendPQExpBuffer(query, " and propack = '%u'::oid", packId); res = PQexec(g_conn, query->data); if (!res || @@ -2465,10 +2473,17 @@ * looking in FuncInfo* */ resetPQExpBuffer(query); +/* + * Keep just in case version 6.X didn't have regproc support, and we need to + * add something for that case. appendPQExpBuffer(query, "SELECT proname from pg_proc " "where pg_proc.oid = '%s'::oid", tgfuncoid); + */ + appendPQExpBuffer(query, + "SELECT '%s'::regproc", + tgfuncoid); r = PQexec(g_conn, query->data); if (!r || PQresultStatus(r) != PGRES_TUPLES_OK) @@ -2960,7 +2975,7 @@ *------------------------------------------------------------------ */ -static void +void dumpComment(Archive *fout, const char *target, const char *oid, const char *classname, int subid, const char *((*deps)[])) @@ -3079,8 +3094,8 @@ * */ void -dumpTypes(Archive *fout, FuncInfo *finfo, int numFuncs, - TypeInfo *tinfo, int numTypes) +dumpTypes(Archive *fout, FuncInfo *finfo, int numFuncs, TypeInfo *tinfo, + int numTypes, PackInfo *pinfo, int numPacks, int format) { int i; PQExpBuffer q = createPQExpBuffer(); @@ -3108,33 +3123,51 @@ (strcmp(tinfo[i].typinput, "array_in") == 0)) continue; + /* skip it if it has already been dumped */ + if (tinfo[i].dumped) + continue; + else + tinfo[i].dumped = 1; + deps = malloc(sizeof(char*) * 10); depIdx = 0; /* * before we create a type, we need to create the input and output * functions for it, if they haven't been created already + * + * We get back a -2 if the function in question is in a package. In + * that case, make a dependency on the package. Note that + * findFuncByName() helps with this. */ - funcInd = findFuncByName(finfo, numFuncs, tinfo[i].typinput); + funcInd = findFuncByName(finfo, numFuncs, pinfo, numPacks, + &((*deps)[depIdx]), tinfo[i].typinput); if (funcInd != -1) { - (*deps)[depIdx++] = strdup(finfo[funcInd].oid); - dumpOneFunc(fout, finfo, funcInd, tinfo, numTypes); + depIdx++; + if (funcInd != -2) + dumpOneFunc(fout, finfo, funcInd, tinfo, numTypes, pinfo, + numPacks, 0); } - funcInd = findFuncByName(finfo, numFuncs, tinfo[i].typoutput); + funcInd = findFuncByName(finfo, numFuncs, pinfo, numPacks, + &((*deps)[depIdx]), tinfo[i].typoutput); if (funcInd != -1) { - (*deps)[depIdx++] = strdup(finfo[funcInd].oid); - dumpOneFunc(fout, finfo, funcInd, tinfo, numTypes); + depIdx++; + if (funcInd != -2) + dumpOneFunc(fout, finfo, funcInd, tinfo, numTypes, pinfo, + numPacks, 0); } resetPQExpBuffer(delq); appendPQExpBuffer(delq, "DROP TYPE %s;\n", fmtId(tinfo[i].typname, force_quotes)); resetPQExpBuffer(q); + if (format == 0) + appendPQExpBuffer(q, "CREATE "); appendPQExpBuffer(q, - "CREATE TYPE %s " + "TYPE %s " "( internallength = %s, externallength = %s,", fmtId(tinfo[i].typname, force_quotes), (strcmp(tinfo[i].typlen, "-1") == 0) ? @@ -3161,7 +3194,8 @@ { char *elemType; - elemType = findTypeByOid(tinfo, numTypes, tinfo[i].typelem, zeroAsOpaque); + elemType = findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL, + tinfo[i].typelem, zeroAsOpaque); if (elemType == NULL) { write_msg(NULL, "notice: array type %s - type for elements (oid %s) is not dumped\n", @@ -3194,15 +3228,23 @@ appendPQExpBuffer(q, ", storage = main"); if (tinfo[i].passedbyvalue) - appendPQExpBuffer(q, ", passedbyvalue);\n"); + appendPQExpBuffer(q, ", passedbyvalue)"); else - appendPQExpBuffer(q, ");\n"); + appendPQExpBuffer(q, ")"); + if (format == 0) + appendPQExpBuffer(q, ";\n"); + else + appendPQExpBuffer(q, "\n"); + (*deps)[depIdx++] = NULL; /* End of List */ ArchiveEntry(fout, tinfo[i].oid, tinfo[i].typname, "TYPE", deps, q->data, delq->data, "", tinfo[i].usename, NULL, NULL); + if (format != 0) + continue; + /*** Dump Type Comments ***/ resetPQExpBuffer(q); @@ -3222,7 +3264,7 @@ */ void dumpProcLangs(Archive *fout, FuncInfo *finfo, int numFuncs, - TypeInfo *tinfo, int numTypes) + TypeInfo *tinfo, int numTypes, PackInfo *pinfo, int numPacks) { PGresult *res; PQExpBuffer query = createPQExpBuffer(); @@ -3281,7 +3323,7 @@ exit_nicely(); } - dumpOneFunc(fout, finfo, fidx, tinfo, numTypes); + dumpOneFunc(fout, finfo, fidx, tinfo, numTypes, pinfo, numPacks, 0); lanname = PQgetvalue(res, i, i_lanname); lancompiler = PQgetvalue(res, i, i_lancompiler); @@ -3320,12 +3362,12 @@ */ void dumpFuncs(Archive *fout, FuncInfo *finfo, int numFuncs, - TypeInfo *tinfo, int numTypes) + TypeInfo *tinfo, int numTypes, PackInfo *pinfo, int numPacks) { int i; for (i = 0; i < numFuncs; i++) - dumpOneFunc(fout, finfo, i, tinfo, numTypes); + dumpOneFunc(fout, finfo, i, tinfo, numTypes, pinfo, numPacks, 0); } /* @@ -3333,11 +3375,15 @@ * dump out only one function, the index of which is given in the third * argument * + * format indicates the context of the dump. 0 is a CREATE FUNCTION, and + * all other values are in a package body. 1 is a package function + * (FUNCTION), and 2 an initialization routine (BODY AS) */ -static void +void dumpOneFunc(Archive *fout, FuncInfo *finfo, int i, - TypeInfo *tinfo, int numTypes) + TypeInfo *tinfo, int numTypes, PackInfo *pinfo, int numPacks, + int format) { PQExpBuffer q = createPQExpBuffer(); PQExpBuffer fn = createPQExpBuffer(); @@ -3350,6 +3396,8 @@ int j; int i_lanname; char query[256]; + const char *((*deps)[]); + int depIdx = 0; char *listSep; char *listSepComma = ","; @@ -3363,6 +3411,11 @@ /* becomeUser(fout, finfo[i].usename); */ + if (format == 0) + deps = malloc(sizeof(char*) * (finfo[i].nargs + 2)); + else + deps = NULL; + sprintf(query, "SELECT lanname FROM pg_language WHERE oid = '%u'::oid", finfo[i].lang); res = PQexec(g_conn, query); @@ -3382,6 +3435,14 @@ i_lanname = PQfnumber(res, "lanname"); + if ((format == 0) && (finfo[i].lang > g_last_builtin_oid)) + { + char scratch[15]; + + snprintf(scratch, 15, "%u", finfo[i].lang); + (*deps)[depIdx++] = strdup(scratch); + } + /* * See backend/commands/define.c for details of how the 'AS' clause is * used. @@ -3410,35 +3471,47 @@ PQclear(res); resetPQExpBuffer(fn); - appendPQExpBuffer(fn, "%s (", fmtId(finfo[i].proname, force_quotes)); - for (j = 0; j < finfo[i].nargs; j++) + if (format != 2) { - char *typname; - - typname = findTypeByOid(tinfo, numTypes, finfo[i].argtypes[j], zeroAsOpaque); - if (typname == NULL) + appendPQExpBuffer(fn, "%s (", fmtId(finfo[i].proname, force_quotes)); + for (j = 0; j < finfo[i].nargs; j++) { - write_msg(NULL, "WARNING: function \"%s\" not dumped\n", - finfo[i].proname); + char *typname; - write_msg(NULL, "reason: data type name of argument %d (oid %s) not found\n", - j, finfo[i].argtypes[j]); - goto done; + if (format == 0) + typname = findTypeByOid(tinfo, numTypes, pinfo, numPacks, + &((*deps)[depIdx]), + finfo[i].argtypes[j], zeroAsOpaque); + else + typname = findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL, + finfo[i].argtypes[j], zeroAsOpaque); + if (typname == NULL) + { + write_msg(NULL, "WARNING: function \"%s\" not dumped\n", + finfo[i].proname); + + write_msg(NULL, "reason: data type name of argument %d (oid %s) not found\n", + j, finfo[i].argtypes[j]); + goto done; + } + if ((format == 0) && ((*deps)[depIdx] != NULL)) + depIdx++; + + appendPQExpBuffer(fn, "%s%s", + (j > 0) ? "," : "", + typname); + appendPQExpBuffer(fnlist, "%s%s", + (j > 0) ? "," : "", + typname); } - - appendPQExpBuffer(fn, "%s%s", - (j > 0) ? "," : "", - typname); - appendPQExpBuffer(fnlist, "%s%s", - (j > 0) ? "," : "", - typname); + appendPQExpBuffer(fn, ")"); } - appendPQExpBuffer(fn, ")"); resetPQExpBuffer(delqry); appendPQExpBuffer(delqry, "DROP FUNCTION %s;\n", fn->data); - rettypename = findTypeByOid(tinfo, numTypes, finfo[i].prorettype, zeroAsOpaque); + rettypename = findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL, + finfo[i].prorettype, zeroAsOpaque); if (rettypename == NULL) { @@ -3451,11 +3524,27 @@ } resetPQExpBuffer(q); - appendPQExpBuffer(q, "CREATE FUNCTION %s ", fn->data); - appendPQExpBuffer(q, "RETURNS %s%s %s LANGUAGE ", - (finfo[i].retset) ? "SETOF " : "", - rettypename, - asPart->data); + switch (format) { + case 0: + appendPQExpBuffer(q, "CREATE FUNCTION"); + break; + + case 1: + appendPQExpBuffer(q, "FUNCTION"); + break; + + case 2: + appendPQExpBuffer(q, "BODY"); + break; + } + appendPQExpBuffer(q, " %s ", fn->data); + if (format != 2) + { + appendPQExpBuffer(q, "RETURNS %s%s", + (finfo[i].retset) ? "SETOF " : "", + rettypename); + } + appendPQExpBuffer(q, " %s LANGUAGE ", asPart->data); formatStringLiteral(q, func_lang, CONV_ALL); if (finfo[i].iscachable || finfo[i].isstrict) /* OR in new attrs here */ @@ -3476,11 +3565,20 @@ } appendPQExpBuffer(q, " )"); } + + if (format == 0) + appendPQExpBuffer(q, ";\n"); + else + appendPQExpBuffer(q, "\n"); - appendPQExpBuffer(q, ";\n"); + if (format == 0) + (*deps)[depIdx++] = NULL; /* End of List */ + + ArchiveEntry(fout, finfo[i].oid, fn->data, "FUNCTION", deps, q->data, + delqry->data, "", finfo[i].usename, NULL, NULL); - ArchiveEntry(fout, finfo[i].oid, fn->data, "FUNCTION", NULL, q->data, delqry->data, - "", finfo[i].usename, NULL, NULL); + if (format != 0) /* comments don't belong in the middle of a package */ + return; /*** Dump Function Comments ***/ @@ -3505,7 +3603,8 @@ */ void dumpOprs(Archive *fout, OprInfo *oprinfo, int numOperators, - TypeInfo *tinfo, int numTypes) + TypeInfo *tinfo, int numTypes, PackInfo *pinfo, int numPacks, + int format) { int i; PQExpBuffer q = createPQExpBuffer(); @@ -3550,7 +3649,7 @@ if (strcmp(oprinfo[i].oprkind, "r") == 0 || strcmp(oprinfo[i].oprkind, "b") == 0) { - name = findTypeByOid(tinfo, numTypes, + name = findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL, oprinfo[i].oprleft, zeroAsOpaque); if (name == NULL) { @@ -3566,7 +3665,7 @@ if (strcmp(oprinfo[i].oprkind, "l") == 0 || strcmp(oprinfo[i].oprkind, "b") == 0) { - name = findTypeByOid(tinfo, numTypes, + name = findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL, oprinfo[i].oprright, zeroAsOpaque); if (name == NULL) { @@ -3581,7 +3680,8 @@ if (!(strcmp(oprinfo[i].oprcom, "0") == 0)) { - name = findOprByOid(oprinfo, numOperators, oprinfo[i].oprcom); + name = findOprByOid(oprinfo, numOperators, + pinfo, numPacks, oprinfo[i].oprcom); if (name == NULL) { write_msg(NULL, "WARNING: operator \"%s\" (oid %s) not dumped\n", @@ -3595,7 +3695,8 @@ if (!(strcmp(oprinfo[i].oprnegate, "0") == 0)) { - name = findOprByOid(oprinfo, numOperators, oprinfo[i].oprnegate); + name = findOprByOid(oprinfo, numOperators, + pinfo, numPacks, oprinfo[i].oprnegate); if (name == NULL) { write_msg(NULL, "WARNING: operator \"%s\" (oid %s) not dumped\n", @@ -3615,7 +3716,8 @@ if (!(strcmp(oprinfo[i].oprlsortop, "0") == 0)) { - name = findOprByOid(oprinfo, numOperators, oprinfo[i].oprlsortop); + name = findOprByOid(oprinfo, numOperators, + pinfo, numPacks, oprinfo[i].oprlsortop); if (name == NULL) { write_msg(NULL, "WARNING: operator \"%s\" (oid %s) not dumped\n", @@ -3629,7 +3731,8 @@ if (!(strcmp(oprinfo[i].oprrsortop, "0") == 0)) { - name = findOprByOid(oprinfo, numOperators, oprinfo[i].oprrsortop); + name = findOprByOid(oprinfo, numOperators, + pinfo, numPacks, oprinfo[i].oprrsortop); if (name == NULL) { write_msg(NULL, "WARNING: operator \"%s\" (oid %s) not dumped\n", @@ -3643,14 +3746,17 @@ resetPQExpBuffer(delq); appendPQExpBuffer(delq, "DROP OPERATOR %s (%s", oprinfo[i].oprname, - findTypeByOid(tinfo, numTypes, oprinfo[i].oprleft, zeroAsOpaque)); + findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL, + oprinfo[i].oprleft, zeroAsOpaque)); appendPQExpBuffer(delq, ", %s);\n", - findTypeByOid(tinfo, numTypes, oprinfo[i].oprright, zeroAsOpaque)); + findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL, + oprinfo[i].oprright, zeroAsOpaque)); resetPQExpBuffer(q); appendPQExpBuffer(q, - "CREATE OPERATOR %s " - "(PROCEDURE = %s %s%s%s%s%s%s%s%s%s);\n", + "%sOPERATOR %s " + "(PROCEDURE = %s %s%s%s%s%s%s%s%s%s)%c\n", + (format == 0) ? "CREATE " : "", oprinfo[i].oprname, oprinfo[i].oprcode, leftarg->data, @@ -3661,7 +3767,8 @@ (strcmp(oprinfo[i].oprcanhash, "t") == 0) ? ",\n\tHASHES" : "", join->data, sort1->data, - sort2->data); + sort2->data, + (format == 0) ? ';' : ' '); ArchiveEntry(fout, oprinfo[i].oid, oprinfo[i].oprname, "OPERATOR", NULL, q->data, delq->data, "", oprinfo[i].usename, NULL, NULL); @@ -3686,7 +3793,8 @@ */ void dumpAggs(Archive *fout, AggInfo *agginfo, int numAggs, - TypeInfo *tinfo, int numTypes) + TypeInfo *tinfo, int numTypes, PackInfo *pinfo, int numPacks, + int format) { int i; PQExpBuffer q = createPQExpBuffer(); @@ -3706,7 +3814,7 @@ resetPQExpBuffer(aggSig); appendPQExpBuffer(aggSig, "%s(%s)", agginfo[i].aggname, - findTypeByOid(tinfo, numTypes, + findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL, agginfo[i].aggbasetype, zeroAsStar + useBaseTypeName)); @@ -3723,7 +3831,8 @@ continue; } - name = findTypeByOid(tinfo, numTypes, agginfo[i].aggbasetype, + name = findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL, + agginfo[i].aggbasetype, zeroAsAny + useBaseTypeName); if (name == NULL) { @@ -3741,7 +3850,8 @@ } appendPQExpBuffer(details, "BASETYPE = %s, ", name); - name = findTypeByOid(tinfo, numTypes, agginfo[i].aggtranstype, + name = findTypeByOid(tinfo, numTypes, pinfo, numPacks, NULL, + agginfo[i].aggtranstype, zeroAsOpaque + useBaseTypeName); if (name == NULL) { @@ -3775,12 +3885,18 @@ appendPQExpBuffer(delq, "DROP AGGREGATE %s;\n", aggSig->data); resetPQExpBuffer(q); - appendPQExpBuffer(q, "CREATE AGGREGATE %s ( %s );\n", + if (format == 0) + appendPQExpBuffer(q, "CREATE "); + appendPQExpBuffer(q, "AGGREGATE %s ( %s )%c\n", agginfo[i].aggname, - details->data); + details->data, + (format == 0) ? ';' : ' '); ArchiveEntry(fout, agginfo[i].oid, aggSig->data, "AGGREGATE", NULL, q->data, delq->data, "", agginfo[i].usename, NULL, NULL); + + if (format != 0) + continue; /*** Dump Aggregate Comments ***/ Index: src/bin/pg_dump/pg_dump.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_dump.h,v retrieving revision 1.72 diff -u -r1.72 pg_dump.h --- src/bin/pg_dump/pg_dump.h 2001/10/03 20:54:21 1.72 +++ src/bin/pg_dump/pg_dump.h 2001/10/17 16:41:49 @@ -56,6 +56,7 @@ int passedbyvalue; int isArray; int isDefined; + int dumped; /* 1 if dumped (as part of package dump */ } TypeInfo; typedef struct _funcInfo @@ -186,11 +187,43 @@ char *usename; } OprInfo; +typedef struct _packGlobalInfo +{ + char *oid; + char *varname; /* Name of this global */ + char *vartext; /* Initialization text */ + int packId; /* id of owning package */ + int langId; /* assosciated language */ + int seq; /* sequence number */ +} PackGlobInfo; + +typedef struct _packInfo +{ + char *oid; + char *packname; + char *username; + PackGlobInfo *packGlobals; /* Now get contents of the package */ + TypeInfo *packTypes; + FuncInfo *packFuncs; /* init routines, funcs, and early funcs */ + AggInfo *packAggs; + OprInfo *packOprs; + /* Done with pointers, now do ints */ + int packId; /* parsed value, for efficiency */ + int numGlobals; + int numTypes; + int numFuncs; + int numAggs; + int numOprs; +} PackInfo; + + /* global decls */ extern bool force_quotes; /* double-quotes for identifiers flag */ extern bool g_verbose; /* verbose flag */ extern Oid g_last_builtin_oid; /* value of the last builtin oid */ extern Archive *g_fout; /* the script file */ +extern bool g_has_packages; /* system schema supports packages */ +extern PGconn *g_conn; /* our connection */ /* placeholders for comment starting and ending delimiters */ extern char g_comment_start[10]; @@ -227,9 +260,13 @@ useBaseTypeName = 1024 } OidOptions; -extern char *findTypeByOid(TypeInfo *tinfo, int numTypes, const char *oid, OidOptions opts); -extern char *findOprByOid(OprInfo *oprinfo, int numOprs, const char *oid); -extern int findFuncByName(FuncInfo *finfo, int numFuncs, const char *name); +extern char *findTypeByOid(TypeInfo *tinfo, int numTypes, + PackInfo *pinfo, int numPacks, const char **depoid, + const char *oid, OidOptions opts); +extern char *findOprByOid(OprInfo *oprinfo, int numOprs, + PackInfo *pinfo, int numPacks, const char *oid); +extern int findFuncByName(FuncInfo *finfo, int numFuncs, PackInfo *pinfo, + int numPacks, const char **oid, const char *name); extern int findTableByName(TableInfo *tbinfo, int numTables, const char *relname); extern void check_conn_and_db(void); @@ -238,9 +275,11 @@ /* * version specific routines */ -extern TypeInfo *getTypes(int *numTypes); -extern FuncInfo *getFuncs(int *numFuncs); -extern AggInfo *getAggregates(int *numAggregates); +extern TypeInfo *getTypes(int *numTypes, Oid packId); +extern FuncInfo *getFuncs(int *numFuncs, Oid packId); +extern AggInfo *getAggregates(int *numAggregates, Oid packId); +extern PackInfo *getPackages(int *numPackages, bool *hasPackages); +extern PackGlobInfo *getPackageGlobals(int *numPackageGlobals); extern void clearAggInfo(AggInfo *, int); extern void clearFuncInfo(FuncInfo *, int); @@ -249,22 +288,30 @@ extern void clearOprInfo(OprInfo *, int); extern void clearTypeInfo(TypeInfo *, int); -extern OprInfo *getOperators(int *numOperators); +extern OprInfo *getOperators(int *numOperators, Oid packId); extern TableInfo *getTables(int *numTables, FuncInfo *finfo, int numFuncs); extern InhInfo *getInherits(int *numInherits); extern void getTableAttrs(TableInfo *tbinfo, int numTables); extern IndInfo *getIndexes(int *numIndexes); extern void dumpDBComment(Archive *outfile); extern void dumpTypes(Archive *fout, FuncInfo *finfo, int numFuncs, - TypeInfo *tinfo, int numTypes); + TypeInfo *tinfo, int numTypes, + PackInfo *pinfo, int numPacks, int format); extern void dumpProcLangs(Archive *fout, FuncInfo *finfo, int numFuncs, - TypeInfo *tinfo, int numTypes); + TypeInfo *tinfo, int numTypes, + PackInfo *pinfo, int numPacks); extern void dumpFuncs(Archive *fout, FuncInfo *finfo, int numFuncs, - TypeInfo *tinfo, int numTypes); + TypeInfo *tinfo, int numTypes, + PackInfo *pinfo, int numPacks); +extern void dumpOneFunc(Archive *fout, FuncInfo *finfo, int i, + TypeInfo *tinfo, int numTypes, PackInfo *pinfo, + int numPacks, int format); extern void dumpAggs(Archive *fout, AggInfo *agginfo, int numAggregates, - TypeInfo *tinfo, int numTypes); + TypeInfo *tinfo, int numTypes, + PackInfo *pinfo, int numPacks, int format); extern void dumpOprs(Archive *fout, OprInfo *agginfo, int numOperators, - TypeInfo *tinfo, int numTypes); + TypeInfo *tinfo, int numTypes, + PackInfo *pinfo, int numPacks, int format); extern void dumpTables(Archive *fout, TableInfo *tbinfo, int numTables, IndInfo *indinfo, int numIndexes, InhInfo *inhinfo, int numInherits, @@ -274,6 +321,15 @@ extern void dumpIndexes(Archive *fout, IndInfo *indinfo, int numIndexes, TableInfo *tbinfo, int numTables, const char *tablename); extern const char *fmtId(const char *identifier, bool force_quotes); +extern void dumpComment(Archive *fout, const char *target, const char *oid, + const char *classname, int subid, + const char *((*deps)[])); + + +extern void dumpPackages(Archive *fout, PackInfo *pinfo, int numPacks, + FuncInfo *finfo, int numFuncs, TypeInfo *tinfo, + int numTypes); + extern void exit_nicely(void); #endif /* PG_DUMP_H */ Index: src/bin/pg_dump/pg_packages.c =================================================================== RCS file: pg_packages.c diff -N pg_packages.c --- /dev/null Wed Oct 17 08:50:28 2001 +++ pg_packages.c Wed Oct 17 11:41:51 2001 @@ -0,0 +1,1256 @@ +/*------------------------------------------------------------------------- + * + * pg_packages.c + * Helper routines for dumping out packages + * + * Copyright (c) 2001, Zembu Inc. + * + *------------------------------------------------------------------------- + */ + +#include <ctype.h> + +#include "postgres.h" + +#include "libpq-fe.h" +#ifndef HAVE_STRDUP +#include "strdup.h" +#endif + +#include "pg_dump.h" +#include "catalog/pg_package.h" + +#define OBJECT_PACKAGE 1 +#define OBJECT_TYPE 2 +#define OBJECT_FUNCTION 3 + +typedef struct { + int oid; + int level; + int dependHead; /* Index of head of chain of dependents */ + int dependCount; /* Count of dependencies */ + short type; + short status; + void *datum; /* The object represented */ +} Object; + +typedef struct { + int depender; /* object index w/ dependency */ + int dependee; /* object index on which ^^ has dependence */ + int link; /* Next Dependence in this depender chain */ +} Dependence; + +typedef struct { + Object *objects; /* packages + other things in our list */ + Dependence *dependents; /* what needs what */ + int numObjects, + allocObjects, + numDependents, + allocDependents, + maxLevel; /* largest level value set */ +} Stack; + +typedef struct { + int *heads; /* maxLevel + 1 ints which are list heads */ + int *links; /* numObjects ints which are list elements */ + int **tails; /* maxLevel + 1 int *s which point to list tails */ +} StackList; + +typedef struct { + PackInfo *package; /* array of PackInfo */ + FuncInfo *function; /* array of FuncInfo */ + TypeInfo *type; /* array of TypeInfo */ + int numPackage, + numFunction, + numType; /* count of items above */ +} PackFuncTypeInfo; + +static PackGlobInfo *getPackGlobal(int *numGlobals, Oid packId); + +static Stack *newStack(void); +static void freeStack(Stack *); +static int findObject(int oid, Stack *theStack); +static int addObject(int oid, int type, int level, void *datum, + Stack *theStack); +static int addDependence(int depends, int on, Stack *theStack); +static void RaiseDependenceLevel(int index, int level, Stack *theStack); +static Oid getTypeOid(char *name, PackFuncTypeInfo *theInfo, + PackInfo **thePack, TypeInfo **theType); +static Oid getFunctionOid(char *fname, PackFuncTypeInfo *theInfo, + PackInfo **thePack, FuncInfo **theFunc); + +static void addFunctionDependencies(FuncInfo *theFunc, int item, int level, + int packId, PackFuncTypeInfo *theInfo, + Stack *theStack); +static void addTypeDependencies(TypeInfo *theType, int item, int level, + int packId, PackFuncTypeInfo *theInfo, + Stack *theStack); +static void addAggregateDependencies(AggInfo *theAgg, int item, int level, + int packId, PackFuncTypeInfo *theInfo, + Stack *theStack); +static void addOperatorDependencies(OprInfo *theOpr, int item, int level, + int packId, PackFuncTypeInfo *theInfo, + Stack *theStack); +static void addPackageDependencies(PackInfo *thePack, int item, int level, + PackFuncTypeInfo *theInfo, Stack *theStack); + +static void dumpPackage(Archive *fout, Archive *gatherer, + int i, Stack *theStack, + PackInfo *pinfo, int numPacks, + FuncInfo *finfo, int numFuncs, + TypeInfo *tinfo, int numTypes); + +static StackList *makeStackList(Stack *theStack); +static void freeStackList(StackList * theList); +static void makeDependList(int i, Stack *theStack, const char *((**deps)[])); + +/* + * getPackGlobal + * get the package globals for a given package + */ +static PackGlobInfo * +getPackGlobal(int *numGlobals, Oid packId) +{ + PGresult *res; + int ntups; + int i; + PQExpBuffer query = createPQExpBuffer(); + PackGlobInfo *pginfo; + + int i_oid; + int i_langid; + int i_seq; + int i_varname; + int i_vartext; + + appendPQExpBuffer(query, "SELECT oid, pgloballang, pglobalseq, " + "pglobalvname, pglobalvtype from pg_packglobal where " + "pglobalid = %u order by pgloballang, pglobalseq;", packId); + + res = PQexec(g_conn, query->data); + if (!res || PQresultStatus(res) != PGRES_TUPLES_OK) + { + write_msg(NULL, "getPackGlobal(): SELECT failed for package %u. " + "Explanation from backend:\n\t'%s'.\n", packId, + PQerrorMessage(g_conn)); + exit_nicely(); + } + + ntups = PQntuples(res); + *numGlobals = ntups; + + pginfo = (PackGlobInfo *) malloc(ntups * sizeof(PackGlobInfo)); + + i_oid = PQfnumber(res, "oid"); + i_langid = PQfnumber(res, "pgloballang"); + i_seq = PQfnumber(res, "pglobalseq"); + i_varname = PQfnumber(res, "pglobalvname"); + i_vartext = PQfnumber(res, "pglobalvtype"); + + for(i = 0; i < ntups; i++) + { + pginfo[i].oid = strdup(PQgetvalue(res, i, i_oid)); + pginfo[i].varname = strdup(PQgetvalue(res, i, i_varname)); + pginfo[i].vartext = strdup(PQgetvalue(res, i, i_vartext)); + pginfo[i].packId = packId; + pginfo[i].langId = atooid(PQgetvalue(res, i, i_langid)); + pginfo[i].seq = atooid(PQgetvalue(res, i, i_seq)); + } + + PQclear(res); + + return pginfo; +} + +/* + * getPackages: + * determine if the backend was built with package support, and if so, + * read in all of the defined packages. + */ +PackInfo * +getPackages(int *numP, bool *hasP) +{ + PQExpBuffer q = createPQExpBuffer(); + PGresult *res; + int i, + j, + numPacks; + PackInfo *pinfo; + + int i_oid; + int i_packname; + int i_username; + + appendPQExpBuffer(q, "SELECT oid from pg_class " + "where relname = 'pg_package';"); + + res = PQexec(g_conn, q->data); + if (!res || PQresultStatus(res) != PGRES_TUPLES_OK) + { + write_msg(NULL, "getPackages(): SELECT to determine if packages" + " present failed.\nExplanation from backend: '%s'.\n", + PQerrorMessage(g_conn)); + exit_nicely(); + } + + i = PQntuples(res); + if ((i < 0) || (i > 1)) + write_msg(NULL, "Did not expect to find %d relations named 'pg_package'" + " in pg_class.\nSkipping package support.\n", i); + if (i != 1) + { + write_msg(NULL, "Found no packages\n"); + /* No packages or none we understand */ + *hasP = false; + *numP = 0; + return NULL; + } + + *hasP = true; + + appendPQExpBuffer(q, "select pg_package.oid, packname, (select usename " + "from pg_user where packowner = usesysid) as usename " + "from pg_package where packname <> 'standard';"); + + res = PQexec(g_conn, q->data); + if (!res || PQresultStatus(res) != PGRES_TUPLES_OK) + { + write_msg(NULL, "getPackages(): SELECT failed. Explanation from " + "backend:'%s'.\n", PQerrorMessage(g_conn)); + exit_nicely(); + } + + numPacks = PQntuples(res); + *numP = numPacks; + + pinfo = (PackInfo *) malloc(numPacks * sizeof(PackInfo)); + + i_oid = PQfnumber(res, "oid"); + i_packname = PQfnumber(res, "packname"); + i_username = PQfnumber(res, "usename"); + + for (i = 0; i < numPacks; i++) + { + pinfo[i].oid = strdup(PQgetvalue(res, i, i_oid)); + pinfo[i].packname = strdup(PQgetvalue(res, i, i_packname)); + pinfo[i].username = strdup(PQgetvalue(res, i, i_username)); + + j = atooid(pinfo[i].oid); + + pinfo[i].packId = j; + pinfo[i].packGlobals = getPackGlobal(&pinfo[i].numGlobals, j); + pinfo[i].packTypes = getTypes(&pinfo[i].numTypes, j); + pinfo[i].packFuncs = getFuncs(&pinfo[i].numFuncs, j); + pinfo[i].packAggs = getAggregates(&pinfo[i].numAggs, j); + pinfo[i].packOprs = getOperators(&pinfo[i].numOprs, j); + } + + return pinfo; +} + +/* + * Get ready to deal with dumping packages. The problem here is that + * a package's types, aggregates, and operators can depend on non-self + * functions, and its functions, aggregates, and operators can depend on + * non-self types. So we try to come up with an order in which to + * emit them. We do this by making a DAG, Directed Acyclic Graph, of + * the packages and things they depend on. + * + * The three structures (way) above contain all the info we need. An Object + * represents either a package, a type, or a function. It lists its + * OID, where it's stored, its type, its state (used to detect cycles in + * the dependencies), a pointer to the object, and its "level". + * + * "level" indicates the order in which this item must be emitted, with items + * of a higher "level" needing to be dumped before those of a lesser level. + * Items of equal level can be dumped in any order - they aren't dependent on + * each other. + * + * For now, if we detect a cycle in the dependencies, we emit a comment + * to the output stream and to stderr noting the cycle. + * + * To help reduce the chance of cycles, we do NOT emit dependencies for the + * return type of function. Postgres will make a type shell for them, which + * is fine. Thus if you follow the example from the docs on how to make a + * user-defined type, and a package uses that type, the right thing will + * happen. + * + * We shouldn't encounter cycles in the dependencies as each item we're dumping + * was CREATEd at one point, and all of its dependencies had to be present + * at that point. + */ +static Stack * +newStack(void) +{ + Stack *new; + + if ((new = malloc(sizeof(Stack))) == NULL) + return NULL; + + new->numObjects = 0; + new->numDependents = 0; + new->maxLevel = 0; + + new->allocObjects = 32; + new->allocDependents = 32; + + if ((new->objects = malloc(sizeof(Object) * 32)) == NULL) + { + free(new); + return NULL; + } + + if ((new->dependents = malloc(sizeof(Dependence) * 32)) == NULL) + { + free(new->objects); + free(new); + return NULL; + } + + return new; +} + +static void +freeStack(Stack *theStack) +{ + if (theStack == NULL) + return; + + free(theStack->objects); + free(theStack->dependents); + free(theStack); +} + +/* + * scan the dependency list for an oid, return its index if found. Return + * -1 if not. + */ +static int +findObject(int oid, Stack *theStack) +{ + int i; + + for (i = 0; i < theStack->numObjects; i++) + if (theStack->objects[i].oid == oid) + return i; + + return -1; +} + +/* + * Add a new object to the list + */ +static int +addObject(int oid, int type, int level, void *datum, Stack *theStack) +{ + int i = theStack->numObjects++; + + if (theStack->allocObjects == i) + { + theStack->allocObjects *= 2; + theStack->objects = realloc(theStack->objects, + theStack->allocObjects * sizeof(Object)); + } + + theStack->objects[i].oid = oid; + theStack->objects[i].type = type; + theStack->objects[i].level = level; + theStack->objects[i].datum = datum; + theStack->objects[i].status = 0; + theStack->objects[i].dependHead = -1; + theStack->objects[i].dependCount = 0; + +#if 0 + write_msg(NULL, "%s Adding object id %d type %d oid %u level %d dat %p %s\n", + g_comment_start, i, type, oid, level, datum, g_comment_end); +#endif + + if (theStack->maxLevel < level) + theStack->maxLevel = level; + + return i; +} + +/* + * Add a dependency to the list + */ +static int +addDependence(int depends, int on, Stack *theStack) +{ + int i; + + /* Do we already have this dependence? */ + for (i = theStack->objects[depends].dependHead; i != -1; + i = theStack->dependents[i].link) + if (theStack->dependents[i].dependee == on) + { + return -1; + } + + /* no. Add it */ + i = theStack->numDependents++; + + if (theStack->allocDependents == i) + { + theStack->allocDependents *= 2; + theStack->dependents = realloc(theStack->dependents, + theStack->allocDependents * sizeof(Dependence)); + } + + if (depends == on) + abort(); + + theStack->dependents[i].depender = depends; + theStack->dependents[i].dependee = on; + + /* Add to chain for this object */ + theStack->objects[depends].dependCount++; + theStack->dependents[i].link = theStack->objects[depends].dependHead; + theStack->objects[depends].dependHead = i; + + return i; +} + +/* + * RaiseDependenceLevel + * Given a dependee, raise its level to the passed-in level, and + * adjust any of its dependees accordingly. + */ +static void +RaiseDependenceLevel(int index, int level, Stack *theStack) +{ + if (theStack->objects[index].level < level) + { + /* Ok, we need to do something. raise this item, and itterate over + * its dependees */ + int i; + theStack->objects[index].level = level; + if (theStack->maxLevel < level) + theStack->maxLevel = level; + for (i = theStack->objects[index].dependHead; i != -1; + i = theStack->dependents[i].link) + RaiseDependenceLevel(theStack->dependents[i].dependee, + level + 1, theStack); + } +} + +/* + * getTypeOid - scan for a type with the given oid text + */ +static Oid +getTypeOid(char *oidText, PackFuncTypeInfo *theInfo, PackInfo **thePack, + TypeInfo **theType) +{ + int i, j; + + for(i = 0; i < theInfo->numType; i++) + if (strcmp(theInfo->type[i].oid, oidText) == 0) + { + if (thePack != NULL) + *thePack = NULL; + if (theType != NULL) + *theType = &theInfo->type[i]; + return atooid(theInfo->type[i].oid); + } + + for(j = 0; j < theInfo->numPackage; j++) + { + for(i = 0; i < theInfo->package[j].numTypes; i++) + if (strcmp(theInfo->package[j].packTypes[i].oid, oidText) == 0) + { + if (thePack != NULL) + *thePack = &theInfo->package[j]; + if (theType != NULL) + *theType = &theInfo->package[j].packTypes[i]; + return atooid(theInfo->package[j].packTypes[i].oid); + } + } + return 0; +} + +/* + * getFunctionOid - get the oid and entry for a function given its name + * + * A little easier than getTypeOid as we are given the package name if it's + * not "standard" + */ +static Oid +getFunctionOid(char *fname, PackFuncTypeInfo *theInfo, PackInfo **thePack, + FuncInfo **theFunc) +{ + int i, numFuncs; + char *p; + char scratch[NAMEDATALEN]; + FuncInfo *ourFuncs; + + if ((p = strchr(fname, '.')) != NULL) + { + StrNCpy(scratch, fname, p - fname + 1); + fname = p + 1; + + for (i = 0; i < theInfo->numPackage; i++) + if (!strcmp(scratch, theInfo->package[i].packname)) + { + ourFuncs = theInfo->package[i].packFuncs; + numFuncs = theInfo->package[i].numFuncs; + if (thePack != NULL) + *thePack = &theInfo->package[i]; + break; + } + + if (i == theInfo->numPackage) + return 0; + } + else + { + if (thePack != NULL) + *thePack = NULL; + ourFuncs = theInfo->function; + numFuncs = theInfo->numFunction; + } + + for(i = 0; i < numFuncs; i++) + if (!strcmp(fname, ourFuncs[i].proname)) + { + if (theFunc != NULL) + *theFunc = &ourFuncs[i]; + return atooid(ourFuncs[i].oid); + } + return 0; +} + +/* + * Now for the routines which do the work of adding dependencies. + * + * There is one function for each item which can have a dependency - + * function, type, aggregate, or operator. If the item being analyzed is + * in a package (the only case for aggregates and operators), the whole + * package has a dependency on any found items. + * + * Items in a package don't register dependencies against the package they + * are in. + */ +/* + * addFunctionDependencies + * add dependencies for a function + * + * theFunc is a pointer to this function, item is its index in + * theStack->objects, level is the level at which it is (dependencies at +1), + * packId is the index of the package it's in (-1 == standard), theInfo is + * the global info, and theStack is our build stack + */ +static void +addFunctionDependencies(FuncInfo *theFunc, int item, int level, int packId, + PackFuncTypeInfo *theInfo, Stack *theStack) +{ + int i; + + if (theFunc->argtypes == NULL) + return; /* no arg types, can't add dependencies */ + + for (i = 0; i < theFunc->nargs; i++) + { + Oid theType; + int index; + PackInfo *whichPack; + TypeInfo *whichType; + + if ((theType = getTypeOid(theFunc->argtypes[i], theInfo, &whichPack, + &whichType))) + { + Oid dependee; + + if (theType < g_last_builtin_oid) + break; + if ((packId != -1) && + (theStack->objects[packId].datum == whichPack)) + /* We're in a package, and this type is in the same one */ + break; + + dependee = (whichPack != NULL) ? whichPack->packId : theType; + + if ((index = findObject(dependee, theStack)) >= 0) + { + int j; + + j = addDependence(item, index, theStack); + if (theStack->objects[index].status == 0) + { + /* Emit warning about cycle in data, and move on */ + } + else + RaiseDependenceLevel(index, level+1, theStack); + } + else + { + int j; + + j = addObject(dependee, (whichPack != NULL) ? OBJECT_PACKAGE + : OBJECT_TYPE, level + 1, whichType, theStack); + addDependence(item, j, theStack); + if (whichPack != NULL) + addPackageDependencies(whichPack, j, level + 1, theInfo, + theStack); + else + addTypeDependencies(whichType, j, level + 1, -1, theInfo, + theStack); + } + } /* getTypeOid */ + } /* for(i ... */ + theStack->objects[item].status = 1; + /* All done - functions generate dependencies only via their arguments */ +} + + +/* + * addTypeDependencies + * add dependencies for a type + * + * theType is a pointer to this type, item is its index in + * theStack->objects, level is the level at which it is (dependencies at +1), + * packId is the index of the package it's in (-1 == standard), theInfo is + * the global info, and theStack is our build stack + */ +static void +addTypeDependencies(TypeInfo *theType, int item, int level, int packId, + PackFuncTypeInfo *theInfo, Stack *theStack) +{ + int i; + + /* Types add dependencies via their in, out, send, and receive routines */ + for (i = 0; i < 4; i++) + { + Oid theFunc; + int index; + PackInfo *whichPack; + FuncInfo *whichFunc; + char *theName; + + switch (i) + { + case 0: theName = theType->typinput; break; + case 1: theName = theType->typoutput; break; + case 2: theName = theType->typsend; break; + case 3: theName = theType->typreceive; break; + } + + if ((theName == NULL) || (theName[0] == '\0')) + break; + + if ((theFunc = getFunctionOid(theName, theInfo, &whichPack, + &whichFunc))) + { + Oid dependee; + + if (theFunc < g_last_builtin_oid) + break; + if ((packId != -1) && + (theStack->objects[packId].datum == whichPack)) + /* We're in a package, and this type is in the same one */ + break; + + dependee = (whichPack != NULL) ? whichPack->packId : theFunc; + + if ((index = findObject(dependee, theStack)) >= 0) + { + int j; + + j = addDependence(item, index, theStack); + if (theStack->objects[index].status == 0) + { + /* Emit warning about cycle in data, and move on */ + } + else + { + RaiseDependenceLevel(index, level+1, theStack); + } + } + else + { + int j; + + j = addObject(dependee, (whichPack != NULL) ? OBJECT_PACKAGE + : OBJECT_FUNCTION, level + 1, whichFunc, + theStack); + addDependence(item, j, theStack); + if (whichPack != NULL) + addPackageDependencies(whichPack, j, level + 1, theInfo, + theStack); + else + addFunctionDependencies(whichFunc, j, level + 1, -1, + theInfo, theStack); + } + } /* getTypeOid */ + } /* for(i ... */ + theStack->objects[item].status = 1; + /* All done - types generate dependencies only via in/out/send/rec */ +} + + +/* + * addAggregateDependencies + * add dependencies for an aggregate + * + * theAgg is a pointer to this aggregate, item is its index in + * theStack->objects, level is the level at which it is (dependencies at +1), + * packId is the index of the package it's in (-1 == standard), theInfo is + * the global info, and theStack is our build stack + */ +static void +addAggregateDependencies(AggInfo *theAgg, int item, int level, int packId, + PackFuncTypeInfo *theInfo, Stack *theStack) +{ + int i; + + /* + * Aggregates add dependencies via aggtransfn1, aggtransfn2, aggfinalfn + */ + for (i = 0; i < 2; i++) + { + Oid theFunc; + int index; + PackInfo *whichPack; + FuncInfo *whichFunc; + char *theName; + + switch (i) + { + case 0: theName = theAgg->aggtransfn; break; + case 1: theName = theAgg->aggfinalfn; break; + } + + if ((theName == NULL) || (theName[0] == '\0')) + break; + + if ((theFunc = getFunctionOid(theName, theInfo, &whichPack, + &whichFunc))) + { + Oid dependee; + + if (theFunc < g_last_builtin_oid) + break; + if ((packId != -1) && + (theStack->objects[packId].datum == whichPack)) + /* We're in a package, and this func is in the same one */ + break; + + dependee = (whichPack != NULL) ? whichPack->packId : theFunc; + + if ((index = findObject(dependee, theStack)) >= 0) + { + int j; + + j = addDependence(item, index, theStack); + if (theStack->objects[index].status == 0) + { + /* Emit warning about cycle in data, and move on */ + } + else + RaiseDependenceLevel(index, level+1, theStack); + } + else + { + int j; + + j = addObject(dependee, (whichPack != NULL) ? OBJECT_PACKAGE + : OBJECT_FUNCTION, level + 1, whichFunc, + theStack); + addDependence(item, j, theStack); + if (whichPack != NULL) + addPackageDependencies(whichPack, j, level + 1, theInfo, + theStack); + else + addFunctionDependencies(whichFunc, j, level + 1, -1, + theInfo, theStack); + } + } /* getTypeOid */ + } /* for(i ... */ + theStack->objects[item].status = 1; + /* All done */ +} + + +/* + * addOperatorDependencies + * add dependencies for an operator + * + * theOpr is a pointer to this operator, item is its index in + * theStack->objects, level is the level at which it is (dependencies at +1), + * packId is the index of the package it's in (-1 == standard), theInfo is + * the global info, and theStack is our build stack + */ +static void +addOperatorDependencies(OprInfo *theOpr, int item, int level, int packId, + PackFuncTypeInfo *theInfo, Stack *theStack) +{ + int i; + + /* + * Operators add dependencies via oprcode, oprrest, oprjoin + */ + for (i = 0; i < 3; i++) + { + Oid theFunc; + int index; + PackInfo *whichPack; + FuncInfo *whichFunc; + char *theName; + + switch (i) + { + case 0: theName = theOpr->oprcode; break; + case 1: theName = theOpr->oprrest; break; + case 2: theName = theOpr->oprjoin; break; + } + + if ((theName == NULL) || (theName[0] == '\0')) + break; + + if ((theFunc = getFunctionOid(theName, theInfo, &whichPack, + &whichFunc))) + { + Oid dependee; + + if (theFunc < g_last_builtin_oid) + break; + if ((packId != -1) && + (theStack->objects[packId].datum == whichPack)) + /* We're in a package, and this func is in the same one */ + break; + + dependee = (whichPack != NULL) ? whichPack->packId : theFunc; + + if ((index = findObject(dependee, theStack)) >= 0) + { + int j; + + j = addDependence(item, index, theStack); + if (theStack->objects[index].status == 0) + { + /* Emit warning about cycle in data, and move on */ + } + else + RaiseDependenceLevel(index, level+1, theStack); + } + else + { + int j; + + j = addObject(dependee, (whichPack != NULL) ? OBJECT_PACKAGE + : OBJECT_FUNCTION, level + 1, whichFunc, + theStack); + addDependence(item, j, theStack); + if (whichPack != NULL) + addPackageDependencies(whichPack, j, level + 1, theInfo, + theStack); + else + addFunctionDependencies(whichFunc, j, level + 1, -1, + theInfo, theStack); + } + } /* getTypeOid */ + } /* for(i ... */ + theStack->objects[item].status = 1; + /* All done - types generate dependencies only via in/out/send/rec */ +} + +/* + * addPackageDependencies + * add dependencies for a package + * + * theOpr is a pointer to this operator, item is its index in + * theStack->objects, level is the level at which it is (dependencies at +1), + * theInfo is the global info, and theStack is our build stack + */ +static void +addPackageDependencies(PackInfo *thePack, int item, int level, + PackFuncTypeInfo *theInfo, Stack *theStack) +{ + int i; + + for (i = 0; i < thePack->numTypes; i++) + addTypeDependencies(&thePack->packTypes[i], item, level, item, + theInfo, theStack); + for (i = 0; i < thePack->numFuncs; i++) + addFunctionDependencies(&thePack->packFuncs[i], item, level, item, + theInfo, theStack); + for (i = 0; i < thePack->numAggs; i++) + addAggregateDependencies(&thePack->packAggs[i], item, level, item, + theInfo, theStack); + for (i = 0; i < thePack->numOprs; i++) + addOperatorDependencies(&thePack->packOprs[i], item, level, item, + theInfo, theStack); + theStack->objects[item].status = 1; +} + +/* + * makeDependList + * Make a depend structure for use w/ ArchiveElement listing the + * dependnecies for an object. + */ +static +void makeDependList(int i, Stack *theStack, const char *((**deps)[])) +{ + int j, k; + char buffer[16]; + + if (theStack->objects[i].dependCount == 0) + { + *deps = NULL; + return; + } + + *deps = calloc(theStack->objects[i].dependCount + 1, sizeof(char *)); + if (*deps == NULL) + { + write_msg(NULL, "makeDependList: couldn't calloc() memory"); + exit_nicely(); + } + + for(j = theStack->objects[i].dependHead, k = 0; j != -1; + j = theStack->dependents[j].link) + { + snprintf(buffer, 16, "%u", + theStack->objects[theStack->dependents[j].dependee].oid); + (**deps)[k++] = strdup(buffer); + } + (**deps)[k] = NULL; +} + +/* + * makeStackList + * make a StackList structure from a given Stack + * + * This routine builds a set of tail queues, one for each "level" of + * object in theStack. Thus there are maxLevel + 1 queues. The queues consist + * of three parts: the "heads", the "links", and the "tails". There is one + * heads entry for each queue, and each entry contains the index into + * theStack->objects of the first object in this queue's list. There is one + * entry in links for each element in theStack->objects, and it points to the + * next object in this queue, with -1 indicating the end of the list. There + * is one tails element for each queue, and it is a pointer to the last + * index integer in this queue (the one needing updating when we're appending + * to the end of the list). + * + * To begin, we allocate the needed space, and initialize all of tails + * pointers to point to the corresponding entry in the heads array. We then + * walk the objects array in theStack, and note the level of each element. + * We then add that element's offset to the queue for that array. As we know + * that the queues won't be scanned until we're done, we don't actually + * terminate the end of the list with a -1. + * + * When we are all done, we go throuh and add the terminating -1's we + * didn't add above. This makes terminating the list go as O(maxLevel) rather + * than O(numObjects). + */ +static StackList *makeStackList(Stack *theStack) +{ + StackList *theList; + int *heads; + int *links; + int **tails; + int i, lev; + + theList = malloc(sizeof(StackList)); + heads = malloc(sizeof(int) * (theStack->maxLevel + 1)); + links = malloc(sizeof(int) * (theStack->numObjects)); + tails = malloc(sizeof(int *) * (theStack->maxLevel + 1)); + + theList->heads = heads; + theList->links = links; + theList->tails = tails; + + /* Initialize the queues */ + for (i = 0; i <= theStack->maxLevel; i++) + tails[i] = &heads[i]; + + /* add the elements */ + for (i = 0; i < theStack->numObjects; i++) + { + lev = theStack->objects[i].level; + *tails[lev] = i; + tails[lev] = &links[i]; + } + + /* terminate the queues */ + for (i = 0; i <= theStack->maxLevel; i++) + *tails[i] = -1; + + return theList; +} + +static void +freeStackList(StackList * theList) +{ + free(theList->heads); + free(theList->links); + free(theList->tails); + free(theList); +} + +/* + * dumpPackage + * actually store this package + * + * First we store the package globals. Next we store the types. + * Third comes the functions. Then we do the aggregates and operators. + * + * thePack is a pointer to one of the packages in pinfo. It's just easier + * to directly use the pointer rather than know which index it is. + */ +static void +dumpPackage(Archive *fout, Archive *gatherer, int index, Stack *theStack, + PackInfo *pinfo, int numPacks, FuncInfo *finfo, int numFuncs, + TypeInfo *tinfo, int numTypes) +{ + int i, j, k; + PQExpBuffer q, del; + char lang[NAMEDATALEN]; + PackInfo *thePack = theStack->objects[index].datum; + const char *((*deps)[]); + + makeDependList(index, theStack, &deps); + + q = createPQExpBuffer(); + del = createPQExpBuffer(); + + appendPQExpBuffer(q, "CREATE PACKAGE %s AS\n", thePack->packname); + appendPQExpBuffer(del, "DROP PACKAGE %s;\n", thePack->packname); + + ArchiveEntry(gatherer, thePack->oid, thePack->packname, "PACKAGE", + deps, q->data, del->data, "", thePack->username, NULL, NULL); + + resetPQExpBuffer(q); + resetPQExpBuffer(del); + + /* + * Do package globals + */ + j = 1; /* first sequence # will be 1 also */ + k = 0; /* Flag first time through. */ + for (i = 0; i <= thePack->numGlobals; i++) + { + PackGlobInfo *glo = &thePack->packGlobals[i]; + + /* + * We look to see if we're at the very end, or we're in the middle + * and this sequence is not past the last one. If so, we need to + * terminate the last run. + */ + if ((i == thePack->numGlobals) || ((glo->seq <= j) && (k != 0))) + { + if (k != 0) /* close the existing declaration */ + appendPQExpBuffer(q, " LANGUAGE '%s'\n", lang); + k = 0; + if (i == thePack->numGlobals) + { + ArchiveEntry(gatherer, "0", "None", "GLBL", NULL, q->data, + "", "", "", NULL, NULL); + break; + } + } + + /* This is either the first time, or we're in a new sequence */ + if (k == 0) + { + PGresult *res; + int nlangs; + + appendPQExpBuffer(del, "SELECT lanname FROM pg_language " + "where oid = %u", glo->langId); + + res = PQexec(g_conn, del->data); + if (!res || + PQresultStatus(res) != PGRES_TUPLES_OK) + { + write_msg(NULL, "dumpPackage(): SELECT for procedural language" + " failed. Explanation from backend: '%s'.\n", + PQerrorMessage(g_conn)); + exit_nicely(); + } + nlangs = PQntuples(res); + + if (nlangs != 1) + { + write_msg(NULL, "dumpPackage(): procedural language %u not " + " found\n", glo->langId); + exit_nicely(); + } + strcpy(lang, PQgetvalue(res, 0, PQfnumber(res, "lanname"))); + resetPQExpBuffer(del); + + appendPQExpBuffer(q, "DECLARE "); + } /* done getting language name right */ + + j = glo->seq; + + if (k != 0) + appendPQExpBuffer(q, ", "); + + appendPQExpBuffer(q, "%s '%s'", glo->varname, glo->vartext); + + k = 1; + } + + /* + * Do types + */ + for (i = 0; i < thePack->numTypes; i++) + { + TypeInfo *ty = &thePack->packTypes[i]; + + dumpTypes(gatherer, finfo, numFuncs, ty, 1, pinfo, numPacks, 1); + } + + /* + * Do functions + */ + for (i = 0; i < thePack->numFuncs; i++) + { + FuncInfo *fy = &thePack->packFuncs[i]; + int format; + + + if (!strncmp(fy->proname, "__packinit_", 11)) + format = 2; + else + format = 1; + + dumpOneFunc(gatherer, fy, 0, tinfo, numTypes, pinfo, numPacks, format); + } + + /* + * Do aggregates + */ + for (i = 0; i < thePack->numAggs; i++) + { + AggInfo *ag = &thePack->packAggs[i]; + + dumpAggs(gatherer, ag, 1, tinfo, numTypes, pinfo, numPacks, 1); + } + + /* + * Do operators + */ +#if 1 + for (i = 0; i < thePack->numOprs; i++) + { + OprInfo *op = &thePack->packOprs[i]; + + dumpOprs(gatherer, op, 1, tinfo, numTypes, pinfo, numPacks, 1); + } +#else + dumpOprs(gatherer, thePack->packOprs, thePack->numOprs, tinfo, numTypes, + pinfo, numPacks, 1); +#endif + Package_Emit(fout, gatherer); + + /* + * Dump package comments, if any + */ + + resetPQExpBuffer(q); + appendPQExpBuffer(q, "PACKAGE %s", thePack->packname); + dumpComment(fout, q->data, thePack->oid, "pg_package", 0, NULL); +} + +/* + * dumPackages + * writes out to fout the queries to recreate all the user-defined packages + * + * Rather complicated as the things in a package can depend on + * types and functions in other packages or in standard. Also types & + * functions in standard can depend on other packages, or other types & + * functions in standard. Also, we put the complexity of figuring out when + * we need to emit an object (package, function, or type) here rather than + * spread it out in dumpTypes() and dumpOneFunc(). + * + * The approach is to build a list of Objects (packages, types, and + * functions), and their dependencies. Each Object has the underlying object's + * type, status (1 == fully explored), oid, addres, and "level". "level" is + * an indication of how many successive things depend on this object. An + * object which is depended on by another object must have a level value + * greater than the object that depends on it. In this implimentation, an + * object which is depended on by other objects will have a level value + * one greater than the maximum level value for the objects which depend on + * it. Objects which are not depended on by other objects have a level of + * zero. We also maintain the largets level value seen in the set of Objects. + * + * When it comes time to emit the packages and dependents, we make a + * list for each level value, from maxLevel to 0. We scan the list of + * objects, and add each one to the list for its level. We then dump + * all objects on the maxLevel list, then the maxLevel - 1 list, and so + * on until we emit the level 0 list. This way we ensure that all objects + * are dumped before any object that depends on them. + */ +void +dumpPackages(Archive *fout, PackInfo *pinfo, int numPacks, FuncInfo *finfo, + int numFuncs, TypeInfo *tinfo, int numTypes) +{ + Stack *theStack; + StackList *theList; + PackFuncTypeInfo *theInfo; + int i, j; + Archive *gatherer; + + theStack = newStack(); + + theInfo = malloc(sizeof(PackFuncTypeInfo)); + theInfo->package = pinfo; + theInfo->function = finfo; + theInfo->type = tinfo; + theInfo->numPackage = numPacks; + theInfo->numFunction = numFuncs; + theInfo->numType = numTypes; + +#if 0 + write_msg(NULL, "%s Starting package dump %s\n", + g_comment_start, g_comment_end); +#endif + for (i = 0; i < numPacks; i++) + { + if (findObject(pinfo[i].packId, theStack) == -1) + { + j = addObject(pinfo[i].packId, OBJECT_PACKAGE, 0, + &pinfo[i], theStack); + addPackageDependencies(&pinfo[i], j, 0, theInfo, theStack); + } + } +#if 0 + write_msg(NULL, "%s done scan, now for StackList making %s\n", + g_comment_start, g_comment_end); +#endif + + /* now make the link list */ + theList = makeStackList(theStack); + + gatherer = CreateArchive("", archPackage, 0); + + for (i = theStack->maxLevel; i >= 0; i--) + for (j = theList->heads[i]; j != -1; j = theList->links[j]) + { + switch (theStack->objects[j].type) + { + case OBJECT_PACKAGE: + dumpPackage(fout, gatherer, j, theStack, + pinfo, numPacks, finfo, numFuncs, + tinfo, numTypes); + break; + + case OBJECT_TYPE: + dumpTypes(fout, finfo, numFuncs, + theStack->objects[j].datum, 1, pinfo, numPacks, + 0); + break; + + case OBJECT_FUNCTION: + dumpOneFunc(fout, theStack->objects[j].datum, 0, + tinfo, numTypes, pinfo, numPacks, 0); + break; + + } + } + + free(theInfo); + freeStack(theStack); + freeStackList(theList); +} Index: src/include/fmgr.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/fmgr.h,v retrieving revision 1.15 diff -u -r1.15 fmgr.h --- src/include/fmgr.h 2001/10/06 23:21:44 1.15 +++ src/include/fmgr.h 2001/10/17 16:41:53 @@ -41,6 +41,7 @@ * called */ Oid fn_oid; /* OID of function (NOT of handler, if * any) */ + Oid fn_pack; /* OID of package contining fn_oid */ short fn_nargs; /* 0..FUNC_MAX_ARGS, or -1 if variable arg * count */ bool fn_strict; /* function is "strict" (NULL in => NULL @@ -155,6 +156,9 @@ if ((Pointer) (ptr) != PG_GETARG_POINTER(n)) \ pfree(ptr); \ } while (0) + +/* Macro for fetching bits of fcinfo */ +#define PG_GET_PACKID(n) (fcinfo->flinfo->fn_pack) /* Macros for fetching arguments of standard types */ Index: src/include/catalog/catname.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/catalog/catname.h,v retrieving revision 1.20 diff -u -r1.20 catname.h --- src/include/catalog/catname.h 2001/08/25 18:52:42 1.20 +++ src/include/catalog/catname.h 2001/10/17 16:41:54 @@ -31,6 +31,8 @@ #define ListenerRelationName "pg_listener" #define OperatorClassRelationName "pg_opclass" #define OperatorRelationName "pg_operator" +#define PackageRelationName "pg_package" +#define PackGlobalRelationName "pg_packglobal" #define ProcedureRelationName "pg_proc" #define RelationRelationName "pg_class" #define RewriteRelationName "pg_rewrite" Index: src/include/catalog/indexing.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/catalog/indexing.h,v retrieving revision 1.53 diff -u -r1.53 indexing.h --- src/include/catalog/indexing.h 2001/08/21 16:36:05 1.53 +++ src/include/catalog/indexing.h 2001/10/17 16:41:54 @@ -36,6 +36,8 @@ #define Num_pg_largeobject_indices 1 #define Num_pg_opclass_indices 2 #define Num_pg_operator_indices 2 +#define Num_pg_package_indices 2 +#define Num_pg_packglobal_indices 1 #define Num_pg_proc_indices 2 #define Num_pg_relcheck_indices 1 #define Num_pg_rewrite_indices 2 @@ -50,7 +52,7 @@ #define AccessMethodOperatorIndex "pg_amop_opc_opr_index" #define AccessMethodStrategyIndex "pg_amop_opc_strategy_index" #define AccessMethodProcedureIndex "pg_amproc_opc_procnum_index" -#define AggregateNameTypeIndex "pg_aggregate_name_type_index" +#define AggregateNamePackTypeIndex "pg_aggregate_name_pack_type_index" #define AggregateOidIndex "pg_aggregate_oid_index" #define AmNameIndex "pg_am_name_index" #define AmOidIndex "pg_am_oid_index" @@ -74,7 +76,10 @@ #define OpclassOidIndex "pg_opclass_oid_index" #define OperatorNameIndex "pg_operator_oprname_l_r_k_index" #define OperatorOidIndex "pg_operator_oid_index" -#define ProcedureNameIndex "pg_proc_proname_narg_type_index" +#define PackageNameIndex "pg_package_name_index" +#define PackageOidIndex "pg_package_oid_index" +#define PackageGlobalIndex "pg_packglobal_index" +#define ProcedureNameIndex "pg_proc_proname_pack_narg_type_index" #define ProcedureOidIndex "pg_proc_oid_index" #define RelCheckIndex "pg_relcheck_rcrelid_index" #define RewriteOidIndex "pg_rewrite_oid_index" @@ -106,6 +111,8 @@ extern char *Name_pg_largeobject_indices[]; extern char *Name_pg_opclass_indices[]; extern char *Name_pg_operator_indices[]; +extern char *Name_pg_package_indices[]; +extern char *Name_pg_packglobal_indices[]; extern char *Name_pg_proc_indices[]; extern char *Name_pg_relcheck_indices[]; extern char *Name_pg_rewrite_indices[]; @@ -150,7 +157,7 @@ * that is just like in a normal 'create index' SQL command. */ -DECLARE_UNIQUE_INDEX(pg_aggregate_name_type_index on pg_aggregate using btree(aggname name_ops, aggbasetype oid_ops)); +DECLARE_UNIQUE_INDEX(pg_aggregate_name_pack_type_index on pg_aggregate using btree(aggname name_ops, aggpack oid_ops, aggbasetypeoid_ops)); DECLARE_UNIQUE_INDEX(pg_aggregate_oid_index on pg_aggregate using btree(oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_am_name_index on pg_am using btree(amname name_ops)); DECLARE_UNIQUE_INDEX(pg_am_oid_index on pg_am using btree(oid oid_ops)); @@ -178,8 +185,11 @@ DECLARE_UNIQUE_INDEX(pg_opclass_oid_index on pg_opclass using btree(oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_operator_oid_index on pg_operator using btree(oid oid_ops)); DECLARE_UNIQUE_INDEX(pg_operator_oprname_l_r_k_index on pg_operator using btree(oprname name_ops, oprleft oid_ops, oprrightoid_ops, oprkind char_ops)); +DECLARE_UNIQUE_INDEX(pg_package_oid_index on pg_package using btree(oid oid_ops)); +DECLARE_UNIQUE_INDEX(pg_package_name_index on pg_package using btree(packname name_ops)); +DECLARE_UNIQUE_INDEX(pg_packglobal_index on pg_packglobal using btree(pglobalid oid_ops, pgloballang oid_ops, pglobalseqint4_ops)); DECLARE_UNIQUE_INDEX(pg_proc_oid_index on pg_proc using btree(oid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_proc_proname_narg_type_index on pg_proc using btree(proname name_ops, pronargs int2_ops, proargtypesoidvector_ops)); +DECLARE_UNIQUE_INDEX(pg_proc_proname_pack_narg_type_index on pg_proc using btree(proname name_ops, propack oid_ops, pronargsint2_ops, proargtypes oidvector_ops)); /* This following index is not used for a cache and is not unique */ DECLARE_INDEX(pg_relcheck_rcrelid_index on pg_relcheck using btree(rcrelid oid_ops)); DECLARE_UNIQUE_INDEX(pg_rewrite_oid_index on pg_rewrite using btree(oid oid_ops)); Index: src/include/catalog/pg_aggregate.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/catalog/pg_aggregate.h,v retrieving revision 1.32 diff -u -r1.32 pg_aggregate.h --- src/include/catalog/pg_aggregate.h 2001/09/28 08:09:13 1.32 +++ src/include/catalog/pg_aggregate.h 2001/10/17 16:41:54 @@ -32,6 +32,7 @@ * cpp turns this into typedef struct FormData_pg_aggregate * * aggname name of the aggregate + * aggpack package containing the aggregate * aggowner owner (creator) of the aggregate * aggtransfn transition function * aggfinalfn final function @@ -44,6 +45,7 @@ CATALOG(pg_aggregate) { NameData aggname; + Oid aggpack; int4 aggowner; regproc aggtransfn; regproc aggfinalfn; @@ -65,15 +67,16 @@ * ---------------- */ -#define Natts_pg_aggregate 8 +#define Natts_pg_aggregate 9 #define Anum_pg_aggregate_aggname 1 -#define Anum_pg_aggregate_aggowner 2 -#define Anum_pg_aggregate_aggtransfn 3 -#define Anum_pg_aggregate_aggfinalfn 4 -#define Anum_pg_aggregate_aggbasetype 5 -#define Anum_pg_aggregate_aggtranstype 6 -#define Anum_pg_aggregate_aggfinaltype 7 -#define Anum_pg_aggregate_agginitval 8 +#define Anum_pg_aggregate_aggpack 2 +#define Anum_pg_aggregate_aggowner 3 +#define Anum_pg_aggregate_aggtransfn 4 +#define Anum_pg_aggregate_aggfinalfn 5 +#define Anum_pg_aggregate_aggbasetype 6 +#define Anum_pg_aggregate_aggtranstype 7 +#define Anum_pg_aggregate_aggfinaltype 8 +#define Anum_pg_aggregate_agginitval 9 /* ---------------- @@ -81,88 +84,89 @@ * --------------- */ -DATA(insert OID = 0 ( avg PGUID int8_accum numeric_avg 20 1231 1700 "{0,0,0}" )); -DATA(insert OID = 0 ( avg PGUID int4_avg_accum int8_avg 23 1016 1700 "{0,0}" )); -DATA(insert OID = 0 ( avg PGUID int2_avg_accum int8_avg 21 1016 1700 "{0,0}" )); -DATA(insert OID = 0 ( avg PGUID numeric_accum numeric_avg 1700 1231 1700 "{0,0,0}" )); -DATA(insert OID = 0 ( avg PGUID float4_accum float8_avg 700 1022 701 "{0,0,0}" )); -DATA(insert OID = 0 ( avg PGUID float8_accum float8_avg 701 1022 701 "{0,0,0}" )); -DATA(insert OID = 0 ( avg PGUID interval_accum interval_avg 1186 1187 1186 "{0 second,0 second}" )); - -DATA(insert OID = 0 ( sum PGUID int8_sum - 20 1700 1700 _null_ )); -DATA(insert OID = 0 ( sum PGUID int4_sum - 23 20 20 _null_ )); -DATA(insert OID = 0 ( sum PGUID int2_sum - 21 20 20 _null_ )); -DATA(insert OID = 0 ( sum PGUID float4pl - 700 700 700 _null_ )); -DATA(insert OID = 0 ( sum PGUID float8pl - 701 701 701 _null_ )); -DATA(insert OID = 0 ( sum PGUID cash_pl - 790 790 790 _null_ )); -DATA(insert OID = 0 ( sum PGUID interval_pl - 1186 1186 1186 _null_ )); -DATA(insert OID = 0 ( sum PGUID numeric_add - 1700 1700 1700 _null_ )); - -DATA(insert OID = 0 ( max PGUID int8larger - 20 20 20 _null_ )); -DATA(insert OID = 0 ( max PGUID int4larger - 23 23 23 _null_ )); -DATA(insert OID = 0 ( max PGUID int2larger - 21 21 21 _null_ )); -DATA(insert OID = 0 ( max PGUID oidlarger - 26 26 26 _null_ )); -DATA(insert OID = 0 ( max PGUID float4larger - 700 700 700 _null_ )); -DATA(insert OID = 0 ( max PGUID float8larger - 701 701 701 _null_ )); -DATA(insert OID = 0 ( max PGUID int4larger - 702 702 702 _null_ )); -DATA(insert OID = 0 ( max PGUID date_larger - 1082 1082 1082 _null_ )); -DATA(insert OID = 0 ( max PGUID time_larger - 1083 1083 1083 _null_ )); -DATA(insert OID = 0 ( max PGUID timetz_larger - 1266 1266 1266 _null_ )); -DATA(insert OID = 0 ( max PGUID cashlarger - 790 790 790 _null_ )); -DATA(insert OID = 0 ( max PGUID timestamp_larger - 1114 1114 1114 _null_ )); -DATA(insert OID = 0 ( max PGUID timestamptz_larger - 1184 1184 1184 _null_ )); -DATA(insert OID = 0 ( max PGUID interval_larger - 1186 1186 1186 _null_ )); -DATA(insert OID = 0 ( max PGUID text_larger - 25 25 25 _null_ )); -DATA(insert OID = 0 ( max PGUID numeric_larger - 1700 1700 1700 _null_ )); - -DATA(insert OID = 0 ( min PGUID int8smaller - 20 20 20 _null_ )); -DATA(insert OID = 0 ( min PGUID int4smaller - 23 23 23 _null_ )); -DATA(insert OID = 0 ( min PGUID int2smaller - 21 21 21 _null_ )); -DATA(insert OID = 0 ( min PGUID oidsmaller - 26 26 26 _null_ )); -DATA(insert OID = 0 ( min PGUID float4smaller - 700 700 700 _null_ )); -DATA(insert OID = 0 ( min PGUID float8smaller - 701 701 701 _null_ )); -DATA(insert OID = 0 ( min PGUID int4smaller - 702 702 702 _null_ )); -DATA(insert OID = 0 ( min PGUID date_smaller - 1082 1082 1082 _null_ )); -DATA(insert OID = 0 ( min PGUID time_smaller - 1083 1083 1083 _null_ )); -DATA(insert OID = 0 ( min PGUID timetz_smaller - 1266 1266 1266 _null_ )); -DATA(insert OID = 0 ( min PGUID cashsmaller - 790 790 790 _null_ )); -DATA(insert OID = 0 ( min PGUID timestamp_smaller - 1114 1114 1114 _null_ )); -DATA(insert OID = 0 ( min PGUID timestamptz_smaller - 1184 1184 1184 _null_ )); -DATA(insert OID = 0 ( min PGUID interval_smaller - 1186 1186 1186 _null_ )); -DATA(insert OID = 0 ( min PGUID text_smaller - 25 25 25 _null_ )); -DATA(insert OID = 0 ( min PGUID numeric_smaller - 1700 1700 1700 _null_ )); +DATA(insert OID = 0 ( avg 10 PGUID int8_accum numeric_avg 20 1231 1700 "{0,0,0}" )); +DATA(insert OID = 0 ( avg 10 PGUID int4_avg_accum int8_avg 23 1016 1700 "{0,0}" )); +DATA(insert OID = 0 ( avg 10 PGUID int2_avg_accum int8_avg 21 1016 1700 "{0,0}" )); +DATA(insert OID = 0 ( avg 10 PGUID numeric_accum numeric_avg 1700 1231 1700 "{0,0,0}" )); +DATA(insert OID = 0 ( avg 10 PGUID float4_accum float8_avg 700 1022 701 "{0,0,0}" )); +DATA(insert OID = 0 ( avg 10 PGUID float8_accum float8_avg 701 1022 701 "{0,0,0}" )); +DATA(insert OID = 0 ( avg 10 PGUID interval_accum interval_avg 1186 1187 1186 "{0 second,0 second}" )); + +DATA(insert OID = 0 ( sum 10 PGUID int8_sum - 20 1700 1700 _null_ )); +DATA(insert OID = 0 ( sum 10 PGUID int4_sum - 23 20 20 _null_ )); +DATA(insert OID = 0 ( sum 10 PGUID int2_sum - 21 20 20 _null_ )); +DATA(insert OID = 0 ( sum 10 PGUID float4pl - 700 700 700 _null_ )); +DATA(insert OID = 0 ( sum 10 PGUID float8pl - 701 701 701 _null_ )); +DATA(insert OID = 0 ( sum 10 PGUID cash_pl - 790 790 790 _null_ )); +DATA(insert OID = 0 ( sum 10 PGUID interval_pl - 1186 1186 1186 _null_ )); +DATA(insert OID = 0 ( sum 10 PGUID numeric_add - 1700 1700 1700 _null_ )); + +DATA(insert OID = 0 ( max 10 PGUID int8larger - 20 20 20 _null_ )); +DATA(insert OID = 0 ( max 10 PGUID int4larger - 23 23 23 _null_ )); +DATA(insert OID = 0 ( max 10 PGUID int2larger - 21 21 21 _null_ )); +DATA(insert OID = 0 ( max 10 PGUID oidlarger - 26 26 26 _null_ )); +DATA(insert OID = 0 ( max 10 PGUID float4larger - 700 700 700 _null_ )); +DATA(insert OID = 0 ( max 10 PGUID float8larger - 701 701 701 _null_ )); +DATA(insert OID = 0 ( max 10 PGUID int4larger - 702 702 702 _null_ )); +DATA(insert OID = 0 ( max 10 PGUID date_larger - 1082 1082 1082 _null_ )); +DATA(insert OID = 0 ( max 10 PGUID time_larger - 1083 1083 1083 _null_ )); +DATA(insert OID = 0 ( max 10 PGUID timetz_larger - 1266 1266 1266 _null_ )); +DATA(insert OID = 0 ( max 10 PGUID cashlarger - 790 790 790 _null_ )); +DATA(insert OID = 0 ( max 10 PGUID timestamp_larger - 1114 1114 1114 _null_ )); +DATA(insert OID = 0 ( max 10 PGUID timestamptz_larger - 1184 1184 1184 _null_ )); +DATA(insert OID = 0 ( max 10 PGUID interval_larger - 1186 1186 1186 _null_ )); +DATA(insert OID = 0 ( max 10 PGUID text_larger - 25 25 25 _null_ )); +DATA(insert OID = 0 ( max 10 PGUID numeric_larger - 1700 1700 1700 _null_ )); + +DATA(insert OID = 0 ( min 10 PGUID int8smaller - 20 20 20 _null_ )); +DATA(insert OID = 0 ( min 10 PGUID int4smaller - 23 23 23 _null_ )); +DATA(insert OID = 0 ( min 10 PGUID int2smaller - 21 21 21 _null_ )); +DATA(insert OID = 0 ( min 10 PGUID oidsmaller - 26 26 26 _null_ )); +DATA(insert OID = 0 ( min 10 PGUID float4smaller - 700 700 700 _null_ )); +DATA(insert OID = 0 ( min 10 PGUID float8smaller - 701 701 701 _null_ )); +DATA(insert OID = 0 ( min 10 PGUID int4smaller - 702 702 702 _null_ )); +DATA(insert OID = 0 ( min 10 PGUID date_smaller - 1082 1082 1082 _null_ )); +DATA(insert OID = 0 ( min 10 PGUID time_smaller - 1083 1083 1083 _null_ )); +DATA(insert OID = 0 ( min 10 PGUID timetz_smaller - 1266 1266 1266 _null_ )); +DATA(insert OID = 0 ( min 10 PGUID cashsmaller - 790 790 790 _null_ )); +DATA(insert OID = 0 ( min 10 PGUID timestamp_smaller - 1114 1114 1114 _null_ )); +DATA(insert OID = 0 ( min 10 PGUID timestamptz_smaller - 1184 1184 1184 _null_ )); +DATA(insert OID = 0 ( min 10 PGUID interval_smaller - 1186 1186 1186 _null_ )); +DATA(insert OID = 0 ( min 10 PGUID text_smaller - 25 25 25 _null_ )); +DATA(insert OID = 0 ( min 10 PGUID numeric_smaller - 1700 1700 1700 _null_ )); /* * Using int8inc for count() is cheating a little, since it really only * takes 1 parameter not 2, but nodeAgg.c won't complain ... */ -DATA(insert OID = 0 ( count PGUID int8inc - 0 20 20 0 )); +DATA(insert OID = 0 ( count 10 PGUID int8inc - 0 20 20 0 )); -DATA(insert OID = 0 ( variance PGUID int8_accum numeric_variance 20 1231 1700 "{0,0,0}" )); -DATA(insert OID = 0 ( variance PGUID int4_accum numeric_variance 23 1231 1700 "{0,0,0}" )); -DATA(insert OID = 0 ( variance PGUID int2_accum numeric_variance 21 1231 1700 "{0,0,0}" )); -DATA(insert OID = 0 ( variance PGUID float4_accum float8_variance 700 1022 701 "{0,0,0}" )); -DATA(insert OID = 0 ( variance PGUID float8_accum float8_variance 701 1022 701 "{0,0,0}" )); -DATA(insert OID = 0 ( variance PGUID numeric_accum numeric_variance 1700 1231 1700 "{0,0,0}" )); - -DATA(insert OID = 0 ( stddev PGUID int8_accum numeric_stddev 20 1231 1700 "{0,0,0}" )); -DATA(insert OID = 0 ( stddev PGUID int4_accum numeric_stddev 23 1231 1700 "{0,0,0}" )); -DATA(insert OID = 0 ( stddev PGUID int2_accum numeric_stddev 21 1231 1700 "{0,0,0}" )); -DATA(insert OID = 0 ( stddev PGUID float4_accum float8_stddev 700 1022 701 "{0,0,0}" )); -DATA(insert OID = 0 ( stddev PGUID float8_accum float8_stddev 701 1022 701 "{0,0,0}" )); -DATA(insert OID = 0 ( stddev PGUID numeric_accum numeric_stddev 1700 1231 1700 "{0,0,0}" )); +DATA(insert OID = 0 ( variance 10 PGUID int8_accum numeric_variance 20 1231 1700 "{0,0,0}" )); +DATA(insert OID = 0 ( variance 10 PGUID int4_accum numeric_variance 23 1231 1700 "{0,0,0}" )); +DATA(insert OID = 0 ( variance 10 PGUID int2_accum numeric_variance 21 1231 1700 "{0,0,0}" )); +DATA(insert OID = 0 ( variance 10 PGUID float4_accum float8_variance 700 1022 701 "{0,0,0}" )); +DATA(insert OID = 0 ( variance 10 PGUID float8_accum float8_variance 701 1022 701 "{0,0,0}" )); +DATA(insert OID = 0 ( variance 10 PGUID numeric_accum numeric_variance 1700 1231 1700 "{0,0,0}" )); + +DATA(insert OID = 0 ( stddev 10 PGUID int8_accum numeric_stddev 20 1231 1700 "{0,0,0}" )); +DATA(insert OID = 0 ( stddev 10 PGUID int4_accum numeric_stddev 23 1231 1700 "{0,0,0}" )); +DATA(insert OID = 0 ( stddev 10 PGUID int2_accum numeric_stddev 21 1231 1700 "{0,0,0}" )); +DATA(insert OID = 0 ( stddev 10 PGUID float4_accum float8_stddev 700 1022 701 "{0,0,0}" )); +DATA(insert OID = 0 ( stddev 10 PGUID float8_accum float8_stddev 701 1022 701 "{0,0,0}" )); +DATA(insert OID = 0 ( stddev 10 PGUID numeric_accum numeric_stddev 1700 1231 1700 "{0,0,0}" )); /* * prototypes for functions in pg_aggregate.c */ +struct DefElem; extern void AggregateCreate(char *aggName, - char *aggtransfnName, - char *aggfinalfnName, + Oid aggPack, + struct DefElem *aggtransfnName, + struct DefElem *aggfinalfnName, char *aggbasetypeName, char *aggtranstypeName, char *agginitval); -extern Datum AggNameGetInitVal(char *aggName, Oid basetype, - bool *isNull); +extern Datum AggIdGetInitVal(Oid aggId, bool *isNull); #endif /* PG_AGGREGATE_H */ Index: src/include/catalog/pg_attribute.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/catalog/pg_attribute.h,v retrieving revision 1.76 diff -u -r1.76 pg_attribute.h --- src/include/catalog/pg_attribute.h 2001/08/26 16:56:00 1.76 +++ src/include/catalog/pg_attribute.h 2001/10/17 16:41:54 @@ -224,40 +224,42 @@ */ #define Schema_pg_type \ { 1247, {"typname"}, 19, DEFAULT_ATTSTATTARGET, NAMEDATALEN, 1, 0, -1, -1, false, 'p', false, 'i', false, false}, \ -{ 1247, {"typowner"}, 23, 0, 4, 2, 0, -1, -1, true, 'p', false, 'i', false, false }, \ -{ 1247, {"typlen"}, 21, 0, 2, 3, 0, -1, -1, true, 'p', false, 's', false, false }, \ -{ 1247, {"typprtlen"}, 21, 0, 2, 4, 0, -1, -1, true, 'p', false, 's', false, false }, \ -{ 1247, {"typbyval"}, 16, 0, 1, 5, 0, -1, -1, true, 'p', false, 'c', false, false }, \ -{ 1247, {"typtype"}, 18, 0, 1, 6, 0, -1, -1, true, 'p', false, 'c', false, false }, \ -{ 1247, {"typisdefined"}, 16, 0, 1, 7, 0, -1, -1, true, 'p', false, 'c', false, false }, \ -{ 1247, {"typdelim"}, 18, 0, 1, 8, 0, -1, -1, true, 'p', false, 'c', false, false }, \ -{ 1247, {"typrelid"}, 26, 0, 4, 9, 0, -1, -1, true, 'p', false, 'i', false, false }, \ -{ 1247, {"typelem"}, 26, 0, 4, 10, 0, -1, -1, true, 'p', false, 'i', false, false }, \ -{ 1247, {"typinput"}, 24, 0, 4, 11, 0, -1, -1, true, 'p', false, 'i', false, false }, \ -{ 1247, {"typoutput"}, 24, 0, 4, 12, 0, -1, -1, true, 'p', false, 'i', false, false }, \ -{ 1247, {"typreceive"}, 24, 0, 4, 13, 0, -1, -1, true, 'p', false, 'i', false, false }, \ -{ 1247, {"typsend"}, 24, 0, 4, 14, 0, -1, -1, true, 'p', false, 'i', false, false }, \ -{ 1247, {"typalign"}, 18, 0, 1, 15, 0, -1, -1, true, 'p', false, 'c', false, false }, \ -{ 1247, {"typstorage"}, 18, 0, 1, 16, 0, -1, -1, true, 'p', false, 'c', false, false }, \ -{ 1247, {"typdefault"}, 25, 0, -1, 17, 0, -1, -1, false , 'x', false, 'i', false, false } +{ 1247, {"typpack"}, 26, 0, 4, 2, 0, -1, -1, true, 'p', false, 'i', false, false }, \ +{ 1247, {"typowner"}, 23, 0, 4, 3, 0, -1, -1, true, 'p', false, 'i', false, false }, \ +{ 1247, {"typlen"}, 21, 0, 2, 4, 0, -1, -1, true, 'p', false, 's', false, false }, \ +{ 1247, {"typprtlen"}, 21, 0, 2, 5, 0, -1, -1, true, 'p', false, 's', false, false }, \ +{ 1247, {"typbyval"}, 16, 0, 1, 6, 0, -1, -1, true, 'p', false, 'c', false, false }, \ +{ 1247, {"typtype"}, 18, 0, 1, 7, 0, -1, -1, true, 'p', false, 'c', false, false }, \ +{ 1247, {"typisdefined"}, 16, 0, 1, 8, 0, -1, -1, true, 'p', false, 'c', false, false }, \ +{ 1247, {"typdelim"}, 18, 0, 1, 9, 0, -1, -1, true, 'p', false, 'c', false, false }, \ +{ 1247, {"typrelid"}, 26, 0, 4, 10, 0, -1, -1, true, 'p', false, 'i', false, false }, \ +{ 1247, {"typelem"}, 26, 0, 4, 11, 0, -1, -1, true, 'p', false, 'i', false, false }, \ +{ 1247, {"typinput"}, 24, 0, 4, 12, 0, -1, -1, true, 'p', false, 'i', false, false }, \ +{ 1247, {"typoutput"}, 24, 0, 4, 13, 0, -1, -1, true, 'p', false, 'i', false, false }, \ +{ 1247, {"typreceive"}, 24, 0, 4, 14, 0, -1, -1, true, 'p', false, 'i', false, false }, \ +{ 1247, {"typsend"}, 24, 0, 4, 15, 0, -1, -1, true, 'p', false, 'i', false, false }, \ +{ 1247, {"typalign"}, 18, 0, 1, 16, 0, -1, -1, true, 'p', false, 'c', false, false }, \ +{ 1247, {"typstorage"}, 18, 0, 1, 17, 0, -1, -1, true, 'p', false, 'c', false, false }, \ +{ 1247, {"typdefault"}, 25, 0, -1, 18, 0, -1, -1, false , 'x', false, 'i', false, false } DATA(insert ( 1247 typname 19 DEFAULT_ATTSTATTARGET NAMEDATALEN 1 0 -1 -1 f p f i f f)); -DATA(insert ( 1247 typowner 23 0 4 2 0 -1 -1 t p f i f f)); -DATA(insert ( 1247 typlen 21 0 2 3 0 -1 -1 t p f s f f)); -DATA(insert ( 1247 typprtlen 21 0 2 4 0 -1 -1 t p f s f f)); -DATA(insert ( 1247 typbyval 16 0 1 5 0 -1 -1 t p f c f f)); -DATA(insert ( 1247 typtype 18 0 1 6 0 -1 -1 t p f c f f)); -DATA(insert ( 1247 typisdefined 16 0 1 7 0 -1 -1 t p f c f f)); -DATA(insert ( 1247 typdelim 18 0 1 8 0 -1 -1 t p f c f f)); -DATA(insert ( 1247 typrelid 26 0 4 9 0 -1 -1 t p f i f f)); -DATA(insert ( 1247 typelem 26 0 4 10 0 -1 -1 t p f i f f)); -DATA(insert ( 1247 typinput 24 0 4 11 0 -1 -1 t p f i f f)); -DATA(insert ( 1247 typoutput 24 0 4 12 0 -1 -1 t p f i f f)); -DATA(insert ( 1247 typreceive 24 0 4 13 0 -1 -1 t p f i f f)); -DATA(insert ( 1247 typsend 24 0 4 14 0 -1 -1 t p f i f f)); -DATA(insert ( 1247 typalign 18 0 1 15 0 -1 -1 t p f c f f)); -DATA(insert ( 1247 typstorage 18 0 1 16 0 -1 -1 t p f c f f)); -DATA(insert ( 1247 typdefault 25 0 -1 17 0 -1 -1 f x f i f f)); +DATA(insert ( 1247 typpack 26 0 4 2 0 -1 -1 t p f i f f)); +DATA(insert ( 1247 typowner 23 0 4 3 0 -1 -1 t p f i f f)); +DATA(insert ( 1247 typlen 21 0 2 4 0 -1 -1 t p f s f f)); +DATA(insert ( 1247 typprtlen 21 0 2 5 0 -1 -1 t p f s f f)); +DATA(insert ( 1247 typbyval 16 0 1 6 0 -1 -1 t p f c f f)); +DATA(insert ( 1247 typtype 18 0 1 7 0 -1 -1 t p f c f f)); +DATA(insert ( 1247 typisdefined 16 0 1 8 0 -1 -1 t p f c f f)); +DATA(insert ( 1247 typdelim 18 0 1 9 0 -1 -1 t p f c f f)); +DATA(insert ( 1247 typrelid 26 0 4 10 0 -1 -1 t p f i f f)); +DATA(insert ( 1247 typelem 26 0 4 11 0 -1 -1 t p f i f f)); +DATA(insert ( 1247 typinput 24 0 4 12 0 -1 -1 t p f i f f)); +DATA(insert ( 1247 typoutput 24 0 4 13 0 -1 -1 t p f i f f)); +DATA(insert ( 1247 typreceive 24 0 4 14 0 -1 -1 t p f i f f)); +DATA(insert ( 1247 typsend 24 0 4 15 0 -1 -1 t p f i f f)); +DATA(insert ( 1247 typalign 18 0 1 16 0 -1 -1 t p f c f f)); +DATA(insert ( 1247 typstorage 18 0 1 17 0 -1 -1 t p f c f f)); +DATA(insert ( 1247 typdefault 25 0 -1 18 0 -1 -1 f x f i f f)); DATA(insert ( 1247 ctid 27 0 6 -1 0 -1 -1 f p f i f f)); DATA(insert ( 1247 oid 26 0 4 -2 0 -1 -1 t p f i f f)); DATA(insert ( 1247 xmin 28 0 4 -3 0 -1 -1 t p f i f f)); @@ -294,40 +296,42 @@ */ #define Schema_pg_proc \ { 1255, {"proname"}, 19, DEFAULT_ATTSTATTARGET, NAMEDATALEN, 1, 0, -1, -1, false, 'p', false, 'i', false, false}, \ -{ 1255, {"proowner"}, 23, 0, 4, 2, 0, -1, -1, true, 'p', false, 'i', false, false }, \ -{ 1255, {"prolang"}, 26, 0, 4, 3, 0, -1, -1, true, 'p', false, 'i', false, false }, \ -{ 1255, {"proisinh"}, 16, 0, 1, 4, 0, -1, -1, true, 'p', false, 'c', false, false }, \ -{ 1255, {"proistrusted"}, 16, 0, 1, 5, 0, -1, -1, true, 'p', false, 'c', false, false }, \ -{ 1255, {"proiscachable"}, 16, 0, 1, 6, 0, -1, -1, true, 'p', false, 'c', false, false }, \ -{ 1255, {"proisstrict"}, 16, 0, 1, 7, 0, -1, -1, true, 'p', false, 'c', false, false }, \ -{ 1255, {"pronargs"}, 21, 0, 2, 8, 0, -1, -1, true, 'p', false, 's', false, false }, \ -{ 1255, {"proretset"}, 16, 0, 1, 9, 0, -1, -1, true, 'p', false, 'c', false, false }, \ -{ 1255, {"prorettype"}, 26, 0, 4, 10, 0, -1, -1, true, 'p', false, 'i', false, false }, \ -{ 1255, {"proargtypes"}, 30, 0, INDEX_MAX_KEYS*4, 11, 0, -1, -1, false, 'p', false, 'i', false, false }, \ -{ 1255, {"probyte_pct"}, 23, 0, 4, 12, 0, -1, -1, true, 'p', false, 'i', false, false }, \ -{ 1255, {"properbyte_cpu"}, 23, 0, 4, 13, 0, -1, -1, true, 'p', false, 'i', false, false }, \ -{ 1255, {"propercall_cpu"}, 23, 0, 4, 14, 0, -1, -1, true, 'p', false, 'i', false, false }, \ -{ 1255, {"prooutin_ratio"}, 23, 0, 4, 15, 0, -1, -1, true, 'p', false, 'i', false, false }, \ -{ 1255, {"prosrc"}, 25, 0, -1, 16, 0, -1, -1, false, 'x', false, 'i', false, false }, \ -{ 1255, {"probin"}, 17, 0, -1, 17, 0, -1, -1, false, 'x', false, 'i', false, false } +{ 1255, {"propack"}, 26, 0, 4, 2, 0, -1, -1, true, 'p', false, 'i', false, false }, \ +{ 1255, {"proowner"}, 23, 0, 4, 3, 0, -1, -1, true, 'p', false, 'i', false, false }, \ +{ 1255, {"prolang"}, 26, 0, 4, 4, 0, -1, -1, true, 'p', false, 'i', false, false }, \ +{ 1255, {"proisinh"}, 16, 0, 1, 5, 0, -1, -1, true, 'p', false, 'c', false, false }, \ +{ 1255, {"proistrusted"}, 16, 0, 1, 6, 0, -1, -1, true, 'p', false, 'c', false, false }, \ +{ 1255, {"proiscachable"}, 16, 0, 1, 7, 0, -1, -1, true, 'p', false, 'c', false, false }, \ +{ 1255, {"proisstrict"}, 16, 0, 1, 8, 0, -1, -1, true, 'p', false, 'c', false, false }, \ +{ 1255, {"pronargs"}, 21, 0, 2, 9, 0, -1, -1, true, 'p', false, 's', false, false }, \ +{ 1255, {"proretset"}, 16, 0, 1, 10, 0, -1, -1, true, 'p', false, 'c', false, false }, \ +{ 1255, {"prorettype"}, 26, 0, 4, 11, 0, -1, -1, true, 'p', false, 'i', false, false }, \ +{ 1255, {"proargtypes"}, 30, 0, INDEX_MAX_KEYS*4, 12, 0, -1, -1, false, 'p', false, 'i', false, false }, \ +{ 1255, {"probyte_pct"}, 23, 0, 4, 13, 0, -1, -1, true, 'p', false, 'i', false, false }, \ +{ 1255, {"properbyte_cpu"}, 23, 0, 4, 14, 0, -1, -1, true, 'p', false, 'i', false, false }, \ +{ 1255, {"propercall_cpu"}, 23, 0, 4, 15, 0, -1, -1, true, 'p', false, 'i', false, false }, \ +{ 1255, {"prooutin_ratio"}, 23, 0, 4, 16, 0, -1, -1, true, 'p', false, 'i', false, false }, \ +{ 1255, {"prosrc"}, 25, 0, -1, 17, 0, -1, -1, false, 'x', false, 'i', false, false }, \ +{ 1255, {"probin"}, 17, 0, -1, 18, 0, -1, -1, false, 'x', false, 'i', false, false } DATA(insert ( 1255 proname 19 DEFAULT_ATTSTATTARGET NAMEDATALEN 1 0 -1 -1 f p f i f f)); -DATA(insert ( 1255 proowner 23 0 4 2 0 -1 -1 t p f i f f)); -DATA(insert ( 1255 prolang 26 0 4 3 0 -1 -1 t p f i f f)); -DATA(insert ( 1255 proisinh 16 0 1 4 0 -1 -1 t p f c f f)); -DATA(insert ( 1255 proistrusted 16 0 1 5 0 -1 -1 t p f c f f)); -DATA(insert ( 1255 proiscachable 16 0 1 6 0 -1 -1 t p f c f f)); -DATA(insert ( 1255 proisstrict 16 0 1 7 0 -1 -1 t p f c f f)); -DATA(insert ( 1255 pronargs 21 0 2 8 0 -1 -1 t p f s f f)); -DATA(insert ( 1255 proretset 16 0 1 9 0 -1 -1 t p f c f f)); -DATA(insert ( 1255 prorettype 26 0 4 10 0 -1 -1 t p f i f f)); -DATA(insert ( 1255 proargtypes 30 0 INDEX_MAX_KEYS*4 11 0 -1 -1 f p f i f f)); -DATA(insert ( 1255 probyte_pct 23 0 4 12 0 -1 -1 t p f i f f)); -DATA(insert ( 1255 properbyte_cpu 23 0 4 13 0 -1 -1 t p f i f f)); -DATA(insert ( 1255 propercall_cpu 23 0 4 14 0 -1 -1 t p f i f f)); -DATA(insert ( 1255 prooutin_ratio 23 0 4 15 0 -1 -1 t p f i f f)); -DATA(insert ( 1255 prosrc 25 0 -1 16 0 -1 -1 f x f i f f)); -DATA(insert ( 1255 probin 17 0 -1 17 0 -1 -1 f x f i f f)); +DATA(insert ( 1255 propack 26 0 4 2 0 -1 -1 t p f i f f)); +DATA(insert ( 1255 proowner 23 0 4 3 0 -1 -1 t p f i f f)); +DATA(insert ( 1255 prolang 26 0 4 4 0 -1 -1 t p f i f f)); +DATA(insert ( 1255 proisinh 16 0 1 5 0 -1 -1 t p f c f f)); +DATA(insert ( 1255 proistrusted 16 0 1 6 0 -1 -1 t p f c f f)); +DATA(insert ( 1255 proiscachable 16 0 1 7 0 -1 -1 t p f c f f)); +DATA(insert ( 1255 proisstrict 16 0 1 8 0 -1 -1 t p f c f f)); +DATA(insert ( 1255 pronargs 21 0 2 9 0 -1 -1 t p f s f f)); +DATA(insert ( 1255 proretset 16 0 1 10 0 -1 -1 t p f c f f)); +DATA(insert ( 1255 prorettype 26 0 4 11 0 -1 -1 t p f i f f)); +DATA(insert ( 1255 proargtypes 30 0 INDEX_MAX_KEYS*4 12 0 -1 -1 f p f i f f)); +DATA(insert ( 1255 probyte_pct 23 0 4 13 0 -1 -1 t p f i f f)); +DATA(insert ( 1255 properbyte_cpu 23 0 4 14 0 -1 -1 t p f i f f)); +DATA(insert ( 1255 propercall_cpu 23 0 4 15 0 -1 -1 t p f i f f)); +DATA(insert ( 1255 prooutin_ratio 23 0 4 16 0 -1 -1 t p f i f f)); +DATA(insert ( 1255 prosrc 25 0 -1 17 0 -1 -1 f x f i f f)); +DATA(insert ( 1255 probin 17 0 -1 18 0 -1 -1 f x f i f f)); DATA(insert ( 1255 ctid 27 0 6 -1 0 -1 -1 f p f i f f)); DATA(insert ( 1255 oid 26 0 4 -2 0 -1 -1 t p f i f f)); DATA(insert ( 1255 xmin 28 0 4 -3 0 -1 -1 t p f i f f)); Index: src/include/catalog/pg_class.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/catalog/pg_class.h,v retrieving revision 1.54 diff -u -r1.54 pg_class.h --- src/include/catalog/pg_class.h 2001/08/26 16:56:01 1.54 +++ src/include/catalog/pg_class.h 2001/10/17 16:41:55 @@ -130,11 +130,11 @@ * ---------------- */ -DATA(insert OID = 1247 ( pg_type 71 PGUID 0 1247 0 0 0 0 f f r 17 0 0 0 0 0 t f f f _null_ )); +DATA(insert OID = 1247 ( pg_type 71 PGUID 0 1247 0 0 0 0 f f r 18 0 0 0 0 0 t f f f _null_ )); DESCR(""); DATA(insert OID = 1249 ( pg_attribute 75 PGUID 0 1249 0 0 0 0 f f r 15 0 0 0 0 0 f f f f _null_ )); DESCR(""); -DATA(insert OID = 1255 ( pg_proc 81 PGUID 0 1255 0 0 0 0 f f r 17 0 0 0 0 0 t f f f _null_ )); +DATA(insert OID = 1255 ( pg_proc 81 PGUID 0 1255 0 0 0 0 f f r 18 0 0 0 0 0 t f f f _null_ )); DESCR(""); DATA(insert OID = 1259 ( pg_class 83 PGUID 0 1259 0 0 0 0 f f r 23 0 0 0 0 0 t f f f _null_ )); DESCR(""); Index: src/include/catalog/pg_operator.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/catalog/pg_operator.h,v retrieving revision 1.96 diff -u -r1.96 pg_operator.h --- src/include/catalog/pg_operator.h 2001/09/30 06:46:58 1.96 +++ src/include/catalog/pg_operator.h 2001/10/17 16:41:56 @@ -37,6 +37,7 @@ CATALOG(pg_operator) { NameData oprname; + Oid oprpack; int4 oprowner; int2 oprprec; char oprkind; @@ -66,793 +67,796 @@ * ---------------- */ -#define Natts_pg_operator 16 +#define Natts_pg_operator 17 #define Anum_pg_operator_oprname 1 -#define Anum_pg_operator_oprowner 2 -#define Anum_pg_operator_oprprec 3 -#define Anum_pg_operator_oprkind 4 -#define Anum_pg_operator_oprisleft 5 -#define Anum_pg_operator_oprcanhash 6 -#define Anum_pg_operator_oprleft 7 -#define Anum_pg_operator_oprright 8 -#define Anum_pg_operator_oprresult 9 -#define Anum_pg_operator_oprcom 10 -#define Anum_pg_operator_oprnegate 11 -#define Anum_pg_operator_oprlsortop 12 -#define Anum_pg_operator_oprrsortop 13 -#define Anum_pg_operator_oprcode 14 -#define Anum_pg_operator_oprrest 15 -#define Anum_pg_operator_oprjoin 16 +#define Anum_pg_operator_oprpack 2 +#define Anum_pg_operator_oprowner 3 +#define Anum_pg_operator_oprprec 4 +#define Anum_pg_operator_oprkind 5 +#define Anum_pg_operator_oprisleft 6 +#define Anum_pg_operator_oprcanhash 7 +#define Anum_pg_operator_oprleft 8 +#define Anum_pg_operator_oprright 9 +#define Anum_pg_operator_oprresult 10 +#define Anum_pg_operator_oprcom 11 +#define Anum_pg_operator_oprnegate 12 +#define Anum_pg_operator_oprlsortop 13 +#define Anum_pg_operator_oprrsortop 14 +#define Anum_pg_operator_oprcode 15 +#define Anum_pg_operator_oprrest 16 +#define Anum_pg_operator_oprjoin 17 /* ---------------- * initial contents of pg_operator * ---------------- */ -DATA(insert OID = 15 ( "=" PGUID 0 b t f 23 20 16 416 36 97 412 int48eq eqsel eqjoinsel )); -DATA(insert OID = 36 ( "<>" PGUID 0 b t f 23 20 16 417 15 0 0 int48ne neqsel neqjoinsel )); -DATA(insert OID = 37 ( "<" PGUID 0 b t f 23 20 16 419 82 0 0 int48lt scalarltsel scalarltjoinsel )); -DATA(insert OID = 76 ( ">" PGUID 0 b t f 23 20 16 418 80 0 0 int48gt scalargtsel scalargtjoinsel )); -DATA(insert OID = 80 ( "<=" PGUID 0 b t f 23 20 16 430 76 0 0 int48le scalarltsel scalarltjoinsel )); -DATA(insert OID = 82 ( ">=" PGUID 0 b t f 23 20 16 420 37 0 0 int48ge scalargtsel scalargtjoinsel )); - -DATA(insert OID = 58 ( "<" PGUID 0 b t f 16 16 16 59 1695 0 0 boollt scalarltsel scalarltjoinsel )); -DATA(insert OID = 59 ( ">" PGUID 0 b t f 16 16 16 58 1694 0 0 boolgt scalargtsel scalargtjoinsel )); -DATA(insert OID = 85 ( "<>" PGUID 0 b t f 16 16 16 85 91 0 0 boolne neqsel neqjoinsel )); -DATA(insert OID = 91 ( "=" PGUID 0 b t t 16 16 16 91 85 58 58 booleq eqsel eqjoinsel )); +DATA(insert OID = 15 ( "=" 10 PGUID 0 b t f 23 20 16 416 36 97 412 int48eq eqsel eqjoinsel )); +DATA(insert OID = 36 ( "<>" 10 PGUID 0 b t f 23 20 16 417 15 0 0 int48ne neqsel neqjoinsel )); +DATA(insert OID = 37 ( "<" 10 PGUID 0 b t f 23 20 16 419 82 0 0 int48lt scalarltsel scalarltjoinsel )); +DATA(insert OID = 76 ( ">" 10 PGUID 0 b t f 23 20 16 418 80 0 0 int48gt scalargtsel scalargtjoinsel )); +DATA(insert OID = 80 ( "<=" 10 PGUID 0 b t f 23 20 16 430 76 0 0 int48le scalarltsel scalarltjoinsel )); +DATA(insert OID = 82 ( ">=" 10 PGUID 0 b t f 23 20 16 420 37 0 0 int48ge scalargtsel scalargtjoinsel )); + +DATA(insert OID = 58 ( "<" 10 PGUID 0 b t f 16 16 16 59 1695 0 0 boollt scalarltsel scalarltjoinsel)); +DATA(insert OID = 59 ( ">" 10 PGUID 0 b t f 16 16 16 58 1694 0 0 boolgt scalargtsel scalargtjoinsel)); +DATA(insert OID = 85 ( "<>" 10 PGUID 0 b t f 16 16 16 85 91 0 0 boolne neqsel neqjoinsel )); +DATA(insert OID = 91 ( "=" 10 PGUID 0 b t t 16 16 16 91 85 58 58 booleq eqsel eqjoinsel )); #define BooleanEqualOperator 91 -DATA(insert OID = 1694 ( "<=" PGUID 0 b t f 16 16 16 1695 59 0 0 boolle scalarltsel scalarltjoinsel )); -DATA(insert OID = 1695 ( ">=" PGUID 0 b t f 16 16 16 1694 58 0 0 boolge scalargtsel scalargtjoinsel )); +DATA(insert OID = 1694 ( "<=" 10 PGUID 0 b t f 16 16 16 1695 59 0 0 boolle scalarltsel scalarltjoinsel )); +DATA(insert OID = 1695 ( ">=" 10 PGUID 0 b t f 16 16 16 1694 58 0 0 boolge scalargtsel scalargtjoinsel )); -DATA(insert OID = 92 ( "=" PGUID 0 b t t 18 18 16 92 630 631 631 chareq eqsel eqjoinsel )); -DATA(insert OID = 93 ( "=" PGUID 0 b t t 19 19 16 93 643 660 660 nameeq eqsel eqjoinsel )); -DATA(insert OID = 94 ( "=" PGUID 0 b t t 21 21 16 94 519 95 95 int2eq eqsel eqjoinsel )); -DATA(insert OID = 95 ( "<" PGUID 0 b t f 21 21 16 520 524 0 0 int2lt scalarltsel scalarltjoinsel )); -DATA(insert OID = 96 ( "=" PGUID 0 b t t 23 23 16 96 518 97 97 int4eq eqsel eqjoinsel )); -DATA(insert OID = 97 ( "<" PGUID 0 b t f 23 23 16 521 525 0 0 int4lt scalarltsel scalarltjoinsel )); -DATA(insert OID = 98 ( "=" PGUID 0 b t t 25 25 16 98 531 664 664 texteq eqsel eqjoinsel )); - -DATA(insert OID = 329 ( "=" PGUID 0 b t f 1000 1000 16 329 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 349 ( "=" PGUID 0 b t f 1001 1001 16 349 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 374 ( "=" PGUID 0 b t f 1002 1002 16 374 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 375 ( "=" PGUID 0 b t f 1003 1003 16 375 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 377 ( "=" PGUID 0 b t f 1005 1005 16 377 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 378 ( "=" PGUID 0 b t f 1006 1006 16 378 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 379 ( "=" PGUID 0 b t f 1007 1007 16 379 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 380 ( "=" PGUID 0 b t f 1008 1008 16 380 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 381 ( "=" PGUID 0 b t f 1009 1009 16 381 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 382 ( "=" PGUID 0 b t f 1028 1028 16 382 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 383 ( "=" PGUID 0 b t f 1010 1010 16 383 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 384 ( "=" PGUID 0 b t f 1011 1011 16 384 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 385 ( "=" PGUID 0 b t f 1012 1012 16 385 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 386 ( "=" PGUID 0 b t f 1013 1013 16 386 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 390 ( "=" PGUID 0 b t f 1017 1017 16 390 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 391 ( "=" PGUID 0 b t f 1018 1018 16 391 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 392 ( "=" PGUID 0 b t f 1019 1019 16 392 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 393 ( "=" PGUID 0 b t f 1020 1020 16 393 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 394 ( "=" PGUID 0 b t f 1021 1021 16 394 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 395 ( "=" PGUID 0 b t f 1022 1022 16 395 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 396 ( "=" PGUID 0 b t f 1023 1023 16 396 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 397 ( "=" PGUID 0 b t f 1024 1024 16 397 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 398 ( "=" PGUID 0 b t f 1025 1025 16 398 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 400 ( "=" PGUID 0 b t f 1027 1027 16 400 0 0 0 array_eq eqsel eqjoinsel )); -DATA(insert OID = 401 ( "=" PGUID 0 b t f 1034 1034 16 401 0 0 0 array_eq eqsel eqjoinsel )); - -DATA(insert OID = 352 ( "=" PGUID 0 b t t 28 28 16 352 0 0 0 xideq eqsel eqjoinsel )); -DATA(insert OID = 353 ( "=" PGUID 0 b t t 28 23 16 0 0 0 0 xideq eqsel eqjoinsel )); -DATA(insert OID = 387 ( "=" PGUID 0 b t t 27 27 16 387 0 0 0 tideq eqsel eqjoinsel )); +DATA(insert OID = 92 ( "=" 10 PGUID 0 b t t 18 18 16 92 630 631 631 chareq eqsel eqjoinsel )); +DATA(insert OID = 93 ( "=" 10 PGUID 0 b t t 19 19 16 93 643 660 660 nameeq eqsel eqjoinsel )); +DATA(insert OID = 94 ( "=" 10 PGUID 0 b t t 21 21 16 94 519 95 95 int2eq eqsel eqjoinsel )); +DATA(insert OID = 95 ( "<" 10 PGUID 0 b t f 21 21 16 520 524 0 0 int2lt scalarltsel scalarltjoinsel )); +DATA(insert OID = 96 ( "=" 10 PGUID 0 b t t 23 23 16 96 518 97 97 int4eq eqsel eqjoinsel )); +DATA(insert OID = 97 ( "<" 10 PGUID 0 b t f 23 23 16 521 525 0 0 int4lt scalarltsel scalarltjoinsel )); +DATA(insert OID = 98 ( "=" 10 PGUID 0 b t t 25 25 16 98 531 664 664 texteq eqsel eqjoinsel )); + +DATA(insert OID = 329 ( "=" 10 PGUID 0 b t f 1000 1000 16 329 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 349 ( "=" 10 PGUID 0 b t f 1001 1001 16 349 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 374 ( "=" 10 PGUID 0 b t f 1002 1002 16 374 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 375 ( "=" 10 PGUID 0 b t f 1003 1003 16 375 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 377 ( "=" 10 PGUID 0 b t f 1005 1005 16 377 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 378 ( "=" 10 PGUID 0 b t f 1006 1006 16 378 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 379 ( "=" 10 PGUID 0 b t f 1007 1007 16 379 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 380 ( "=" 10 PGUID 0 b t f 1008 1008 16 380 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 381 ( "=" 10 PGUID 0 b t f 1009 1009 16 381 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 382 ( "=" 10 PGUID 0 b t f 1028 1028 16 382 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 383 ( "=" 10 PGUID 0 b t f 1010 1010 16 383 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 384 ( "=" 10 PGUID 0 b t f 1011 1011 16 384 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 385 ( "=" 10 PGUID 0 b t f 1012 1012 16 385 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 386 ( "=" 10 PGUID 0 b t f 1013 1013 16 386 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 390 ( "=" 10 PGUID 0 b t f 1017 1017 16 390 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 391 ( "=" 10 PGUID 0 b t f 1018 1018 16 391 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 392 ( "=" 10 PGUID 0 b t f 1019 1019 16 392 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 393 ( "=" 10 PGUID 0 b t f 1020 1020 16 393 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 394 ( "=" 10 PGUID 0 b t f 1021 1021 16 394 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 395 ( "=" 10 PGUID 0 b t f 1022 1022 16 395 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 396 ( "=" 10 PGUID 0 b t f 1023 1023 16 396 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 397 ( "=" 10 PGUID 0 b t f 1024 1024 16 397 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 398 ( "=" 10 PGUID 0 b t f 1025 1025 16 398 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 400 ( "=" 10 PGUID 0 b t f 1027 1027 16 400 0 0 0 array_eq eqsel eqjoinsel )); +DATA(insert OID = 401 ( "=" 10 PGUID 0 b t f 1034 1034 16 401 0 0 0 array_eq eqsel eqjoinsel )); + +DATA(insert OID = 352 ( "=" 10 PGUID 0 b t t 28 28 16 352 0 0 0 xideq eqsel eqjoinsel )); +DATA(insert OID = 353 ( "=" 10 PGUID 0 b t t 28 23 16 0 0 0 0 xideq eqsel eqjoinsel )); +DATA(insert OID = 387 ( "=" 10 PGUID 0 b t t 27 27 16 387 0 0 0 tideq eqsel eqjoinsel )); #define TIDEqualOperator 387 -DATA(insert OID = 388 ( "!" PGUID 0 r t f 20 0 20 0 0 0 0 int8fac - - )); -DATA(insert OID = 389 ( "!!" PGUID 0 l t f 0 20 20 0 0 0 0 int8fac - - )); +DATA(insert OID = 388 ( "!" 10 PGUID 0 r t f 20 0 20 0 0 0 0 int8fac - - )); +DATA(insert OID = 389 ( "!!" 10 PGUID 0 l t f 0 20 20 0 0 0 0 int8fac - - )); -DATA(insert OID = 410 ( "=" PGUID 0 b t t 20 20 16 410 411 412 412 int8eq eqsel eqjoinsel )); -DATA(insert OID = 411 ( "<>" PGUID 0 b t f 20 20 16 411 410 0 0 int8ne neqsel neqjoinsel )); -DATA(insert OID = 412 ( "<" PGUID 0 b t f 20 20 16 413 415 0 0 int8lt scalarltsel scalarltjoinsel )); -DATA(insert OID = 413 ( ">" PGUID 0 b t f 20 20 16 412 414 0 0 int8gt scalargtsel scalargtjoinsel )); -DATA(insert OID = 414 ( "<=" PGUID 0 b t f 20 20 16 415 413 0 0 int8le scalarltsel scalarltjoinsel )); -DATA(insert OID = 415 ( ">=" PGUID 0 b t f 20 20 16 414 412 0 0 int8ge scalargtsel scalargtjoinsel )); - -DATA(insert OID = 416 ( "=" PGUID 0 b t f 20 23 16 15 417 412 97 int84eq eqsel eqjoinsel )); -DATA(insert OID = 417 ( "<>" PGUID 0 b t f 20 23 16 36 416 0 0 int84ne neqsel neqjoinsel )); -DATA(insert OID = 418 ( "<" PGUID 0 b t f 20 23 16 76 430 0 0 int84lt scalarltsel scalarltjoinsel )); -DATA(insert OID = 419 ( ">" PGUID 0 b t f 20 23 16 37 420 0 0 int84gt scalargtsel scalargtjoinsel )); -DATA(insert OID = 420 ( "<=" PGUID 0 b t f 20 23 16 82 419 0 0 int84le scalarltsel scalarltjoinsel )); -DATA(insert OID = 430 ( ">=" PGUID 0 b t f 20 23 16 80 418 0 0 int84ge scalargtsel scalargtjoinsel )); -DATA(insert OID = 439 ( "%" PGUID 0 b t f 20 20 20 0 0 0 0 int8mod - - )); -DATA(insert OID = 473 ( "@" PGUID 0 l t f 0 20 20 0 0 0 0 int8abs - - )); - -DATA(insert OID = 484 ( "-" PGUID 0 l t f 0 20 20 0 0 0 0 int8um - - )); -DATA(insert OID = 485 ( "<<" PGUID 0 b t f 604 604 16 0 0 0 0 poly_left positionsel positionjoinsel )); -DATA(insert OID = 486 ( "&<" PGUID 0 b t f 604 604 16 0 0 0 0 poly_overleft positionsel positionjoinsel)); -DATA(insert OID = 487 ( "&>" PGUID 0 b t f 604 604 16 0 0 0 0 poly_overright positionsel positionjoinsel)); -DATA(insert OID = 488 ( ">>" PGUID 0 b t f 604 604 16 0 0 0 0 poly_right positionsel positionjoinsel )); -DATA(insert OID = 489 ( "@" PGUID 0 b t f 604 604 16 490 0 0 0 poly_contained contsel contjoinsel )); -DATA(insert OID = 490 ( "~" PGUID 0 b t f 604 604 16 489 0 0 0 poly_contain contsel contjoinsel )); -DATA(insert OID = 491 ( "~=" PGUID 0 b t f 604 604 16 491 0 0 0 poly_same eqsel eqjoinsel )); -DATA(insert OID = 492 ( "&&" PGUID 0 b t f 604 604 16 492 0 0 0 poly_overlap areasel areajoinsel )); -DATA(insert OID = 493 ( "<<" PGUID 0 b t f 603 603 16 0 0 0 0 box_left positionsel positionjoinsel )); -DATA(insert OID = 494 ( "&<" PGUID 0 b t f 603 603 16 0 0 0 0 box_overleft positionsel positionjoinsel )); -DATA(insert OID = 495 ( "&>" PGUID 0 b t f 603 603 16 0 0 0 0 box_overright positionsel positionjoinsel)); -DATA(insert OID = 496 ( ">>" PGUID 0 b t f 603 603 16 0 0 0 0 box_right positionsel positionjoinsel )); -DATA(insert OID = 497 ( "@" PGUID 0 b t f 603 603 16 498 0 0 0 box_contained contsel contjoinsel )); -DATA(insert OID = 498 ( "~" PGUID 0 b t f 603 603 16 497 0 0 0 box_contain contsel contjoinsel )); -DATA(insert OID = 499 ( "~=" PGUID 0 b t f 603 603 16 499 0 0 0 box_same eqsel eqjoinsel )); -DATA(insert OID = 500 ( "&&" PGUID 0 b t f 603 603 16 500 0 0 0 box_overlap areasel areajoinsel )); -DATA(insert OID = 501 ( ">=" PGUID 0 b t f 603 603 16 505 504 0 0 box_ge areasel areajoinsel )); -DATA(insert OID = 502 ( ">" PGUID 0 b t f 603 603 16 504 505 0 0 box_gt areasel areajoinsel )); -DATA(insert OID = 503 ( "=" PGUID 0 b t f 603 603 16 503 0 504 504 box_eq eqsel eqjoinsel )); -DATA(insert OID = 504 ( "<" PGUID 0 b t f 603 603 16 502 501 0 0 box_lt areasel areajoinsel )); -DATA(insert OID = 505 ( "<=" PGUID 0 b t f 603 603 16 501 502 0 0 box_le areasel areajoinsel )); -DATA(insert OID = 506 ( ">^" PGUID 0 b t f 600 600 16 0 0 0 0 point_above positionsel positionjoinsel )); -DATA(insert OID = 507 ( "<<" PGUID 0 b t f 600 600 16 0 0 0 0 point_left positionsel positionjoinsel )); -DATA(insert OID = 508 ( ">>" PGUID 0 b t f 600 600 16 0 0 0 0 point_right positionsel positionjoinsel )); -DATA(insert OID = 509 ( "<^" PGUID 0 b t f 600 600 16 0 0 0 0 point_below positionsel positionjoinsel )); -DATA(insert OID = 510 ( "~=" PGUID 0 b t f 600 600 16 510 0 0 0 point_eq eqsel eqjoinsel )); -DATA(insert OID = 511 ( "@" PGUID 0 b t f 600 603 16 0 0 0 0 on_pb - - )); -DATA(insert OID = 512 ( "@" PGUID 0 b t f 600 602 16 755 0 0 0 on_ppath - - )); -DATA(insert OID = 513 ( "@@" PGUID 0 l t f 0 603 600 0 0 0 0 box_center - - )); -DATA(insert OID = 514 ( "*" PGUID 0 b t f 23 23 23 514 0 0 0 int4mul - - )); -DATA(insert OID = 515 ( "!" PGUID 0 r t f 23 0 23 0 0 0 0 int4fac - - )); -DATA(insert OID = 516 ( "!!" PGUID 0 l t f 0 23 23 0 0 0 0 int4fac - - )); -DATA(insert OID = 517 ( "<->" PGUID 0 b t f 600 600 701 517 0 0 0 point_distance - - )); -DATA(insert OID = 518 ( "<>" PGUID 0 b t f 23 23 16 518 96 0 0 int4ne neqsel neqjoinsel )); -DATA(insert OID = 519 ( "<>" PGUID 0 b t f 21 21 16 519 94 0 0 int2ne neqsel neqjoinsel )); -DATA(insert OID = 520 ( ">" PGUID 0 b t f 21 21 16 95 522 0 0 int2gt scalargtsel scalargtjoinsel )); -DATA(insert OID = 521 ( ">" PGUID 0 b t f 23 23 16 97 523 0 0 int4gt scalargtsel scalargtjoinsel )); -DATA(insert OID = 522 ( "<=" PGUID 0 b t f 21 21 16 524 520 0 0 int2le scalarltsel scalarltjoinsel )); -DATA(insert OID = 523 ( "<=" PGUID 0 b t f 23 23 16 525 521 0 0 int4le scalarltsel scalarltjoinsel )); -DATA(insert OID = 524 ( ">=" PGUID 0 b t f 21 21 16 522 95 0 0 int2ge scalargtsel scalargtjoinsel )); -DATA(insert OID = 525 ( ">=" PGUID 0 b t f 23 23 16 523 97 0 0 int4ge scalargtsel scalargtjoinsel )); -DATA(insert OID = 526 ( "*" PGUID 0 b t f 21 21 21 526 0 0 0 int2mul - - )); -DATA(insert OID = 527 ( "/" PGUID 0 b t f 21 21 21 0 0 0 0 int2div - - )); -DATA(insert OID = 528 ( "/" PGUID 0 b t f 23 23 23 0 0 0 0 int4div - - )); -DATA(insert OID = 529 ( "%" PGUID 0 b t f 21 21 21 0 0 0 0 int2mod - - )); -DATA(insert OID = 530 ( "%" PGUID 0 b t f 23 23 23 0 0 0 0 int4mod - - )); -DATA(insert OID = 531 ( "<>" PGUID 0 b t f 25 25 16 531 98 0 0 textne neqsel neqjoinsel )); -DATA(insert OID = 532 ( "=" PGUID 0 b t f 21 23 16 533 538 95 97 int24eq eqsel eqjoinsel )); -DATA(insert OID = 533 ( "=" PGUID 0 b t f 23 21 16 532 539 97 95 int42eq eqsel eqjoinsel )); -DATA(insert OID = 534 ( "<" PGUID 0 b t f 21 23 16 537 542 0 0 int24lt scalarltsel scalarltjoinsel )); -DATA(insert OID = 535 ( "<" PGUID 0 b t f 23 21 16 536 543 0 0 int42lt scalarltsel scalarltjoinsel )); -DATA(insert OID = 536 ( ">" PGUID 0 b t f 21 23 16 535 540 0 0 int24gt scalargtsel scalargtjoinsel )); -DATA(insert OID = 537 ( ">" PGUID 0 b t f 23 21 16 534 541 0 0 int42gt scalargtsel scalargtjoinsel )); -DATA(insert OID = 538 ( "<>" PGUID 0 b t f 21 23 16 539 532 0 0 int24ne neqsel neqjoinsel )); -DATA(insert OID = 539 ( "<>" PGUID 0 b t f 23 21 16 538 533 0 0 int42ne neqsel neqjoinsel )); -DATA(insert OID = 540 ( "<=" PGUID 0 b t f 21 23 16 543 536 0 0 int24le scalarltsel scalarltjoinsel )); -DATA(insert OID = 541 ( "<=" PGUID 0 b t f 23 21 16 542 537 0 0 int42le scalarltsel scalarltjoinsel )); -DATA(insert OID = 542 ( ">=" PGUID 0 b t f 21 23 16 541 534 0 0 int24ge scalargtsel scalargtjoinsel )); -DATA(insert OID = 543 ( ">=" PGUID 0 b t f 23 21 16 540 535 0 0 int42ge scalargtsel scalargtjoinsel )); -DATA(insert OID = 544 ( "*" PGUID 0 b t f 21 23 23 545 0 0 0 int24mul - - )); -DATA(insert OID = 545 ( "*" PGUID 0 b t f 23 21 23 544 0 0 0 int42mul - - )); -DATA(insert OID = 546 ( "/" PGUID 0 b t f 21 23 23 0 0 0 0 int24div - - )); -DATA(insert OID = 547 ( "/" PGUID 0 b t f 23 21 23 0 0 0 0 int42div - - )); -DATA(insert OID = 548 ( "%" PGUID 0 b t f 21 23 23 0 0 0 0 int24mod - - )); -DATA(insert OID = 549 ( "%" PGUID 0 b t f 23 21 23 0 0 0 0 int42mod - - )); -DATA(insert OID = 550 ( "+" PGUID 0 b t f 21 21 21 550 0 0 0 int2pl - - )); -DATA(insert OID = 551 ( "+" PGUID 0 b t f 23 23 23 551 0 0 0 int4pl - - )); -DATA(insert OID = 552 ( "+" PGUID 0 b t f 21 23 23 553 0 0 0 int24pl - - )); -DATA(insert OID = 553 ( "+" PGUID 0 b t f 23 21 23 552 0 0 0 int42pl - - )); -DATA(insert OID = 554 ( "-" PGUID 0 b t f 21 21 21 0 0 0 0 int2mi - - )); -DATA(insert OID = 555 ( "-" PGUID 0 b t f 23 23 23 0 0 0 0 int4mi - - )); -DATA(insert OID = 556 ( "-" PGUID 0 b t f 21 23 23 0 0 0 0 int24mi - - )); -DATA(insert OID = 557 ( "-" PGUID 0 b t f 23 21 23 0 0 0 0 int42mi - - )); -DATA(insert OID = 558 ( "-" PGUID 0 l t f 0 23 23 0 0 0 0 int4um - - )); -DATA(insert OID = 559 ( "-" PGUID 0 l t f 0 21 21 0 0 0 0 int2um - - )); -DATA(insert OID = 560 ( "=" PGUID 0 b t t 702 702 16 560 561 562 562 abstimeeq eqsel eqjoinsel )); -DATA(insert OID = 561 ( "<>" PGUID 0 b t f 702 702 16 561 560 0 0 abstimene neqsel neqjoinsel )); -DATA(insert OID = 562 ( "<" PGUID 0 b t f 702 702 16 563 565 0 0 abstimelt scalarltsel scalarltjoinsel )); -DATA(insert OID = 563 ( ">" PGUID 0 b t f 702 702 16 562 564 0 0 abstimegt scalargtsel scalargtjoinsel )); -DATA(insert OID = 564 ( "<=" PGUID 0 b t f 702 702 16 565 563 0 0 abstimele scalarltsel scalarltjoinsel )); -DATA(insert OID = 565 ( ">=" PGUID 0 b t f 702 702 16 564 562 0 0 abstimege scalargtsel scalargtjoinsel )); -DATA(insert OID = 566 ( "=" PGUID 0 b t t 703 703 16 566 567 568 568 reltimeeq eqsel eqjoinsel )); -DATA(insert OID = 567 ( "<>" PGUID 0 b t f 703 703 16 567 566 0 0 reltimene neqsel neqjoinsel )); -DATA(insert OID = 568 ( "<" PGUID 0 b t f 703 703 16 569 571 0 0 reltimelt scalarltsel scalarltjoinsel )); -DATA(insert OID = 569 ( ">" PGUID 0 b t f 703 703 16 568 570 0 0 reltimegt scalargtsel scalargtjoinsel )); -DATA(insert OID = 570 ( "<=" PGUID 0 b t f 703 703 16 571 569 0 0 reltimele scalarltsel scalarltjoinsel )); -DATA(insert OID = 571 ( ">=" PGUID 0 b t f 703 703 16 570 568 0 0 reltimege scalargtsel scalargtjoinsel )); -DATA(insert OID = 572 ( "~=" PGUID 0 b t f 704 704 16 572 0 0 0 tintervalsame eqsel eqjoinsel )); -DATA(insert OID = 573 ( "<<" PGUID 0 b t f 704 704 16 0 0 0 0 tintervalct - - )); -DATA(insert OID = 574 ( "&&" PGUID 0 b t f 704 704 16 574 0 0 0 tintervalov - - )); -DATA(insert OID = 575 ( "#=" PGUID 0 b t f 704 703 16 0 576 0 0 tintervalleneq - - )); -DATA(insert OID = 576 ( "#<>" PGUID 0 b t f 704 703 16 0 575 0 0 tintervallenne - - )); -DATA(insert OID = 577 ( "#<" PGUID 0 b t f 704 703 16 0 580 0 0 tintervallenlt - - )); -DATA(insert OID = 578 ( "#>" PGUID 0 b t f 704 703 16 0 579 0 0 tintervallengt - - )); -DATA(insert OID = 579 ( "#<=" PGUID 0 b t f 704 703 16 0 578 0 0 tintervallenle - - )); -DATA(insert OID = 580 ( "#>=" PGUID 0 b t f 704 703 16 0 577 0 0 tintervallenge - - )); -DATA(insert OID = 581 ( "+" PGUID 0 b t f 702 703 702 0 0 0 0 timepl - - )); -DATA(insert OID = 582 ( "-" PGUID 0 b t f 702 703 702 0 0 0 0 timemi - - )); -DATA(insert OID = 583 ( "<?>" PGUID 0 b t f 702 704 16 0 0 0 0 intinterval - - )); -DATA(insert OID = 584 ( "-" PGUID 0 l t f 0 700 700 0 0 0 0 float4um - - )); -DATA(insert OID = 585 ( "-" PGUID 0 l t f 0 701 701 0 0 0 0 float8um - - )); -DATA(insert OID = 586 ( "+" PGUID 0 b t f 700 700 700 586 0 0 0 float4pl - - )); -DATA(insert OID = 587 ( "-" PGUID 0 b t f 700 700 700 0 0 0 0 float4mi - - )); -DATA(insert OID = 588 ( "/" PGUID 0 b t f 700 700 700 0 0 0 0 float4div - - )); -DATA(insert OID = 589 ( "*" PGUID 0 b t f 700 700 700 589 0 0 0 float4mul - - )); -DATA(insert OID = 590 ( "@" PGUID 0 l t f 0 700 700 0 0 0 0 float4abs - - )); -DATA(insert OID = 591 ( "+" PGUID 0 b t f 701 701 701 591 0 0 0 float8pl - - )); -DATA(insert OID = 592 ( "-" PGUID 0 b t f 701 701 701 0 0 0 0 float8mi - - )); -DATA(insert OID = 593 ( "/" PGUID 0 b t f 701 701 701 0 0 0 0 float8div - - )); -DATA(insert OID = 594 ( "*" PGUID 0 b t f 701 701 701 594 0 0 0 float8mul - - )); -DATA(insert OID = 595 ( "@" PGUID 0 l t f 0 701 701 0 0 0 0 float8abs - - )); -DATA(insert OID = 596 ( "|/" PGUID 0 l t f 0 701 701 0 0 0 0 dsqrt - - )); -DATA(insert OID = 597 ( "||/" PGUID 0 l t f 0 701 701 0 0 0 0 dcbrt - - )); -DATA(insert OID = 598 ( "%" PGUID 0 l t f 0 701 701 0 0 0 0 dtrunc - - )); -DATA(insert OID = 599 ( "%" PGUID 0 r t f 701 0 701 0 0 0 0 dround - - )); -DATA(insert OID = 1284 ( "|" PGUID 0 l t f 0 704 702 0 0 0 0 tintervalstart - - )); -DATA(insert OID = 606 ( "<#>" PGUID 0 b t f 702 702 704 0 0 0 0 mktinterval - - )); -DATA(insert OID = 607 ( "=" PGUID 0 b t t 26 26 16 607 608 609 609 oideq eqsel eqjoinsel )); +DATA(insert OID = 410 ( "=" 10 PGUID 0 b t t 20 20 16 410 411 412 412 int8eq eqsel eqjoinsel )); +DATA(insert OID = 411 ( "<>" 10 PGUID 0 b t f 20 20 16 411 410 0 0 int8ne neqsel neqjoinsel )); +DATA(insert OID = 412 ( "<" 10 PGUID 0 b t f 20 20 16 413 415 0 0 int8lt scalarltsel scalarltjoinsel )); +DATA(insert OID = 413 ( ">" 10 PGUID 0 b t f 20 20 16 412 414 0 0 int8gt scalargtsel scalargtjoinsel )); +DATA(insert OID = 414 ( "<=" 10 PGUID 0 b t f 20 20 16 415 413 0 0 int8le scalarltsel scalarltjoinsel )); +DATA(insert OID = 415 ( ">=" 10 PGUID 0 b t f 20 20 16 414 412 0 0 int8ge scalargtsel scalargtjoinsel )); + +DATA(insert OID = 416 ( "=" 10 PGUID 0 b t f 20 23 16 15 417 412 97 int84eq eqsel eqjoinsel )); +DATA(insert OID = 417 ( "<>" 10 PGUID 0 b t f 20 23 16 36 416 0 0 int84ne neqsel neqjoinsel )); +DATA(insert OID = 418 ( "<" 10 PGUID 0 b t f 20 23 16 76 430 0 0 int84lt scalarltsel scalarltjoinsel )); +DATA(insert OID = 419 ( ">" 10 PGUID 0 b t f 20 23 16 37 420 0 0 int84gt scalargtsel scalargtjoinsel )); +DATA(insert OID = 420 ( "<=" 10 PGUID 0 b t f 20 23 16 82 419 0 0 int84le scalarltsel scalarltjoinsel )); +DATA(insert OID = 430 ( ">=" 10 PGUID 0 b t f 20 23 16 80 418 0 0 int84ge scalargtsel scalargtjoinsel )); +DATA(insert OID = 439 ( "%" 10 PGUID 0 b t f 20 20 20 0 0 0 0 int8mod - - )); +DATA(insert OID = 473 ( "@" 10 PGUID 0 l t f 0 20 20 0 0 0 0 int8abs - - )); + +DATA(insert OID = 484 ( "-" 10 PGUID 0 l t f 0 20 20 0 0 0 0 int8um - - )); +DATA(insert OID = 485 ( "<<" 10 PGUID 0 b t f 604 604 16 0 0 0 0 poly_left positionsel positionjoinsel )); +DATA(insert OID = 486 ( "&<" 10 PGUID 0 b t f 604 604 16 0 0 0 0 poly_overleft positionsel positionjoinsel)); +DATA(insert OID = 487 ( "&>" 10 PGUID 0 b t f 604 604 16 0 0 0 0 poly_overright positionsel positionjoinsel)); +DATA(insert OID = 488 ( ">>" 10 PGUID 0 b t f 604 604 16 0 0 0 0 poly_right positionsel positionjoinsel)); +DATA(insert OID = 489 ( "@" 10 PGUID 0 b t f 604 604 16 490 0 0 0 poly_contained contsel contjoinsel )); +DATA(insert OID = 490 ( "~" 10 PGUID 0 b t f 604 604 16 489 0 0 0 poly_contain contsel contjoinsel )); +DATA(insert OID = 491 ( "~=" 10 PGUID 0 b t f 604 604 16 491 0 0 0 poly_same eqsel eqjoinsel )); +DATA(insert OID = 492 ( "&&" 10 PGUID 0 b t f 604 604 16 492 0 0 0 poly_overlap areasel areajoinsel )); +DATA(insert OID = 493 ( "<<" 10 PGUID 0 b t f 603 603 16 0 0 0 0 box_left positionsel positionjoinsel )); +DATA(insert OID = 494 ( "&<" 10 PGUID 0 b t f 603 603 16 0 0 0 0 box_overleft positionsel positionjoinsel)); +DATA(insert OID = 495 ( "&>" 10 PGUID 0 b t f 603 603 16 0 0 0 0 box_overright positionsel positionjoinsel)); +DATA(insert OID = 496 ( ">>" 10 PGUID 0 b t f 603 603 16 0 0 0 0 box_right positionsel positionjoinsel )); +DATA(insert OID = 497 ( "@" 10 PGUID 0 b t f 603 603 16 498 0 0 0 box_contained contsel contjoinsel )); +DATA(insert OID = 498 ( "~" 10 PGUID 0 b t f 603 603 16 497 0 0 0 box_contain contsel contjoinsel )); +DATA(insert OID = 499 ( "~=" 10 PGUID 0 b t f 603 603 16 499 0 0 0 box_same eqsel eqjoinsel )); +DATA(insert OID = 500 ( "&&" 10 PGUID 0 b t f 603 603 16 500 0 0 0 box_overlap areasel areajoinsel )); +DATA(insert OID = 501 ( ">=" 10 PGUID 0 b t f 603 603 16 505 504 0 0 box_ge areasel areajoinsel )); +DATA(insert OID = 502 ( ">" 10 PGUID 0 b t f 603 603 16 504 505 0 0 box_gt areasel areajoinsel )); +DATA(insert OID = 503 ( "=" 10 PGUID 0 b t f 603 603 16 503 0 504 504 box_eq eqsel eqjoinsel )); +DATA(insert OID = 504 ( "<" 10 PGUID 0 b t f 603 603 16 502 501 0 0 box_lt areasel areajoinsel )); +DATA(insert OID = 505 ( "<=" 10 PGUID 0 b t f 603 603 16 501 502 0 0 box_le areasel areajoinsel )); +DATA(insert OID = 506 ( ">^" 10 PGUID 0 b t f 600 600 16 0 0 0 0 point_above positionsel positionjoinsel)); +DATA(insert OID = 507 ( "<<" 10 PGUID 0 b t f 600 600 16 0 0 0 0 point_left positionsel positionjoinsel)); +DATA(insert OID = 508 ( ">>" 10 PGUID 0 b t f 600 600 16 0 0 0 0 point_right positionsel positionjoinsel)); +DATA(insert OID = 509 ( "<^" 10 PGUID 0 b t f 600 600 16 0 0 0 0 point_below positionsel positionjoinsel)); +DATA(insert OID = 510 ( "~=" 10 PGUID 0 b t f 600 600 16 510 0 0 0 point_eq eqsel eqjoinsel )); +DATA(insert OID = 511 ( "@" 10 PGUID 0 b t f 600 603 16 0 0 0 0 on_pb - - )); +DATA(insert OID = 512 ( "@" 10 PGUID 0 b t f 600 602 16 755 0 0 0 on_ppath - - )); +DATA(insert OID = 513 ( "@@" 10 PGUID 0 l t f 0 603 600 0 0 0 0 box_center - - )); +DATA(insert OID = 514 ( "*" 10 PGUID 0 b t f 23 23 23 514 0 0 0 int4mul - - )); +DATA(insert OID = 515 ( "!" 10 PGUID 0 r t f 23 0 23 0 0 0 0 int4fac - - )); +DATA(insert OID = 516 ( "!!" 10 PGUID 0 l t f 0 23 23 0 0 0 0 int4fac - - )); +DATA(insert OID = 517 ( "<->" 10 PGUID 0 b t f 600 600 701 517 0 0 0 point_distance - - )); +DATA(insert OID = 518 ( "<>" 10 PGUID 0 b t f 23 23 16 518 96 0 0 int4ne neqsel neqjoinsel )); +DATA(insert OID = 519 ( "<>" 10 PGUID 0 b t f 21 21 16 519 94 0 0 int2ne neqsel neqjoinsel )); +DATA(insert OID = 520 ( ">" 10 PGUID 0 b t f 21 21 16 95 522 0 0 int2gt scalargtsel scalargtjoinsel )); +DATA(insert OID = 521 ( ">" 10 PGUID 0 b t f 23 23 16 97 523 0 0 int4gt scalargtsel scalargtjoinsel )); +DATA(insert OID = 522 ( "<=" 10 PGUID 0 b t f 21 21 16 524 520 0 0 int2le scalarltsel scalarltjoinsel )); +DATA(insert OID = 523 ( "<=" 10 PGUID 0 b t f 23 23 16 525 521 0 0 int4le scalarltsel scalarltjoinsel )); +DATA(insert OID = 524 ( ">=" 10 PGUID 0 b t f 21 21 16 522 95 0 0 int2ge scalargtsel scalargtjoinsel )); +DATA(insert OID = 525 ( ">=" 10 PGUID 0 b t f 23 23 16 523 97 0 0 int4ge scalargtsel scalargtjoinsel )); +DATA(insert OID = 526 ( "*" 10 PGUID 0 b t f 21 21 21 526 0 0 0 int2mul - - )); +DATA(insert OID = 527 ( "/" 10 PGUID 0 b t f 21 21 21 0 0 0 0 int2div - - )); +DATA(insert OID = 528 ( "/" 10 PGUID 0 b t f 23 23 23 0 0 0 0 int4div - - )); +DATA(insert OID = 529 ( "%" 10 PGUID 0 b t f 21 21 21 0 0 0 0 int2mod - - )); +DATA(insert OID = 530 ( "%" 10 PGUID 0 b t f 23 23 23 0 0 0 0 int4mod - - )); +DATA(insert OID = 531 ( "<>" 10 PGUID 0 b t f 25 25 16 531 98 0 0 textne neqsel neqjoinsel )); +DATA(insert OID = 532 ( "=" 10 PGUID 0 b t f 21 23 16 533 538 95 97 int24eq eqsel eqjoinsel )); +DATA(insert OID = 533 ( "=" 10 PGUID 0 b t f 23 21 16 532 539 97 95 int42eq eqsel eqjoinsel )); +DATA(insert OID = 534 ( "<" 10 PGUID 0 b t f 21 23 16 537 542 0 0 int24lt scalarltsel scalarltjoinsel )); +DATA(insert OID = 535 ( "<" 10 PGUID 0 b t f 23 21 16 536 543 0 0 int42lt scalarltsel scalarltjoinsel )); +DATA(insert OID = 536 ( ">" 10 PGUID 0 b t f 21 23 16 535 540 0 0 int24gt scalargtsel scalargtjoinsel )); +DATA(insert OID = 537 ( ">" 10 PGUID 0 b t f 23 21 16 534 541 0 0 int42gt scalargtsel scalargtjoinsel )); +DATA(insert OID = 538 ( "<>" 10 PGUID 0 b t f 21 23 16 539 532 0 0 int24ne neqsel neqjoinsel )); +DATA(insert OID = 539 ( "<>" 10 PGUID 0 b t f 23 21 16 538 533 0 0 int42ne neqsel neqjoinsel )); +DATA(insert OID = 540 ( "<=" 10 PGUID 0 b t f 21 23 16 543 536 0 0 int24le scalarltsel scalarltjoinsel )); +DATA(insert OID = 541 ( "<=" 10 PGUID 0 b t f 23 21 16 542 537 0 0 int42le scalarltsel scalarltjoinsel )); +DATA(insert OID = 542 ( ">=" 10 PGUID 0 b t f 21 23 16 541 534 0 0 int24ge scalargtsel scalargtjoinsel )); +DATA(insert OID = 543 ( ">=" 10 PGUID 0 b t f 23 21 16 540 535 0 0 int42ge scalargtsel scalargtjoinsel )); +DATA(insert OID = 544 ( "*" 10 PGUID 0 b t f 21 23 23 545 0 0 0 int24mul - - )); +DATA(insert OID = 545 ( "*" 10 PGUID 0 b t f 23 21 23 544 0 0 0 int42mul - - )); +DATA(insert OID = 546 ( "/" 10 PGUID 0 b t f 21 23 23 0 0 0 0 int24div - - )); +DATA(insert OID = 547 ( "/" 10 PGUID 0 b t f 23 21 23 0 0 0 0 int42div - - )); +DATA(insert OID = 548 ( "%" 10 PGUID 0 b t f 21 23 23 0 0 0 0 int24mod - - )); +DATA(insert OID = 549 ( "%" 10 PGUID 0 b t f 23 21 23 0 0 0 0 int42mod - - )); +DATA(insert OID = 550 ( "+" 10 PGUID 0 b t f 21 21 21 550 0 0 0 int2pl - - )); +DATA(insert OID = 551 ( "+" 10 PGUID 0 b t f 23 23 23 551 0 0 0 int4pl - - )); +DATA(insert OID = 552 ( "+" 10 PGUID 0 b t f 21 23 23 553 0 0 0 int24pl - - )); +DATA(insert OID = 553 ( "+" 10 PGUID 0 b t f 23 21 23 552 0 0 0 int42pl - - )); +DATA(insert OID = 554 ( "-" 10 PGUID 0 b t f 21 21 21 0 0 0 0 int2mi - - )); +DATA(insert OID = 555 ( "-" 10 PGUID 0 b t f 23 23 23 0 0 0 0 int4mi - - )); +DATA(insert OID = 556 ( "-" 10 PGUID 0 b t f 21 23 23 0 0 0 0 int24mi - - )); +DATA(insert OID = 557 ( "-" 10 PGUID 0 b t f 23 21 23 0 0 0 0 int42mi - - )); +DATA(insert OID = 558 ( "-" 10 PGUID 0 l t f 0 23 23 0 0 0 0 int4um - - )); +DATA(insert OID = 559 ( "-" 10 PGUID 0 l t f 0 21 21 0 0 0 0 int2um - - )); +DATA(insert OID = 560 ( "=" 10 PGUID 0 b t t 702 702 16 560 561 562 562 abstimeeq eqsel eqjoinsel )); +DATA(insert OID = 561 ( "<>" 10 PGUID 0 b t f 702 702 16 561 560 0 0 abstimene neqsel neqjoinsel )); +DATA(insert OID = 562 ( "<" 10 PGUID 0 b t f 702 702 16 563 565 0 0 abstimelt scalarltsel scalarltjoinsel )); +DATA(insert OID = 563 ( ">" 10 PGUID 0 b t f 702 702 16 562 564 0 0 abstimegt scalargtsel scalargtjoinsel )); +DATA(insert OID = 564 ( "<=" 10 PGUID 0 b t f 702 702 16 565 563 0 0 abstimele scalarltsel scalarltjoinsel )); +DATA(insert OID = 565 ( ">=" 10 PGUID 0 b t f 702 702 16 564 562 0 0 abstimege scalargtsel scalargtjoinsel )); +DATA(insert OID = 566 ( "=" 10 PGUID 0 b t t 703 703 16 566 567 568 568 reltimeeq eqsel eqjoinsel )); +DATA(insert OID = 567 ( "<>" 10 PGUID 0 b t f 703 703 16 567 566 0 0 reltimene neqsel neqjoinsel )); +DATA(insert OID = 568 ( "<" 10 PGUID 0 b t f 703 703 16 569 571 0 0 reltimelt scalarltsel scalarltjoinsel )); +DATA(insert OID = 569 ( ">" 10 PGUID 0 b t f 703 703 16 568 570 0 0 reltimegt scalargtsel scalargtjoinsel )); +DATA(insert OID = 570 ( "<=" 10 PGUID 0 b t f 703 703 16 571 569 0 0 reltimele scalarltsel scalarltjoinsel )); +DATA(insert OID = 571 ( ">=" 10 PGUID 0 b t f 703 703 16 570 568 0 0 reltimege scalargtsel scalargtjoinsel )); +DATA(insert OID = 572 ( "~=" 10 PGUID 0 b t f 704 704 16 572 0 0 0 tintervalsame eqsel eqjoinsel )); +DATA(insert OID = 573 ( "<<" 10 PGUID 0 b t f 704 704 16 0 0 0 0 tintervalct - - )); +DATA(insert OID = 574 ( "&&" 10 PGUID 0 b t f 704 704 16 574 0 0 0 tintervalov - - )); +DATA(insert OID = 575 ( "#=" 10 PGUID 0 b t f 704 703 16 0 576 0 0 tintervalleneq - - )); +DATA(insert OID = 576 ( "#<>" 10 PGUID 0 b t f 704 703 16 0 575 0 0 tintervallenne - - )); +DATA(insert OID = 577 ( "#<" 10 PGUID 0 b t f 704 703 16 0 580 0 0 tintervallenlt - - )); +DATA(insert OID = 578 ( "#>" 10 PGUID 0 b t f 704 703 16 0 579 0 0 tintervallengt - - )); +DATA(insert OID = 579 ( "#<=" 10 PGUID 0 b t f 704 703 16 0 578 0 0 tintervallenle - - )); +DATA(insert OID = 580 ( "#>=" 10 PGUID 0 b t f 704 703 16 0 577 0 0 tintervallenge - - )); +DATA(insert OID = 581 ( "+" 10 PGUID 0 b t f 702 703 702 0 0 0 0 timepl - - )); +DATA(insert OID = 582 ( "-" 10 PGUID 0 b t f 702 703 702 0 0 0 0 timemi - - )); +DATA(insert OID = 583 ( "<?>" 10 PGUID 0 b t f 702 704 16 0 0 0 0 intinterval - - )); +DATA(insert OID = 584 ( "-" 10 PGUID 0 l t f 0 700 700 0 0 0 0 float4um - - )); +DATA(insert OID = 585 ( "-" 10 PGUID 0 l t f 0 701 701 0 0 0 0 float8um - - )); +DATA(insert OID = 586 ( "+" 10 PGUID 0 b t f 700 700 700 586 0 0 0 float4pl - - )); +DATA(insert OID = 587 ( "-" 10 PGUID 0 b t f 700 700 700 0 0 0 0 float4mi - - )); +DATA(insert OID = 588 ( "/" 10 PGUID 0 b t f 700 700 700 0 0 0 0 float4div - - )); +DATA(insert OID = 589 ( "*" 10 PGUID 0 b t f 700 700 700 589 0 0 0 float4mul - - )); +DATA(insert OID = 590 ( "@" 10 PGUID 0 l t f 0 700 700 0 0 0 0 float4abs - - )); +DATA(insert OID = 591 ( "+" 10 PGUID 0 b t f 701 701 701 591 0 0 0 float8pl - - )); +DATA(insert OID = 592 ( "-" 10 PGUID 0 b t f 701 701 701 0 0 0 0 float8mi - - )); +DATA(insert OID = 593 ( "/" 10 PGUID 0 b t f 701 701 701 0 0 0 0 float8div - - )); +DATA(insert OID = 594 ( "*" 10 PGUID 0 b t f 701 701 701 594 0 0 0 float8mul - - )); +DATA(insert OID = 595 ( "@" 10 PGUID 0 l t f 0 701 701 0 0 0 0 float8abs - - )); +DATA(insert OID = 596 ( "|/" 10 PGUID 0 l t f 0 701 701 0 0 0 0 dsqrt - - )); +DATA(insert OID = 597 ( "||/" 10 PGUID 0 l t f 0 701 701 0 0 0 0 dcbrt - - )); +DATA(insert OID = 598 ( "%" 10 PGUID 0 l t f 0 701 701 0 0 0 0 dtrunc - - )); +DATA(insert OID = 599 ( "%" 10 PGUID 0 r t f 701 0 701 0 0 0 0 dround - - )); +DATA(insert OID = 1284 ( "|" 10 PGUID 0 l t f 0 704 702 0 0 0 0 tintervalstart - - )); +DATA(insert OID = 606 ( "<#>" 10 PGUID 0 b t f 702 702 704 0 0 0 0 mktinterval - - )); +DATA(insert OID = 607 ( "=" 10 PGUID 0 b t t 26 26 16 607 608 609 609 oideq eqsel eqjoinsel )); #define MIN_OIDCMP 607 /* used by cache code */ -DATA(insert OID = 608 ( "<>" PGUID 0 b t f 26 26 16 608 607 0 0 oidne neqsel neqjoinsel )); -DATA(insert OID = 609 ( "<" PGUID 0 b t f 26 26 16 610 612 0 0 oidlt scalarltsel scalarltjoinsel )); -DATA(insert OID = 610 ( ">" PGUID 0 b t f 26 26 16 609 611 0 0 oidgt scalargtsel scalargtjoinsel )); -DATA(insert OID = 611 ( "<=" PGUID 0 b t f 26 26 16 612 610 0 0 oidle scalarltsel scalarltjoinsel )); -DATA(insert OID = 612 ( ">=" PGUID 0 b t f 26 26 16 611 609 0 0 oidge scalargtsel scalargtjoinsel )); +DATA(insert OID = 608 ( "<>" 10 PGUID 0 b t f 26 26 16 608 607 0 0 oidne neqsel neqjoinsel )); +DATA(insert OID = 609 ( "<" 10 PGUID 0 b t f 26 26 16 610 612 0 0 oidlt scalarltsel scalarltjoinsel )); +DATA(insert OID = 610 ( ">" 10 PGUID 0 b t f 26 26 16 609 611 0 0 oidgt scalargtsel scalargtjoinsel )); +DATA(insert OID = 611 ( "<=" 10 PGUID 0 b t f 26 26 16 612 610 0 0 oidle scalarltsel scalarltjoinsel )); +DATA(insert OID = 612 ( ">=" 10 PGUID 0 b t f 26 26 16 611 609 0 0 oidge scalargtsel scalargtjoinsel )); #define MAX_OIDCMP 612 /* used by cache code */ -DATA(insert OID = 644 ( "<>" PGUID 0 b t f 30 30 16 644 649 0 0 oidvectorne neqsel neqjoinsel )); -DATA(insert OID = 645 ( "<" PGUID 0 b t f 30 30 16 646 648 0 0 oidvectorlt - - )); -DATA(insert OID = 646 ( ">" PGUID 0 b t f 30 30 16 645 647 0 0 oidvectorgt - - )); -DATA(insert OID = 647 ( "<=" PGUID 0 b t f 30 30 16 648 646 0 0 oidvectorle - - )); -DATA(insert OID = 648 ( ">=" PGUID 0 b t f 30 30 16 647 645 0 0 oidvectorge - - )); -DATA(insert OID = 649 ( "=" PGUID 0 b t t 30 30 16 649 644 645 645 oidvectoreq eqsel eqjoinsel )); - -DATA(insert OID = 613 ( "<->" PGUID 0 b t f 600 628 701 0 0 0 0 dist_pl - - )); -DATA(insert OID = 614 ( "<->" PGUID 0 b t f 600 601 701 0 0 0 0 dist_ps - - )); -DATA(insert OID = 615 ( "<->" PGUID 0 b t f 600 603 701 0 0 0 0 dist_pb - - )); -DATA(insert OID = 616 ( "<->" PGUID 0 b t f 601 628 701 0 0 0 0 dist_sl - - )); -DATA(insert OID = 617 ( "<->" PGUID 0 b t f 601 603 701 0 0 0 0 dist_sb - - )); -DATA(insert OID = 618 ( "<->" PGUID 0 b t f 600 602 701 0 0 0 0 dist_ppath - - )); - -DATA(insert OID = 620 ( "=" PGUID 0 b t f 700 700 16 620 621 622 622 float4eq eqsel eqjoinsel )); -DATA(insert OID = 621 ( "<>" PGUID 0 b t f 700 700 16 621 620 0 0 float4ne neqsel neqjoinsel )); -DATA(insert OID = 622 ( "<" PGUID 0 b t f 700 700 16 623 625 0 0 float4lt scalarltsel scalarltjoinsel )); -DATA(insert OID = 623 ( ">" PGUID 0 b t f 700 700 16 622 624 0 0 float4gt scalargtsel scalargtjoinsel )); -DATA(insert OID = 624 ( "<=" PGUID 0 b t f 700 700 16 625 623 0 0 float4le scalarltsel scalarltjoinsel )); -DATA(insert OID = 625 ( ">=" PGUID 0 b t f 700 700 16 624 622 0 0 float4ge scalargtsel scalargtjoinsel )); -DATA(insert OID = 626 ( "!!=" PGUID 0 b t f 23 25 16 0 0 0 0 int4notin - - )); -DATA(insert OID = 627 ( "!!=" PGUID 0 b t f 26 25 16 0 0 0 0 oidnotin - - )); -DATA(insert OID = 630 ( "<>" PGUID 0 b t f 18 18 16 630 92 0 0 charne neqsel neqjoinsel )); - -DATA(insert OID = 631 ( "<" PGUID 0 b t f 18 18 16 633 634 0 0 charlt scalarltsel scalarltjoinsel )); -DATA(insert OID = 632 ( "<=" PGUID 0 b t f 18 18 16 634 633 0 0 charle scalarltsel scalarltjoinsel )); -DATA(insert OID = 633 ( ">" PGUID 0 b t f 18 18 16 631 632 0 0 chargt scalargtsel scalargtjoinsel )); -DATA(insert OID = 634 ( ">=" PGUID 0 b t f 18 18 16 632 631 0 0 charge scalargtsel scalargtjoinsel )); - -DATA(insert OID = 635 ( "+" PGUID 0 b t f 18 18 18 0 0 0 0 charpl - - )); -DATA(insert OID = 636 ( "-" PGUID 0 b t f 18 18 18 0 0 0 0 charmi - - )); -DATA(insert OID = 637 ( "*" PGUID 0 b t f 18 18 18 0 0 0 0 charmul - - )); -DATA(insert OID = 638 ( "/" PGUID 0 b t f 18 18 18 0 0 0 0 chardiv - - )); +DATA(insert OID = 644 ( "<>" 10 PGUID 0 b t f 30 30 16 644 649 0 0 oidvectorne neqsel neqjoinsel )); +DATA(insert OID = 645 ( "<" 10 PGUID 0 b t f 30 30 16 646 648 0 0 oidvectorlt - - )); +DATA(insert OID = 646 ( ">" 10 PGUID 0 b t f 30 30 16 645 647 0 0 oidvectorgt - - )); +DATA(insert OID = 647 ( "<=" 10 PGUID 0 b t f 30 30 16 648 646 0 0 oidvectorle - - )); +DATA(insert OID = 648 ( ">=" 10 PGUID 0 b t f 30 30 16 647 645 0 0 oidvectorge - - )); +DATA(insert OID = 649 ( "=" 10 PGUID 0 b t t 30 30 16 649 644 645 645 oidvectoreq eqsel eqjoinsel )); + +DATA(insert OID = 613 ( "<->" 10 PGUID 0 b t f 600 628 701 0 0 0 0 dist_pl - - )); +DATA(insert OID = 614 ( "<->" 10 PGUID 0 b t f 600 601 701 0 0 0 0 dist_ps - - )); +DATA(insert OID = 615 ( "<->" 10 PGUID 0 b t f 600 603 701 0 0 0 0 dist_pb - - )); +DATA(insert OID = 616 ( "<->" 10 PGUID 0 b t f 601 628 701 0 0 0 0 dist_sl - - )); +DATA(insert OID = 617 ( "<->" 10 PGUID 0 b t f 601 603 701 0 0 0 0 dist_sb - - )); +DATA(insert OID = 618 ( "<->" 10 PGUID 0 b t f 600 602 701 0 0 0 0 dist_ppath - - )); + +DATA(insert OID = 620 ( "=" 10 PGUID 0 b t f 700 700 16 620 621 622 622 float4eq eqsel eqjoinsel )); +DATA(insert OID = 621 ( "<>" 10 PGUID 0 b t f 700 700 16 621 620 0 0 float4ne neqsel neqjoinsel )); +DATA(insert OID = 622 ( "<" 10 PGUID 0 b t f 700 700 16 623 625 0 0 float4lt scalarltsel scalarltjoinsel)); +DATA(insert OID = 623 ( ">" 10 PGUID 0 b t f 700 700 16 622 624 0 0 float4gt scalargtsel scalargtjoinsel)); +DATA(insert OID = 624 ( "<=" 10 PGUID 0 b t f 700 700 16 625 623 0 0 float4le scalarltsel scalarltjoinsel)); +DATA(insert OID = 625 ( ">=" 10 PGUID 0 b t f 700 700 16 624 622 0 0 float4ge scalargtsel scalargtjoinsel)); +DATA(insert OID = 626 ( "!!=" 10 PGUID 0 b t f 23 25 16 0 0 0 0 int4notin - - )); +DATA(insert OID = 627 ( "!!=" 10 PGUID 0 b t f 26 25 16 0 0 0 0 oidnotin - - )); +DATA(insert OID = 630 ( "<>" 10 PGUID 0 b t f 18 18 16 630 92 0 0 charne neqsel neqjoinsel )); + +DATA(insert OID = 631 ( "<" 10 PGUID 0 b t f 18 18 16 633 634 0 0 charlt scalarltsel scalarltjoinsel )); +DATA(insert OID = 632 ( "<=" 10 PGUID 0 b t f 18 18 16 634 633 0 0 charle scalarltsel scalarltjoinsel )); +DATA(insert OID = 633 ( ">" 10 PGUID 0 b t f 18 18 16 631 632 0 0 chargt scalargtsel scalargtjoinsel )); +DATA(insert OID = 634 ( ">=" 10 PGUID 0 b t f 18 18 16 632 631 0 0 charge scalargtsel scalargtjoinsel )); + +DATA(insert OID = 635 ( "+" 10 PGUID 0 b t f 18 18 18 0 0 0 0 charpl - - )); +DATA(insert OID = 636 ( "-" 10 PGUID 0 b t f 18 18 18 0 0 0 0 charmi - - )); +DATA(insert OID = 637 ( "*" 10 PGUID 0 b t f 18 18 18 0 0 0 0 charmul - - )); +DATA(insert OID = 638 ( "/" 10 PGUID 0 b t f 18 18 18 0 0 0 0 chardiv - - )); -DATA(insert OID = 639 ( "~" PGUID 0 b t f 19 25 16 0 640 0 0 nameregexeq regexeqsel regexeqjoinsel )); +DATA(insert OID = 639 ( "~" 10 PGUID 0 b t f 19 25 16 0 640 0 0 nameregexeq regexeqsel regexeqjoinsel )); #define OID_NAME_REGEXEQ_OP 639 -DATA(insert OID = 640 ( "!~" PGUID 0 b t f 19 25 16 0 639 0 0 nameregexne regexnesel regexnejoinsel )); -DATA(insert OID = 641 ( "~" PGUID 0 b t f 25 25 16 0 642 0 0 textregexeq regexeqsel regexeqjoinsel )); +DATA(insert OID = 640 ( "!~" 10 PGUID 0 b t f 19 25 16 0 639 0 0 nameregexne regexnesel regexnejoinsel )); +DATA(insert OID = 641 ( "~" 10 PGUID 0 b t f 25 25 16 0 642 0 0 textregexeq regexeqsel regexeqjoinsel )); #define OID_TEXT_REGEXEQ_OP 641 -DATA(insert OID = 642 ( "!~" PGUID 0 b t f 25 25 16 0 641 0 0 textregexne regexnesel regexnejoinsel )); -DATA(insert OID = 643 ( "<>" PGUID 0 b t f 19 19 16 643 93 0 0 namene neqsel neqjoinsel )); -DATA(insert OID = 654 ( "||" PGUID 0 b t f 25 25 25 0 0 0 0 textcat - - )); - -DATA(insert OID = 660 ( "<" PGUID 0 b t f 19 19 16 662 663 0 0 namelt scalarltsel scalarltjoinsel )); -DATA(insert OID = 661 ( "<=" PGUID 0 b t f 19 19 16 663 662 0 0 namele scalarltsel scalarltjoinsel )); -DATA(insert OID = 662 ( ">" PGUID 0 b t f 19 19 16 660 661 0 0 namegt scalargtsel scalargtjoinsel )); -DATA(insert OID = 663 ( ">=" PGUID 0 b t f 19 19 16 661 660 0 0 namege scalargtsel scalargtjoinsel )); -DATA(insert OID = 664 ( "<" PGUID 0 b t f 25 25 16 666 667 0 0 text_lt scalarltsel scalarltjoinsel )); -DATA(insert OID = 665 ( "<=" PGUID 0 b t f 25 25 16 667 666 0 0 text_le scalarltsel scalarltjoinsel )); -DATA(insert OID = 666 ( ">" PGUID 0 b t f 25 25 16 664 665 0 0 text_gt scalargtsel scalargtjoinsel )); -DATA(insert OID = 667 ( ">=" PGUID 0 b t f 25 25 16 665 664 0 0 text_ge scalargtsel scalargtjoinsel )); - -DATA(insert OID = 670 ( "=" PGUID 0 b t f 701 701 16 670 671 672 672 float8eq eqsel eqjoinsel )); -DATA(insert OID = 671 ( "<>" PGUID 0 b t f 701 701 16 671 670 0 0 float8ne neqsel neqjoinsel )); -DATA(insert OID = 672 ( "<" PGUID 0 b t f 701 701 16 674 675 0 0 float8lt scalarltsel scalarltjoinsel )); -DATA(insert OID = 673 ( "<=" PGUID 0 b t f 701 701 16 675 674 0 0 float8le scalarltsel scalarltjoinsel )); -DATA(insert OID = 674 ( ">" PGUID 0 b t f 701 701 16 672 673 0 0 float8gt scalargtsel scalargtjoinsel )); -DATA(insert OID = 675 ( ">=" PGUID 0 b t f 701 701 16 673 672 0 0 float8ge scalargtsel scalargtjoinsel )); - -DATA(insert OID = 682 ( "@" PGUID 0 l t f 0 21 21 0 0 0 0 int2abs - - )); -DATA(insert OID = 684 ( "+" PGUID 0 b t f 20 20 20 684 0 0 0 int8pl - - )); -DATA(insert OID = 685 ( "-" PGUID 0 b t f 20 20 20 0 0 0 0 int8mi - - )); -DATA(insert OID = 686 ( "*" PGUID 0 b t f 20 20 20 686 0 0 0 int8mul - - )); -DATA(insert OID = 687 ( "/" PGUID 0 b t f 20 20 20 0 0 0 0 int8div - - )); -DATA(insert OID = 688 ( "+" PGUID 0 b t f 20 23 20 692 0 0 0 int84pl - - )); -DATA(insert OID = 689 ( "-" PGUID 0 b t f 20 23 20 0 0 0 0 int84mi - - )); -DATA(insert OID = 690 ( "*" PGUID 0 b t f 20 23 20 694 0 0 0 int84mul - - )); -DATA(insert OID = 691 ( "/" PGUID 0 b t f 20 23 20 0 0 0 0 int84div - - )); -DATA(insert OID = 692 ( "+" PGUID 0 b t f 23 20 20 688 0 0 0 int48pl - - )); -DATA(insert OID = 693 ( "-" PGUID 0 b t f 23 20 20 0 0 0 0 int48mi - - )); -DATA(insert OID = 694 ( "*" PGUID 0 b t f 23 20 20 690 0 0 0 int48mul - - )); -DATA(insert OID = 695 ( "/" PGUID 0 b t f 23 20 20 0 0 0 0 int48div - - )); - -DATA(insert OID = 706 ( "<->" PGUID 0 b t f 603 603 701 706 0 0 0 box_distance - - )); -DATA(insert OID = 707 ( "<->" PGUID 0 b t f 602 602 701 707 0 0 0 path_distance - - )); -DATA(insert OID = 708 ( "<->" PGUID 0 b t f 628 628 701 708 0 0 0 line_distance - - )); -DATA(insert OID = 709 ( "<->" PGUID 0 b t f 601 601 701 709 0 0 0 lseg_distance - - )); -DATA(insert OID = 712 ( "<->" PGUID 0 b t f 604 604 701 712 0 0 0 poly_distance - - )); +DATA(insert OID = 642 ( "!~" 10 PGUID 0 b t f 25 25 16 0 641 0 0 textregexne regexnesel regexnejoinsel )); +DATA(insert OID = 643 ( "<>" 10 PGUID 0 b t f 19 19 16 643 93 0 0 namene neqsel neqjoinsel )); +DATA(insert OID = 654 ( "||" 10 PGUID 0 b t f 25 25 25 0 0 0 0 textcat - - )); + +DATA(insert OID = 660 ( "<" 10 PGUID 0 b t f 19 19 16 662 663 0 0 namelt scalarltsel scalarltjoinsel )); +DATA(insert OID = 661 ( "<=" 10 PGUID 0 b t f 19 19 16 663 662 0 0 namele scalarltsel scalarltjoinsel )); +DATA(insert OID = 662 ( ">" 10 PGUID 0 b t f 19 19 16 660 661 0 0 namegt scalargtsel scalargtjoinsel )); +DATA(insert OID = 663 ( ">=" 10 PGUID 0 b t f 19 19 16 661 660 0 0 namege scalargtsel scalargtjoinsel )); +DATA(insert OID = 664 ( "<" 10 PGUID 0 b t f 25 25 16 666 667 0 0 text_lt scalarltsel scalarltjoinsel )); +DATA(insert OID = 665 ( "<=" 10 PGUID 0 b t f 25 25 16 667 666 0 0 text_le scalarltsel scalarltjoinsel )); +DATA(insert OID = 666 ( ">" 10 PGUID 0 b t f 25 25 16 664 665 0 0 text_gt scalargtsel scalargtjoinsel )); +DATA(insert OID = 667 ( ">=" 10 PGUID 0 b t f 25 25 16 665 664 0 0 text_ge scalargtsel scalargtjoinsel )); + +DATA(insert OID = 670 ( "=" 10 PGUID 0 b t f 701 701 16 670 671 672 672 float8eq eqsel eqjoinsel )); +DATA(insert OID = 671 ( "<>" 10 PGUID 0 b t f 701 701 16 671 670 0 0 float8ne neqsel neqjoinsel )); +DATA(insert OID = 672 ( "<" 10 PGUID 0 b t f 701 701 16 674 675 0 0 float8lt scalarltsel scalarltjoinsel)); +DATA(insert OID = 673 ( "<=" 10 PGUID 0 b t f 701 701 16 675 674 0 0 float8le scalarltsel scalarltjoinsel)); +DATA(insert OID = 674 ( ">" 10 PGUID 0 b t f 701 701 16 672 673 0 0 float8gt scalargtsel scalargtjoinsel)); +DATA(insert OID = 675 ( ">=" 10 PGUID 0 b t f 701 701 16 673 672 0 0 float8ge scalargtsel scalargtjoinsel)); + +DATA(insert OID = 682 ( "@" 10 PGUID 0 l t f 0 21 21 0 0 0 0 int2abs - - )); +DATA(insert OID = 684 ( "+" 10 PGUID 0 b t f 20 20 20 684 0 0 0 int8pl - - )); +DATA(insert OID = 685 ( "-" 10 PGUID 0 b t f 20 20 20 0 0 0 0 int8mi - - )); +DATA(insert OID = 686 ( "*" 10 PGUID 0 b t f 20 20 20 686 0 0 0 int8mul - - )); +DATA(insert OID = 687 ( "/" 10 PGUID 0 b t f 20 20 20 0 0 0 0 int8div - - )); +DATA(insert OID = 688 ( "+" 10 PGUID 0 b t f 20 23 20 692 0 0 0 int84pl - - )); +DATA(insert OID = 689 ( "-" 10 PGUID 0 b t f 20 23 20 0 0 0 0 int84mi - - )); +DATA(insert OID = 690 ( "*" 10 PGUID 0 b t f 20 23 20 694 0 0 0 int84mul - - )); +DATA(insert OID = 691 ( "/" 10 PGUID 0 b t f 20 23 20 0 0 0 0 int84div - - )); +DATA(insert OID = 692 ( "+" 10 PGUID 0 b t f 23 20 20 688 0 0 0 int48pl - - )); +DATA(insert OID = 693 ( "-" 10 PGUID 0 b t f 23 20 20 0 0 0 0 int48mi - - )); +DATA(insert OID = 694 ( "*" 10 PGUID 0 b t f 23 20 20 690 0 0 0 int48mul - - )); +DATA(insert OID = 695 ( "/" 10 PGUID 0 b t f 23 20 20 0 0 0 0 int48div - - )); + +DATA(insert OID = 706 ( "<->" 10 PGUID 0 b t f 603 603 701 706 0 0 0 box_distance - - )); +DATA(insert OID = 707 ( "<->" 10 PGUID 0 b t f 602 602 701 707 0 0 0 path_distance - - )); +DATA(insert OID = 708 ( "<->" 10 PGUID 0 b t f 628 628 701 708 0 0 0 line_distance - - )); +DATA(insert OID = 709 ( "<->" 10 PGUID 0 b t f 601 601 701 709 0 0 0 lseg_distance - - )); +DATA(insert OID = 712 ( "<->" 10 PGUID 0 b t f 604 604 701 712 0 0 0 poly_distance - - )); /* add translation/rotation/scaling operators for geometric types. - thomas 97/05/10 */ -DATA(insert OID = 731 ( "+" PGUID 0 b t f 600 600 600 731 0 0 0 point_add - - )); -DATA(insert OID = 732 ( "-" PGUID 0 b t f 600 600 600 0 0 0 0 point_sub - - )); -DATA(insert OID = 733 ( "*" PGUID 0 b t f 600 600 600 733 0 0 0 point_mul - - )); -DATA(insert OID = 734 ( "/" PGUID 0 b t f 600 600 600 0 0 0 0 point_div - - )); -DATA(insert OID = 735 ( "+" PGUID 0 b t f 602 602 602 735 0 0 0 path_add - - )); -DATA(insert OID = 736 ( "+" PGUID 0 b t f 602 600 602 0 0 0 0 path_add_pt - - )); -DATA(insert OID = 737 ( "-" PGUID 0 b t f 602 600 602 0 0 0 0 path_sub_pt - - )); -DATA(insert OID = 738 ( "*" PGUID 0 b t f 602 600 602 0 0 0 0 path_mul_pt - - )); -DATA(insert OID = 739 ( "/" PGUID 0 b t f 602 600 602 0 0 0 0 path_div_pt - - )); -DATA(insert OID = 755 ( "~" PGUID 0 b t f 602 600 16 512 0 0 0 path_contain_pt - - )); -DATA(insert OID = 756 ( "@" PGUID 0 b t f 600 604 16 757 0 0 0 pt_contained_poly - - )); -DATA(insert OID = 757 ( "~" PGUID 0 b t f 604 600 16 756 0 0 0 poly_contain_pt - - )); -DATA(insert OID = 758 ( "@" PGUID 0 b t f 600 718 16 759 0 0 0 pt_contained_circle - - )); -DATA(insert OID = 759 ( "~" PGUID 0 b t f 718 600 16 758 0 0 0 circle_contain_pt - - )); +DATA(insert OID = 731 ( "+" 10 PGUID 0 b t f 600 600 600 731 0 0 0 point_add - - )); +DATA(insert OID = 732 ( "-" 10 PGUID 0 b t f 600 600 600 0 0 0 0 point_sub - - )); +DATA(insert OID = 733 ( "*" 10 PGUID 0 b t f 600 600 600 733 0 0 0 point_mul - - )); +DATA(insert OID = 734 ( "/" 10 PGUID 0 b t f 600 600 600 0 0 0 0 point_div - - )); +DATA(insert OID = 735 ( "+" 10 PGUID 0 b t f 602 602 602 735 0 0 0 path_add - - )); +DATA(insert OID = 736 ( "+" 10 PGUID 0 b t f 602 600 602 0 0 0 0 path_add_pt - - )); +DATA(insert OID = 737 ( "-" 10 PGUID 0 b t f 602 600 602 0 0 0 0 path_sub_pt - - )); +DATA(insert OID = 738 ( "*" 10 PGUID 0 b t f 602 600 602 0 0 0 0 path_mul_pt - - )); +DATA(insert OID = 739 ( "/" 10 PGUID 0 b t f 602 600 602 0 0 0 0 path_div_pt - - )); +DATA(insert OID = 755 ( "~" 10 PGUID 0 b t f 602 600 16 512 0 0 0 path_contain_pt - - )); +DATA(insert OID = 756 ( "@" 10 PGUID 0 b t f 600 604 16 757 0 0 0 pt_contained_poly - - )); +DATA(insert OID = 757 ( "~" 10 PGUID 0 b t f 604 600 16 756 0 0 0 poly_contain_pt - - )); +DATA(insert OID = 758 ( "@" 10 PGUID 0 b t f 600 718 16 759 0 0 0 pt_contained_circle - - )); +DATA(insert OID = 759 ( "~" 10 PGUID 0 b t f 718 600 16 758 0 0 0 circle_contain_pt - - )); -DATA(insert OID = 773 ( "@" PGUID 0 l t f 0 23 23 0 0 0 0 int4abs - - )); +DATA(insert OID = 773 ( "@" 10 PGUID 0 l t f 0 23 23 0 0 0 0 int4abs - - )); /* additional operators for geometric types - thomas 1997-07-09 */ -DATA(insert OID = 792 ( "=" PGUID 0 b t f 602 602 16 792 0 0 0 path_n_eq eqsel eqjoinsel )); -DATA(insert OID = 793 ( "<" PGUID 0 b t f 602 602 16 794 0 0 0 path_n_lt - - )); -DATA(insert OID = 794 ( ">" PGUID 0 b t f 602 602 16 793 0 0 0 path_n_gt - - )); -DATA(insert OID = 795 ( "<=" PGUID 0 b t f 602 602 16 796 0 0 0 path_n_le - - )); -DATA(insert OID = 796 ( ">=" PGUID 0 b t f 602 602 16 795 0 0 0 path_n_ge - - )); -DATA(insert OID = 797 ( "#" PGUID 0 l t f 0 602 23 0 0 0 0 path_npoints - - )); -DATA(insert OID = 798 ( "?#" PGUID 0 b t f 602 602 16 0 0 0 0 path_inter - - )); -DATA(insert OID = 799 ( "@-@" PGUID 0 l t f 0 602 701 0 0 0 0 path_length - - )); -DATA(insert OID = 800 ( ">^" PGUID 0 b t f 603 603 16 0 0 0 0 box_above positionsel positionjoinsel )); -DATA(insert OID = 801 ( "<^" PGUID 0 b t f 603 603 16 0 0 0 0 box_below positionsel positionjoinsel )); -DATA(insert OID = 802 ( "?#" PGUID 0 b t f 603 603 16 0 0 0 0 box_overlap areasel areajoinsel )); -DATA(insert OID = 803 ( "#" PGUID 0 b t f 603 603 603 0 0 0 0 box_intersect - - )); -DATA(insert OID = 804 ( "+" PGUID 0 b t f 603 600 603 0 0 0 0 box_add - - )); -DATA(insert OID = 805 ( "-" PGUID 0 b t f 603 600 603 0 0 0 0 box_sub - - )); -DATA(insert OID = 806 ( "*" PGUID 0 b t f 603 600 603 0 0 0 0 box_mul - - )); -DATA(insert OID = 807 ( "/" PGUID 0 b t f 603 600 603 0 0 0 0 box_div - - )); -DATA(insert OID = 808 ( "?-" PGUID 0 b t f 600 600 16 808 0 0 0 point_horiz - - )); -DATA(insert OID = 809 ( "?|" PGUID 0 b t f 600 600 16 809 0 0 0 point_vert - - )); - -DATA(insert OID = 811 ( "=" PGUID 0 b t f 704 704 16 811 812 0 0 tintervaleq eqsel eqjoinsel )); -DATA(insert OID = 812 ( "<>" PGUID 0 b t f 704 704 16 812 811 0 0 tintervalne neqsel neqjoinsel )); -DATA(insert OID = 813 ( "<" PGUID 0 b t f 704 704 16 814 816 0 0 tintervallt scalarltsel scalarltjoinsel )); -DATA(insert OID = 814 ( ">" PGUID 0 b t f 704 704 16 813 815 0 0 tintervalgt scalargtsel scalargtjoinsel )); -DATA(insert OID = 815 ( "<=" PGUID 0 b t f 704 704 16 816 814 0 0 tintervalle scalarltsel scalarltjoinsel )); -DATA(insert OID = 816 ( ">=" PGUID 0 b t f 704 704 16 815 813 0 0 tintervalge scalargtsel scalargtjoinsel )); - -DATA(insert OID = 843 ( "*" PGUID 0 b t f 790 700 790 845 0 0 0 cash_mul_flt4 - - )); -DATA(insert OID = 844 ( "/" PGUID 0 b t f 790 700 790 0 0 0 0 cash_div_flt4 - - )); -DATA(insert OID = 845 ( "*" PGUID 0 b t f 700 790 790 843 0 0 0 flt4_mul_cash - - )); - -DATA(insert OID = 900 ( "=" PGUID 0 b t t 790 790 16 900 901 902 902 cash_eq eqsel eqjoinsel )); -DATA(insert OID = 901 ( "<>" PGUID 0 b t f 790 790 16 901 900 0 0 cash_ne neqsel neqjoinsel )); -DATA(insert OID = 902 ( "<" PGUID 0 b t f 790 790 16 903 905 0 0 cash_lt scalarltsel scalarltjoinsel )); -DATA(insert OID = 903 ( ">" PGUID 0 b t f 790 790 16 902 904 0 0 cash_gt scalargtsel scalargtjoinsel )); -DATA(insert OID = 904 ( "<=" PGUID 0 b t f 790 790 16 905 903 0 0 cash_le scalarltsel scalarltjoinsel )); -DATA(insert OID = 905 ( ">=" PGUID 0 b t f 790 790 16 904 902 0 0 cash_ge scalargtsel scalargtjoinsel )); -DATA(insert OID = 906 ( "+" PGUID 0 b t f 790 790 790 906 0 0 0 cash_pl - - )); -DATA(insert OID = 907 ( "-" PGUID 0 b t f 790 790 790 0 0 0 0 cash_mi - - )); -DATA(insert OID = 908 ( "*" PGUID 0 b t f 790 701 790 916 0 0 0 cash_mul_flt8 - - )); -DATA(insert OID = 909 ( "/" PGUID 0 b t f 790 701 790 0 0 0 0 cash_div_flt8 - - )); -DATA(insert OID = 912 ( "*" PGUID 0 b t f 790 23 790 917 0 0 0 cash_mul_int4 - - )); -DATA(insert OID = 913 ( "/" PGUID 0 b t f 790 23 790 0 0 0 0 cash_div_int4 - - )); -DATA(insert OID = 914 ( "*" PGUID 0 b t f 790 21 790 918 0 0 0 cash_mul_int2 - - )); -DATA(insert OID = 915 ( "/" PGUID 0 b t f 790 21 790 0 0 0 0 cash_div_int2 - - )); -DATA(insert OID = 916 ( "*" PGUID 0 b t f 701 790 790 908 0 0 0 flt8_mul_cash - - )); -DATA(insert OID = 917 ( "*" PGUID 0 b t f 23 790 790 912 0 0 0 int4_mul_cash - - )); -DATA(insert OID = 918 ( "*" PGUID 0 b t f 21 790 790 914 0 0 0 int2_mul_cash - - )); - -DATA(insert OID = 965 ( "^" PGUID 0 b t f 701 701 701 0 0 0 0 dpow - - )); -DATA(insert OID = 966 ( "+" PGUID 0 b t f 1034 1033 1034 0 0 0 0 aclinsert - - )); -DATA(insert OID = 967 ( "-" PGUID 0 b t f 1034 1033 1034 0 0 0 0 aclremove - - )); -DATA(insert OID = 968 ( "~" PGUID 0 b t f 1034 1033 16 0 0 0 0 aclcontains - - )); +DATA(insert OID = 792 ( "=" 10 PGUID 0 b t f 602 602 16 792 0 0 0 path_n_eq eqsel eqjoinsel )); +DATA(insert OID = 793 ( "<" 10 PGUID 0 b t f 602 602 16 794 0 0 0 path_n_lt - - )); +DATA(insert OID = 794 ( ">" 10 PGUID 0 b t f 602 602 16 793 0 0 0 path_n_gt - - )); +DATA(insert OID = 795 ( "<=" 10 PGUID 0 b t f 602 602 16 796 0 0 0 path_n_le - - )); +DATA(insert OID = 796 ( ">=" 10 PGUID 0 b t f 602 602 16 795 0 0 0 path_n_ge - - )); +DATA(insert OID = 797 ( "#" 10 PGUID 0 l t f 0 602 23 0 0 0 0 path_npoints - - )); +DATA(insert OID = 798 ( "?#" 10 PGUID 0 b t f 602 602 16 0 0 0 0 path_inter - - )); +DATA(insert OID = 799 ( "@-@" 10 PGUID 0 l t f 0 602 701 0 0 0 0 path_length - - )); +DATA(insert OID = 800 ( ">^" 10 PGUID 0 b t f 603 603 16 0 0 0 0 box_above positionsel positionjoinsel)); +DATA(insert OID = 801 ( "<^" 10 PGUID 0 b t f 603 603 16 0 0 0 0 box_below positionsel positionjoinsel)); +DATA(insert OID = 802 ( "?#" 10 PGUID 0 b t f 603 603 16 0 0 0 0 box_overlap areasel areajoinsel )); +DATA(insert OID = 803 ( "#" 10 PGUID 0 b t f 603 603 603 0 0 0 0 box_intersect - - )); +DATA(insert OID = 804 ( "+" 10 PGUID 0 b t f 603 600 603 0 0 0 0 box_add - - )); +DATA(insert OID = 805 ( "-" 10 PGUID 0 b t f 603 600 603 0 0 0 0 box_sub - - )); +DATA(insert OID = 806 ( "*" 10 PGUID 0 b t f 603 600 603 0 0 0 0 box_mul - - )); +DATA(insert OID = 807 ( "/" 10 PGUID 0 b t f 603 600 603 0 0 0 0 box_div - - )); +DATA(insert OID = 808 ( "?-" 10 PGUID 0 b t f 600 600 16 808 0 0 0 point_horiz - - )); +DATA(insert OID = 809 ( "?|" 10 PGUID 0 b t f 600 600 16 809 0 0 0 point_vert - - )); + +DATA(insert OID = 811 ( "=" 10 PGUID 0 b t f 704 704 16 811 812 0 0 tintervaleq eqsel eqjoinsel )); +DATA(insert OID = 812 ( "<>" 10 PGUID 0 b t f 704 704 16 812 811 0 0 tintervalne neqsel neqjoinsel )); +DATA(insert OID = 813 ( "<" 10 PGUID 0 b t f 704 704 16 814 816 0 0 tintervallt scalarltsel scalarltjoinsel)); +DATA(insert OID = 814 ( ">" 10 PGUID 0 b t f 704 704 16 813 815 0 0 tintervalgt scalargtsel scalargtjoinsel)); +DATA(insert OID = 815 ( "<=" 10 PGUID 0 b t f 704 704 16 816 814 0 0 tintervalle scalarltsel scalarltjoinsel)); +DATA(insert OID = 816 ( ">=" 10 PGUID 0 b t f 704 704 16 815 813 0 0 tintervalge scalargtsel scalargtjoinsel)); + +DATA(insert OID = 843 ( "*" 10 PGUID 0 b t f 790 700 790 845 0 0 0 cash_mul_flt4 - - )); +DATA(insert OID = 844 ( "/" 10 PGUID 0 b t f 790 700 790 0 0 0 0 cash_div_flt4 - - )); +DATA(insert OID = 845 ( "*" 10 PGUID 0 b t f 700 790 790 843 0 0 0 flt4_mul_cash - - )); + +DATA(insert OID = 900 ( "=" 10 PGUID 0 b t t 790 790 16 900 901 902 902 cash_eq eqsel eqjoinsel )); +DATA(insert OID = 901 ( "<>" 10 PGUID 0 b t f 790 790 16 901 900 0 0 cash_ne neqsel neqjoinsel )); +DATA(insert OID = 902 ( "<" 10 PGUID 0 b t f 790 790 16 903 905 0 0 cash_lt scalarltsel scalarltjoinsel )); +DATA(insert OID = 903 ( ">" 10 PGUID 0 b t f 790 790 16 902 904 0 0 cash_gt scalargtsel scalargtjoinsel )); +DATA(insert OID = 904 ( "<=" 10 PGUID 0 b t f 790 790 16 905 903 0 0 cash_le scalarltsel scalarltjoinsel)); +DATA(insert OID = 905 ( ">=" 10 PGUID 0 b t f 790 790 16 904 902 0 0 cash_ge scalargtsel scalargtjoinsel)); +DATA(insert OID = 906 ( "+" 10 PGUID 0 b t f 790 790 790 906 0 0 0 cash_pl - - )); +DATA(insert OID = 907 ( "-" 10 PGUID 0 b t f 790 790 790 0 0 0 0 cash_mi - - )); +DATA(insert OID = 908 ( "*" 10 PGUID 0 b t f 790 701 790 916 0 0 0 cash_mul_flt8 - - )); +DATA(insert OID = 909 ( "/" 10 PGUID 0 b t f 790 701 790 0 0 0 0 cash_div_flt8 - - )); +DATA(insert OID = 912 ( "*" 10 PGUID 0 b t f 790 23 790 917 0 0 0 cash_mul_int4 - - )); +DATA(insert OID = 913 ( "/" 10 PGUID 0 b t f 790 23 790 0 0 0 0 cash_div_int4 - - )); +DATA(insert OID = 914 ( "*" 10 PGUID 0 b t f 790 21 790 918 0 0 0 cash_mul_int2 - - )); +DATA(insert OID = 915 ( "/" 10 PGUID 0 b t f 790 21 790 0 0 0 0 cash_div_int2 - - )); +DATA(insert OID = 916 ( "*" 10 PGUID 0 b t f 701 790 790 908 0 0 0 flt8_mul_cash - - )); +DATA(insert OID = 917 ( "*" 10 PGUID 0 b t f 23 790 790 912 0 0 0 int4_mul_cash - - )); +DATA(insert OID = 918 ( "*" 10 PGUID 0 b t f 21 790 790 914 0 0 0 int2_mul_cash - - )); + +DATA(insert OID = 965 ( "^" 10 PGUID 0 b t f 701 701 701 0 0 0 0 dpow - - )); +DATA(insert OID = 966 ( "+" 10 PGUID 0 b t f 1034 1033 1034 0 0 0 0 aclinsert - - )); +DATA(insert OID = 967 ( "-" 10 PGUID 0 b t f 1034 1033 1034 0 0 0 0 aclremove - - )); +DATA(insert OID = 968 ( "~" 10 PGUID 0 b t f 1034 1033 16 0 0 0 0 aclcontains - - )); /* additional geometric operators - thomas 1997-07-09 */ -DATA(insert OID = 969 ( "@@" PGUID 0 l t f 0 601 600 0 0 0 0 lseg_center - - )); -DATA(insert OID = 970 ( "@@" PGUID 0 l t f 0 602 600 0 0 0 0 path_center - - )); -DATA(insert OID = 971 ( "@@" PGUID 0 l t f 0 604 600 0 0 0 0 poly_center - - )); +DATA(insert OID = 969 ( "@@" 10 PGUID 0 l t f 0 601 600 0 0 0 0 lseg_center - - )); +DATA(insert OID = 970 ( "@@" 10 PGUID 0 l t f 0 602 600 0 0 0 0 path_center - - )); +DATA(insert OID = 971 ( "@@" 10 PGUID 0 l t f 0 604 600 0 0 0 0 poly_center - - )); -DATA(insert OID = 974 ( "||" PGUID 0 b t f 1042 1042 1042 0 0 0 0 textcat - - )); -DATA(insert OID = 979 ( "||" PGUID 0 b t f 1043 1043 1043 0 0 0 0 textcat - - )); +DATA(insert OID = 974 ( "||" 10 PGUID 0 b t f 1042 1042 1042 0 0 0 0 textcat - - )); +DATA(insert OID = 979 ( "||" 10 PGUID 0 b t f 1043 1043 1043 0 0 0 0 textcat - - )); -DATA(insert OID = 1054 ( "=" PGUID 0 b t f 1042 1042 16 1054 1057 1058 1058 bpchareq eqsel eqjoinsel )); -DATA(insert OID = 1055 ( "~" PGUID 0 b t f 1042 25 16 0 1056 0 0 textregexeq regexeqsel regexeqjoinsel)); +DATA(insert OID = 1054 ( "=" 10 PGUID 0 b t f 1042 1042 16 1054 1057 1058 1058 bpchareq eqsel eqjoinsel )); +DATA(insert OID = 1055 ( "~" 10 PGUID 0 b t f 1042 25 16 0 1056 0 0 textregexeq regexeqsel regexeqjoinsel)); #define OID_BPCHAR_REGEXEQ_OP 1055 -DATA(insert OID = 1056 ( "!~" PGUID 0 b t f 1042 25 16 0 1055 0 0 textregexne regexnesel regexnejoinsel)); -DATA(insert OID = 1057 ( "<>" PGUID 0 b t f 1042 1042 16 1057 1054 0 0 bpcharne neqsel neqjoinsel )); -DATA(insert OID = 1058 ( "<" PGUID 0 b t f 1042 1042 16 1060 1061 0 0 bpcharlt scalarltsel scalarltjoinsel )); -DATA(insert OID = 1059 ( "<=" PGUID 0 b t f 1042 1042 16 1061 1060 0 0 bpcharle scalarltsel scalarltjoinsel )); -DATA(insert OID = 1060 ( ">" PGUID 0 b t f 1042 1042 16 1058 1059 0 0 bpchargt scalargtsel scalargtjoinsel )); -DATA(insert OID = 1061 ( ">=" PGUID 0 b t f 1042 1042 16 1059 1058 0 0 bpcharge scalargtsel scalargtjoinsel )); +DATA(insert OID = 1056 ( "!~" 10 PGUID 0 b t f 1042 25 16 0 1055 0 0 textregexne regexnesel regexnejoinsel)); +DATA(insert OID = 1057 ( "<>" 10 PGUID 0 b t f 1042 1042 16 1057 1054 0 0 bpcharne neqsel neqjoinsel )); +DATA(insert OID = 1058 ( "<" 10 PGUID 0 b t f 1042 1042 16 1060 1061 0 0 bpcharlt scalarltsel scalarltjoinsel)); +DATA(insert OID = 1059 ( "<=" 10 PGUID 0 b t f 1042 1042 16 1061 1060 0 0 bpcharle scalarltsel scalarltjoinsel)); +DATA(insert OID = 1060 ( ">" 10 PGUID 0 b t f 1042 1042 16 1058 1059 0 0 bpchargt scalargtsel scalargtjoinsel)); +DATA(insert OID = 1061 ( ">=" 10 PGUID 0 b t f 1042 1042 16 1059 1058 0 0 bpcharge scalargtsel scalargtjoinsel)); -DATA(insert OID = 1062 ( "=" PGUID 0 b t t 1043 1043 16 1062 1065 1066 1066 varchareq eqsel eqjoinsel )); -DATA(insert OID = 1063 ( "~" PGUID 0 b t f 1043 25 16 0 1064 0 0 textregexeq regexeqsel regexeqjoinsel )); +DATA(insert OID = 1062 ( "=" 10 PGUID 0 b t t 1043 1043 16 1062 1065 1066 1066 varchareq eqsel eqjoinsel )); +DATA(insert OID = 1063 ( "~" 10 PGUID 0 b t f 1043 25 16 0 1064 0 0 textregexeq regexeqsel regexeqjoinsel )); #define OID_VARCHAR_REGEXEQ_OP 1063 -DATA(insert OID = 1064 ( "!~" PGUID 0 b t f 1043 25 16 0 1063 0 0 textregexne regexnesel regexnejoinsel )); -DATA(insert OID = 1065 ( "<>" PGUID 0 b t f 1043 1043 16 1065 1062 0 0 varcharne neqsel neqjoinsel )); -DATA(insert OID = 1066 ( "<" PGUID 0 b t f 1043 1043 16 1068 1069 0 0 varcharlt scalarltsel scalarltjoinsel )); -DATA(insert OID = 1067 ( "<=" PGUID 0 b t f 1043 1043 16 1069 1068 0 0 varcharle scalarltsel scalarltjoinsel )); -DATA(insert OID = 1068 ( ">" PGUID 0 b t f 1043 1043 16 1066 1067 0 0 varchargt scalargtsel scalargtjoinsel )); -DATA(insert OID = 1069 ( ">=" PGUID 0 b t f 1043 1043 16 1067 1066 0 0 varcharge scalargtsel scalargtjoinsel )); +DATA(insert OID = 1064 ( "!~" 10 PGUID 0 b t f 1043 25 16 0 1063 0 0 textregexne regexnesel regexnejoinsel)); +DATA(insert OID = 1065 ( "<>" 10 PGUID 0 b t f 1043 1043 16 1065 1062 0 0 varcharne neqsel neqjoinsel )); +DATA(insert OID = 1066 ( "<" 10 PGUID 0 b t f 1043 1043 16 1068 1069 0 0 varcharlt scalarltsel scalarltjoinsel)); +DATA(insert OID = 1067 ( "<=" 10 PGUID 0 b t f 1043 1043 16 1069 1068 0 0 varcharle scalarltsel scalarltjoinsel)); +DATA(insert OID = 1068 ( ">" 10 PGUID 0 b t f 1043 1043 16 1066 1067 0 0 varchargt scalargtsel scalargtjoinsel)); +DATA(insert OID = 1069 ( ">=" 10 PGUID 0 b t f 1043 1043 16 1067 1066 0 0 varcharge scalargtsel scalargtjoinsel)); /* date operators */ -DATA(insert OID = 1093 ( "=" PGUID 0 b t t 1082 1082 16 1093 1094 1095 1095 date_eq eqsel eqjoinsel )); -DATA(insert OID = 1094 ( "<>" PGUID 0 b t f 1082 1082 16 1094 1093 0 0 date_ne neqsel neqjoinsel )); -DATA(insert OID = 1095 ( "<" PGUID 0 b t f 1082 1082 16 1097 1098 0 0 date_lt scalarltsel scalarltjoinsel )); -DATA(insert OID = 1096 ( "<=" PGUID 0 b t f 1082 1082 16 1098 1097 0 0 date_le scalarltsel scalarltjoinsel)); -DATA(insert OID = 1097 ( ">" PGUID 0 b t f 1082 1082 16 1095 1096 0 0 date_gt scalargtsel scalargtjoinsel )); -DATA(insert OID = 1098 ( ">=" PGUID 0 b t f 1082 1082 16 1096 1095 0 0 date_ge scalargtsel scalargtjoinsel)); -DATA(insert OID = 1099 ( "-" PGUID 0 b t f 1082 1082 23 0 0 0 0 date_mi - - )); -DATA(insert OID = 1100 ( "+" PGUID 0 b t f 1082 23 1082 0 0 0 0 date_pli - - )); -DATA(insert OID = 1101 ( "-" PGUID 0 b t f 1082 23 1082 0 0 0 0 date_mii - - )); +DATA(insert OID = 1093 ( "=" 10 PGUID 0 b t t 1082 1082 16 1093 1094 1095 1095 date_eq eqsel eqjoinsel )); +DATA(insert OID = 1094 ( "<>" 10 PGUID 0 b t f 1082 1082 16 1094 1093 0 0 date_ne neqsel neqjoinsel )); +DATA(insert OID = 1095 ( "<" 10 PGUID 0 b t f 1082 1082 16 1097 1098 0 0 date_lt scalarltsel scalarltjoinsel)); +DATA(insert OID = 1096 ( "<=" 10 PGUID 0 b t f 1082 1082 16 1098 1097 0 0 date_le scalarltsel scalarltjoinsel)); +DATA(insert OID = 1097 ( ">" 10 PGUID 0 b t f 1082 1082 16 1095 1096 0 0 date_gt scalargtsel scalargtjoinsel)); +DATA(insert OID = 1098 ( ">=" 10 PGUID 0 b t f 1082 1082 16 1096 1095 0 0 date_ge scalargtsel scalargtjoinsel)); +DATA(insert OID = 1099 ( "-" 10 PGUID 0 b t f 1082 1082 23 0 0 0 0 date_mi - - )); +DATA(insert OID = 1100 ( "+" 10 PGUID 0 b t f 1082 23 1082 0 0 0 0 date_pli - - )); +DATA(insert OID = 1101 ( "-" 10 PGUID 0 b t f 1082 23 1082 0 0 0 0 date_mii - - )); /* time operators */ -DATA(insert OID = 1108 ( "=" PGUID 0 b t f 1083 1083 16 1108 1109 1110 1110 time_eq eqsel eqjoinsel )); -DATA(insert OID = 1109 ( "<>" PGUID 0 b t f 1083 1083 16 1109 1108 0 0 time_ne neqsel neqjoinsel )); -DATA(insert OID = 1110 ( "<" PGUID 0 b t f 1083 1083 16 1112 1113 0 0 time_lt scalarltsel scalarltjoinsel)); -DATA(insert OID = 1111 ( "<=" PGUID 0 b t f 1083 1083 16 1113 1112 0 0 time_le scalarltsel scalarltjoinsel)); -DATA(insert OID = 1112 ( ">" PGUID 0 b t f 1083 1083 16 1110 1111 0 0 time_gt scalargtsel scalargtjoinsel)); -DATA(insert OID = 1113 ( ">=" PGUID 0 b t f 1083 1083 16 1111 1110 0 0 time_ge scalargtsel scalargtjoinsel)); -DATA(insert OID = 1269 ( "-" PGUID 0 b t f 1186 1083 1083 0 0 0 0 interval_mi_time - - )); +DATA(insert OID = 1108 ( "=" 10 PGUID 0 b t f 1083 1083 16 1108 1109 1110 1110 time_eq eqsel eqjoinsel )); +DATA(insert OID = 1109 ( "<>" 10 PGUID 0 b t f 1083 1083 16 1109 1108 0 0 time_ne neqsel neqjoinsel )); +DATA(insert OID = 1110 ( "<" 10 PGUID 0 b t f 1083 1083 16 1112 1113 0 0 time_lt scalarltsel scalarltjoinsel)); +DATA(insert OID = 1111 ( "<=" 10 PGUID 0 b t f 1083 1083 16 1113 1112 0 0 time_le scalarltsel scalarltjoinsel)); +DATA(insert OID = 1112 ( ">" 10 PGUID 0 b t f 1083 1083 16 1110 1111 0 0 time_gt scalargtsel scalargtjoinsel)); +DATA(insert OID = 1113 ( ">=" 10 PGUID 0 b t f 1083 1083 16 1111 1110 0 0 time_ge scalargtsel scalargtjoinsel)); +DATA(insert OID = 1269 ( "-" 10 PGUID 0 b t f 1186 1083 1083 0 0 0 0 interval_mi_time - - )); /* timetz operators */ -DATA(insert OID = 1295 ( "-" PGUID 0 b t f 1186 1266 1266 0 0 0 0 interval_mi_timetz - - )); -DATA(insert OID = 1550 ( "=" PGUID 0 b t f 1266 1266 16 1550 1551 1552 1552 timetz_eq eqsel eqjoinsel )); -DATA(insert OID = 1551 ( "<>" PGUID 0 b t f 1266 1266 16 1551 1550 0 0 timetz_ne neqsel neqjoinsel )); -DATA(insert OID = 1552 ( "<" PGUID 0 b t f 1266 1266 16 1554 1555 0 0 timetz_lt scalarltsel scalarltjoinsel)); -DATA(insert OID = 1553 ( "<=" PGUID 0 b t f 1266 1266 16 1555 1554 0 0 timetz_le scalarltsel scalarltjoinsel)); -DATA(insert OID = 1554 ( ">" PGUID 0 b t f 1266 1266 16 1552 1553 0 0 timetz_gt scalargtsel scalargtjoinsel)); -DATA(insert OID = 1555 ( ">=" PGUID 0 b t f 1266 1266 16 1553 1552 0 0 timetz_ge scalargtsel scalargtjoinsel)); +DATA(insert OID = 1295 ( "-" 10 PGUID 0 b t f 1186 1266 1266 0 0 0 0 interval_mi_timetz - - )); +DATA(insert OID = 1550 ( "=" 10 PGUID 0 b t f 1266 1266 16 1550 1551 1552 1552 timetz_eq eqsel eqjoinsel )); +DATA(insert OID = 1551 ( "<>" 10 PGUID 0 b t f 1266 1266 16 1551 1550 0 0 timetz_ne neqsel neqjoinsel )); +DATA(insert OID = 1552 ( "<" 10 PGUID 0 b t f 1266 1266 16 1554 1555 0 0 timetz_lt scalarltsel scalarltjoinsel)); +DATA(insert OID = 1553 ( "<=" 10 PGUID 0 b t f 1266 1266 16 1555 1554 0 0 timetz_le scalarltsel scalarltjoinsel)); +DATA(insert OID = 1554 ( ">" 10 PGUID 0 b t f 1266 1266 16 1552 1553 0 0 timetz_gt scalargtsel scalargtjoinsel)); +DATA(insert OID = 1555 ( ">=" 10 PGUID 0 b t f 1266 1266 16 1553 1552 0 0 timetz_ge scalargtsel scalargtjoinsel)); /* float48 operators */ -DATA(insert OID = 1116 ( "+" PGUID 0 b t f 700 701 701 1126 0 0 0 float48pl - - )); -DATA(insert OID = 1117 ( "-" PGUID 0 b t f 700 701 701 0 0 0 0 float48mi - - )); -DATA(insert OID = 1118 ( "/" PGUID 0 b t f 700 701 701 0 0 0 0 float48div - - )); -DATA(insert OID = 1119 ( "*" PGUID 0 b t f 700 701 701 1129 0 0 0 float48mul - - )); -DATA(insert OID = 1120 ( "=" PGUID 0 b t f 700 701 16 1130 1121 622 672 float48eq eqsel eqjoinsel )); -DATA(insert OID = 1121 ( "<>" PGUID 0 b t f 700 701 16 1131 1120 0 0 float48ne neqsel neqjoinsel )); -DATA(insert OID = 1122 ( "<" PGUID 0 b t f 700 701 16 1133 1125 0 0 float48lt scalarltsel scalarltjoinsel)); -DATA(insert OID = 1123 ( ">" PGUID 0 b t f 700 701 16 1132 1124 0 0 float48gt scalargtsel scalargtjoinsel)); -DATA(insert OID = 1124 ( "<=" PGUID 0 b t f 700 701 16 1135 1123 0 0 float48le scalarltsel scalarltjoinsel)); -DATA(insert OID = 1125 ( ">=" PGUID 0 b t f 700 701 16 1134 1122 0 0 float48ge scalargtsel scalargtjoinsel)); +DATA(insert OID = 1116 ( "+" 10 PGUID 0 b t f 700 701 701 1126 0 0 0 float48pl - - )); +DATA(insert OID = 1117 ( "-" 10 PGUID 0 b t f 700 701 701 0 0 0 0 float48mi - - )); +DATA(insert OID = 1118 ( "/" 10 PGUID 0 b t f 700 701 701 0 0 0 0 float48div - - )); +DATA(insert OID = 1119 ( "*" 10 PGUID 0 b t f 700 701 701 1129 0 0 0 float48mul - - )); +DATA(insert OID = 1120 ( "=" 10 PGUID 0 b t f 700 701 16 1130 1121 622 672 float48eq eqsel eqjoinsel )); +DATA(insert OID = 1121 ( "<>" 10 PGUID 0 b t f 700 701 16 1131 1120 0 0 float48ne neqsel neqjoinsel )); +DATA(insert OID = 1122 ( "<" 10 PGUID 0 b t f 700 701 16 1133 1125 0 0 float48lt scalarltsel scalarltjoinsel)); +DATA(insert OID = 1123 ( ">" 10 PGUID 0 b t f 700 701 16 1132 1124 0 0 float48gt scalargtsel scalargtjoinsel)); +DATA(insert OID = 1124 ( "<=" 10 PGUID 0 b t f 700 701 16 1135 1123 0 0 float48le scalarltsel scalarltjoinsel)); +DATA(insert OID = 1125 ( ">=" 10 PGUID 0 b t f 700 701 16 1134 1122 0 0 float48ge scalargtsel scalargtjoinsel)); /* float84 operators */ -DATA(insert OID = 1126 ( "+" PGUID 0 b t f 701 700 701 1116 0 0 0 float84pl - - )); -DATA(insert OID = 1127 ( "-" PGUID 0 b t f 701 700 701 0 0 0 0 float84mi - - )); -DATA(insert OID = 1128 ( "/" PGUID 0 b t f 701 700 701 0 0 0 0 float84div - - )); -DATA(insert OID = 1129 ( "*" PGUID 0 b t f 701 700 701 1119 0 0 0 float84mul - - )); -DATA(insert OID = 1130 ( "=" PGUID 0 b t f 701 700 16 1120 1131 672 622 float84eq eqsel eqjoinsel )); -DATA(insert OID = 1131 ( "<>" PGUID 0 b t f 701 700 16 1121 1130 0 0 float84ne neqsel neqjoinsel )); -DATA(insert OID = 1132 ( "<" PGUID 0 b t f 701 700 16 1123 1135 0 0 float84lt scalarltsel scalarltjoinsel)); -DATA(insert OID = 1133 ( ">" PGUID 0 b t f 701 700 16 1122 1134 0 0 float84gt scalargtsel scalargtjoinsel)); -DATA(insert OID = 1134 ( "<=" PGUID 0 b t f 701 700 16 1125 1133 0 0 float84le scalarltsel scalarltjoinsel)); -DATA(insert OID = 1135 ( ">=" PGUID 0 b t f 701 700 16 1124 1132 0 0 float84ge scalargtsel scalargtjoinsel)); +DATA(insert OID = 1126 ( "+" 10 PGUID 0 b t f 701 700 701 1116 0 0 0 float84pl - - )); +DATA(insert OID = 1127 ( "-" 10 PGUID 0 b t f 701 700 701 0 0 0 0 float84mi - - )); +DATA(insert OID = 1128 ( "/" 10 PGUID 0 b t f 701 700 701 0 0 0 0 float84div - - )); +DATA(insert OID = 1129 ( "*" 10 PGUID 0 b t f 701 700 701 1119 0 0 0 float84mul - - )); +DATA(insert OID = 1130 ( "=" 10 PGUID 0 b t f 701 700 16 1120 1131 672 622 float84eq eqsel eqjoinsel )); +DATA(insert OID = 1131 ( "<>" 10 PGUID 0 b t f 701 700 16 1121 1130 0 0 float84ne neqsel neqjoinsel )); +DATA(insert OID = 1132 ( "<" 10 PGUID 0 b t f 701 700 16 1123 1135 0 0 float84lt scalarltsel scalarltjoinsel)); +DATA(insert OID = 1133 ( ">" 10 PGUID 0 b t f 701 700 16 1122 1134 0 0 float84gt scalargtsel scalargtjoinsel)); +DATA(insert OID = 1134 ( "<=" 10 PGUID 0 b t f 701 700 16 1125 1133 0 0 float84le scalarltsel scalarltjoinsel)); +DATA(insert OID = 1135 ( ">=" 10 PGUID 0 b t f 701 700 16 1124 1132 0 0 float84ge scalargtsel scalargtjoinsel)); /* int4 vs oid equality --- use oid (unsigned) comparison */ -DATA(insert OID = 1136 ( "=" PGUID 0 b t t 23 26 16 1137 1656 0 0 oideq eqsel eqjoinsel )); -DATA(insert OID = 1137 ( "=" PGUID 0 b t t 26 23 16 1136 1661 0 0 oideq eqsel eqjoinsel )); +DATA(insert OID = 1136 ( "=" 10 PGUID 0 b t t 23 26 16 1137 1656 0 0 oideq eqsel eqjoinsel )); +DATA(insert OID = 1137 ( "=" 10 PGUID 0 b t t 26 23 16 1136 1661 0 0 oideq eqsel eqjoinsel )); -DATA(insert OID = 1158 ( "!" PGUID 0 r t f 21 0 23 0 0 0 0 int2fac - - )); -DATA(insert OID = 1175 ( "!!" PGUID 0 l t f 0 21 23 0 0 0 0 int2fac - - )); +DATA(insert OID = 1158 ( "!" 10 PGUID 0 r t f 21 0 23 0 0 0 0 int2fac - - )); +DATA(insert OID = 1175 ( "!!" 10 PGUID 0 l t f 0 21 23 0 0 0 0 int2fac - - )); /* LIKE hacks by Keith Parks. */ -DATA(insert OID = 1207 ( "~~" PGUID 0 b t f 19 25 16 0 1208 0 0 namelike likesel likejoinsel )); +DATA(insert OID = 1207 ( "~~" 10 PGUID 0 b t f 19 25 16 0 1208 0 0 namelike likesel likejoinsel )); #define OID_NAME_LIKE_OP 1207 -DATA(insert OID = 1208 ( "!~~" PGUID 0 b t f 19 25 16 0 1207 0 0 namenlike nlikesel nlikejoinsel )); -DATA(insert OID = 1209 ( "~~" PGUID 0 b t f 25 25 16 0 1210 0 0 textlike likesel likejoinsel )); +DATA(insert OID = 1208 ( "!~~" 10 PGUID 0 b t f 19 25 16 0 1207 0 0 namenlike nlikesel nlikejoinsel )); +DATA(insert OID = 1209 ( "~~" 10 PGUID 0 b t f 25 25 16 0 1210 0 0 textlike likesel likejoinsel )); #define OID_TEXT_LIKE_OP 1209 -DATA(insert OID = 1210 ( "!~~" PGUID 0 b t f 25 25 16 0 1209 0 0 textnlike nlikesel nlikejoinsel )); -DATA(insert OID = 1211 ( "~~" PGUID 0 b t f 1042 25 16 0 1212 0 0 textlike likesel likejoinsel )); +DATA(insert OID = 1210 ( "!~~" 10 PGUID 0 b t f 25 25 16 0 1209 0 0 textnlike nlikesel nlikejoinsel )); +DATA(insert OID = 1211 ( "~~" 10 PGUID 0 b t f 1042 25 16 0 1212 0 0 textlike likesel likejoinsel )); #define OID_BPCHAR_LIKE_OP 1211 -DATA(insert OID = 1212 ( "!~~" PGUID 0 b t f 1042 25 16 0 1211 0 0 textnlike nlikesel nlikejoinsel )); -DATA(insert OID = 1213 ( "~~" PGUID 0 b t f 1043 25 16 0 1214 0 0 textlike likesel likejoinsel )); +DATA(insert OID = 1212 ( "!~~" 10 PGUID 0 b t f 1042 25 16 0 1211 0 0 textnlike nlikesel nlikejoinsel )); +DATA(insert OID = 1213 ( "~~" 10 PGUID 0 b t f 1043 25 16 0 1214 0 0 textlike likesel likejoinsel )); #define OID_VARCHAR_LIKE_OP 1213 -DATA(insert OID = 1214 ( "!~~" PGUID 0 b t f 1043 25 16 0 1213 0 0 textnlike nlikesel nlikejoinsel )); +DATA(insert OID = 1214 ( "!~~" 10 PGUID 0 b t f 1043 25 16 0 1213 0 0 textnlike nlikesel nlikejoinsel )); /* case-insensitive regex hacks */ -DATA(insert OID = 1226 ( "~*" PGUID 0 b t f 19 25 16 0 1227 0 0 nameicregexeq icregexeqsel icregexeqjoinsel)); +DATA(insert OID = 1226 ( "~*" 10 PGUID 0 b t f 19 25 16 0 1227 0 0 nameicregexeq icregexeqsel icregexeqjoinsel)); #define OID_NAME_ICREGEXEQ_OP 1226 -DATA(insert OID = 1227 ( "!~*" PGUID 0 b t f 19 25 16 0 1226 0 0 nameicregexne icregexnesel icregexnejoinsel)); -DATA(insert OID = 1228 ( "~*" PGUID 0 b t f 25 25 16 0 1229 0 0 texticregexeq icregexeqsel icregexeqjoinsel)); +DATA(insert OID = 1227 ( "!~*" 10 PGUID 0 b t f 19 25 16 0 1226 0 0 nameicregexne icregexnesel icregexnejoinsel)); +DATA(insert OID = 1228 ( "~*" 10 PGUID 0 b t f 25 25 16 0 1229 0 0 texticregexeq icregexeqsel icregexeqjoinsel)); #define OID_TEXT_ICREGEXEQ_OP 1228 -DATA(insert OID = 1229 ( "!~*" PGUID 0 b t f 25 25 16 0 1228 0 0 texticregexne icregexnesel icregexnejoinsel)); -DATA(insert OID = 1232 ( "~*" PGUID 0 b t f 1043 25 16 0 1233 0 0 texticregexeq icregexeqsel icregexeqjoinsel)); +DATA(insert OID = 1229 ( "!~*" 10 PGUID 0 b t f 25 25 16 0 1228 0 0 texticregexne icregexnesel icregexnejoinsel)); +DATA(insert OID = 1232 ( "~*" 10 PGUID 0 b t f 1043 25 16 0 1233 0 0 texticregexeq icregexeqsel icregexeqjoinsel)); #define OID_VARCHAR_ICREGEXEQ_OP 1232 -DATA(insert OID = 1233 ( "!~*" PGUID 0 b t f 1043 25 16 0 1232 0 0 texticregexne icregexnesel icregexnejoinsel)); -DATA(insert OID = 1234 ( "~*" PGUID 0 b t f 1042 25 16 0 1235 0 0 texticregexeq icregexeqsel icregexeqjoinsel)); +DATA(insert OID = 1233 ( "!~*" 10 PGUID 0 b t f 1043 25 16 0 1232 0 0 texticregexne icregexnesel icregexnejoinsel)); +DATA(insert OID = 1234 ( "~*" 10 PGUID 0 b t f 1042 25 16 0 1235 0 0 texticregexeq icregexeqsel icregexeqjoinsel)); #define OID_BPCHAR_ICREGEXEQ_OP 1234 -DATA(insert OID = 1235 ( "!~*" PGUID 0 b t f 1042 25 16 0 1234 0 0 texticregexne icregexnesel icregexnejoinsel)); +DATA(insert OID = 1235 ( "!~*" 10 PGUID 0 b t f 1042 25 16 0 1234 0 0 texticregexne icregexnesel icregexnejoinsel)); /* timestamptz operators */ /* name, owner, prec, kind, isleft, canhash, left, right, result, com, negate, lsortop, rsortop, oprcode, operrest, oprjoin*/ -DATA(insert OID = 1320 ( "=" PGUID 0 b t f 1184 1184 16 1320 1321 1322 1322 timestamp_eq eqsel eqjoinsel )); -DATA(insert OID = 1321 ( "<>" PGUID 0 b t f 1184 1184 16 1321 1320 0 0 timestamp_ne neqsel neqjoinsel )); -DATA(insert OID = 1322 ( "<" PGUID 0 b t f 1184 1184 16 1324 1325 0 0 timestamp_lt scalarltsel scalarltjoinsel)); -DATA(insert OID = 1323 ( "<=" PGUID 0 b t f 1184 1184 16 1325 1324 0 0 timestamp_le scalarltsel scalarltjoinsel)); -DATA(insert OID = 1324 ( ">" PGUID 0 b t f 1184 1184 16 1322 1323 0 0 timestamp_gt scalargtsel scalargtjoinsel)); -DATA(insert OID = 1325 ( ">=" PGUID 0 b t f 1184 1184 16 1323 1322 0 0 timestamp_ge scalargtsel scalargtjoinsel)); -DATA(insert OID = 1327 ( "+" PGUID 0 b t f 1184 1186 1184 0 0 0 0 timestamptz_pl_span - - )); -DATA(insert OID = 1328 ( "-" PGUID 0 b t f 1184 1184 1186 0 0 0 0 timestamptz_mi - - )); -DATA(insert OID = 1329 ( "-" PGUID 0 b t f 1184 1186 1184 0 0 0 0 timestamptz_mi_span - - )); +DATA(insert OID = 1320 ( "=" 10 PGUID 0 b t f 1184 1184 16 1320 1321 1322 1322 timestamp_eq eqsel eqjoinsel )); +DATA(insert OID = 1321 ( "<>" 10 PGUID 0 b t f 1184 1184 16 1321 1320 0 0 timestamp_ne neqsel neqjoinsel )); +DATA(insert OID = 1322 ( "<" 10 PGUID 0 b t f 1184 1184 16 1324 1325 0 0 timestamp_lt scalarltsel scalarltjoinsel)); +DATA(insert OID = 1323 ( "<=" 10 PGUID 0 b t f 1184 1184 16 1325 1324 0 0 timestamp_le scalarltsel scalarltjoinsel)); +DATA(insert OID = 1324 ( ">" 10 PGUID 0 b t f 1184 1184 16 1322 1323 0 0 timestamp_gt scalargtsel scalargtjoinsel)); +DATA(insert OID = 1325 ( ">=" 10 PGUID 0 b t f 1184 1184 16 1323 1322 0 0 timestamp_ge scalargtsel scalargtjoinsel)); +DATA(insert OID = 1327 ( "+" 10 PGUID 0 b t f 1184 1186 1184 0 0 0 0 timestamptz_pl_span - - )); +DATA(insert OID = 1328 ( "-" 10 PGUID 0 b t f 1184 1184 1186 0 0 0 0 timestamptz_mi - - )); +DATA(insert OID = 1329 ( "-" 10 PGUID 0 b t f 1184 1186 1184 0 0 0 0 timestamptz_mi_span - - )); /* interval operators */ -DATA(insert OID = 1330 ( "=" PGUID 0 b t f 1186 1186 16 1330 1331 1332 1332 interval_eq eqsel eqjoinsel )); -DATA(insert OID = 1331 ( "<>" PGUID 0 b t f 1186 1186 16 1331 1330 0 0 interval_ne neqsel neqjoinsel )); -DATA(insert OID = 1332 ( "<" PGUID 0 b t f 1186 1186 16 1334 1335 0 0 interval_lt scalarltsel scalarltjoinsel)); -DATA(insert OID = 1333 ( "<=" PGUID 0 b t f 1186 1186 16 1335 1334 0 0 interval_le scalarltsel scalarltjoinsel)); -DATA(insert OID = 1334 ( ">" PGUID 0 b t f 1186 1186 16 1332 1333 0 0 interval_gt scalargtsel scalargtjoinsel)); -DATA(insert OID = 1335 ( ">=" PGUID 0 b t f 1186 1186 16 1333 1332 0 0 interval_ge scalargtsel scalargtjoinsel)); - -DATA(insert OID = 1336 ( "-" PGUID 0 l t f 0 1186 1186 0 0 0 0 interval_um - - )); -DATA(insert OID = 1337 ( "+" PGUID 0 b t f 1186 1186 1186 1337 0 0 0 interval_pl - - )); -DATA(insert OID = 1338 ( "-" PGUID 0 b t f 1186 1186 1186 0 0 0 0 interval_mi - - )); - -DATA(insert OID = 1360 ( "+" PGUID 0 b t f 1082 1083 1114 0 0 0 0 datetime_pl - - )); -DATA(insert OID = 1361 ( "+" PGUID 0 b t f 1082 1266 1184 0 0 0 0 datetimetz_pl - - )); -DATA(insert OID = 1363 ( "+" PGUID 0 b t f 1083 1082 1114 0 0 0 0 timedate_pl - - )); -DATA(insert OID = 1366 ( "+" PGUID 0 b t f 1266 1082 1184 0 0 0 0 timetzdate_pl - - )); +DATA(insert OID = 1330 ( "=" 10 PGUID 0 b t f 1186 1186 16 1330 1331 1332 1332 interval_eq eqsel eqjoinsel )); +DATA(insert OID = 1331 ( "<>" 10 PGUID 0 b t f 1186 1186 16 1331 1330 0 0 interval_ne neqsel neqjoinsel )); +DATA(insert OID = 1332 ( "<" 10 PGUID 0 b t f 1186 1186 16 1334 1335 0 0 interval_lt scalarltsel scalarltjoinsel)); +DATA(insert OID = 1333 ( "<=" 10 PGUID 0 b t f 1186 1186 16 1335 1334 0 0 interval_le scalarltsel scalarltjoinsel)); +DATA(insert OID = 1334 ( ">" 10 PGUID 0 b t f 1186 1186 16 1332 1333 0 0 interval_gt scalargtsel scalargtjoinsel)); +DATA(insert OID = 1335 ( ">=" 10 PGUID 0 b t f 1186 1186 16 1333 1332 0 0 interval_ge scalargtsel scalargtjoinsel)); + +DATA(insert OID = 1336 ( "-" 10 PGUID 0 l t f 0 1186 1186 0 0 0 0 interval_um - - )); +DATA(insert OID = 1337 ( "+" 10 PGUID 0 b t f 1186 1186 1186 1337 0 0 0 interval_pl - - )); +DATA(insert OID = 1338 ( "-" 10 PGUID 0 b t f 1186 1186 1186 0 0 0 0 interval_mi - - )); + +DATA(insert OID = 1360 ( "+" 10 PGUID 0 b t f 1082 1083 1114 0 0 0 0 datetime_pl - - )); +DATA(insert OID = 1361 ( "+" 10 PGUID 0 b t f 1082 1266 1184 0 0 0 0 datetimetz_pl - - )); +DATA(insert OID = 1363 ( "+" 10 PGUID 0 b t f 1083 1082 1114 0 0 0 0 timedate_pl - - )); +DATA(insert OID = 1366 ( "+" 10 PGUID 0 b t f 1266 1082 1184 0 0 0 0 timetzdate_pl - - )); -DATA(insert OID = 1399 ( "-" PGUID 0 b t f 1083 1083 1186 0 0 0 0 time_mi_time - - )); +DATA(insert OID = 1399 ( "-" 10 PGUID 0 b t f 1083 1083 1186 0 0 0 0 time_mi_time - - )); /* additional geometric operators - thomas 97/04/18 */ -DATA(insert OID = 1420 ( "@@" PGUID 0 l t f 0 718 600 0 0 0 0 circle_center - - )); -DATA(insert OID = 1500 ( "=" PGUID 0 b t f 718 718 16 1500 1501 1502 1502 circle_eq eqsel eqjoinsel )); -DATA(insert OID = 1501 ( "<>" PGUID 0 b t f 718 718 16 1501 1500 0 0 circle_ne neqsel neqjoinsel )); -DATA(insert OID = 1502 ( "<" PGUID 0 b t f 718 718 16 1503 1505 0 0 circle_lt areasel areajoinsel )); -DATA(insert OID = 1503 ( ">" PGUID 0 b t f 718 718 16 1502 1504 0 0 circle_gt areasel areajoinsel )); -DATA(insert OID = 1504 ( "<=" PGUID 0 b t f 718 718 16 1505 1503 0 0 circle_le areasel areajoinsel )); -DATA(insert OID = 1505 ( ">=" PGUID 0 b t f 718 718 16 1504 1502 0 0 circle_ge areasel areajoinsel )); - -DATA(insert OID = 1506 ( "<<" PGUID 0 b t f 718 718 16 0 0 0 0 circle_left positionsel positionjoinsel)); -DATA(insert OID = 1507 ( "&<" PGUID 0 b t f 718 718 16 0 0 0 0 circle_overleft positionsel positionjoinsel)); -DATA(insert OID = 1508 ( "&>" PGUID 0 b t f 718 718 16 0 0 0 0 circle_overright positionsel positionjoinsel)); -DATA(insert OID = 1509 ( ">>" PGUID 0 b t f 718 718 16 0 0 0 0 circle_right positionsel positionjoinsel)); -DATA(insert OID = 1510 ( "@" PGUID 0 b t f 718 718 16 1511 0 0 0 circle_contained contsel contjoinsel)); -DATA(insert OID = 1511 ( "~" PGUID 0 b t f 718 718 16 1510 0 0 0 circle_contain contsel contjoinsel)); -DATA(insert OID = 1512 ( "~=" PGUID 0 b t f 718 718 16 1512 0 0 0 circle_same eqsel eqjoinsel )); -DATA(insert OID = 1513 ( "&&" PGUID 0 b t f 718 718 16 1513 0 0 0 circle_overlap areasel areajoinsel)); -DATA(insert OID = 1514 ( ">^" PGUID 0 b t f 718 718 16 0 0 0 0 circle_above positionsel positionjoinsel)); -DATA(insert OID = 1515 ( "<^" PGUID 0 b t f 718 718 16 0 0 0 0 circle_below positionsel positionjoinsel)); - -DATA(insert OID = 1516 ( "+" PGUID 0 b t f 718 600 718 0 0 0 0 circle_add_pt - - )); -DATA(insert OID = 1517 ( "-" PGUID 0 b t f 718 600 718 0 0 0 0 circle_sub_pt - - )); -DATA(insert OID = 1518 ( "*" PGUID 0 b t f 718 600 718 0 0 0 0 circle_mul_pt - - )); -DATA(insert OID = 1519 ( "/" PGUID 0 b t f 718 600 718 0 0 0 0 circle_div_pt - - )); - -DATA(insert OID = 1520 ( "<->" PGUID 0 b t f 718 718 701 1520 0 0 0 circle_distance - - )); -DATA(insert OID = 1521 ( "#" PGUID 0 l t f 0 604 23 0 0 0 0 poly_npoints - - )); -DATA(insert OID = 1522 ( "<->" PGUID 0 b t f 600 718 701 0 0 0 0 dist_pc - - )); -DATA(insert OID = 1523 ( "<->" PGUID 0 b t f 718 604 701 0 0 0 0 dist_cpoly - - )); +DATA(insert OID = 1420 ( "@@" 10 PGUID 0 l t f 0 718 600 0 0 0 0 circle_center - - )); +DATA(insert OID = 1500 ( "=" 10 PGUID 0 b t f 718 718 16 1500 1501 1502 1502 circle_eq eqsel eqjoinsel )); +DATA(insert OID = 1501 ( "<>" 10 PGUID 0 b t f 718 718 16 1501 1500 0 0 circle_ne neqsel neqjoinsel )); +DATA(insert OID = 1502 ( "<" 10 PGUID 0 b t f 718 718 16 1503 1505 0 0 circle_lt areasel areajoinsel )); +DATA(insert OID = 1503 ( ">" 10 PGUID 0 b t f 718 718 16 1502 1504 0 0 circle_gt areasel areajoinsel )); +DATA(insert OID = 1504 ( "<=" 10 PGUID 0 b t f 718 718 16 1505 1503 0 0 circle_le areasel areajoinsel)); +DATA(insert OID = 1505 ( ">=" 10 PGUID 0 b t f 718 718 16 1504 1502 0 0 circle_ge areasel areajoinsel)); + +DATA(insert OID = 1506 ( "<<" 10 PGUID 0 b t f 718 718 16 0 0 0 0 circle_left positionsel positionjoinsel)); +DATA(insert OID = 1507 ( "&<" 10 PGUID 0 b t f 718 718 16 0 0 0 0 circle_overleft positionselpositionjoinsel )); +DATA(insert OID = 1508 ( "&>" 10 PGUID 0 b t f 718 718 16 0 0 0 0 circle_overright positionselpositionjoinsel )); +DATA(insert OID = 1509 ( ">>" 10 PGUID 0 b t f 718 718 16 0 0 0 0 circle_right positionsel positionjoinsel)); +DATA(insert OID = 1510 ( "@" 10 PGUID 0 b t f 718 718 16 1511 0 0 0 circle_contained contsel contjoinsel)); +DATA(insert OID = 1511 ( "~" 10 PGUID 0 b t f 718 718 16 1510 0 0 0 circle_contain contsel contjoinsel)); +DATA(insert OID = 1512 ( "~=" 10 PGUID 0 b t f 718 718 16 1512 0 0 0 circle_same eqsel eqjoinsel )); +DATA(insert OID = 1513 ( "&&" 10 PGUID 0 b t f 718 718 16 1513 0 0 0 circle_overlap areasel areajoinsel)); +DATA(insert OID = 1514 ( ">^" 10 PGUID 0 b t f 718 718 16 0 0 0 0 circle_above positionsel positionjoinsel)); +DATA(insert OID = 1515 ( "<^" 10 PGUID 0 b t f 718 718 16 0 0 0 0 circle_below positionsel positionjoinsel)); + +DATA(insert OID = 1516 ( "+" 10 PGUID 0 b t f 718 600 718 0 0 0 0 circle_add_pt - - )); +DATA(insert OID = 1517 ( "-" 10 PGUID 0 b t f 718 600 718 0 0 0 0 circle_sub_pt - - )); +DATA(insert OID = 1518 ( "*" 10 PGUID 0 b t f 718 600 718 0 0 0 0 circle_mul_pt - - )); +DATA(insert OID = 1519 ( "/" 10 PGUID 0 b t f 718 600 718 0 0 0 0 circle_div_pt - - )); + +DATA(insert OID = 1520 ( "<->" 10 PGUID 0 b t f 718 718 701 1520 0 0 0 circle_distance - - )); +DATA(insert OID = 1521 ( "#" 10 PGUID 0 l t f 0 604 23 0 0 0 0 poly_npoints - - )); +DATA(insert OID = 1522 ( "<->" 10 PGUID 0 b t f 600 718 701 0 0 0 0 dist_pc - - )); +DATA(insert OID = 1523 ( "<->" 10 PGUID 0 b t f 718 604 701 0 0 0 0 dist_cpoly - - )); /* additional geometric operators - thomas 1997-07-09 */ -DATA(insert OID = 1524 ( "<->" PGUID 0 b t f 628 603 701 0 0 0 0 dist_lb - - )); +DATA(insert OID = 1524 ( "<->" 10 PGUID 0 b t f 628 603 701 0 0 0 0 dist_lb - - )); -DATA(insert OID = 1525 ( "?#" PGUID 0 b t f 601 601 16 1525 0 0 0 lseg_intersect - - )); -DATA(insert OID = 1526 ( "?||" PGUID 0 b t f 601 601 16 1526 0 0 0 lseg_parallel - - )); -DATA(insert OID = 1527 ( "?-|" PGUID 0 b t f 601 601 16 1527 0 0 0 lseg_perp - - )); -DATA(insert OID = 1528 ( "?-" PGUID 0 l t f 0 601 16 0 0 0 0 lseg_horizontal - - )); -DATA(insert OID = 1529 ( "?|" PGUID 0 l t f 0 601 16 0 0 0 0 lseg_vertical - - )); -DATA(insert OID = 1535 ( "=" PGUID 0 b t f 601 601 16 1535 1586 0 0 lseg_eq eqsel eqjoinsel )); -DATA(insert OID = 1536 ( "#" PGUID 0 b t f 601 601 600 1536 0 0 0 lseg_interpt - - )); -DATA(insert OID = 1537 ( "?#" PGUID 0 b t f 601 628 16 0 0 0 0 inter_sl - - )); -DATA(insert OID = 1538 ( "?#" PGUID 0 b t f 601 603 16 0 0 0 0 inter_sb - - )); -DATA(insert OID = 1539 ( "?#" PGUID 0 b t f 628 603 16 0 0 0 0 inter_lb - - )); - -DATA(insert OID = 1546 ( "@" PGUID 0 b t f 600 628 16 0 0 0 0 on_pl - - )); -DATA(insert OID = 1547 ( "@" PGUID 0 b t f 600 601 16 0 0 0 0 on_ps - - )); -DATA(insert OID = 1548 ( "@" PGUID 0 b t f 601 628 16 0 0 0 0 on_sl - - )); -DATA(insert OID = 1549 ( "@" PGUID 0 b t f 601 603 16 0 0 0 0 on_sb - - )); - -DATA(insert OID = 1557 ( "##" PGUID 0 b t f 600 628 600 0 0 0 0 close_pl - - )); -DATA(insert OID = 1558 ( "##" PGUID 0 b t f 600 601 600 0 0 0 0 close_ps - - )); -DATA(insert OID = 1559 ( "##" PGUID 0 b t f 600 603 600 0 0 0 0 close_pb - - )); - -DATA(insert OID = 1566 ( "##" PGUID 0 b t f 601 628 600 0 0 0 0 close_sl - - )); -DATA(insert OID = 1567 ( "##" PGUID 0 b t f 601 603 600 0 0 0 0 close_sb - - )); -DATA(insert OID = 1568 ( "##" PGUID 0 b t f 628 603 600 0 0 0 0 close_lb - - )); -DATA(insert OID = 1577 ( "##" PGUID 0 b t f 628 601 600 0 0 0 0 close_ls - - )); -DATA(insert OID = 1578 ( "##" PGUID 0 b t f 601 601 600 0 0 0 0 close_lseg - - )); -DATA(insert OID = 1583 ( "*" PGUID 0 b t f 1186 701 1186 0 0 0 0 interval_mul - - )); -DATA(insert OID = 1584 ( "*" PGUID 0 b t f 701 1186 1186 0 0 0 0 mul_d_interval - - )); -DATA(insert OID = 1585 ( "/" PGUID 0 b t f 1186 701 1186 0 0 0 0 interval_div - - )); - -DATA(insert OID = 1586 ( "<>" PGUID 0 b t f 601 601 16 1586 1535 0 0 lseg_ne neqsel neqjoinsel )); -DATA(insert OID = 1587 ( "<" PGUID 0 b t f 601 601 16 1589 1590 0 0 lseg_lt - - )); -DATA(insert OID = 1588 ( "<=" PGUID 0 b t f 601 601 16 1590 1589 0 0 lseg_le - - )); -DATA(insert OID = 1589 ( ">" PGUID 0 b t f 601 601 16 1587 1588 0 0 lseg_gt - - )); -DATA(insert OID = 1590 ( ">=" PGUID 0 b t f 601 601 16 1588 1587 0 0 lseg_ge - - )); - -DATA(insert OID = 1591 ( "@-@" PGUID 0 l t f 0 601 701 0 0 0 0 lseg_length - - )); - -DATA(insert OID = 1611 ( "?#" PGUID 0 b t f 628 628 16 1611 0 0 0 line_intersect - - )); -DATA(insert OID = 1612 ( "?||" PGUID 0 b t f 628 628 16 1612 0 0 0 line_parallel - - )); -DATA(insert OID = 1613 ( "?-|" PGUID 0 b t f 628 628 16 1613 0 0 0 line_perp - - )); -DATA(insert OID = 1614 ( "?-" PGUID 0 l t f 0 628 16 0 0 0 0 line_horizontal - - )); -DATA(insert OID = 1615 ( "?|" PGUID 0 l t f 0 628 16 0 0 0 0 line_vertical - - )); -DATA(insert OID = 1616 ( "=" PGUID 0 b t f 628 628 16 1616 0 0 0 line_eq eqsel eqjoinsel )); -DATA(insert OID = 1617 ( "#" PGUID 0 b t f 628 628 600 1617 0 0 0 line_interpt - - )); +DATA(insert OID = 1525 ( "?#" 10 PGUID 0 b t f 601 601 16 1525 0 0 0 lseg_intersect - - )); +DATA(insert OID = 1526 ( "?||" 10 PGUID 0 b t f 601 601 16 1526 0 0 0 lseg_parallel - - )); +DATA(insert OID = 1527 ( "?-|" 10 PGUID 0 b t f 601 601 16 1527 0 0 0 lseg_perp - - )); +DATA(insert OID = 1528 ( "?-" 10 PGUID 0 l t f 0 601 16 0 0 0 0 lseg_horizontal - - )); +DATA(insert OID = 1529 ( "?|" 10 PGUID 0 l t f 0 601 16 0 0 0 0 lseg_vertical - - )); +DATA(insert OID = 1535 ( "=" 10 PGUID 0 b t f 601 601 16 1535 1586 0 0 lseg_eq eqsel eqjoinsel )); +DATA(insert OID = 1536 ( "#" 10 PGUID 0 b t f 601 601 600 1536 0 0 0 lseg_interpt - - )); +DATA(insert OID = 1537 ( "?#" 10 PGUID 0 b t f 601 628 16 0 0 0 0 inter_sl - - )); +DATA(insert OID = 1538 ( "?#" 10 PGUID 0 b t f 601 603 16 0 0 0 0 inter_sb - - )); +DATA(insert OID = 1539 ( "?#" 10 PGUID 0 b t f 628 603 16 0 0 0 0 inter_lb - - )); + +DATA(insert OID = 1546 ( "@" 10 PGUID 0 b t f 600 628 16 0 0 0 0 on_pl - - )); +DATA(insert OID = 1547 ( "@" 10 PGUID 0 b t f 600 601 16 0 0 0 0 on_ps - - )); +DATA(insert OID = 1548 ( "@" 10 PGUID 0 b t f 601 628 16 0 0 0 0 on_sl - - )); +DATA(insert OID = 1549 ( "@" 10 PGUID 0 b t f 601 603 16 0 0 0 0 on_sb - - )); + +DATA(insert OID = 1557 ( "##" 10 PGUID 0 b t f 600 628 600 0 0 0 0 close_pl - - )); +DATA(insert OID = 1558 ( "##" 10 PGUID 0 b t f 600 601 600 0 0 0 0 close_ps - - )); +DATA(insert OID = 1559 ( "##" 10 PGUID 0 b t f 600 603 600 0 0 0 0 close_pb - - )); + +DATA(insert OID = 1566 ( "##" 10 PGUID 0 b t f 601 628 600 0 0 0 0 close_sl - - )); +DATA(insert OID = 1567 ( "##" 10 PGUID 0 b t f 601 603 600 0 0 0 0 close_sb - - )); +DATA(insert OID = 1568 ( "##" 10 PGUID 0 b t f 628 603 600 0 0 0 0 close_lb - - )); +DATA(insert OID = 1577 ( "##" 10 PGUID 0 b t f 628 601 600 0 0 0 0 close_ls - - )); +DATA(insert OID = 1578 ( "##" 10 PGUID 0 b t f 601 601 600 0 0 0 0 close_lseg - - )); +DATA(insert OID = 1583 ( "*" 10 PGUID 0 b t f 1186 701 1186 0 0 0 0 interval_mul - - )); +DATA(insert OID = 1584 ( "*" 10 PGUID 0 b t f 701 1186 1186 0 0 0 0 mul_d_interval - - )); +DATA(insert OID = 1585 ( "/" 10 PGUID 0 b t f 1186 701 1186 0 0 0 0 interval_div - - )); + +DATA(insert OID = 1586 ( "<>" 10 PGUID 0 b t f 601 601 16 1586 1535 0 0 lseg_ne neqsel neqjoinsel )); +DATA(insert OID = 1587 ( "<" 10 PGUID 0 b t f 601 601 16 1589 1590 0 0 lseg_lt - - )); +DATA(insert OID = 1588 ( "<=" 10 PGUID 0 b t f 601 601 16 1590 1589 0 0 lseg_le - - )); +DATA(insert OID = 1589 ( ">" 10 PGUID 0 b t f 601 601 16 1587 1588 0 0 lseg_gt - - )); +DATA(insert OID = 1590 ( ">=" 10 PGUID 0 b t f 601 601 16 1588 1587 0 0 lseg_ge - - )); + +DATA(insert OID = 1591 ( "@-@" 10 PGUID 0 l t f 0 601 701 0 0 0 0 lseg_length - - )); + +DATA(insert OID = 1611 ( "?#" 10 PGUID 0 b t f 628 628 16 1611 0 0 0 line_intersect - - )); +DATA(insert OID = 1612 ( "?||" 10 PGUID 0 b t f 628 628 16 1612 0 0 0 line_parallel - - )); +DATA(insert OID = 1613 ( "?-|" 10 PGUID 0 b t f 628 628 16 1613 0 0 0 line_perp - - )); +DATA(insert OID = 1614 ( "?-" 10 PGUID 0 l t f 0 628 16 0 0 0 0 line_horizontal - - )); +DATA(insert OID = 1615 ( "?|" 10 PGUID 0 l t f 0 628 16 0 0 0 0 line_vertical - - )); +DATA(insert OID = 1616 ( "=" 10 PGUID 0 b t f 628 628 16 1616 0 0 0 line_eq eqsel eqjoinsel )); +DATA(insert OID = 1617 ( "#" 10 PGUID 0 b t f 628 628 600 1617 0 0 0 line_interpt - - )); /* MAC type */ -DATA(insert OID = 1220 ( "=" PGUID 0 b t f 829 829 16 1220 1221 1222 1222 macaddr_eq eqsel eqjoinsel )); -DATA(insert OID = 1221 ( "<>" PGUID 0 b t f 829 829 16 1221 1220 0 0 macaddr_ne neqsel neqjoinsel )); -DATA(insert OID = 1222 ( "<" PGUID 0 b t f 829 829 16 1224 1225 0 0 macaddr_lt scalarltsel scalarltjoinsel)); -DATA(insert OID = 1223 ( "<=" PGUID 0 b t f 829 829 16 1225 1224 0 0 macaddr_le scalarltsel scalarltjoinsel)); -DATA(insert OID = 1224 ( ">" PGUID 0 b t f 829 829 16 1222 1223 0 0 macaddr_gt scalargtsel scalargtjoinsel)); -DATA(insert OID = 1225 ( ">=" PGUID 0 b t f 829 829 16 1223 1222 0 0 macaddr_ge scalargtsel scalargtjoinsel)); +DATA(insert OID = 1220 ( "=" 10 PGUID 0 b t f 829 829 16 1220 1221 1222 1222 macaddr_eq eqsel eqjoinsel )); +DATA(insert OID = 1221 ( "<>" 10 PGUID 0 b t f 829 829 16 1221 1220 0 0 macaddr_ne neqsel neqjoinsel )); +DATA(insert OID = 1222 ( "<" 10 PGUID 0 b t f 829 829 16 1224 1225 0 0 macaddr_lt scalarltsel scalarltjoinsel)); +DATA(insert OID = 1223 ( "<=" 10 PGUID 0 b t f 829 829 16 1225 1224 0 0 macaddr_le scalarltsel scalarltjoinsel)); +DATA(insert OID = 1224 ( ">" 10 PGUID 0 b t f 829 829 16 1222 1223 0 0 macaddr_gt scalargtsel scalargtjoinsel)); +DATA(insert OID = 1225 ( ">=" 10 PGUID 0 b t f 829 829 16 1223 1222 0 0 macaddr_ge scalargtsel scalargtjoinsel)); /* INET type */ -DATA(insert OID = 1201 ( "=" PGUID 0 b t f 869 869 16 1201 1202 1203 1203 network_eq eqsel eqjoinsel )); -DATA(insert OID = 1202 ( "<>" PGUID 0 b t f 869 869 16 1202 1201 0 0 network_ne neqsel neqjoinsel )); -DATA(insert OID = 1203 ( "<" PGUID 0 b t f 869 869 16 1205 1206 0 0 network_lt scalarltsel scalarltjoinsel)); -DATA(insert OID = 1204 ( "<=" PGUID 0 b t f 869 869 16 1206 1205 0 0 network_le scalarltsel scalarltjoinsel)); -DATA(insert OID = 1205 ( ">" PGUID 0 b t f 869 869 16 1203 1204 0 0 network_gt scalargtsel scalargtjoinsel)); -DATA(insert OID = 1206 ( ">=" PGUID 0 b t f 869 869 16 1204 1203 0 0 network_ge scalargtsel scalargtjoinsel)); -DATA(insert OID = 931 ( "<<" PGUID 0 b t f 869 869 16 933 0 0 0 network_sub - - )); +DATA(insert OID = 1201 ( "=" 10 PGUID 0 b t f 869 869 16 1201 1202 1203 1203 network_eq eqsel eqjoinsel )); +DATA(insert OID = 1202 ( "<>" 10 PGUID 0 b t f 869 869 16 1202 1201 0 0 network_ne neqsel neqjoinsel )); +DATA(insert OID = 1203 ( "<" 10 PGUID 0 b t f 869 869 16 1205 1206 0 0 network_lt scalarltsel scalarltjoinsel)); +DATA(insert OID = 1204 ( "<=" 10 PGUID 0 b t f 869 869 16 1206 1205 0 0 network_le scalarltsel scalarltjoinsel)); +DATA(insert OID = 1205 ( ">" 10 PGUID 0 b t f 869 869 16 1203 1204 0 0 network_gt scalargtsel scalargtjoinsel)); +DATA(insert OID = 1206 ( ">=" 10 PGUID 0 b t f 869 869 16 1204 1203 0 0 network_ge scalargtsel scalargtjoinsel)); +DATA(insert OID = 931 ( "<<" 10 PGUID 0 b t f 869 869 16 933 0 0 0 network_sub - - )); #define OID_INET_SUB_OP 931 -DATA(insert OID = 932 ( "<<=" PGUID 0 b t f 869 869 16 934 0 0 0 network_subeq - - )); +DATA(insert OID = 932 ( "<<=" 10 PGUID 0 b t f 869 869 16 934 0 0 0 network_subeq - - )); #define OID_INET_SUBEQ_OP 932 -DATA(insert OID = 933 ( ">>" PGUID 0 b t f 869 869 16 931 0 0 0 network_sup - - )); +DATA(insert OID = 933 ( ">>" 10 PGUID 0 b t f 869 869 16 931 0 0 0 network_sup - - )); #define OID_INET_SUP_OP 933 -DATA(insert OID = 934 ( ">>=" PGUID 0 b t f 869 869 16 932 0 0 0 network_supeq - - )); +DATA(insert OID = 934 ( ">>=" 10 PGUID 0 b t f 869 869 16 932 0 0 0 network_supeq - - )); #define OID_INET_SUPEQ_OP 934 /* CIDR type */ -DATA(insert OID = 820 ( "=" PGUID 0 b t f 650 650 16 820 821 822 822 network_eq eqsel eqjoinsel )); -DATA(insert OID = 821 ( "<>" PGUID 0 b t f 650 650 16 821 820 0 0 network_ne neqsel neqjoinsel )); -DATA(insert OID = 822 ( "<" PGUID 0 b t f 650 650 16 824 825 0 0 network_lt scalarltsel scalarltjoinsel )); -DATA(insert OID = 823 ( "<=" PGUID 0 b t f 650 650 16 825 824 0 0 network_le scalarltsel scalarltjoinsel)); -DATA(insert OID = 824 ( ">" PGUID 0 b t f 650 650 16 822 823 0 0 network_gt scalargtsel scalargtjoinsel )); -DATA(insert OID = 825 ( ">=" PGUID 0 b t f 650 650 16 823 822 0 0 network_ge scalargtsel scalargtjoinsel)); -DATA(insert OID = 826 ( "<<" PGUID 0 b t f 650 650 16 828 0 0 0 network_sub - - )); +DATA(insert OID = 820 ( "=" 10 PGUID 0 b t f 650 650 16 820 821 822 822 network_eq eqsel eqjoinsel )); +DATA(insert OID = 821 ( "<>" 10 PGUID 0 b t f 650 650 16 821 820 0 0 network_ne neqsel neqjoinsel )); +DATA(insert OID = 822 ( "<" 10 PGUID 0 b t f 650 650 16 824 825 0 0 network_lt scalarltsel scalarltjoinsel)); +DATA(insert OID = 823 ( "<=" 10 PGUID 0 b t f 650 650 16 825 824 0 0 network_le scalarltsel scalarltjoinsel)); +DATA(insert OID = 824 ( ">" 10 PGUID 0 b t f 650 650 16 822 823 0 0 network_gt scalargtsel scalargtjoinsel)); +DATA(insert OID = 825 ( ">=" 10 PGUID 0 b t f 650 650 16 823 822 0 0 network_ge scalargtsel scalargtjoinsel)); +DATA(insert OID = 826 ( "<<" 10 PGUID 0 b t f 650 650 16 828 0 0 0 network_sub - - )); #define OID_CIDR_SUB_OP 826 -DATA(insert OID = 827 ( "<<=" PGUID 0 b t f 650 650 16 1004 0 0 0 network_subeq - - )); +DATA(insert OID = 827 ( "<<=" 10 PGUID 0 b t f 650 650 16 1004 0 0 0 network_subeq - - )); #define OID_CIDR_SUBEQ_OP 827 -DATA(insert OID = 828 ( ">>" PGUID 0 b t f 650 650 16 826 0 0 0 network_sup - - )); +DATA(insert OID = 828 ( ">>" 10 PGUID 0 b t f 650 650 16 826 0 0 0 network_sup - - )); #define OID_CIDR_SUP_OP 828 -DATA(insert OID = 1004 ( ">>=" PGUID 0 b t f 650 650 16 827 0 0 0 network_supeq - - )); +DATA(insert OID = 1004 ( ">>=" 10 PGUID 0 b t f 650 650 16 827 0 0 0 network_supeq - - )); #define OID_CIDR_SUPEQ_OP 1004 /* case-insensitive LIKE hacks */ -DATA(insert OID = 1625 ( "~~*" PGUID 0 b t f 19 25 16 0 1626 0 0 nameiclike iclikesel iclikejoinsel )); +DATA(insert OID = 1625 ( "~~*" 10 PGUID 0 b t f 19 25 16 0 1626 0 0 nameiclike iclikesel iclikejoinsel )); #define OID_NAME_ICLIKE_OP 1625 -DATA(insert OID = 1626 ( "!~~*" PGUID 0 b t f 19 25 16 0 1625 0 0 nameicnlike icnlikesel icnlikejoinsel )); -DATA(insert OID = 1627 ( "~~*" PGUID 0 b t f 25 25 16 0 1628 0 0 texticlike iclikesel iclikejoinsel )); +DATA(insert OID = 1626 ( "!~~*" 10 PGUID 0 b t f 19 25 16 0 1625 0 0 nameicnlike icnlikesel icnlikejoinsel )); +DATA(insert OID = 1627 ( "~~*" 10 PGUID 0 b t f 25 25 16 0 1628 0 0 texticlike iclikesel iclikejoinsel )); #define OID_TEXT_ICLIKE_OP 1627 -DATA(insert OID = 1628 ( "!~~*" PGUID 0 b t f 25 25 16 0 1627 0 0 texticnlike icnlikesel icnlikejoinsel )); -DATA(insert OID = 1629 ( "~~*" PGUID 0 b t f 1042 25 16 0 1630 0 0 texticlike iclikesel iclikejoinsel )); +DATA(insert OID = 1628 ( "!~~*" 10 PGUID 0 b t f 25 25 16 0 1627 0 0 texticnlike icnlikesel icnlikejoinsel )); +DATA(insert OID = 1629 ( "~~*" 10 PGUID 0 b t f 1042 25 16 0 1630 0 0 texticlike iclikesel iclikejoinsel )); #define OID_BPCHAR_ICLIKE_OP 1629 -DATA(insert OID = 1630 ( "!~~*" PGUID 0 b t f 1042 25 16 0 1629 0 0 texticnlike icnlikesel icnlikejoinsel )); -DATA(insert OID = 1631 ( "~~*" PGUID 0 b t f 1043 25 16 0 1632 0 0 texticlike iclikesel iclikejoinsel )); +DATA(insert OID = 1630 ( "!~~*" 10 PGUID 0 b t f 1042 25 16 0 1629 0 0 texticnlike icnlikesel icnlikejoinsel )); +DATA(insert OID = 1631 ( "~~*" 10 PGUID 0 b t f 1043 25 16 0 1632 0 0 texticlike iclikesel iclikejoinsel )); #define OID_VARCHAR_ICLIKE_OP 1631 -DATA(insert OID = 1632 ( "!~~*" PGUID 0 b t f 1043 25 16 0 1631 0 0 texticnlike icnlikesel icnlikejoinsel )); +DATA(insert OID = 1632 ( "!~~*" 10 PGUID 0 b t f 1043 25 16 0 1631 0 0 texticnlike icnlikesel icnlikejoinsel )); /* int4 vs oid comparisons --- use oid (unsigned) comparison */ -DATA(insert OID = 1656 ( "<>" PGUID 0 b t f 23 26 16 1661 1136 0 0 oidne neqsel neqjoinsel )); -DATA(insert OID = 1657 ( "<" PGUID 0 b t f 23 26 16 1663 1660 0 0 oidlt scalarltsel scalarltjoinsel )); -DATA(insert OID = 1658 ( ">" PGUID 0 b t f 23 26 16 1662 1659 0 0 oidgt scalargtsel scalargtjoinsel )); -DATA(insert OID = 1659 ( "<=" PGUID 0 b t f 23 26 16 1665 1658 0 0 oidle scalarltsel scalarltjoinsel )); -DATA(insert OID = 1660 ( ">=" PGUID 0 b t f 23 26 16 1664 1657 0 0 oidge scalargtsel scalargtjoinsel )); -DATA(insert OID = 1661 ( "<>" PGUID 0 b t f 26 23 16 1656 1137 0 0 oidne neqsel neqjoinsel )); -DATA(insert OID = 1662 ( "<" PGUID 0 b t f 26 23 16 1658 1665 0 0 oidlt scalarltsel scalarltjoinsel )); -DATA(insert OID = 1663 ( ">" PGUID 0 b t f 26 23 16 1657 1664 0 0 oidgt scalargtsel scalargtjoinsel )); -DATA(insert OID = 1664 ( "<=" PGUID 0 b t f 26 23 16 1660 1663 0 0 oidle scalarltsel scalarltjoinsel )); -DATA(insert OID = 1665 ( ">=" PGUID 0 b t f 26 23 16 1659 1662 0 0 oidge scalargtsel scalargtjoinsel )); +DATA(insert OID = 1656 ( "<>" 10 PGUID 0 b t f 23 26 16 1661 1136 0 0 oidne neqsel neqjoinsel )); +DATA(insert OID = 1657 ( "<" 10 PGUID 0 b t f 23 26 16 1663 1660 0 0 oidlt scalarltsel scalarltjoinsel )); +DATA(insert OID = 1658 ( ">" 10 PGUID 0 b t f 23 26 16 1662 1659 0 0 oidgt scalargtsel scalargtjoinsel )); +DATA(insert OID = 1659 ( "<=" 10 PGUID 0 b t f 23 26 16 1665 1658 0 0 oidle scalarltsel scalarltjoinsel )); +DATA(insert OID = 1660 ( ">=" 10 PGUID 0 b t f 23 26 16 1664 1657 0 0 oidge scalargtsel scalargtjoinsel )); +DATA(insert OID = 1661 ( "<>" 10 PGUID 0 b t f 26 23 16 1656 1137 0 0 oidne neqsel neqjoinsel )); +DATA(insert OID = 1662 ( "<" 10 PGUID 0 b t f 26 23 16 1658 1665 0 0 oidlt scalarltsel scalarltjoinsel )); +DATA(insert OID = 1663 ( ">" 10 PGUID 0 b t f 26 23 16 1657 1664 0 0 oidgt scalargtsel scalargtjoinsel )); +DATA(insert OID = 1664 ( "<=" 10 PGUID 0 b t f 26 23 16 1660 1663 0 0 oidle scalarltsel scalarltjoinsel )); +DATA(insert OID = 1665 ( ">=" 10 PGUID 0 b t f 26 23 16 1659 1662 0 0 oidge scalargtsel scalargtjoinsel )); /* NUMERIC type - OID's 1700-1799 */ -DATA(insert OID = 1751 ( "-" PGUID 0 l t f 0 1700 1700 0 0 0 0 numeric_uminus - - )); -DATA(insert OID = 1752 ( "=" PGUID 0 b t f 1700 1700 16 1752 1753 1754 1754 numeric_eq eqsel eqjoinsel )); -DATA(insert OID = 1753 ( "<>" PGUID 0 b t f 1700 1700 16 1753 1752 0 0 numeric_ne neqsel neqjoinsel )); -DATA(insert OID = 1754 ( "<" PGUID 0 b t f 1700 1700 16 1756 1757 0 0 numeric_lt scalarltsel scalarltjoinsel)); -DATA(insert OID = 1755 ( "<=" PGUID 0 b t f 1700 1700 16 1757 1756 0 0 numeric_le scalarltsel scalarltjoinsel)); -DATA(insert OID = 1756 ( ">" PGUID 0 b t f 1700 1700 16 1754 1755 0 0 numeric_gt scalargtsel scalargtjoinsel)); -DATA(insert OID = 1757 ( ">=" PGUID 0 b t f 1700 1700 16 1755 1754 0 0 numeric_ge scalargtsel scalargtjoinsel)); -DATA(insert OID = 1758 ( "+" PGUID 0 b t f 1700 1700 1700 1758 0 0 0 numeric_add - - )); -DATA(insert OID = 1759 ( "-" PGUID 0 b t f 1700 1700 1700 0 0 0 0 numeric_sub - - )); -DATA(insert OID = 1760 ( "*" PGUID 0 b t f 1700 1700 1700 1760 0 0 0 numeric_mul - - )); -DATA(insert OID = 1761 ( "/" PGUID 0 b t f 1700 1700 1700 0 0 0 0 numeric_div - - )); -DATA(insert OID = 1762 ( "%" PGUID 0 b t f 1700 1700 1700 0 0 0 0 numeric_mod - - )); -DATA(insert OID = 1763 ( "@" PGUID 0 l t f 0 1700 1700 0 0 0 0 numeric_abs - - )); - -DATA(insert OID = 1784 ( "=" PGUID 0 b t f 1560 1560 16 1784 1785 1786 1786 biteq eqsel eqjoinsel )); -DATA(insert OID = 1785 ( "<>" PGUID 0 b t f 1560 1560 16 1785 1784 0 0 bitne neqsel neqjoinsel )); -DATA(insert OID = 1786 ( "<" PGUID 0 b t f 1560 1560 16 1787 1789 0 0 bitlt scalarltsel scalarltjoinsel)); -DATA(insert OID = 1787 ( ">" PGUID 0 b t f 1560 1560 16 1786 1788 0 0 bitgt scalargtsel scalargtjoinsel)); -DATA(insert OID = 1788 ( "<=" PGUID 0 b t f 1560 1560 16 1789 1787 0 0 bitle scalarltsel scalarltjoinsel)); -DATA(insert OID = 1789 ( ">=" PGUID 0 b t f 1560 1560 16 1788 1786 0 0 bitge scalargtsel scalargtjoinsel)); -DATA(insert OID = 1791 ( "&" PGUID 0 b t f 1560 1560 1560 1791 0 0 0 bitand - - )); -DATA(insert OID = 1792 ( "|" PGUID 0 b t f 1560 1560 1560 1792 0 0 0 bitor - - )); -DATA(insert OID = 1793 ( "#" PGUID 0 b t f 1560 1560 1560 1793 0 0 0 bitxor - - )); -DATA(insert OID = 1794 ( "~" PGUID 0 l t f 0 1560 1560 0 0 0 0 bitnot - - )); -DATA(insert OID = 1795 ( "<<" PGUID 0 b t f 1560 23 1560 0 0 0 0 bitshiftleft - - )); -DATA(insert OID = 1796 ( ">>" PGUID 0 b t f 1560 23 1560 0 0 0 0 bitshiftright - - )); -DATA(insert OID = 1797 ( "||" PGUID 0 b t f 1560 1560 1560 0 0 0 0 bitcat - - )); - -DATA(insert OID = 1800 ( "+" PGUID 0 b t f 1083 1186 1083 0 0 0 0 time_pl_interval - - )); -DATA(insert OID = 1801 ( "-" PGUID 0 b t f 1083 1186 1083 0 0 0 0 time_mi_interval - - )); -DATA(insert OID = 1802 ( "+" PGUID 0 b t f 1266 1186 1266 0 0 0 0 timetz_pl_interval - - )); -DATA(insert OID = 1803 ( "-" PGUID 0 b t f 1266 1186 1266 0 0 0 0 timetz_mi_interval - - )); - -DATA(insert OID = 1804 ( "=" PGUID 0 b t f 1562 1562 16 1804 1805 1806 1806 varbiteq eqsel eqjoinsel )); -DATA(insert OID = 1805 ( "<>" PGUID 0 b t f 1562 1562 16 1805 1804 0 0 varbitne neqsel neqjoinsel )); -DATA(insert OID = 1806 ( "<" PGUID 0 b t f 1562 1562 16 1807 1809 0 0 varbitlt scalarltsel scalarltjoinsel)); -DATA(insert OID = 1807 ( ">" PGUID 0 b t f 1562 1562 16 1806 1808 0 0 varbitgt scalargtsel scalargtjoinsel)); -DATA(insert OID = 1808 ( "<=" PGUID 0 b t f 1562 1562 16 1809 1807 0 0 varbitle scalarltsel scalarltjoinsel)); -DATA(insert OID = 1809 ( ">=" PGUID 0 b t f 1562 1562 16 1808 1806 0 0 varbitge scalargtsel scalargtjoinsel)); - -DATA(insert OID = 1849 ( "+" PGUID 0 b t f 1186 1083 1083 0 0 0 0 interval_pl_time - - )); - -DATA(insert OID = 1862 ( "=" PGUID 0 b t f 21 20 16 1868 1863 95 412 int28eq eqsel eqjoinsel )); -DATA(insert OID = 1863 ( "<>" PGUID 0 b t f 21 20 16 1869 1862 0 0 int28ne neqsel neqjoinsel )); -DATA(insert OID = 1864 ( "<" PGUID 0 b t f 21 20 16 1871 1867 0 0 int28lt scalarltsel scalarltjoinsel )); -DATA(insert OID = 1865 ( ">" PGUID 0 b t f 21 20 16 1870 1866 0 0 int28gt scalargtsel scalargtjoinsel )); -DATA(insert OID = 1866 ( "<=" PGUID 0 b t f 21 20 16 1873 1865 0 0 int28le scalarltsel scalarltjoinsel )); -DATA(insert OID = 1867 ( ">=" PGUID 0 b t f 21 20 16 1872 1864 0 0 int28ge scalargtsel scalargtjoinsel )); - -DATA(insert OID = 1868 ( "=" PGUID 0 b t f 20 21 16 1862 1869 412 95 int82eq eqsel eqjoinsel )); -DATA(insert OID = 1869 ( "<>" PGUID 0 b t f 20 21 16 1863 1868 0 0 int82ne neqsel neqjoinsel )); -DATA(insert OID = 1870 ( "<" PGUID 0 b t f 20 21 16 1865 1873 0 0 int82lt scalarltsel scalarltjoinsel )); -DATA(insert OID = 1871 ( ">" PGUID 0 b t f 20 21 16 1864 1872 0 0 int82gt scalargtsel scalargtjoinsel )); -DATA(insert OID = 1872 ( "<=" PGUID 0 b t f 20 21 16 1867 1871 0 0 int82le scalarltsel scalarltjoinsel )); -DATA(insert OID = 1873 ( ">=" PGUID 0 b t f 20 21 16 1866 1870 0 0 int82ge scalargtsel scalargtjoinsel )); - -DATA(insert OID = 1874 ( "&" PGUID 0 b t f 21 21 21 1874 0 0 0 int2and - - )); -DATA(insert OID = 1875 ( "|" PGUID 0 b t f 21 21 21 1875 0 0 0 int2or - - )); -DATA(insert OID = 1876 ( "#" PGUID 0 b t f 21 21 21 1876 0 0 0 int2xor - - )); -DATA(insert OID = 1877 ( "~" PGUID 0 l t f 0 21 21 0 0 0 0 int2not - - )); -DATA(insert OID = 1878 ( "<<" PGUID 0 b t f 21 23 21 0 0 0 0 int2shl - - )); -DATA(insert OID = 1879 ( ">>" PGUID 0 b t f 21 23 21 0 0 0 0 int2shr - - )); - -DATA(insert OID = 1880 ( "&" PGUID 0 b t f 23 23 23 1880 0 0 0 int4and - - )); -DATA(insert OID = 1881 ( "|" PGUID 0 b t f 23 23 23 1881 0 0 0 int4or - - )); -DATA(insert OID = 1882 ( "#" PGUID 0 b t f 23 23 23 1882 0 0 0 int4xor - - )); -DATA(insert OID = 1883 ( "~" PGUID 0 l t f 0 23 23 0 0 0 0 int4not - - )); -DATA(insert OID = 1884 ( "<<" PGUID 0 b t f 23 23 23 0 0 0 0 int4shl - - )); -DATA(insert OID = 1885 ( ">>" PGUID 0 b t f 23 23 23 0 0 0 0 int4shr - - )); - -DATA(insert OID = 1886 ( "&" PGUID 0 b t f 20 20 20 1886 0 0 0 int8and - - )); -DATA(insert OID = 1887 ( "|" PGUID 0 b t f 20 20 20 1887 0 0 0 int8or - - )); -DATA(insert OID = 1888 ( "#" PGUID 0 b t f 20 20 20 1888 0 0 0 int8xor - - )); -DATA(insert OID = 1889 ( "~" PGUID 0 l t f 0 20 20 0 0 0 0 int8not - - )); -DATA(insert OID = 1890 ( "<<" PGUID 0 b t f 20 23 20 0 0 0 0 int8shl - - )); -DATA(insert OID = 1891 ( ">>" PGUID 0 b t f 20 23 20 0 0 0 0 int8shr - - )); - -DATA(insert OID = 1916 ( "+" PGUID 0 l t f 0 20 20 0 0 0 0 int8up - - )); -DATA(insert OID = 1917 ( "+" PGUID 0 l t f 0 21 21 0 0 0 0 int2up - - )); -DATA(insert OID = 1918 ( "+" PGUID 0 l t f 0 23 23 0 0 0 0 int4up - - )); -DATA(insert OID = 1919 ( "+" PGUID 0 l t f 0 700 700 0 0 0 0 float4up - - )); -DATA(insert OID = 1920 ( "+" PGUID 0 l t f 0 701 701 0 0 0 0 float8up - - )); -DATA(insert OID = 1921 ( "+" PGUID 0 l t f 0 1700 1700 0 0 0 0 numeric_uplus - - )); +DATA(insert OID = 1751 ( "-" 10 PGUID 0 l t f 0 1700 1700 0 0 0 0 numeric_uminus - - )); +DATA(insert OID = 1752 ( "=" 10 PGUID 0 b t f 1700 1700 16 1752 1753 1754 1754 numeric_eq eqsel eqjoinsel )); +DATA(insert OID = 1753 ( "<>" 10 PGUID 0 b t f 1700 1700 16 1753 1752 0 0 numeric_ne neqsel neqjoinsel )); +DATA(insert OID = 1754 ( "<" 10 PGUID 0 b t f 1700 1700 16 1756 1757 0 0 numeric_lt scalarltsel scalarltjoinsel)); +DATA(insert OID = 1755 ( "<=" 10 PGUID 0 b t f 1700 1700 16 1757 1756 0 0 numeric_le scalarltsel scalarltjoinsel)); +DATA(insert OID = 1756 ( ">" 10 PGUID 0 b t f 1700 1700 16 1754 1755 0 0 numeric_gt scalargtsel scalargtjoinsel)); +DATA(insert OID = 1757 ( ">=" 10 PGUID 0 b t f 1700 1700 16 1755 1754 0 0 numeric_ge scalargtsel scalargtjoinsel)); +DATA(insert OID = 1758 ( "+" 10 PGUID 0 b t f 1700 1700 1700 1758 0 0 0 numeric_add - - )); +DATA(insert OID = 1759 ( "-" 10 PGUID 0 b t f 1700 1700 1700 0 0 0 0 numeric_sub - - )); +DATA(insert OID = 1760 ( "*" 10 PGUID 0 b t f 1700 1700 1700 1760 0 0 0 numeric_mul - - )); +DATA(insert OID = 1761 ( "/" 10 PGUID 0 b t f 1700 1700 1700 0 0 0 0 numeric_div - - )); +DATA(insert OID = 1762 ( "%" 10 PGUID 0 b t f 1700 1700 1700 0 0 0 0 numeric_mod - - )); +DATA(insert OID = 1763 ( "@" 10 PGUID 0 l t f 0 1700 1700 0 0 0 0 numeric_abs - - )); + +DATA(insert OID = 1784 ( "=" 10 PGUID 0 b t f 1560 1560 16 1784 1785 1786 1786 biteq eqsel eqjoinsel )); +DATA(insert OID = 1785 ( "<>" 10 PGUID 0 b t f 1560 1560 16 1785 1784 0 0 bitne neqsel neqjoinsel )); +DATA(insert OID = 1786 ( "<" 10 PGUID 0 b t f 1560 1560 16 1787 1789 0 0 bitlt scalarltsel scalarltjoinsel)); +DATA(insert OID = 1787 ( ">" 10 PGUID 0 b t f 1560 1560 16 1786 1788 0 0 bitgt scalargtsel scalargtjoinsel)); +DATA(insert OID = 1788 ( "<=" 10 PGUID 0 b t f 1560 1560 16 1789 1787 0 0 bitle scalarltsel scalarltjoinsel)); +DATA(insert OID = 1789 ( ">=" 10 PGUID 0 b t f 1560 1560 16 1788 1786 0 0 bitge scalargtsel scalargtjoinsel)); +DATA(insert OID = 1791 ( "&" 10 PGUID 0 b t f 1560 1560 1560 1791 0 0 0 bitand - - )); +DATA(insert OID = 1792 ( "|" 10 PGUID 0 b t f 1560 1560 1560 1792 0 0 0 bitor - - )); +DATA(insert OID = 1793 ( "#" 10 PGUID 0 b t f 1560 1560 1560 1793 0 0 0 bitxor - - )); +DATA(insert OID = 1794 ( "~" 10 PGUID 0 l t f 0 1560 1560 0 0 0 0 bitnot - - )); +DATA(insert OID = 1795 ( "<<" 10 PGUID 0 b t f 1560 23 1560 0 0 0 0 bitshiftleft - - )); +DATA(insert OID = 1796 ( ">>" 10 PGUID 0 b t f 1560 23 1560 0 0 0 0 bitshiftright - - )); +DATA(insert OID = 1797 ( "||" 10 PGUID 0 b t f 1560 1560 1560 0 0 0 0 bitcat - - )); + +DATA(insert OID = 1800 ( "+" 10 PGUID 0 b t f 1083 1186 1083 0 0 0 0 time_pl_interval - - )); +DATA(insert OID = 1801 ( "-" 10 PGUID 0 b t f 1083 1186 1083 0 0 0 0 time_mi_interval - - )); +DATA(insert OID = 1802 ( "+" 10 PGUID 0 b t f 1266 1186 1266 0 0 0 0 timetz_pl_interval - - )); +DATA(insert OID = 1803 ( "-" 10 PGUID 0 b t f 1266 1186 1266 0 0 0 0 timetz_mi_interval - - )); + +DATA(insert OID = 1804 ( "=" 10 PGUID 0 b t f 1562 1562 16 1804 1805 1806 1806 varbiteq eqsel eqjoinsel )); +DATA(insert OID = 1805 ( "<>" 10 PGUID 0 b t f 1562 1562 16 1805 1804 0 0 varbitne neqsel neqjoinsel )); +DATA(insert OID = 1806 ( "<" 10 PGUID 0 b t f 1562 1562 16 1807 1809 0 0 varbitlt scalarltsel scalarltjoinsel)); +DATA(insert OID = 1807 ( ">" 10 PGUID 0 b t f 1562 1562 16 1806 1808 0 0 varbitgt scalargtsel scalargtjoinsel)); +DATA(insert OID = 1808 ( "<=" 10 PGUID 0 b t f 1562 1562 16 1809 1807 0 0 varbitle scalarltsel scalarltjoinsel)); +DATA(insert OID = 1809 ( ">=" 10 PGUID 0 b t f 1562 1562 16 1808 1806 0 0 varbitge scalargtsel scalargtjoinsel)); + +DATA(insert OID = 1849 ( "+" 10 PGUID 0 b t f 1186 1083 1083 0 0 0 0 interval_pl_time - - )); + +DATA(insert OID = 1862 ( "=" 10 PGUID 0 b t f 21 20 16 1868 1863 95 412 int28eq eqsel eqjoinsel )); +DATA(insert OID = 1863 ( "<>" 10 PGUID 0 b t f 21 20 16 1869 1862 0 0 int28ne neqsel neqjoinsel )); +DATA(insert OID = 1864 ( "<" 10 PGUID 0 b t f 21 20 16 1871 1867 0 0 int28lt scalarltsel scalarltjoinsel )); +DATA(insert OID = 1865 ( ">" 10 PGUID 0 b t f 21 20 16 1870 1866 0 0 int28gt scalargtsel scalargtjoinsel )); +DATA(insert OID = 1866 ( "<=" 10 PGUID 0 b t f 21 20 16 1873 1865 0 0 int28le scalarltsel scalarltjoinsel)); +DATA(insert OID = 1867 ( ">=" 10 PGUID 0 b t f 21 20 16 1872 1864 0 0 int28ge scalargtsel scalargtjoinsel)); + +DATA(insert OID = 1868 ( "=" 10 PGUID 0 b t f 20 21 16 1862 1869 412 95 int82eq eqsel eqjoinsel )); +DATA(insert OID = 1869 ( "<>" 10 PGUID 0 b t f 20 21 16 1863 1868 0 0 int82ne neqsel neqjoinsel )); +DATA(insert OID = 1870 ( "<" 10 PGUID 0 b t f 20 21 16 1865 1873 0 0 int82lt scalarltsel scalarltjoinsel )); +DATA(insert OID = 1871 ( ">" 10 PGUID 0 b t f 20 21 16 1864 1872 0 0 int82gt scalargtsel scalargtjoinsel )); +DATA(insert OID = 1872 ( "<=" 10 PGUID 0 b t f 20 21 16 1867 1871 0 0 int82le scalarltsel scalarltjoinsel )); +DATA(insert OID = 1873 ( ">=" 10 PGUID 0 b t f 20 21 16 1866 1870 0 0 int82ge scalargtsel scalargtjoinsel )); + +DATA(insert OID = 1874 ( "&" 10 PGUID 0 b t f 21 21 21 1874 0 0 0 int2and - - )); +DATA(insert OID = 1875 ( "|" 10 PGUID 0 b t f 21 21 21 1875 0 0 0 int2or - - )); +DATA(insert OID = 1876 ( "#" 10 PGUID 0 b t f 21 21 21 1876 0 0 0 int2xor - - )); +DATA(insert OID = 1877 ( "~" 10 PGUID 0 l t f 0 21 21 0 0 0 0 int2not - - )); +DATA(insert OID = 1878 ( "<<" 10 PGUID 0 b t f 21 23 21 0 0 0 0 int2shl - - )); +DATA(insert OID = 1879 ( ">>" 10 PGUID 0 b t f 21 23 21 0 0 0 0 int2shr - - )); + +DATA(insert OID = 1880 ( "&" 10 PGUID 0 b t f 23 23 23 1880 0 0 0 int4and - - )); +DATA(insert OID = 1881 ( "|" 10 PGUID 0 b t f 23 23 23 1881 0 0 0 int4or - - )); +DATA(insert OID = 1882 ( "#" 10 PGUID 0 b t f 23 23 23 1882 0 0 0 int4xor - - )); +DATA(insert OID = 1883 ( "~" 10 PGUID 0 l t f 0 23 23 0 0 0 0 int4not - - )); +DATA(insert OID = 1884 ( "<<" 10 PGUID 0 b t f 23 23 23 0 0 0 0 int4shl - - )); +DATA(insert OID = 1885 ( ">>" 10 PGUID 0 b t f 23 23 23 0 0 0 0 int4shr - - )); + +DATA(insert OID = 1886 ( "&" 10 PGUID 0 b t f 20 20 20 1886 0 0 0 int8and - - )); +DATA(insert OID = 1887 ( "|" 10 PGUID 0 b t f 20 20 20 1887 0 0 0 int8or - - )); +DATA(insert OID = 1888 ( "#" 10 PGUID 0 b t f 20 20 20 1888 0 0 0 int8xor - - )); +DATA(insert OID = 1889 ( "~" 10 PGUID 0 l t f 0 20 20 0 0 0 0 int8not - - )); +DATA(insert OID = 1890 ( "<<" 10 PGUID 0 b t f 20 23 20 0 0 0 0 int8shl - - )); +DATA(insert OID = 1891 ( ">>" 10 PGUID 0 b t f 20 23 20 0 0 0 0 int8shr - - )); + +DATA(insert OID = 1916 ( "+" 10 PGUID 0 l t f 0 20 20 0 0 0 0 int8up - - )); +DATA(insert OID = 1917 ( "+" 10 PGUID 0 l t f 0 21 21 0 0 0 0 int2up - - )); +DATA(insert OID = 1918 ( "+" 10 PGUID 0 l t f 0 23 23 0 0 0 0 int4up - - )); +DATA(insert OID = 1919 ( "+" 10 PGUID 0 l t f 0 700 700 0 0 0 0 float4up - - )); +DATA(insert OID = 1920 ( "+" 10 PGUID 0 l t f 0 701 701 0 0 0 0 float8up - - )); +DATA(insert OID = 1921 ( "+" 10 PGUID 0 l t f 0 1700 1700 0 0 0 0 numeric_uplus - - )); /* bytea operators */ -DATA(insert OID = 1955 ( "=" PGUID 0 b t t 17 17 16 1955 1956 1957 1957 byteaeq eqsel eqjoinsel )); -DATA(insert OID = 1956 ( "<>" PGUID 0 b t f 17 17 16 1956 1955 0 0 byteane neqsel neqjoinsel )); -DATA(insert OID = 1957 ( "<" PGUID 0 b t f 17 17 16 1959 1960 0 0 bytealt scalarltsel scalarltjoinsel )); -DATA(insert OID = 1958 ( "<=" PGUID 0 b t f 17 17 16 1960 1959 0 0 byteale scalarltsel scalarltjoinsel )); -DATA(insert OID = 1959 ( ">" PGUID 0 b t f 17 17 16 1957 1958 0 0 byteagt scalargtsel scalargtjoinsel )); -DATA(insert OID = 1960 ( ">=" PGUID 0 b t f 17 17 16 1958 1957 0 0 byteage scalargtsel scalargtjoinsel )); -DATA(insert OID = 2016 ( "~~" PGUID 0 b t f 17 17 16 0 2017 0 0 bytealike likesel likejoinsel )); +DATA(insert OID = 1955 ( "=" 10 PGUID 0 b t t 17 17 16 1955 1956 1957 1957 byteaeq eqsel eqjoinsel )); +DATA(insert OID = 1956 ( "<>" 10 PGUID 0 b t f 17 17 16 1956 1955 0 0 byteane neqsel neqjoinsel )); +DATA(insert OID = 1957 ( "<" 10 PGUID 0 b t f 17 17 16 1959 1960 0 0 bytealt scalarltsel scalarltjoinsel )); +DATA(insert OID = 1958 ( "<=" 10 PGUID 0 b t f 17 17 16 1960 1959 0 0 byteale scalarltsel scalarltjoinsel )); +DATA(insert OID = 1959 ( ">" 10 PGUID 0 b t f 17 17 16 1957 1958 0 0 byteagt scalargtsel scalargtjoinsel )); +DATA(insert OID = 1960 ( ">=" 10 PGUID 0 b t f 17 17 16 1958 1957 0 0 byteage scalargtsel scalargtjoinsel )); +DATA(insert OID = 2016 ( "~~" 10 PGUID 0 b t f 17 17 16 0 2017 0 0 bytealike likesel likejoinsel )); #define OID_BYTEA_LIKE_OP 2016 -DATA(insert OID = 2017 ( "!~~" PGUID 0 b t f 17 17 16 0 2016 0 0 byteanlike nlikesel nlikejoinsel )); -DATA(insert OID = 2018 ( "||" PGUID 0 b t f 17 17 17 0 0 0 0 byteacat - - )); +DATA(insert OID = 2017 ( "!~~" 10 PGUID 0 b t f 17 17 16 0 2016 0 0 byteanlike nlikesel nlikejoinsel )); +DATA(insert OID = 2018 ( "||" 10 PGUID 0 b t f 17 17 17 0 0 0 0 byteacat - - )); /* timestamp operators */ /* name, owner, prec, kind, isleft, canhash, left, right, result, com, negate, lsortop, rsortop, oprcode, operrest, oprjoin*/ -DATA(insert OID = 2060 ( "=" PGUID 0 b t f 1114 1114 16 2060 2061 2062 2062 timestamp_eq eqsel eqjoinsel )); -DATA(insert OID = 2061 ( "<>" PGUID 0 b t f 1114 1114 16 2061 2060 0 0 timestamp_ne neqsel neqjoinsel )); -DATA(insert OID = 2062 ( "<" PGUID 0 b t f 1114 1114 16 2064 2065 0 0 timestamp_lt scalarltsel scalarltjoinsel)); -DATA(insert OID = 2063 ( "<=" PGUID 0 b t f 1114 1114 16 2065 2064 0 0 timestamp_le scalarltsel scalarltjoinsel)); -DATA(insert OID = 2064 ( ">" PGUID 0 b t f 1114 1114 16 2062 2063 0 0 timestamp_gt scalargtsel scalargtjoinsel)); -DATA(insert OID = 2065 ( ">=" PGUID 0 b t f 1114 1114 16 2063 2062 0 0 timestamp_ge scalargtsel scalargtjoinsel)); -DATA(insert OID = 2066 ( "+" PGUID 0 b t f 1114 1186 1114 0 0 0 0 timestamp_pl_span - - )); -DATA(insert OID = 2067 ( "-" PGUID 0 b t f 1114 1114 1186 0 0 0 0 timestamp_mi - - )); -DATA(insert OID = 2068 ( "-" PGUID 0 b t f 1114 1186 1114 0 0 0 0 timestamp_mi_span - - )); +DATA(insert OID = 2060 ( "=" 10 PGUID 0 b t f 1114 1114 16 2060 2061 2062 2062 timestamp_eq eqsel eqjoinsel )); +DATA(insert OID = 2061 ( "<>" 10 PGUID 0 b t f 1114 1114 16 2061 2060 0 0 timestamp_ne neqsel neqjoinsel )); +DATA(insert OID = 2062 ( "<" 10 PGUID 0 b t f 1114 1114 16 2064 2065 0 0 timestamp_lt scalarltsel scalarltjoinsel)); +DATA(insert OID = 2063 ( "<=" 10 PGUID 0 b t f 1114 1114 16 2065 2064 0 0 timestamp_le scalarltsel scalarltjoinsel)); +DATA(insert OID = 2064 ( ">" 10 PGUID 0 b t f 1114 1114 16 2062 2063 0 0 timestamp_gt scalargtsel scalargtjoinsel)); +DATA(insert OID = 2065 ( ">=" 10 PGUID 0 b t f 1114 1114 16 2063 2062 0 0 timestamp_ge scalargtsel scalargtjoinsel)); +DATA(insert OID = 2066 ( "+" 10 PGUID 0 b t f 1114 1186 1114 0 0 0 0 timestamp_pl_span - - )); +DATA(insert OID = 2067 ( "-" 10 PGUID 0 b t f 1114 1114 1186 0 0 0 0 timestamp_mi - - )); +DATA(insert OID = 2068 ( "-" 10 PGUID 0 b t f 1114 1186 1114 0 0 0 0 timestamp_mi_span - - )); /* * function prototypes */ +struct DefElem; extern void OperatorCreate(char *operatorName, + Oid packId, char *leftTypeName, char *rightTypeName, - char *procedureName, + struct DefElem *procedureName, uint16 precedence, bool isLeftAssociative, char *commutatorName, char *negatorName, - char *restrictionName, - char *joinName, + struct DefElem *restrictionName, + struct DefElem *joinName, bool canHash, char *leftSortName, char *rightSortName); Index: src/include/catalog/pg_package.h =================================================================== RCS file: pg_package.h diff -N pg_package.h --- /dev/null Wed Oct 17 08:50:28 2001 +++ pg_package.h Wed Oct 17 11:41:56 2001 @@ -0,0 +1,72 @@ +/*------------------------------------------------------------------------- + * + * pg_package.h + * definition of the system "package" relation (pg_package) + * along with the relation's initial contents. + * + * + * Portions Copyright (c) 1996-2000, PostgreSQL, Inc + * Portions Copyright (c) 1994, Regents of the University of California + * + * $Id: pg_language.h,v 1.10 2000/01/26 05:57:57 momjian Exp $ + * + * NOTES + * the genbki.sh script reads this file and generates .bki + * information from the DATA() statements. + * + *------------------------------------------------------------------------- + */ +#ifndef PG_PACKAGE_H +#define PG_PACKAGE_H + +/* ---------------- + * postgres.h contains the system type definintions and the + * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * can be read by both genbki.sh and the C compiler. + * ---------------- + */ + +/* ---------------- + * pg_package definition. cpp turns this into + * typedef struct FormData_pg_package + * ---------------- + */ +CATALOG(pg_package) +{ + NameData packname; + int4 packowner; +} FormData_pg_package; + +/* ---------------- + * Form_pg_package corresponds to a pointer to a tuple with + * the format of pg_package relation. + * ---------------- + */ +typedef FormData_pg_package *Form_pg_package; + +/* ---------------- + * compiler constants for pg_package + * ---------------- + */ +#define Natts_pg_package 2 +#define Anum_pg_package_packname 1 +#define Anum_pg_package_packowner 2 + +/* ---------------- + * initial contents of pg_package + * ---------------- + */ + +DATA(insert OID = 10 ( standard PGUID )); +DESCR(""); +#define STANDARDPackageId 10 +/* Note there is a duplication of this define in include/utils/syscache.h */ + +/* + * prototypes for functions in pg_package.c + */ +extern void PackageCreate(char *packageName, int orreplace); +extern int PackageNameFromID(Oid packID, Name name); +extern Oid PackageIdFromName(char *packname); + +#endif /* PG_PACKAGE_H */ Index: src/include/catalog/pg_packglobal.h =================================================================== RCS file: pg_packglobal.h diff -N pg_packglobal.h --- /dev/null Wed Oct 17 08:50:28 2001 +++ pg_packglobal.h Wed Oct 17 11:41:56 2001 @@ -0,0 +1,67 @@ +/*------------------------------------------------------------------------- + * + * pg_package.h + * definition of the system "package" relation (pg_package) + * along with the relation's initial contents. + * + * + * Portions Copyright (c) 1996-2000, PostgreSQL, Inc + * Portions Copyright (c) 1994, Regents of the University of California + * + * $Id: pg_language.h,v 1.10 2000/01/26 05:57:57 momjian Exp $ + * + * NOTES + * the genbki.sh script reads this file and generates .bki + * information from the DATA() statements. + * + *------------------------------------------------------------------------- + */ +#ifndef PG_PACKGLOBAL_H +#define PG_PACKGLOBAL_H + +/* ---------------- + * postgres.h contains the system type definintions and the + * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * can be read by both genbki.sh and the C compiler. + * ---------------- + */ + +/* ---------------- + * pg_packglobal definition. cpp turns this into + * typedef struct FormData_pg_packglobal + * ---------------- + */ +CATALOG(pg_packglobal) +{ + Oid pglobalid; + Oid pgloballang; + int4 pglobalseq; + NameData pglobalvname; + text pglobalvtype; +} FormData_pg_packglobal; + +/* ---------------- + * Form_pg_packglobal corresponds to a pointer to a tuple with + * the format of pg_packglobal relation. + * ---------------- + */ +typedef FormData_pg_packglobal *Form_pg_packglobal; + +/* ---------------- + * compiler constants for pg_packglobal + * ---------------- + */ +#define Natts_pg_packglobal 5 +#define Anum_pg_packglobal_pglobalid 1 +#define Anum_pg_packglobal_pgloballang 2 +#define Anum_pg_packglobal_pglobalseq 3 +#define Anum_pg_packglobal_pglobalvname 4 +#define Anum_pg_packglobal_pglobalvtype 5 + +/* + * prototypes for function(s) in pg_packglobal.c + */ +extern void PackageGlobalCreate(Oid packId, Oid langId, int seqno, char *vname, + char *vtype); + +#endif /* PG_PACKGLOBAL_H */ Index: src/include/catalog/pg_proc.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/catalog/pg_proc.h,v retrieving revision 1.216 diff -u -r1.216 pg_proc.h --- src/include/catalog/pg_proc.h 2001/10/12 02:08:34 1.216 +++ src/include/catalog/pg_proc.h 2001/10/17 16:42:01 @@ -40,6 +40,7 @@ CATALOG(pg_proc) BOOTSTRAP { NameData proname; + Oid propack; int4 proowner; Oid prolang; bool proisinh; @@ -69,24 +70,25 @@ * compiler constants for pg_proc * ---------------- */ -#define Natts_pg_proc 17 +#define Natts_pg_proc 18 #define Anum_pg_proc_proname 1 -#define Anum_pg_proc_proowner 2 -#define Anum_pg_proc_prolang 3 -#define Anum_pg_proc_proisinh 4 -#define Anum_pg_proc_proistrusted 5 -#define Anum_pg_proc_proiscachable 6 -#define Anum_pg_proc_proisstrict 7 -#define Anum_pg_proc_pronargs 8 -#define Anum_pg_proc_proretset 9 -#define Anum_pg_proc_prorettype 10 -#define Anum_pg_proc_proargtypes 11 -#define Anum_pg_proc_probyte_pct 12 -#define Anum_pg_proc_properbyte_cpu 13 -#define Anum_pg_proc_propercall_cpu 14 -#define Anum_pg_proc_prooutin_ratio 15 -#define Anum_pg_proc_prosrc 16 -#define Anum_pg_proc_probin 17 +#define Anum_pg_proc_propack 2 +#define Anum_pg_proc_proowner 3 +#define Anum_pg_proc_prolang 4 +#define Anum_pg_proc_proisinh 5 +#define Anum_pg_proc_proistrusted 6 +#define Anum_pg_proc_proiscachable 7 +#define Anum_pg_proc_proisstrict 8 +#define Anum_pg_proc_pronargs 9 +#define Anum_pg_proc_proretset 10 +#define Anum_pg_proc_prorettype 11 +#define Anum_pg_proc_proargtypes 12 +#define Anum_pg_proc_probyte_pct 13 +#define Anum_pg_proc_properbyte_cpu 14 +#define Anum_pg_proc_propercall_cpu 15 +#define Anum_pg_proc_prooutin_ratio 16 +#define Anum_pg_proc_prosrc 17 +#define Anum_pg_proc_probin 18 /* ---------------- * initial contents of pg_proc @@ -97,2771 +99,2771 @@ /* OIDS 1 - 99 */ -DATA(insert OID = 1242 ( boolin PGUID 12 f t t t 1 f 16 "0" 100 0 0 100 boolin - )); +DATA(insert OID = 1242 ( boolin 10 PGUID 12 f t t t 1 f 16 "0" 100 0 0 100 boolin - )); DESCR("(internal)"); -DATA(insert OID = 1243 ( boolout PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 boolout - )); +DATA(insert OID = 1243 ( boolout 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 boolout - )); DESCR("(internal)"); -DATA(insert OID = 1244 ( byteain PGUID 12 f t t t 1 f 17 "0" 100 0 0 100 byteain - )); +DATA(insert OID = 1244 ( byteain 10 PGUID 12 f t t t 1 f 17 "0" 100 0 0 100 byteain - )); DESCR("(internal)"); -DATA(insert OID = 31 ( byteaout PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 byteaout - )); +DATA(insert OID = 31 ( byteaout 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 byteaout - )); DESCR("(internal)"); -DATA(insert OID = 1245 ( charin PGUID 12 f t t t 1 f 18 "0" 100 0 0 100 charin - )); +DATA(insert OID = 1245 ( charin 10 PGUID 12 f t t t 1 f 18 "0" 100 0 0 100 charin - )); DESCR("(internal)"); -DATA(insert OID = 33 ( charout PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 charout - )); +DATA(insert OID = 33 ( charout 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 charout - )); DESCR("(internal)"); -DATA(insert OID = 34 ( namein PGUID 12 f t t t 1 f 19 "0" 100 0 0 100 namein - )); +DATA(insert OID = 34 ( namein 10 PGUID 12 f t t t 1 f 19 "0" 100 0 0 100 namein - )); DESCR("(internal)"); -DATA(insert OID = 35 ( nameout PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 nameout - )); +DATA(insert OID = 35 ( nameout 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 nameout - )); DESCR("(internal)"); -DATA(insert OID = 38 ( int2in PGUID 12 f t t t 1 f 21 "0" 100 0 0 100 int2in - )); +DATA(insert OID = 38 ( int2in 10 PGUID 12 f t t t 1 f 21 "0" 100 0 0 100 int2in - )); DESCR("(internal)"); -DATA(insert OID = 39 ( int2out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 int2out - )); +DATA(insert OID = 39 ( int2out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 int2out - )); DESCR("(internal)"); -DATA(insert OID = 40 ( int2vectorin PGUID 12 f t t t 1 f 22 "0" 100 0 0 100 int2vectorin - )); +DATA(insert OID = 40 ( int2vectorin 10 PGUID 12 f t t t 1 f 22 "0" 100 0 0 100 int2vectorin - )); DESCR("(internal)"); -DATA(insert OID = 41 ( int2vectorout PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 int2vectorout - )); +DATA(insert OID = 41 ( int2vectorout 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 int2vectorout - )); DESCR("(internal)"); -DATA(insert OID = 42 ( int4in PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 int4in - )); +DATA(insert OID = 42 ( int4in 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 int4in - )); DESCR("(internal)"); -DATA(insert OID = 43 ( int4out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 int4out - )); +DATA(insert OID = 43 ( int4out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 int4out - )); DESCR("(internal)"); -DATA(insert OID = 44 ( regprocin PGUID 12 f t f t 1 f 24 "0" 100 0 0 100 regprocin - )); +DATA(insert OID = 44 ( regprocin 10 PGUID 12 f t f t 1 f 24 "0" 100 0 0 100 regprocin - )); DESCR("(internal)"); -DATA(insert OID = 45 ( regprocout PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 regprocout - )); +DATA(insert OID = 45 ( regprocout 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 regprocout - )); DESCR("(internal)"); -DATA(insert OID = 46 ( textin PGUID 12 f t t t 1 f 25 "0" 100 0 0 100 textin - )); +DATA(insert OID = 46 ( textin 10 PGUID 12 f t t t 1 f 25 "0" 100 0 0 100 textin - )); DESCR("(internal)"); -DATA(insert OID = 47 ( textout PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 textout - )); +DATA(insert OID = 47 ( textout 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 textout - )); DESCR("(internal)"); -DATA(insert OID = 48 ( tidin PGUID 12 f t t t 1 f 27 "0" 100 0 0 100 tidin - )); +DATA(insert OID = 48 ( tidin 10 PGUID 12 f t t t 1 f 27 "0" 100 0 0 100 tidin - )); DESCR("(internal)"); -DATA(insert OID = 49 ( tidout PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 tidout - )); +DATA(insert OID = 49 ( tidout 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 tidout - )); DESCR("(internal)"); -DATA(insert OID = 50 ( xidin PGUID 12 f t t t 1 f 28 "0" 100 0 0 100 xidin - )); +DATA(insert OID = 50 ( xidin 10 PGUID 12 f t t t 1 f 28 "0" 100 0 0 100 xidin - )); DESCR("(internal)"); -DATA(insert OID = 51 ( xidout PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 xidout - )); +DATA(insert OID = 51 ( xidout 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 xidout - )); DESCR("(internal)"); -DATA(insert OID = 52 ( cidin PGUID 12 f t t t 1 f 29 "0" 100 0 0 100 cidin - )); +DATA(insert OID = 52 ( cidin 10 PGUID 12 f t t t 1 f 29 "0" 100 0 0 100 cidin - )); DESCR("(internal)"); -DATA(insert OID = 53 ( cidout PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 cidout - )); +DATA(insert OID = 53 ( cidout 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 cidout - )); DESCR("(internal)"); -DATA(insert OID = 54 ( oidvectorin PGUID 12 f t t t 1 f 30 "0" 100 0 0 100 oidvectorin - )); +DATA(insert OID = 54 ( oidvectorin 10 PGUID 12 f t t t 1 f 30 "0" 100 0 0 100 oidvectorin - )); DESCR("(internal)"); -DATA(insert OID = 55 ( oidvectorout PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 oidvectorout - )); +DATA(insert OID = 55 ( oidvectorout 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 oidvectorout - )); DESCR("(internal)"); -DATA(insert OID = 56 ( boollt PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100 boollt - )); +DATA(insert OID = 56 ( boollt 10 PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100 boollt - )); DESCR("less-than"); -DATA(insert OID = 57 ( boolgt PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100 boolgt - )); +DATA(insert OID = 57 ( boolgt 10 PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100 boolgt - )); DESCR("greater-than"); -DATA(insert OID = 60 ( booleq PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100 booleq - )); +DATA(insert OID = 60 ( booleq 10 PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100 booleq - )); DESCR("equal"); -DATA(insert OID = 61 ( chareq PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100 chareq - )); +DATA(insert OID = 61 ( chareq 10 PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100 chareq - )); DESCR("equal"); -DATA(insert OID = 62 ( nameeq PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100 nameeq - )); +DATA(insert OID = 62 ( nameeq 10 PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100 nameeq - )); DESCR("equal"); -DATA(insert OID = 63 ( int2eq PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100 int2eq - )); +DATA(insert OID = 63 ( int2eq 10 PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100 int2eq - )); DESCR("equal"); -DATA(insert OID = 64 ( int2lt PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100 int2lt - )); +DATA(insert OID = 64 ( int2lt 10 PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100 int2lt - )); DESCR("less-than"); -DATA(insert OID = 65 ( int4eq PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100 int4eq - )); +DATA(insert OID = 65 ( int4eq 10 PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100 int4eq - )); DESCR("equal"); -DATA(insert OID = 66 ( int4lt PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100 int4lt - )); +DATA(insert OID = 66 ( int4lt 10 PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100 int4lt - )); DESCR("less-than"); -DATA(insert OID = 67 ( texteq PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 texteq - )); +DATA(insert OID = 67 ( texteq 10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 texteq - )); DESCR("equal"); -DATA(insert OID = 68 ( xideq PGUID 12 f t t t 2 f 16 "28 28" 100 0 0 100 xideq - )); +DATA(insert OID = 68 ( xideq 10 PGUID 12 f t t t 2 f 16 "28 28" 100 0 0 100 xideq - )); DESCR("equal"); -DATA(insert OID = 69 ( cideq PGUID 12 f t t t 2 f 16 "29 29" 100 0 0 100 cideq - )); +DATA(insert OID = 69 ( cideq 10 PGUID 12 f t t t 2 f 16 "29 29" 100 0 0 100 cideq - )); DESCR("equal"); -DATA(insert OID = 70 ( charne PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100 charne - )); +DATA(insert OID = 70 ( charne 10 PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100 charne - )); DESCR("not equal"); -DATA(insert OID = 1246 ( charlt PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100 charlt - )); +DATA(insert OID = 1246 ( charlt 10 PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100 charlt - )); DESCR("less-than"); -DATA(insert OID = 72 ( charle PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100 charle - )); +DATA(insert OID = 72 ( charle 10 PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100 charle - )); DESCR("less-than-or-equal"); -DATA(insert OID = 73 ( chargt PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100 chargt - )); +DATA(insert OID = 73 ( chargt 10 PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100 chargt - )); DESCR("greater-than"); -DATA(insert OID = 74 ( charge PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100 charge - )); +DATA(insert OID = 74 ( charge 10 PGUID 12 f t t t 2 f 16 "18 18" 100 0 0 100 charge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 1248 ( charpl PGUID 12 f t t t 2 f 18 "18 18" 100 0 0 100 charpl - )); +DATA(insert OID = 1248 ( charpl 10 PGUID 12 f t t t 2 f 18 "18 18" 100 0 0 100 charpl - )); DESCR("add"); -DATA(insert OID = 1250 ( charmi PGUID 12 f t t t 2 f 18 "18 18" 100 0 0 100 charmi - )); +DATA(insert OID = 1250 ( charmi 10 PGUID 12 f t t t 2 f 18 "18 18" 100 0 0 100 charmi - )); DESCR("subtract"); -DATA(insert OID = 77 ( charmul PGUID 12 f t t t 2 f 18 "18 18" 100 0 0 100 charmul - )); +DATA(insert OID = 77 ( charmul 10 PGUID 12 f t t t 2 f 18 "18 18" 100 0 0 100 charmul - )); DESCR("multiply"); -DATA(insert OID = 78 ( chardiv PGUID 12 f t t t 2 f 18 "18 18" 100 0 0 100 chardiv - )); +DATA(insert OID = 78 ( chardiv 10 PGUID 12 f t t t 2 f 18 "18 18" 100 0 0 100 chardiv - )); DESCR("divide"); -DATA(insert OID = 79 ( nameregexeq PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 nameregexeq - )); +DATA(insert OID = 79 ( nameregexeq 10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 nameregexeq - )); DESCR("matches regex., case-sensitive"); -DATA(insert OID = 1252 ( nameregexne PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 nameregexne - )); +DATA(insert OID = 1252 ( nameregexne 10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 nameregexne - )); DESCR("does not match regex., case-sensitive"); -DATA(insert OID = 1254 ( textregexeq PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textregexeq - )); +DATA(insert OID = 1254 ( textregexeq 10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textregexeq - )); DESCR("matches regex., case-sensitive"); -DATA(insert OID = 1256 ( textregexne PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textregexne - )); +DATA(insert OID = 1256 ( textregexne 10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textregexne - )); DESCR("does not match regex., case-sensitive"); -DATA(insert OID = 1257 ( textlen PGUID 12 f t t t 1 f 23 "25" 100 0 0 100 textlen - )); +DATA(insert OID = 1257 ( textlen 10 PGUID 12 f t t t 1 f 23 "25" 100 0 0 100 textlen - )); DESCR("length"); -DATA(insert OID = 1258 ( textcat PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100 textcat - )); +DATA(insert OID = 1258 ( textcat 10 PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100 textcat - )); DESCR("concatenate"); -DATA(insert OID = 84 ( boolne PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100 boolne - )); +DATA(insert OID = 84 ( boolne 10 PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100 boolne - )); DESCR("not equal"); -DATA(insert OID = 89 ( version PGUID 12 f t f t 0 f 25 "" 100 0 0 100 pgsql_version - )); +DATA(insert OID = 89 ( version 10 PGUID 12 f t f t 0 f 25 "" 100 0 0 100 pgsql_version - )); DESCR("PostgreSQL version string"); /* OIDS 100 - 199 */ -DATA(insert OID = 100 ( int8fac PGUID 12 f t t t 1 f 20 "20" 100 0 0 100 int8fac - )); +DATA(insert OID = 100 ( int8fac 10 PGUID 12 f t t t 1 f 20 "20" 100 0 0 100 int8fac - )); DESCR("factorial"); -DATA(insert OID = 101 ( eqsel PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 eqsel - )); +DATA(insert OID = 101 ( eqsel 10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 eqsel - )); DESCR("restriction selectivity of = and related operators"); -DATA(insert OID = 102 ( neqsel PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 neqsel - )); +DATA(insert OID = 102 ( neqsel 10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 neqsel - )); DESCR("restriction selectivity of <> and related operators"); -DATA(insert OID = 103 ( scalarltsel PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 scalarltsel - )); +DATA(insert OID = 103 ( scalarltsel 10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 scalarltsel - )); DESCR("restriction selectivity of < and related operators on scalar datatypes"); -DATA(insert OID = 104 ( scalargtsel PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 scalargtsel - )); +DATA(insert OID = 104 ( scalargtsel 10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 scalargtsel - )); DESCR("restriction selectivity of > and related operators on scalar datatypes"); -DATA(insert OID = 105 ( eqjoinsel PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 eqjoinsel - )); +DATA(insert OID = 105 ( eqjoinsel 10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 eqjoinsel - )); DESCR("join selectivity of = and related operators"); -DATA(insert OID = 106 ( neqjoinsel PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 neqjoinsel - )); +DATA(insert OID = 106 ( neqjoinsel 10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 neqjoinsel - )); DESCR("join selectivity of <> and related operators"); -DATA(insert OID = 107 ( scalarltjoinsel PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 scalarltjoinsel - )); +DATA(insert OID = 107 ( scalarltjoinsel 10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 scalarltjoinsel - )); DESCR("join selectivity of < and related operators on scalar datatypes"); -DATA(insert OID = 108 ( scalargtjoinsel PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 scalargtjoinsel - )); +DATA(insert OID = 108 ( scalargtjoinsel 10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 scalargtjoinsel - )); DESCR("join selectivity of > and related operators on scalar datatypes"); -DATA(insert OID = 112 ( text PGUID 12 f t t t 1 f 25 "23" 100 0 0 100 int4_text - )); +DATA(insert OID = 112 ( text 10 PGUID 12 f t t t 1 f 25 "23" 100 0 0 100 int4_text - )); DESCR("convert int4 to text"); -DATA(insert OID = 113 ( text PGUID 12 f t t t 1 f 25 "21" 100 0 0 100 int2_text - )); +DATA(insert OID = 113 ( text 10 PGUID 12 f t t t 1 f 25 "21" 100 0 0 100 int2_text - )); DESCR("convert int2 to text"); -DATA(insert OID = 114 ( text PGUID 12 f t t t 1 f 25 "26" 100 0 0 100 oid_text - )); +DATA(insert OID = 114 ( text 10 PGUID 12 f t t t 1 f 25 "26" 100 0 0 100 oid_text - )); DESCR("convert oid to text"); -DATA(insert OID = 115 ( box_above PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_above - )); +DATA(insert OID = 115 ( box_above 10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_above - )); DESCR("is above"); -DATA(insert OID = 116 ( box_below PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_below - )); +DATA(insert OID = 116 ( box_below 10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_below - )); DESCR("is below"); -DATA(insert OID = 117 ( point_in PGUID 12 f t t t 1 f 600 "0" 100 0 0 100 point_in - )); +DATA(insert OID = 117 ( point_in 10 PGUID 12 f t t t 1 f 600 "0" 100 0 0 100 point_in - )); DESCR("(internal)"); -DATA(insert OID = 118 ( point_out PGUID 12 f t t t 1 f 23 "600" 100 0 0 100 point_out - )); +DATA(insert OID = 118 ( point_out 10 PGUID 12 f t t t 1 f 23 "600" 100 0 0 100 point_out - )); DESCR("(internal)"); -DATA(insert OID = 119 ( lseg_in PGUID 12 f t t t 1 f 601 "0" 100 0 0 100 lseg_in - )); +DATA(insert OID = 119 ( lseg_in 10 PGUID 12 f t t t 1 f 601 "0" 100 0 0 100 lseg_in - )); DESCR("(internal)"); -DATA(insert OID = 120 ( lseg_out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 lseg_out - )); +DATA(insert OID = 120 ( lseg_out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 lseg_out - )); DESCR("(internal)"); -DATA(insert OID = 121 ( path_in PGUID 12 f t t t 1 f 602 "0" 100 0 0 100 path_in - )); +DATA(insert OID = 121 ( path_in 10 PGUID 12 f t t t 1 f 602 "0" 100 0 0 100 path_in - )); DESCR("(internal)"); -DATA(insert OID = 122 ( path_out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 path_out - )); +DATA(insert OID = 122 ( path_out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 path_out - )); DESCR("(internal)"); -DATA(insert OID = 123 ( box_in PGUID 12 f t t t 1 f 603 "0" 100 0 0 100 box_in - )); +DATA(insert OID = 123 ( box_in 10 PGUID 12 f t t t 1 f 603 "0" 100 0 0 100 box_in - )); DESCR("(internal)"); -DATA(insert OID = 124 ( box_out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 box_out - )); +DATA(insert OID = 124 ( box_out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 box_out - )); DESCR("(internal)"); -DATA(insert OID = 125 ( box_overlap PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_overlap - )); +DATA(insert OID = 125 ( box_overlap 10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_overlap - )); DESCR("overlaps"); -DATA(insert OID = 126 ( box_ge PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_ge - )); +DATA(insert OID = 126 ( box_ge 10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_ge - )); DESCR("greater-than-or-equal by area"); -DATA(insert OID = 127 ( box_gt PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_gt - )); +DATA(insert OID = 127 ( box_gt 10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_gt - )); DESCR("greater-than by area"); -DATA(insert OID = 128 ( box_eq PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_eq - )); +DATA(insert OID = 128 ( box_eq 10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_eq - )); DESCR("equal by area"); -DATA(insert OID = 129 ( box_lt PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_lt - )); +DATA(insert OID = 129 ( box_lt 10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_lt - )); DESCR("less-than by area"); -DATA(insert OID = 130 ( box_le PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_le - )); +DATA(insert OID = 130 ( box_le 10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_le - )); DESCR("less-than-or-equal by area"); -DATA(insert OID = 131 ( point_above PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_above - )); +DATA(insert OID = 131 ( point_above 10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_above - )); DESCR("is above"); -DATA(insert OID = 132 ( point_left PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_left - )); +DATA(insert OID = 132 ( point_left 10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_left - )); DESCR("is left of"); -DATA(insert OID = 133 ( point_right PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_right - )); +DATA(insert OID = 133 ( point_right 10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_right - )); DESCR("is right of"); -DATA(insert OID = 134 ( point_below PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_below - )); +DATA(insert OID = 134 ( point_below 10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_below - )); DESCR("is below"); -DATA(insert OID = 135 ( point_eq PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_eq - )); +DATA(insert OID = 135 ( point_eq 10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_eq - )); DESCR("same as"); -DATA(insert OID = 136 ( on_pb PGUID 12 f t t t 2 f 16 "600 603" 100 0 0 100 on_pb - )); +DATA(insert OID = 136 ( on_pb 10 PGUID 12 f t t t 2 f 16 "600 603" 100 0 0 100 on_pb - )); DESCR("point is inside"); -DATA(insert OID = 137 ( on_ppath PGUID 12 f t t t 2 f 16 "600 602" 100 0 0 100 on_ppath - )); +DATA(insert OID = 137 ( on_ppath 10 PGUID 12 f t t t 2 f 16 "600 602" 100 0 0 100 on_ppath - )); DESCR("contained in"); -DATA(insert OID = 138 ( box_center PGUID 12 f t t t 1 f 600 "603" 100 0 0 100 box_center - )); +DATA(insert OID = 138 ( box_center 10 PGUID 12 f t t t 1 f 600 "603" 100 0 0 100 box_center - )); DESCR("center of"); -DATA(insert OID = 139 ( areasel PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 areasel - )); +DATA(insert OID = 139 ( areasel 10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 areasel - )); DESCR("restriction selectivity for area-comparison operators"); -DATA(insert OID = 140 ( areajoinsel PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 areajoinsel - )); +DATA(insert OID = 140 ( areajoinsel 10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 areajoinsel - )); DESCR("join selectivity for area-comparison operators"); -DATA(insert OID = 141 ( int4mul PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4mul - )); +DATA(insert OID = 141 ( int4mul 10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4mul - )); DESCR("multiply"); -DATA(insert OID = 142 ( int4fac PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 int4fac - )); +DATA(insert OID = 142 ( int4fac 10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 int4fac - )); DESCR("factorial"); -DATA(insert OID = 144 ( int4ne PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100 int4ne - )); +DATA(insert OID = 144 ( int4ne 10 PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100 int4ne - )); DESCR("not equal"); -DATA(insert OID = 145 ( int2ne PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100 int2ne - )); +DATA(insert OID = 145 ( int2ne 10 PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100 int2ne - )); DESCR("not equal"); -DATA(insert OID = 146 ( int2gt PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100 int2gt - )); +DATA(insert OID = 146 ( int2gt 10 PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100 int2gt - )); DESCR("greater-than"); -DATA(insert OID = 147 ( int4gt PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100 int4gt - )); +DATA(insert OID = 147 ( int4gt 10 PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100 int4gt - )); DESCR("greater-than"); -DATA(insert OID = 148 ( int2le PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100 int2le - )); +DATA(insert OID = 148 ( int2le 10 PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100 int2le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 149 ( int4le PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100 int4le - )); +DATA(insert OID = 149 ( int4le 10 PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100 int4le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 150 ( int4ge PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100 int4ge - )); +DATA(insert OID = 150 ( int4ge 10 PGUID 12 f t t t 2 f 16 "23 23" 100 0 0 100 int4ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 151 ( int2ge PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100 int2ge - )); +DATA(insert OID = 151 ( int2ge 10 PGUID 12 f t t t 2 f 16 "21 21" 100 0 0 100 int2ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 152 ( int2mul PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2mul - )); +DATA(insert OID = 152 ( int2mul 10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2mul - )); DESCR("multiply"); -DATA(insert OID = 153 ( int2div PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2div - )); +DATA(insert OID = 153 ( int2div 10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2div - )); DESCR("divide"); -DATA(insert OID = 154 ( int4div PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4div - )); +DATA(insert OID = 154 ( int4div 10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4div - )); DESCR("divide"); -DATA(insert OID = 155 ( int2mod PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2mod - )); +DATA(insert OID = 155 ( int2mod 10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2mod - )); DESCR("modulus"); -DATA(insert OID = 156 ( int4mod PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4mod - )); +DATA(insert OID = 156 ( int4mod 10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4mod - )); DESCR("modulus"); -DATA(insert OID = 157 ( textne PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textne - )); +DATA(insert OID = 157 ( textne 10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textne - )); DESCR("not equal"); -DATA(insert OID = 158 ( int24eq PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100 int24eq - )); +DATA(insert OID = 158 ( int24eq 10 PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100 int24eq - )); DESCR("equal"); -DATA(insert OID = 159 ( int42eq PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100 int42eq - )); +DATA(insert OID = 159 ( int42eq 10 PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100 int42eq - )); DESCR("equal"); -DATA(insert OID = 160 ( int24lt PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100 int24lt - )); +DATA(insert OID = 160 ( int24lt 10 PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100 int24lt - )); DESCR("less-than"); -DATA(insert OID = 161 ( int42lt PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100 int42lt - )); +DATA(insert OID = 161 ( int42lt 10 PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100 int42lt - )); DESCR("less-than"); -DATA(insert OID = 162 ( int24gt PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100 int24gt - )); +DATA(insert OID = 162 ( int24gt 10 PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100 int24gt - )); DESCR("greater-than"); -DATA(insert OID = 163 ( int42gt PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100 int42gt - )); +DATA(insert OID = 163 ( int42gt 10 PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100 int42gt - )); DESCR("greater-than"); -DATA(insert OID = 164 ( int24ne PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100 int24ne - )); +DATA(insert OID = 164 ( int24ne 10 PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100 int24ne - )); DESCR("not equal"); -DATA(insert OID = 165 ( int42ne PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100 int42ne - )); +DATA(insert OID = 165 ( int42ne 10 PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100 int42ne - )); DESCR("not equal"); -DATA(insert OID = 166 ( int24le PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100 int24le - )); +DATA(insert OID = 166 ( int24le 10 PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100 int24le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 167 ( int42le PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100 int42le - )); +DATA(insert OID = 167 ( int42le 10 PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100 int42le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 168 ( int24ge PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100 int24ge - )); +DATA(insert OID = 168 ( int24ge 10 PGUID 12 f t t t 2 f 16 "21 23" 100 0 0 100 int24ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 169 ( int42ge PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100 int42ge - )); +DATA(insert OID = 169 ( int42ge 10 PGUID 12 f t t t 2 f 16 "23 21" 100 0 0 100 int42ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 170 ( int24mul PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100 int24mul - )); +DATA(insert OID = 170 ( int24mul 10 PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100 int24mul - )); DESCR("multiply"); -DATA(insert OID = 171 ( int42mul PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100 int42mul - )); +DATA(insert OID = 171 ( int42mul 10 PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100 int42mul - )); DESCR("multiply"); -DATA(insert OID = 172 ( int24div PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100 int24div - )); +DATA(insert OID = 172 ( int24div 10 PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100 int24div - )); DESCR("divide"); -DATA(insert OID = 173 ( int42div PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100 int42div - )); +DATA(insert OID = 173 ( int42div 10 PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100 int42div - )); DESCR("divide"); -DATA(insert OID = 174 ( int24mod PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100 int24mod - )); +DATA(insert OID = 174 ( int24mod 10 PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100 int24mod - )); DESCR("modulus"); -DATA(insert OID = 175 ( int42mod PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100 int42mod - )); +DATA(insert OID = 175 ( int42mod 10 PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100 int42mod - )); DESCR("modulus"); -DATA(insert OID = 176 ( int2pl PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2pl - )); +DATA(insert OID = 176 ( int2pl 10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2pl - )); DESCR("add"); -DATA(insert OID = 177 ( int4pl PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4pl - )); +DATA(insert OID = 177 ( int4pl 10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4pl - )); DESCR("add"); -DATA(insert OID = 178 ( int24pl PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100 int24pl - )); +DATA(insert OID = 178 ( int24pl 10 PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100 int24pl - )); DESCR("add"); -DATA(insert OID = 179 ( int42pl PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100 int42pl - )); +DATA(insert OID = 179 ( int42pl 10 PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100 int42pl - )); DESCR("add"); -DATA(insert OID = 180 ( int2mi PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2mi - )); +DATA(insert OID = 180 ( int2mi 10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2mi - )); DESCR("subtract"); -DATA(insert OID = 181 ( int4mi PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4mi - )); +DATA(insert OID = 181 ( int4mi 10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4mi - )); DESCR("subtract"); -DATA(insert OID = 182 ( int24mi PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100 int24mi - )); +DATA(insert OID = 182 ( int24mi 10 PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100 int24mi - )); DESCR("subtract"); -DATA(insert OID = 183 ( int42mi PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100 int42mi - )); +DATA(insert OID = 183 ( int42mi 10 PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100 int42mi - )); DESCR("subtract"); -DATA(insert OID = 184 ( oideq PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100 oideq - )); +DATA(insert OID = 184 ( oideq 10 PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100 oideq - )); DESCR("equal"); -DATA(insert OID = 185 ( oidne PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100 oidne - )); +DATA(insert OID = 185 ( oidne 10 PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100 oidne - )); DESCR("not equal"); -DATA(insert OID = 186 ( box_same PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_same - )); +DATA(insert OID = 186 ( box_same 10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_same - )); DESCR("same as"); -DATA(insert OID = 187 ( box_contain PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_contain - )); +DATA(insert OID = 187 ( box_contain 10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_contain - )); DESCR("contains"); -DATA(insert OID = 188 ( box_left PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_left - )); +DATA(insert OID = 188 ( box_left 10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_left - )); DESCR("is left of"); -DATA(insert OID = 189 ( box_overleft PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_overleft - )); +DATA(insert OID = 189 ( box_overleft 10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_overleft - )); DESCR("overlaps, but does not extend to right of"); -DATA(insert OID = 190 ( box_overright PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_overright - )); +DATA(insert OID = 190 ( box_overright 10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_overright - )); DESCR("overlaps, but does not extend to left of"); -DATA(insert OID = 191 ( box_right PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_right - )); +DATA(insert OID = 191 ( box_right 10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_right - )); DESCR("is right of"); -DATA(insert OID = 192 ( box_contained PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_contained - )); +DATA(insert OID = 192 ( box_contained 10 PGUID 12 f t t t 2 f 16 "603 603" 100 0 0 100 box_contained - )); DESCR("contained in"); -DATA(insert OID = 193 ( rt_box_union PGUID 12 f t t t 2 f 603 "603 603" 100 0 0 100 rt_box_union - )); +DATA(insert OID = 193 ( rt_box_union 10 PGUID 12 f t t t 2 f 603 "603 603" 100 0 0 100 rt_box_union - )); DESCR("r-tree"); -DATA(insert OID = 194 ( rt_box_inter PGUID 12 f t t t 2 f 603 "603 603" 100 0 0 100 rt_box_inter - )); +DATA(insert OID = 194 ( rt_box_inter 10 PGUID 12 f t t t 2 f 603 "603 603" 100 0 0 100 rt_box_inter - )); DESCR("r-tree"); -DATA(insert OID = 195 ( rt_box_size PGUID 12 f t t t 2 f 700 "603 700" 100 0 0 100 rt_box_size - )); +DATA(insert OID = 195 ( rt_box_size 10 PGUID 12 f t t t 2 f 700 "603 700" 100 0 0 100 rt_box_size - )); DESCR("r-tree"); -DATA(insert OID = 196 ( rt_bigbox_size PGUID 12 f t t t 2 f 700 "603 700" 100 0 0 100 rt_bigbox_size - )); +DATA(insert OID = 196 ( rt_bigbox_size 10 PGUID 12 f t t t 2 f 700 "603 700" 100 0 0 100 rt_bigbox_size - )); DESCR("r-tree"); -DATA(insert OID = 197 ( rt_poly_union PGUID 12 f t t t 2 f 604 "604 604" 100 0 0 100 rt_poly_union - )); +DATA(insert OID = 197 ( rt_poly_union 10 PGUID 12 f t t t 2 f 604 "604 604" 100 0 0 100 rt_poly_union - )); DESCR("r-tree"); -DATA(insert OID = 198 ( rt_poly_inter PGUID 12 f t t t 2 f 604 "604 604" 100 0 0 100 rt_poly_inter - )); +DATA(insert OID = 198 ( rt_poly_inter 10 PGUID 12 f t t t 2 f 604 "604 604" 100 0 0 100 rt_poly_inter - )); DESCR("r-tree"); -DATA(insert OID = 199 ( rt_poly_size PGUID 12 f t t t 2 f 23 "604 700" 100 0 0 100 rt_poly_size - )); +DATA(insert OID = 199 ( rt_poly_size 10 PGUID 12 f t t t 2 f 23 "604 700" 100 0 0 100 rt_poly_size - )); DESCR("r-tree"); /* OIDS 200 - 299 */ -DATA(insert OID = 200 ( float4in PGUID 12 f t t t 1 f 700 "0" 100 0 0 100 float4in - )); +DATA(insert OID = 200 ( float4in 10 PGUID 12 f t t t 1 f 700 "0" 100 0 0 100 float4in - )); DESCR("(internal)"); -DATA(insert OID = 201 ( float4out PGUID 12 f t t t 1 f 23 "700" 100 0 0 100 float4out - )); +DATA(insert OID = 201 ( float4out 10 PGUID 12 f t t t 1 f 23 "700" 100 0 0 100 float4out - )); DESCR("(internal)"); -DATA(insert OID = 202 ( float4mul PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100 float4mul - )); +DATA(insert OID = 202 ( float4mul 10 PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100 float4mul - )); DESCR("multiply"); -DATA(insert OID = 203 ( float4div PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100 float4div - )); +DATA(insert OID = 203 ( float4div 10 PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100 float4div - )); DESCR("divide"); -DATA(insert OID = 204 ( float4pl PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100 float4pl - )); +DATA(insert OID = 204 ( float4pl 10 PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100 float4pl - )); DESCR("add"); -DATA(insert OID = 205 ( float4mi PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100 float4mi - )); +DATA(insert OID = 205 ( float4mi 10 PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100 float4mi - )); DESCR("subtract"); -DATA(insert OID = 206 ( float4um PGUID 12 f t t t 1 f 700 "700" 100 0 0 100 float4um - )); +DATA(insert OID = 206 ( float4um 10 PGUID 12 f t t t 1 f 700 "700" 100 0 0 100 float4um - )); DESCR("negate"); -DATA(insert OID = 207 ( float4abs PGUID 12 f t t t 1 f 700 "700" 100 0 0 100 float4abs - )); +DATA(insert OID = 207 ( float4abs 10 PGUID 12 f t t t 1 f 700 "700" 100 0 0 100 float4abs - )); DESCR("absolute value"); -DATA(insert OID = 208 ( float4_accum PGUID 12 f t t t 2 f 1022 "1022 700" 100 0 0 100 float4_accum - )); +DATA(insert OID = 208 ( float4_accum 10 PGUID 12 f t t t 2 f 1022 "1022 700" 100 0 0 100 float4_accum - )); DESCR("aggregate transition function"); -DATA(insert OID = 209 ( float4larger PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100 float4larger - )); +DATA(insert OID = 209 ( float4larger 10 PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100 float4larger - )); DESCR("larger of two"); -DATA(insert OID = 211 ( float4smaller PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100 float4smaller - )); +DATA(insert OID = 211 ( float4smaller 10 PGUID 12 f t t t 2 f 700 "700 700" 100 0 0 100 float4smaller - )); DESCR("smaller of two"); -DATA(insert OID = 212 ( int4um PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 int4um - )); +DATA(insert OID = 212 ( int4um 10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 int4um - )); DESCR("negate"); -DATA(insert OID = 213 ( int2um PGUID 12 f t t t 1 f 21 "21" 100 0 0 100 int2um - )); +DATA(insert OID = 213 ( int2um 10 PGUID 12 f t t t 1 f 21 "21" 100 0 0 100 int2um - )); DESCR("negate"); -DATA(insert OID = 214 ( float8in PGUID 12 f t t t 1 f 701 "0" 100 0 0 100 float8in - )); +DATA(insert OID = 214 ( float8in 10 PGUID 12 f t t t 1 f 701 "0" 100 0 0 100 float8in - )); DESCR("(internal)"); -DATA(insert OID = 215 ( float8out PGUID 12 f t t t 1 f 23 "701" 100 0 0 100 float8out - )); +DATA(insert OID = 215 ( float8out 10 PGUID 12 f t t t 1 f 23 "701" 100 0 0 100 float8out - )); DESCR("(internal)"); -DATA(insert OID = 216 ( float8mul PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 float8mul - )); +DATA(insert OID = 216 ( float8mul 10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 float8mul - )); DESCR("multiply"); -DATA(insert OID = 217 ( float8div PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 float8div - )); +DATA(insert OID = 217 ( float8div 10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 float8div - )); DESCR("divide"); -DATA(insert OID = 218 ( float8pl PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 float8pl - )); +DATA(insert OID = 218 ( float8pl 10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 float8pl - )); DESCR("add"); -DATA(insert OID = 219 ( float8mi PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 float8mi - )); +DATA(insert OID = 219 ( float8mi 10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 float8mi - )); DESCR("subtract"); -DATA(insert OID = 220 ( float8um PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 float8um - )); +DATA(insert OID = 220 ( float8um 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 float8um - )); DESCR("negate"); -DATA(insert OID = 221 ( float8abs PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 float8abs - )); +DATA(insert OID = 221 ( float8abs 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 float8abs - )); DESCR("absolute value"); -DATA(insert OID = 222 ( float8_accum PGUID 12 f t t t 2 f 1022 "1022 701" 100 0 0 100 float8_accum - )); +DATA(insert OID = 222 ( float8_accum 10 PGUID 12 f t t t 2 f 1022 "1022 701" 100 0 0 100 float8_accum - )); DESCR("aggregate transition function"); -DATA(insert OID = 223 ( float8larger PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 float8larger - )); +DATA(insert OID = 223 ( float8larger 10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 float8larger - )); DESCR("larger of two"); -DATA(insert OID = 224 ( float8smaller PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 float8smaller - )); +DATA(insert OID = 224 ( float8smaller 10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 float8smaller - )); DESCR("smaller of two"); -DATA(insert OID = 225 ( lseg_center PGUID 12 f t t t 1 f 600 "601" 100 0 0 100 lseg_center - )); +DATA(insert OID = 225 ( lseg_center 10 PGUID 12 f t t t 1 f 600 "601" 100 0 0 100 lseg_center - )); DESCR("center of"); -DATA(insert OID = 226 ( path_center PGUID 12 f t t t 1 f 600 "602" 100 0 0 100 path_center - )); +DATA(insert OID = 226 ( path_center 10 PGUID 12 f t t t 1 f 600 "602" 100 0 0 100 path_center - )); DESCR("center of"); -DATA(insert OID = 227 ( poly_center PGUID 12 f t t t 1 f 600 "604" 100 0 0 100 poly_center - )); +DATA(insert OID = 227 ( poly_center 10 PGUID 12 f t t t 1 f 600 "604" 100 0 0 100 poly_center - )); DESCR("center of"); -DATA(insert OID = 228 ( dround PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dround - )); +DATA(insert OID = 228 ( dround 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dround - )); DESCR("round to nearest integer"); -DATA(insert OID = 229 ( dtrunc PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dtrunc - )); +DATA(insert OID = 229 ( dtrunc 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dtrunc - )); DESCR("truncate to integer"); -DATA(insert OID = 230 ( dsqrt PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dsqrt - )); +DATA(insert OID = 230 ( dsqrt 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dsqrt - )); DESCR("square root"); -DATA(insert OID = 231 ( dcbrt PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dcbrt - )); +DATA(insert OID = 231 ( dcbrt 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dcbrt - )); DESCR("cube root"); -DATA(insert OID = 232 ( dpow PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 dpow - )); +DATA(insert OID = 232 ( dpow 10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 dpow - )); DESCR("exponentiation (x^y)"); -DATA(insert OID = 233 ( dexp PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dexp - )); +DATA(insert OID = 233 ( dexp 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dexp - )); DESCR("natural exponential (e^x)"); -DATA(insert OID = 234 ( dlog1 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dlog1 - )); +DATA(insert OID = 234 ( dlog1 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dlog1 - )); DESCR("natural logarithm"); -DATA(insert OID = 235 ( float8 PGUID 12 f t t t 1 f 701 "21" 100 0 0 100 i2tod - )); +DATA(insert OID = 235 ( float8 10 PGUID 12 f t t t 1 f 701 "21" 100 0 0 100 i2tod - )); DESCR("convert int2 to float8"); -DATA(insert OID = 236 ( float4 PGUID 12 f t t t 1 f 700 "21" 100 0 0 100 i2tof - )); +DATA(insert OID = 236 ( float4 10 PGUID 12 f t t t 1 f 700 "21" 100 0 0 100 i2tof - )); DESCR("convert int2 to float4"); -DATA(insert OID = 237 ( int2 PGUID 12 f t t t 1 f 21 "701" 100 0 0 100 dtoi2 - )); +DATA(insert OID = 237 ( int2 10 PGUID 12 f t t t 1 f 21 "701" 100 0 0 100 dtoi2 - )); DESCR("convert float8 to int2"); -DATA(insert OID = 238 ( int2 PGUID 12 f t t t 1 f 21 "700" 100 0 0 100 ftoi2 - )); +DATA(insert OID = 238 ( int2 10 PGUID 12 f t t t 1 f 21 "700" 100 0 0 100 ftoi2 - )); DESCR("convert float4 to int2"); -DATA(insert OID = 239 ( line_distance PGUID 12 f t t t 2 f 701 "628 628" 100 0 0 100 line_distance - )); +DATA(insert OID = 239 ( line_distance 10 PGUID 12 f t t t 2 f 701 "628 628" 100 0 0 100 line_distance - )); DESCR("distance between"); -DATA(insert OID = 240 ( nabstimein PGUID 12 f t f t 1 f 702 "0" 100 0 0 100 nabstimein - )); +DATA(insert OID = 240 ( nabstimein 10 PGUID 12 f t f t 1 f 702 "0" 100 0 0 100 nabstimein - )); DESCR("(internal)"); -DATA(insert OID = 241 ( nabstimeout PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 nabstimeout - )); +DATA(insert OID = 241 ( nabstimeout 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 nabstimeout - )); DESCR("(internal)"); -DATA(insert OID = 242 ( reltimein PGUID 12 f t f t 1 f 703 "0" 100 0 0 100 reltimein - )); +DATA(insert OID = 242 ( reltimein 10 PGUID 12 f t f t 1 f 703 "0" 100 0 0 100 reltimein - )); DESCR("(internal)"); -DATA(insert OID = 243 ( reltimeout PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 reltimeout - )); +DATA(insert OID = 243 ( reltimeout 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 reltimeout - )); DESCR("(internal)"); -DATA(insert OID = 244 ( timepl PGUID 12 f t t t 2 f 702 "702 703" 100 0 0 100 timepl - )); +DATA(insert OID = 244 ( timepl 10 PGUID 12 f t t t 2 f 702 "702 703" 100 0 0 100 timepl - )); DESCR("add"); -DATA(insert OID = 245 ( timemi PGUID 12 f t t t 2 f 702 "702 703" 100 0 0 100 timemi - )); +DATA(insert OID = 245 ( timemi 10 PGUID 12 f t t t 2 f 702 "702 703" 100 0 0 100 timemi - )); DESCR("subtract"); -DATA(insert OID = 246 ( tintervalin PGUID 12 f t f t 1 f 704 "0" 100 0 0 100 tintervalin - )); +DATA(insert OID = 246 ( tintervalin 10 PGUID 12 f t f t 1 f 704 "0" 100 0 0 100 tintervalin - )); DESCR("(internal)"); -DATA(insert OID = 247 ( tintervalout PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 tintervalout - )); +DATA(insert OID = 247 ( tintervalout 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 tintervalout - )); DESCR("(internal)"); -DATA(insert OID = 248 ( intinterval PGUID 12 f t t t 2 f 16 "702 704" 100 0 0 100 intinterval - )); +DATA(insert OID = 248 ( intinterval 10 PGUID 12 f t t t 2 f 16 "702 704" 100 0 0 100 intinterval - )); DESCR("abstime in tinterval"); -DATA(insert OID = 249 ( tintervalrel PGUID 12 f t t t 1 f 703 "704" 100 0 0 100 tintervalrel - )); +DATA(insert OID = 249 ( tintervalrel 10 PGUID 12 f t t t 1 f 703 "704" 100 0 0 100 tintervalrel - )); DESCR(""); -DATA(insert OID = 250 ( timenow PGUID 12 f t f t 0 f 702 "0" 100 0 0 100 timenow - )); +DATA(insert OID = 250 ( timenow 10 PGUID 12 f t f t 0 f 702 "0" 100 0 0 100 timenow - )); DESCR("Current date and time (abstime)"); -DATA(insert OID = 251 ( abstimeeq PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100 abstimeeq - )); +DATA(insert OID = 251 ( abstimeeq 10 PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100 abstimeeq - )); DESCR("equal"); -DATA(insert OID = 252 ( abstimene PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100 abstimene - )); +DATA(insert OID = 252 ( abstimene 10 PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100 abstimene - )); DESCR("not equal"); -DATA(insert OID = 253 ( abstimelt PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100 abstimelt - )); +DATA(insert OID = 253 ( abstimelt 10 PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100 abstimelt - )); DESCR("less-than"); -DATA(insert OID = 254 ( abstimegt PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100 abstimegt - )); +DATA(insert OID = 254 ( abstimegt 10 PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100 abstimegt - )); DESCR("greater-than"); -DATA(insert OID = 255 ( abstimele PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100 abstimele - )); +DATA(insert OID = 255 ( abstimele 10 PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100 abstimele - )); DESCR("less-than-or-equal"); -DATA(insert OID = 256 ( abstimege PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100 abstimege - )); +DATA(insert OID = 256 ( abstimege 10 PGUID 12 f t t t 2 f 16 "702 702" 100 0 0 100 abstimege - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 257 ( reltimeeq PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimeeq - )); +DATA(insert OID = 257 ( reltimeeq 10 PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimeeq - )); DESCR("equal"); -DATA(insert OID = 258 ( reltimene PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimene - )); +DATA(insert OID = 258 ( reltimene 10 PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimene - )); DESCR("not equal"); -DATA(insert OID = 259 ( reltimelt PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimelt - )); +DATA(insert OID = 259 ( reltimelt 10 PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimelt - )); DESCR("less-than"); -DATA(insert OID = 260 ( reltimegt PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimegt - )); +DATA(insert OID = 260 ( reltimegt 10 PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimegt - )); DESCR("greater-than"); -DATA(insert OID = 261 ( reltimele PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimele - )); +DATA(insert OID = 261 ( reltimele 10 PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimele - )); DESCR("less-than-or-equal"); -DATA(insert OID = 262 ( reltimege PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimege - )); +DATA(insert OID = 262 ( reltimege 10 PGUID 12 f t t t 2 f 16 "703 703" 100 0 0 100 reltimege - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 263 ( tintervalsame PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervalsame - )); +DATA(insert OID = 263 ( tintervalsame 10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervalsame - )); DESCR("same as"); -DATA(insert OID = 264 ( tintervalct PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervalct - )); +DATA(insert OID = 264 ( tintervalct 10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervalct - )); DESCR("less-than"); -DATA(insert OID = 265 ( tintervalov PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervalov - )); +DATA(insert OID = 265 ( tintervalov 10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervalov - )); DESCR("overlaps"); -DATA(insert OID = 266 ( tintervalleneq PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100 tintervalleneq - )); +DATA(insert OID = 266 ( tintervalleneq 10 PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100 tintervalleneq - )); DESCR("length equal"); -DATA(insert OID = 267 ( tintervallenne PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100 tintervallenne - )); +DATA(insert OID = 267 ( tintervallenne 10 PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100 tintervallenne - )); DESCR("length not equal to"); -DATA(insert OID = 268 ( tintervallenlt PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100 tintervallenlt - )); +DATA(insert OID = 268 ( tintervallenlt 10 PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100 tintervallenlt - )); DESCR("length less-than"); -DATA(insert OID = 269 ( tintervallengt PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100 tintervallengt - )); +DATA(insert OID = 269 ( tintervallengt 10 PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100 tintervallengt - )); DESCR("length greater-than"); -DATA(insert OID = 270 ( tintervallenle PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100 tintervallenle - )); +DATA(insert OID = 270 ( tintervallenle 10 PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100 tintervallenle - )); DESCR("length less-than-or-equal"); -DATA(insert OID = 271 ( tintervallenge PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100 tintervallenge - )); +DATA(insert OID = 271 ( tintervallenge 10 PGUID 12 f t t t 2 f 16 "704 703" 100 0 0 100 tintervallenge - )); DESCR("length greater-than-or-equal"); -DATA(insert OID = 272 ( tintervalstart PGUID 12 f t t t 1 f 702 "704" 100 0 0 100 tintervalstart - )); +DATA(insert OID = 272 ( tintervalstart 10 PGUID 12 f t t t 1 f 702 "704" 100 0 0 100 tintervalstart - )); DESCR("start of interval"); -DATA(insert OID = 273 ( tintervalend PGUID 12 f t t t 1 f 702 "704" 100 0 0 100 tintervalend - )); +DATA(insert OID = 273 ( tintervalend 10 PGUID 12 f t t t 1 f 702 "704" 100 0 0 100 tintervalend - )); DESCR(""); -DATA(insert OID = 274 ( timeofday PGUID 12 f t f t 0 f 25 "0" 100 0 0 100 timeofday - )); +DATA(insert OID = 274 ( timeofday 10 PGUID 12 f t f t 0 f 25 "0" 100 0 0 100 timeofday - )); DESCR("Current date and time with microseconds"); -DATA(insert OID = 275 ( isfinite PGUID 12 f t t t 1 f 16 "702" 100 0 0 100 abstime_finite - )); +DATA(insert OID = 275 ( isfinite 10 PGUID 12 f t t t 1 f 16 "702" 100 0 0 100 abstime_finite - )); DESCR(""); -DATA(insert OID = 276 ( int2fac PGUID 12 f t t t 1 f 23 "21" 100 0 0 100 int2fac - )); +DATA(insert OID = 276 ( int2fac 10 PGUID 12 f t t t 1 f 23 "21" 100 0 0 100 int2fac - )); DESCR("factorial"); -DATA(insert OID = 277 ( inter_sl PGUID 12 f t t t 2 f 16 "601 628" 100 0 0 100 inter_sl - )); +DATA(insert OID = 277 ( inter_sl 10 PGUID 12 f t t t 2 f 16 "601 628" 100 0 0 100 inter_sl - )); DESCR(""); -DATA(insert OID = 278 ( inter_lb PGUID 12 f t t t 2 f 16 "628 603" 100 0 0 100 inter_lb - )); +DATA(insert OID = 278 ( inter_lb 10 PGUID 12 f t t t 2 f 16 "628 603" 100 0 0 100 inter_lb - )); DESCR(""); -DATA(insert OID = 279 ( float48mul PGUID 12 f t t t 2 f 701 "700 701" 100 0 0 100 float48mul - )); +DATA(insert OID = 279 ( float48mul 10 PGUID 12 f t t t 2 f 701 "700 701" 100 0 0 100 float48mul - )); DESCR("multiply"); -DATA(insert OID = 280 ( float48div PGUID 12 f t t t 2 f 701 "700 701" 100 0 0 100 float48div - )); +DATA(insert OID = 280 ( float48div 10 PGUID 12 f t t t 2 f 701 "700 701" 100 0 0 100 float48div - )); DESCR("divide"); -DATA(insert OID = 281 ( float48pl PGUID 12 f t t t 2 f 701 "700 701" 100 0 0 100 float48pl - )); +DATA(insert OID = 281 ( float48pl 10 PGUID 12 f t t t 2 f 701 "700 701" 100 0 0 100 float48pl - )); DESCR("add"); -DATA(insert OID = 282 ( float48mi PGUID 12 f t t t 2 f 701 "700 701" 100 0 0 100 float48mi - )); +DATA(insert OID = 282 ( float48mi 10 PGUID 12 f t t t 2 f 701 "700 701" 100 0 0 100 float48mi - )); DESCR("subtract"); -DATA(insert OID = 283 ( float84mul PGUID 12 f t t t 2 f 701 "701 700" 100 0 0 100 float84mul - )); +DATA(insert OID = 283 ( float84mul 10 PGUID 12 f t t t 2 f 701 "701 700" 100 0 0 100 float84mul - )); DESCR("multiply"); -DATA(insert OID = 284 ( float84div PGUID 12 f t t t 2 f 701 "701 700" 100 0 0 100 float84div - )); +DATA(insert OID = 284 ( float84div 10 PGUID 12 f t t t 2 f 701 "701 700" 100 0 0 100 float84div - )); DESCR("divide"); -DATA(insert OID = 285 ( float84pl PGUID 12 f t t t 2 f 701 "701 700" 100 0 0 100 float84pl - )); +DATA(insert OID = 285 ( float84pl 10 PGUID 12 f t t t 2 f 701 "701 700" 100 0 0 100 float84pl - )); DESCR("add"); -DATA(insert OID = 286 ( float84mi PGUID 12 f t t t 2 f 701 "701 700" 100 0 0 100 float84mi - )); +DATA(insert OID = 286 ( float84mi 10 PGUID 12 f t t t 2 f 701 "701 700" 100 0 0 100 float84mi - )); DESCR("subtract"); -DATA(insert OID = 287 ( float4eq PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100 float4eq - )); +DATA(insert OID = 287 ( float4eq 10 PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100 float4eq - )); DESCR("equal"); -DATA(insert OID = 288 ( float4ne PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100 float4ne - )); +DATA(insert OID = 288 ( float4ne 10 PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100 float4ne - )); DESCR("not equal"); -DATA(insert OID = 289 ( float4lt PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100 float4lt - )); +DATA(insert OID = 289 ( float4lt 10 PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100 float4lt - )); DESCR("less-than"); -DATA(insert OID = 290 ( float4le PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100 float4le - )); +DATA(insert OID = 290 ( float4le 10 PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100 float4le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 291 ( float4gt PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100 float4gt - )); +DATA(insert OID = 291 ( float4gt 10 PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100 float4gt - )); DESCR("greater-than"); -DATA(insert OID = 292 ( float4ge PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100 float4ge - )); +DATA(insert OID = 292 ( float4ge 10 PGUID 12 f t t t 2 f 16 "700 700" 100 0 0 100 float4ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 293 ( float8eq PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100 float8eq - )); +DATA(insert OID = 293 ( float8eq 10 PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100 float8eq - )); DESCR("equal"); -DATA(insert OID = 294 ( float8ne PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100 float8ne - )); +DATA(insert OID = 294 ( float8ne 10 PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100 float8ne - )); DESCR("not equal"); -DATA(insert OID = 295 ( float8lt PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100 float8lt - )); +DATA(insert OID = 295 ( float8lt 10 PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100 float8lt - )); DESCR("less-than"); -DATA(insert OID = 296 ( float8le PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100 float8le - )); +DATA(insert OID = 296 ( float8le 10 PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100 float8le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 297 ( float8gt PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100 float8gt - )); +DATA(insert OID = 297 ( float8gt 10 PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100 float8gt - )); DESCR("greater-than"); -DATA(insert OID = 298 ( float8ge PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100 float8ge - )); +DATA(insert OID = 298 ( float8ge 10 PGUID 12 f t t t 2 f 16 "701 701" 100 0 0 100 float8ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 299 ( float48eq PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100 float48eq - )); +DATA(insert OID = 299 ( float48eq 10 PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100 float48eq - )); DESCR("equal"); /* OIDS 300 - 399 */ -DATA(insert OID = 300 ( float48ne PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100 float48ne - )); +DATA(insert OID = 300 ( float48ne 10 PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100 float48ne - )); DESCR("not equal"); -DATA(insert OID = 301 ( float48lt PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100 float48lt - )); +DATA(insert OID = 301 ( float48lt 10 PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100 float48lt - )); DESCR("less-than"); -DATA(insert OID = 302 ( float48le PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100 float48le - )); +DATA(insert OID = 302 ( float48le 10 PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100 float48le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 303 ( float48gt PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100 float48gt - )); +DATA(insert OID = 303 ( float48gt 10 PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100 float48gt - )); DESCR("greater-than"); -DATA(insert OID = 304 ( float48ge PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100 float48ge - )); +DATA(insert OID = 304 ( float48ge 10 PGUID 12 f t t t 2 f 16 "700 701" 100 0 0 100 float48ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 305 ( float84eq PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100 float84eq - )); +DATA(insert OID = 305 ( float84eq 10 PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100 float84eq - )); DESCR("equal"); -DATA(insert OID = 306 ( float84ne PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100 float84ne - )); +DATA(insert OID = 306 ( float84ne 10 PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100 float84ne - )); DESCR("not equal"); -DATA(insert OID = 307 ( float84lt PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100 float84lt - )); +DATA(insert OID = 307 ( float84lt 10 PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100 float84lt - )); DESCR("less-than"); -DATA(insert OID = 308 ( float84le PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100 float84le - )); +DATA(insert OID = 308 ( float84le 10 PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100 float84le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 309 ( float84gt PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100 float84gt - )); +DATA(insert OID = 309 ( float84gt 10 PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100 float84gt - )); DESCR("greater-than"); -DATA(insert OID = 310 ( float84ge PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100 float84ge - )); +DATA(insert OID = 310 ( float84ge 10 PGUID 12 f t t t 2 f 16 "701 700" 100 0 0 100 float84ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 311 ( float8 PGUID 12 f t t t 1 f 701 "700" 100 0 0 100 ftod - )); +DATA(insert OID = 311 ( float8 10 PGUID 12 f t t t 1 f 701 "700" 100 0 0 100 ftod - )); DESCR("convert float4 to float8"); -DATA(insert OID = 312 ( float4 PGUID 12 f t t t 1 f 700 "701" 100 0 0 100 dtof - )); +DATA(insert OID = 312 ( float4 10 PGUID 12 f t t t 1 f 700 "701" 100 0 0 100 dtof - )); DESCR("convert float8 to float4"); -DATA(insert OID = 313 ( int4 PGUID 12 f t t t 1 f 23 "21" 100 0 0 100 i2toi4 - )); +DATA(insert OID = 313 ( int4 10 PGUID 12 f t t t 1 f 23 "21" 100 0 0 100 i2toi4 - )); DESCR("convert int2 to int4"); -DATA(insert OID = 314 ( int2 PGUID 12 f t t t 1 f 21 "23" 100 0 0 100 i4toi2 - )); +DATA(insert OID = 314 ( int2 10 PGUID 12 f t t t 1 f 21 "23" 100 0 0 100 i4toi2 - )); DESCR("convert int4 to int2"); -DATA(insert OID = 315 ( int2vectoreq PGUID 12 f t t t 2 f 16 "22 22" 100 0 0 100 int2vectoreq - )); +DATA(insert OID = 315 ( int2vectoreq 10 PGUID 12 f t t t 2 f 16 "22 22" 100 0 0 100 int2vectoreq - )); DESCR("equal"); -DATA(insert OID = 316 ( float8 PGUID 12 f t t t 1 f 701 "23" 100 0 0 100 i4tod - )); +DATA(insert OID = 316 ( float8 10 PGUID 12 f t t t 1 f 701 "23" 100 0 0 100 i4tod - )); DESCR("convert int4 to float8"); -DATA(insert OID = 317 ( int4 PGUID 12 f t t t 1 f 23 "701" 100 0 0 100 dtoi4 - )); +DATA(insert OID = 317 ( int4 10 PGUID 12 f t t t 1 f 23 "701" 100 0 0 100 dtoi4 - )); DESCR("convert float8 to int4"); -DATA(insert OID = 318 ( float4 PGUID 12 f t t t 1 f 700 "23" 100 0 0 100 i4tof - )); +DATA(insert OID = 318 ( float4 10 PGUID 12 f t t t 1 f 700 "23" 100 0 0 100 i4tof - )); DESCR("convert int4 to float4"); -DATA(insert OID = 319 ( int4 PGUID 12 f t t t 1 f 23 "700" 100 0 0 100 ftoi4 - )); +DATA(insert OID = 319 ( int4 10 PGUID 12 f t t t 1 f 23 "700" 100 0 0 100 ftoi4 - )); DESCR("convert float4 to int4"); -DATA(insert OID = 320 ( rtinsert PGUID 12 f t f t 5 f 23 "0 0 0 0 0" 100 0 0 100 rtinsert - )); +DATA(insert OID = 320 ( rtinsert 10 PGUID 12 f t f t 5 f 23 "0 0 0 0 0" 100 0 0 100 rtinsert - )); DESCR("r-tree(internal)"); -DATA(insert OID = 322 ( rtgettuple PGUID 12 f t f t 2 f 23 "0 0" 100 0 0 100 rtgettuple - )); +DATA(insert OID = 322 ( rtgettuple 10 PGUID 12 f t f t 2 f 23 "0 0" 100 0 0 100 rtgettuple - )); DESCR("r-tree(internal)"); -DATA(insert OID = 323 ( rtbuild PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 rtbuild - )); +DATA(insert OID = 323 ( rtbuild 10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 rtbuild - )); DESCR("r-tree(internal)"); -DATA(insert OID = 324 ( rtbeginscan PGUID 12 f t f t 4 f 23 "0 0 0 0" 100 0 0 100 rtbeginscan - )); +DATA(insert OID = 324 ( rtbeginscan 10 PGUID 12 f t f t 4 f 23 "0 0 0 0" 100 0 0 100 rtbeginscan - )); DESCR("r-tree(internal)"); -DATA(insert OID = 325 ( rtendscan PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 rtendscan - )); +DATA(insert OID = 325 ( rtendscan 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 rtendscan - )); DESCR("r-tree(internal)"); -DATA(insert OID = 326 ( rtmarkpos PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 rtmarkpos - )); +DATA(insert OID = 326 ( rtmarkpos 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 rtmarkpos - )); DESCR("r-tree(internal)"); -DATA(insert OID = 327 ( rtrestrpos PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 rtrestrpos - )); +DATA(insert OID = 327 ( rtrestrpos 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 rtrestrpos - )); DESCR("r-tree(internal)"); -DATA(insert OID = 328 ( rtrescan PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 rtrescan - )); +DATA(insert OID = 328 ( rtrescan 10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 rtrescan - )); DESCR("r-tree(internal)"); -DATA(insert OID = 321 ( rtbulkdelete PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 rtbulkdelete - )); +DATA(insert OID = 321 ( rtbulkdelete 10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 rtbulkdelete - )); DESCR("r-tree(internal)"); -DATA(insert OID = 1265 ( rtcostestimate PGUID 12 f t f t 8 f 0 "0 0 0 0 0 0 0 0" 100 0 0 100 rtcostestimate - )); +DATA(insert OID = 1265 ( rtcostestimate 10 PGUID 12 f t f t 8 f 0 "0 0 0 0 0 0 0 0" 100 0 0 100 rtcostestimate - )); DESCR("r-tree(internal)"); -DATA(insert OID = 330 ( btgettuple PGUID 12 f t f t 2 f 23 "0 0" 100 0 0 100 btgettuple - )); +DATA(insert OID = 330 ( btgettuple 10 PGUID 12 f t f t 2 f 23 "0 0" 100 0 0 100 btgettuple - )); DESCR("btree(internal)"); -DATA(insert OID = 331 ( btinsert PGUID 12 f t f t 5 f 23 "0 0 0 0 0" 100 0 0 100 btinsert - )); +DATA(insert OID = 331 ( btinsert 10 PGUID 12 f t f t 5 f 23 "0 0 0 0 0" 100 0 0 100 btinsert - )); DESCR("btree(internal)"); -DATA(insert OID = 333 ( btbeginscan PGUID 12 f t f t 4 f 23 "0 0 0 0" 100 0 0 100 btbeginscan - )); +DATA(insert OID = 333 ( btbeginscan 10 PGUID 12 f t f t 4 f 23 "0 0 0 0" 100 0 0 100 btbeginscan - )); DESCR("btree(internal)"); -DATA(insert OID = 334 ( btrescan PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 btrescan - )); +DATA(insert OID = 334 ( btrescan 10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 btrescan - )); DESCR("btree(internal)"); -DATA(insert OID = 335 ( btendscan PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 btendscan - )); +DATA(insert OID = 335 ( btendscan 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 btendscan - )); DESCR("btree(internal)"); -DATA(insert OID = 336 ( btmarkpos PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 btmarkpos - )); +DATA(insert OID = 336 ( btmarkpos 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 btmarkpos - )); DESCR("btree(internal)"); -DATA(insert OID = 337 ( btrestrpos PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 btrestrpos - )); +DATA(insert OID = 337 ( btrestrpos 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 btrestrpos - )); DESCR("btree(internal)"); -DATA(insert OID = 338 ( btbuild PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 btbuild - )); +DATA(insert OID = 338 ( btbuild 10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 btbuild - )); DESCR("btree(internal)"); -DATA(insert OID = 332 ( btbulkdelete PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 btbulkdelete - )); +DATA(insert OID = 332 ( btbulkdelete 10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 btbulkdelete - )); DESCR("btree(internal)"); -DATA(insert OID = 1268 ( btcostestimate PGUID 12 f t f t 8 f 0 "0 0 0 0 0 0 0 0" 100 0 0 100 btcostestimate - )); +DATA(insert OID = 1268 ( btcostestimate 10 PGUID 12 f t f t 8 f 0 "0 0 0 0 0 0 0 0" 100 0 0 100 btcostestimate - )); DESCR("btree(internal)"); -DATA(insert OID = 339 ( poly_same PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100 poly_same - )); +DATA(insert OID = 339 ( poly_same 10 PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100 poly_same - )); DESCR("same as"); -DATA(insert OID = 340 ( poly_contain PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100 poly_contain - )); +DATA(insert OID = 340 ( poly_contain 10 PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100 poly_contain - )); DESCR("contains"); -DATA(insert OID = 341 ( poly_left PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100 poly_left - )); +DATA(insert OID = 341 ( poly_left 10 PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100 poly_left - )); DESCR("is left of"); -DATA(insert OID = 342 ( poly_overleft PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100 poly_overleft - )); +DATA(insert OID = 342 ( poly_overleft 10 PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100 poly_overleft - )); DESCR("overlaps, but does not extend to right of"); -DATA(insert OID = 343 ( poly_overright PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100 poly_overright - )); +DATA(insert OID = 343 ( poly_overright 10 PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100 poly_overright - )); DESCR("overlaps, but does not extend to left of"); -DATA(insert OID = 344 ( poly_right PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100 poly_right - )); +DATA(insert OID = 344 ( poly_right 10 PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100 poly_right - )); DESCR("is right of"); -DATA(insert OID = 345 ( poly_contained PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100 poly_contained - )); +DATA(insert OID = 345 ( poly_contained 10 PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100 poly_contained - )); DESCR("contained in"); -DATA(insert OID = 346 ( poly_overlap PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100 poly_overlap - )); +DATA(insert OID = 346 ( poly_overlap 10 PGUID 12 f t t t 2 f 16 "604 604" 100 0 0 100 poly_overlap - )); DESCR("overlaps"); -DATA(insert OID = 347 ( poly_in PGUID 12 f t t t 1 f 604 "0" 100 0 0 100 poly_in - )); +DATA(insert OID = 347 ( poly_in 10 PGUID 12 f t t t 1 f 604 "0" 100 0 0 100 poly_in - )); DESCR("(internal)"); -DATA(insert OID = 348 ( poly_out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 poly_out - )); +DATA(insert OID = 348 ( poly_out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 poly_out - )); DESCR("(internal)"); -DATA(insert OID = 350 ( btint2cmp PGUID 12 f t t t 2 f 23 "21 21" 100 0 0 100 btint2cmp - )); +DATA(insert OID = 350 ( btint2cmp 10 PGUID 12 f t t t 2 f 23 "21 21" 100 0 0 100 btint2cmp - )); DESCR("btree less-equal-greater"); -DATA(insert OID = 351 ( btint4cmp PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 btint4cmp - )); +DATA(insert OID = 351 ( btint4cmp 10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 btint4cmp - )); DESCR("btree less-equal-greater"); -DATA(insert OID = 842 ( btint8cmp PGUID 12 f t t t 2 f 23 "20 20" 100 0 0 100 btint8cmp - )); +DATA(insert OID = 842 ( btint8cmp 10 PGUID 12 f t t t 2 f 23 "20 20" 100 0 0 100 btint8cmp - )); DESCR("btree less-equal-greater"); -DATA(insert OID = 354 ( btfloat4cmp PGUID 12 f t t t 2 f 23 "700 700" 100 0 0 100 btfloat4cmp - )); +DATA(insert OID = 354 ( btfloat4cmp 10 PGUID 12 f t t t 2 f 23 "700 700" 100 0 0 100 btfloat4cmp - )); DESCR("btree less-equal-greater"); -DATA(insert OID = 355 ( btfloat8cmp PGUID 12 f t t t 2 f 23 "701 701" 100 0 0 100 btfloat8cmp - )); +DATA(insert OID = 355 ( btfloat8cmp 10 PGUID 12 f t t t 2 f 23 "701 701" 100 0 0 100 btfloat8cmp - )); DESCR("btree less-equal-greater"); -DATA(insert OID = 356 ( btoidcmp PGUID 12 f t t t 2 f 23 "26 26" 100 0 0 100 btoidcmp - )); +DATA(insert OID = 356 ( btoidcmp 10 PGUID 12 f t t t 2 f 23 "26 26" 100 0 0 100 btoidcmp - )); DESCR("btree less-equal-greater"); -DATA(insert OID = 404 ( btoidvectorcmp PGUID 12 f t t t 2 f 23 "30 30" 100 0 0 100 btoidvectorcmp - )); +DATA(insert OID = 404 ( btoidvectorcmp 10 PGUID 12 f t t t 2 f 23 "30 30" 100 0 0 100 btoidvectorcmp - )); DESCR("btree less-equal-greater"); -DATA(insert OID = 357 ( btabstimecmp PGUID 12 f t t t 2 f 23 "702 702" 100 0 0 100 btabstimecmp - )); +DATA(insert OID = 357 ( btabstimecmp 10 PGUID 12 f t t t 2 f 23 "702 702" 100 0 0 100 btabstimecmp - )); DESCR("btree less-equal-greater"); -DATA(insert OID = 358 ( btcharcmp PGUID 12 f t t t 2 f 23 "18 18" 100 0 0 100 btcharcmp - )); +DATA(insert OID = 358 ( btcharcmp 10 PGUID 12 f t t t 2 f 23 "18 18" 100 0 0 100 btcharcmp - )); DESCR("btree less-equal-greater"); -DATA(insert OID = 359 ( btnamecmp PGUID 12 f t t t 2 f 23 "19 19" 100 0 0 100 btnamecmp - )); +DATA(insert OID = 359 ( btnamecmp 10 PGUID 12 f t t t 2 f 23 "19 19" 100 0 0 100 btnamecmp - )); DESCR("btree less-equal-greater"); -DATA(insert OID = 360 ( bttextcmp PGUID 12 f t t t 2 f 23 "25 25" 100 0 0 100 bttextcmp - )); +DATA(insert OID = 360 ( bttextcmp 10 PGUID 12 f t t t 2 f 23 "25 25" 100 0 0 100 bttextcmp - )); DESCR("btree less-equal-greater"); -DATA(insert OID = 361 ( lseg_distance PGUID 12 f t t t 2 f 701 "601 601" 100 0 0 100 lseg_distance - )); +DATA(insert OID = 361 ( lseg_distance 10 PGUID 12 f t t t 2 f 701 "601 601" 100 0 0 100 lseg_distance - )); DESCR("distance between"); -DATA(insert OID = 362 ( lseg_interpt PGUID 12 f t t t 2 f 600 "601 601" 100 0 0 100 lseg_interpt - )); +DATA(insert OID = 362 ( lseg_interpt 10 PGUID 12 f t t t 2 f 600 "601 601" 100 0 0 100 lseg_interpt - )); DESCR(""); -DATA(insert OID = 363 ( dist_ps PGUID 12 f t t t 2 f 701 "600 601" 100 0 0 100 dist_ps - )); +DATA(insert OID = 363 ( dist_ps 10 PGUID 12 f t t t 2 f 701 "600 601" 100 0 0 100 dist_ps - )); DESCR("distance between"); -DATA(insert OID = 364 ( dist_pb PGUID 12 f t t t 2 f 701 "600 603" 100 0 0 100 dist_pb - )); +DATA(insert OID = 364 ( dist_pb 10 PGUID 12 f t t t 2 f 701 "600 603" 100 0 0 100 dist_pb - )); DESCR("distance between point and box"); -DATA(insert OID = 365 ( dist_sb PGUID 12 f t t t 2 f 701 "601 603" 100 0 0 100 dist_sb - )); +DATA(insert OID = 365 ( dist_sb 10 PGUID 12 f t t t 2 f 701 "601 603" 100 0 0 100 dist_sb - )); DESCR("distance between segment and box"); -DATA(insert OID = 366 ( close_ps PGUID 12 f t t t 2 f 600 "600 601" 100 0 0 100 close_ps - )); +DATA(insert OID = 366 ( close_ps 10 PGUID 12 f t t t 2 f 600 "600 601" 100 0 0 100 close_ps - )); DESCR("closest point on line segment"); -DATA(insert OID = 367 ( close_pb PGUID 12 f t t t 2 f 600 "600 603" 100 0 0 100 close_pb - )); +DATA(insert OID = 367 ( close_pb 10 PGUID 12 f t t t 2 f 600 "600 603" 100 0 0 100 close_pb - )); DESCR("closest point on box"); -DATA(insert OID = 368 ( close_sb PGUID 12 f t t t 2 f 600 "601 603" 100 0 0 100 close_sb - )); +DATA(insert OID = 368 ( close_sb 10 PGUID 12 f t t t 2 f 600 "601 603" 100 0 0 100 close_sb - )); DESCR("closest point to line segment on box"); -DATA(insert OID = 369 ( on_ps PGUID 12 f t t t 2 f 16 "600 601" 100 0 0 100 on_ps - )); +DATA(insert OID = 369 ( on_ps 10 PGUID 12 f t t t 2 f 16 "600 601" 100 0 0 100 on_ps - )); DESCR("point contained in segment"); -DATA(insert OID = 370 ( path_distance PGUID 12 f t t t 2 f 701 "602 602" 100 0 0 100 path_distance - )); +DATA(insert OID = 370 ( path_distance 10 PGUID 12 f t t t 2 f 701 "602 602" 100 0 0 100 path_distance - )); DESCR("distance between paths"); -DATA(insert OID = 371 ( dist_ppath PGUID 12 f t t t 2 f 701 "600 602" 100 0 0 100 dist_ppath - )); +DATA(insert OID = 371 ( dist_ppath 10 PGUID 12 f t t t 2 f 701 "600 602" 100 0 0 100 dist_ppath - )); DESCR("distance between point and path"); -DATA(insert OID = 372 ( on_sb PGUID 12 f t t t 2 f 16 "601 603" 100 0 0 100 on_sb - )); +DATA(insert OID = 372 ( on_sb 10 PGUID 12 f t t t 2 f 16 "601 603" 100 0 0 100 on_sb - )); DESCR("contained in"); -DATA(insert OID = 373 ( inter_sb PGUID 12 f t t t 2 f 16 "601 603" 100 0 0 100 inter_sb - )); +DATA(insert OID = 373 ( inter_sb 10 PGUID 12 f t t t 2 f 16 "601 603" 100 0 0 100 inter_sb - )); DESCR("intersects?"); /* OIDS 400 - 499 */ -DATA(insert OID = 406 ( text PGUID 12 f t t t 1 f 25 "19" 100 0 0 100 name_text - )); +DATA(insert OID = 406 ( text 10 PGUID 12 f t t t 1 f 25 "19" 100 0 0 100 name_text - )); DESCR("convert name to text"); -DATA(insert OID = 407 ( name PGUID 12 f t t t 1 f 19 "25" 100 0 0 100 text_name - )); +DATA(insert OID = 407 ( name 10 PGUID 12 f t t t 1 f 19 "25" 100 0 0 100 text_name - )); DESCR("convert text to name"); -DATA(insert OID = 408 ( bpchar PGUID 12 f t t t 1 f 1042 "19" 100 0 0 100 name_bpchar - )); +DATA(insert OID = 408 ( bpchar 10 PGUID 12 f t t t 1 f 1042 "19" 100 0 0 100 name_bpchar - )); DESCR("convert name to char()"); -DATA(insert OID = 409 ( name PGUID 12 f t t t 1 f 19 "1042" 100 0 0 100 bpchar_name - )); +DATA(insert OID = 409 ( name 10 PGUID 12 f t t t 1 f 19 "1042" 100 0 0 100 bpchar_name - )); DESCR("convert char() to name"); -DATA(insert OID = 440 ( hashgettuple PGUID 12 f t f t 2 f 23 "0 0" 100 0 0 100 hashgettuple - )); +DATA(insert OID = 440 ( hashgettuple 10 PGUID 12 f t f t 2 f 23 "0 0" 100 0 0 100 hashgettuple - )); DESCR("hash(internal)"); -DATA(insert OID = 441 ( hashinsert PGUID 12 f t f t 5 f 23 "0 0 0 0 0" 100 0 0 100 hashinsert - )); +DATA(insert OID = 441 ( hashinsert 10 PGUID 12 f t f t 5 f 23 "0 0 0 0 0" 100 0 0 100 hashinsert - )); DESCR("hash(internal)"); -DATA(insert OID = 443 ( hashbeginscan PGUID 12 f t f t 4 f 23 "0 0 0 0" 100 0 0 100 hashbeginscan - )); +DATA(insert OID = 443 ( hashbeginscan 10 PGUID 12 f t f t 4 f 23 "0 0 0 0" 100 0 0 100 hashbeginscan - )); DESCR("hash(internal)"); -DATA(insert OID = 444 ( hashrescan PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 hashrescan - )); +DATA(insert OID = 444 ( hashrescan 10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 hashrescan - )); DESCR("hash(internal)"); -DATA(insert OID = 445 ( hashendscan PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 hashendscan - )); +DATA(insert OID = 445 ( hashendscan 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 hashendscan - )); DESCR("hash(internal)"); -DATA(insert OID = 446 ( hashmarkpos PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 hashmarkpos - )); +DATA(insert OID = 446 ( hashmarkpos 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 hashmarkpos - )); DESCR("hash(internal)"); -DATA(insert OID = 447 ( hashrestrpos PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 hashrestrpos - )); +DATA(insert OID = 447 ( hashrestrpos 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 hashrestrpos - )); DESCR("hash(internal)"); -DATA(insert OID = 448 ( hashbuild PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 hashbuild - )); +DATA(insert OID = 448 ( hashbuild 10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 hashbuild - )); DESCR("hash(internal)"); -DATA(insert OID = 442 ( hashbulkdelete PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 hashbulkdelete - )); +DATA(insert OID = 442 ( hashbulkdelete 10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 hashbulkdelete - )); DESCR("hash(internal)"); -DATA(insert OID = 438 ( hashcostestimate PGUID 12 f t f t 8 f 0 "0 0 0 0 0 0 0 0" 100 0 0 100 hashcostestimate - )); +DATA(insert OID = 438 ( hashcostestimate 10 PGUID 12 f t f t 8 f 0 "0 0 0 0 0 0 0 0" 100 0 0 100 hashcostestimate - )); DESCR("hash(internal)"); -DATA(insert OID = 449 ( hashint2 PGUID 12 f t t t 1 f 23 "21" 100 0 0 100 hashint2 - )); +DATA(insert OID = 449 ( hashint2 10 PGUID 12 f t t t 1 f 23 "21" 100 0 0 100 hashint2 - )); DESCR("hash"); -DATA(insert OID = 450 ( hashint4 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 hashint4 - )); +DATA(insert OID = 450 ( hashint4 10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 hashint4 - )); DESCR("hash"); -DATA(insert OID = 949 ( hashint8 PGUID 12 f t t t 1 f 23 "20" 100 0 0 100 hashint8 - )); +DATA(insert OID = 949 ( hashint8 10 PGUID 12 f t t t 1 f 23 "20" 100 0 0 100 hashint8 - )); DESCR("hash"); -DATA(insert OID = 451 ( hashfloat4 PGUID 12 f t t t 1 f 23 "700" 100 0 0 100 hashfloat4 - )); +DATA(insert OID = 451 ( hashfloat4 10 PGUID 12 f t t t 1 f 23 "700" 100 0 0 100 hashfloat4 - )); DESCR("hash"); -DATA(insert OID = 452 ( hashfloat8 PGUID 12 f t t t 1 f 23 "701" 100 0 0 100 hashfloat8 - )); +DATA(insert OID = 452 ( hashfloat8 10 PGUID 12 f t t t 1 f 23 "701" 100 0 0 100 hashfloat8 - )); DESCR("hash"); -DATA(insert OID = 453 ( hashoid PGUID 12 f t t t 1 f 23 "26" 100 0 0 100 hashoid - )); +DATA(insert OID = 453 ( hashoid 10 PGUID 12 f t t t 1 f 23 "26" 100 0 0 100 hashoid - )); DESCR("hash"); -DATA(insert OID = 454 ( hashchar PGUID 12 f t t t 1 f 23 "18" 100 0 0 100 hashchar - )); +DATA(insert OID = 454 ( hashchar 10 PGUID 12 f t t t 1 f 23 "18" 100 0 0 100 hashchar - )); DESCR("hash"); -DATA(insert OID = 455 ( hashname PGUID 12 f t t t 1 f 23 "19" 100 0 0 100 hashname - )); +DATA(insert OID = 455 ( hashname 10 PGUID 12 f t t t 1 f 23 "19" 100 0 0 100 hashname - )); DESCR("hash"); -DATA(insert OID = 456 ( hashvarlena PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 hashvarlena - )); +DATA(insert OID = 456 ( hashvarlena 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 hashvarlena - )); DESCR("hash any varlena type"); -DATA(insert OID = 457 ( hashoidvector PGUID 12 f t t t 1 f 23 "30" 100 0 0 100 hashoidvector - )); +DATA(insert OID = 457 ( hashoidvector 10 PGUID 12 f t t t 1 f 23 "30" 100 0 0 100 hashoidvector - )); DESCR("hash"); -DATA(insert OID = 399 ( hashmacaddr PGUID 12 f t t t 1 f 23 "829" 100 0 0 100 hashmacaddr - )); +DATA(insert OID = 399 ( hashmacaddr 10 PGUID 12 f t t t 1 f 23 "829" 100 0 0 100 hashmacaddr - )); DESCR("hash"); -DATA(insert OID = 458 ( text_larger PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100 text_larger - )); +DATA(insert OID = 458 ( text_larger 10 PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100 text_larger - )); DESCR("larger of two"); -DATA(insert OID = 459 ( text_smaller PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100 text_smaller - )); +DATA(insert OID = 459 ( text_smaller 10 PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100 text_smaller - )); DESCR("smaller of two"); -DATA(insert OID = 460 ( int8in PGUID 12 f t t t 1 f 20 "0" 100 0 0 100 int8in - )); +DATA(insert OID = 460 ( int8in 10 PGUID 12 f t t t 1 f 20 "0" 100 0 0 100 int8in - )); DESCR("(internal)"); -DATA(insert OID = 461 ( int8out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 int8out - )); +DATA(insert OID = 461 ( int8out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 int8out - )); DESCR("(internal)"); -DATA(insert OID = 462 ( int8um PGUID 12 f t t t 1 f 20 "20" 100 0 0 100 int8um - )); +DATA(insert OID = 462 ( int8um 10 PGUID 12 f t t t 1 f 20 "20" 100 0 0 100 int8um - )); DESCR("negate"); -DATA(insert OID = 463 ( int8pl PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8pl - )); +DATA(insert OID = 463 ( int8pl 10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8pl - )); DESCR("add"); -DATA(insert OID = 464 ( int8mi PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8mi - )); +DATA(insert OID = 464 ( int8mi 10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8mi - )); DESCR("subtract"); -DATA(insert OID = 465 ( int8mul PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8mul - )); +DATA(insert OID = 465 ( int8mul 10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8mul - )); DESCR("multiply"); -DATA(insert OID = 466 ( int8div PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8div - )); +DATA(insert OID = 466 ( int8div 10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8div - )); DESCR("divide"); -DATA(insert OID = 467 ( int8eq PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100 int8eq - )); +DATA(insert OID = 467 ( int8eq 10 PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100 int8eq - )); DESCR("equal"); -DATA(insert OID = 468 ( int8ne PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100 int8ne - )); +DATA(insert OID = 468 ( int8ne 10 PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100 int8ne - )); DESCR("not equal"); -DATA(insert OID = 469 ( int8lt PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100 int8lt - )); +DATA(insert OID = 469 ( int8lt 10 PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100 int8lt - )); DESCR("less-than"); -DATA(insert OID = 470 ( int8gt PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100 int8gt - )); +DATA(insert OID = 470 ( int8gt 10 PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100 int8gt - )); DESCR("greater-than"); -DATA(insert OID = 471 ( int8le PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100 int8le - )); +DATA(insert OID = 471 ( int8le 10 PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100 int8le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 472 ( int8ge PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100 int8ge - )); +DATA(insert OID = 472 ( int8ge 10 PGUID 12 f t t t 2 f 16 "20 20" 100 0 0 100 int8ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 474 ( int84eq PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100 int84eq - )); +DATA(insert OID = 474 ( int84eq 10 PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100 int84eq - )); DESCR("equal"); -DATA(insert OID = 475 ( int84ne PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100 int84ne - )); +DATA(insert OID = 475 ( int84ne 10 PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100 int84ne - )); DESCR("not equal"); -DATA(insert OID = 476 ( int84lt PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100 int84lt - )); +DATA(insert OID = 476 ( int84lt 10 PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100 int84lt - )); DESCR("less-than"); -DATA(insert OID = 477 ( int84gt PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100 int84gt - )); +DATA(insert OID = 477 ( int84gt 10 PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100 int84gt - )); DESCR("greater-than"); -DATA(insert OID = 478 ( int84le PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100 int84le - )); +DATA(insert OID = 478 ( int84le 10 PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100 int84le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 479 ( int84ge PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100 int84ge - )); +DATA(insert OID = 479 ( int84ge 10 PGUID 12 f t t t 2 f 16 "20 23" 100 0 0 100 int84ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 480 ( int4 PGUID 12 f t t t 1 f 23 "20" 100 0 0 100 int84 - )); +DATA(insert OID = 480 ( int4 10 PGUID 12 f t t t 1 f 23 "20" 100 0 0 100 int84 - )); DESCR("convert int8 to int4"); -DATA(insert OID = 481 ( int8 PGUID 12 f t t t 1 f 20 "23" 100 0 0 100 int48 - )); +DATA(insert OID = 481 ( int8 10 PGUID 12 f t t t 1 f 20 "23" 100 0 0 100 int48 - )); DESCR("convert int4 to int8"); -DATA(insert OID = 482 ( float8 PGUID 12 f t t t 1 f 701 "20" 100 0 0 100 i8tod - )); +DATA(insert OID = 482 ( float8 10 PGUID 12 f t t t 1 f 701 "20" 100 0 0 100 i8tod - )); DESCR("convert int8 to float8"); -DATA(insert OID = 483 ( int8 PGUID 12 f t t t 1 f 20 "701" 100 0 0 100 dtoi8 - )); +DATA(insert OID = 483 ( int8 10 PGUID 12 f t t t 1 f 20 "701" 100 0 0 100 dtoi8 - )); DESCR("convert float8 to int8"); /* OIDS 500 - 599 */ /* OIDS 600 - 699 */ -DATA(insert OID = 1285 ( int4notin PGUID 12 f t f t 2 f 16 "23 25" 100 0 0 100 int4notin - )); +DATA(insert OID = 1285 ( int4notin 10 PGUID 12 f t f t 2 f 16 "23 25" 100 0 0 100 int4notin - )); DESCR("not in"); -DATA(insert OID = 1286 ( oidnotin PGUID 12 f t f t 2 f 16 "26 25" 100 0 0 100 oidnotin - )); +DATA(insert OID = 1286 ( oidnotin 10 PGUID 12 f t f t 2 f 16 "26 25" 100 0 0 100 oidnotin - )); DESCR("not in"); -DATA(insert OID = 1287 ( int44in PGUID 12 f t t t 1 f 22 "0" 100 0 0 100 int44in - )); +DATA(insert OID = 1287 ( int44in 10 PGUID 12 f t t t 1 f 22 "0" 100 0 0 100 int44in - )); DESCR("(internal)"); -DATA(insert OID = 653 ( int44out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 int44out - )); +DATA(insert OID = 653 ( int44out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 int44out - )); DESCR("(internal)"); -DATA(insert OID = 655 ( namelt PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100 namelt - )); +DATA(insert OID = 655 ( namelt 10 PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100 namelt - )); DESCR("less-than"); -DATA(insert OID = 656 ( namele PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100 namele - )); +DATA(insert OID = 656 ( namele 10 PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100 namele - )); DESCR("less-than-or-equal"); -DATA(insert OID = 657 ( namegt PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100 namegt - )); +DATA(insert OID = 657 ( namegt 10 PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100 namegt - )); DESCR("greater-than"); -DATA(insert OID = 658 ( namege PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100 namege - )); +DATA(insert OID = 658 ( namege 10 PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100 namege - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 659 ( namene PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100 namene - )); +DATA(insert OID = 659 ( namene 10 PGUID 12 f t t t 2 f 16 "19 19" 100 0 0 100 namene - )); DESCR("not equal"); -DATA(insert OID = 668 ( bpchar PGUID 12 f t t t 2 f 1042 "1042 23" 100 0 0 100 bpchar - )); +DATA(insert OID = 668 ( bpchar 10 PGUID 12 f t t t 2 f 1042 "1042 23" 100 0 0 100 bpchar - )); DESCR("adjust char() to typmod length"); -DATA(insert OID = 669 ( varchar PGUID 12 f t t t 2 f 1043 "1043 23" 100 0 0 100 varchar - )); +DATA(insert OID = 669 ( varchar 10 PGUID 12 f t t t 2 f 1043 "1043 23" 100 0 0 100 varchar - )); DESCR("adjust varchar() to typmod length"); -DATA(insert OID = 676 ( mktinterval PGUID 12 f t t t 2 f 704 "702 702" 100 0 0 100 mktinterval - )); +DATA(insert OID = 676 ( mktinterval 10 PGUID 12 f t t t 2 f 704 "702 702" 100 0 0 100 mktinterval - )); DESCR("convert to tinterval"); -DATA(insert OID = 619 ( oidvectorne PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100 oidvectorne - )); +DATA(insert OID = 619 ( oidvectorne 10 PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100 oidvectorne - )); DESCR("not equal"); -DATA(insert OID = 677 ( oidvectorlt PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100 oidvectorlt - )); +DATA(insert OID = 677 ( oidvectorlt 10 PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100 oidvectorlt - )); DESCR("less-than"); -DATA(insert OID = 678 ( oidvectorle PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100 oidvectorle - )); +DATA(insert OID = 678 ( oidvectorle 10 PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100 oidvectorle - )); DESCR("less-than-or-equal"); -DATA(insert OID = 679 ( oidvectoreq PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100 oidvectoreq - )); +DATA(insert OID = 679 ( oidvectoreq 10 PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100 oidvectoreq - )); DESCR("equal"); -DATA(insert OID = 680 ( oidvectorge PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100 oidvectorge - )); +DATA(insert OID = 680 ( oidvectorge 10 PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100 oidvectorge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 681 ( oidvectorgt PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100 oidvectorgt - )); +DATA(insert OID = 681 ( oidvectorgt 10 PGUID 12 f t t t 2 f 16 "30 30" 100 0 0 100 oidvectorgt - )); DESCR("greater-than"); /* OIDS 700 - 799 */ -DATA(insert OID = 710 ( getpgusername PGUID 12 f t f t 0 f 19 "0" 100 0 0 100 current_user - )); +DATA(insert OID = 710 ( getpgusername 10 PGUID 12 f t f t 0 f 19 "0" 100 0 0 100 current_user - )); DESCR("deprecated -- use current_user"); -DATA(insert OID = 711 ( userfntest PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 userfntest - )); +DATA(insert OID = 711 ( userfntest 10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 userfntest - )); DESCR(""); -DATA(insert OID = 713 ( oidrand PGUID 12 f t f t 2 f 16 "26 23" 100 0 0 100 oidrand - )); +DATA(insert OID = 713 ( oidrand 10 PGUID 12 f t f t 2 f 16 "26 23" 100 0 0 100 oidrand - )); DESCR("random"); -DATA(insert OID = 715 ( oidsrand PGUID 12 f t f t 1 f 16 "23" 100 0 0 100 oidsrand - )); +DATA(insert OID = 715 ( oidsrand 10 PGUID 12 f t f t 1 f 16 "23" 100 0 0 100 oidsrand - )); DESCR("seed random number generator"); -DATA(insert OID = 716 ( oidlt PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100 oidlt - )); +DATA(insert OID = 716 ( oidlt 10 PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100 oidlt - )); DESCR("less-than"); -DATA(insert OID = 717 ( oidle PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100 oidle - )); +DATA(insert OID = 717 ( oidle 10 PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100 oidle - )); DESCR("less-than-or-equal"); -DATA(insert OID = 720 ( octet_length PGUID 12 f t t t 1 f 23 "17" 100 0 0 100 byteaoctetlen - )); +DATA(insert OID = 720 ( octet_length 10 PGUID 12 f t t t 1 f 23 "17" 100 0 0 100 byteaoctetlen - )); DESCR("octet length"); -DATA(insert OID = 721 ( get_byte PGUID 12 f t t t 2 f 23 "17 23" 100 0 0 100 byteaGetByte - )); +DATA(insert OID = 721 ( get_byte 10 PGUID 12 f t t t 2 f 23 "17 23" 100 0 0 100 byteaGetByte - )); DESCR(""); -DATA(insert OID = 722 ( set_byte PGUID 12 f t t t 3 f 17 "17 23 23" 100 0 0 100 byteaSetByte - )); +DATA(insert OID = 722 ( set_byte 10 PGUID 12 f t t t 3 f 17 "17 23 23" 100 0 0 100 byteaSetByte - )); DESCR(""); -DATA(insert OID = 723 ( get_bit PGUID 12 f t t t 2 f 23 "17 23" 100 0 0 100 byteaGetBit - )); +DATA(insert OID = 723 ( get_bit 10 PGUID 12 f t t t 2 f 23 "17 23" 100 0 0 100 byteaGetBit - )); DESCR(""); -DATA(insert OID = 724 ( set_bit PGUID 12 f t t t 3 f 17 "17 23 23" 100 0 0 100 byteaSetBit - )); +DATA(insert OID = 724 ( set_bit 10 PGUID 12 f t t t 3 f 17 "17 23 23" 100 0 0 100 byteaSetBit - )); DESCR(""); -DATA(insert OID = 725 ( dist_pl PGUID 12 f t t t 2 f 701 "600 628" 100 0 0 100 dist_pl - )); +DATA(insert OID = 725 ( dist_pl 10 PGUID 12 f t t t 2 f 701 "600 628" 100 0 0 100 dist_pl - )); DESCR("distance between point and line"); -DATA(insert OID = 726 ( dist_lb PGUID 12 f t t t 2 f 701 "628 603" 100 0 0 100 dist_lb - )); +DATA(insert OID = 726 ( dist_lb 10 PGUID 12 f t t t 2 f 701 "628 603" 100 0 0 100 dist_lb - )); DESCR("distance between line and box"); -DATA(insert OID = 727 ( dist_sl PGUID 12 f t t t 2 f 701 "601 628" 100 0 0 100 dist_sl - )); +DATA(insert OID = 727 ( dist_sl 10 PGUID 12 f t t t 2 f 701 "601 628" 100 0 0 100 dist_sl - )); DESCR("distance between lseg and line"); -DATA(insert OID = 728 ( dist_cpoly PGUID 12 f t t t 2 f 701 "718 604" 100 0 0 100 dist_cpoly - )); +DATA(insert OID = 728 ( dist_cpoly 10 PGUID 12 f t t t 2 f 701 "718 604" 100 0 0 100 dist_cpoly - )); DESCR("distance between"); -DATA(insert OID = 729 ( poly_distance PGUID 12 f t t t 2 f 701 "604 604" 100 0 0 100 poly_distance - )); +DATA(insert OID = 729 ( poly_distance 10 PGUID 12 f t t t 2 f 701 "604 604" 100 0 0 100 poly_distance - )); DESCR("distance between"); -DATA(insert OID = 740 ( text_lt PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 text_lt - )); +DATA(insert OID = 740 ( text_lt 10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 text_lt - )); DESCR("less-than"); -DATA(insert OID = 741 ( text_le PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 text_le - )); +DATA(insert OID = 741 ( text_le 10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 text_le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 742 ( text_gt PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 text_gt - )); +DATA(insert OID = 742 ( text_gt 10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 text_gt - )); DESCR("greater-than"); -DATA(insert OID = 743 ( text_ge PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 text_ge - )); +DATA(insert OID = 743 ( text_ge 10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 text_ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 744 ( array_eq PGUID 12 f t t t 2 f 16 "0 0" 100 0 0 100 array_eq -)); +DATA(insert OID = 744 ( array_eq 10 PGUID 12 f t t t 2 f 16 "0 0" 100 0 0 100 array_eq -)); DESCR("array equal"); -DATA(insert OID = 745 ( current_user PGUID 12 f t f t 0 f 19 "0" 100 0 0 100 current_user - )); +DATA(insert OID = 745 ( current_user 10 PGUID 12 f t f t 0 f 19 "0" 100 0 0 100 current_user - )); DESCR("current user name"); -DATA(insert OID = 746 ( session_user PGUID 12 f t f t 0 f 19 "0" 100 0 0 100 session_user - )); +DATA(insert OID = 746 ( session_user 10 PGUID 12 f t f t 0 f 19 "0" 100 0 0 100 session_user - )); DESCR("session user name"); -DATA(insert OID = 747 ( array_dims PGUID 12 f t t t 1 f 25 "0" 100 0 0 100 array_dims -)); +DATA(insert OID = 747 ( array_dims 10 PGUID 12 f t t t 1 f 25 "0" 100 0 0 100 array_dims -)); DESCR("array dimensions"); -DATA(insert OID = 750 ( array_in PGUID 12 f t t t 3 f 23 "0 26 23" 100 0 0 100 array_in - )); +DATA(insert OID = 750 ( array_in 10 PGUID 12 f t t t 3 f 23 "0 26 23" 100 0 0 100 array_in - )); DESCR("array"); -DATA(insert OID = 751 ( array_out PGUID 12 f t t t 2 f 23 "0 26" 100 0 0 100 array_out - )); +DATA(insert OID = 751 ( array_out 10 PGUID 12 f t t t 2 f 23 "0 26" 100 0 0 100 array_out - )); DESCR("array"); -DATA(insert OID = 760 ( smgrin PGUID 12 f t f t 1 f 210 "0" 100 0 0 100 smgrin - )); +DATA(insert OID = 760 ( smgrin 10 PGUID 12 f t f t 1 f 210 "0" 100 0 0 100 smgrin - )); DESCR("storage manager(internal)"); -DATA(insert OID = 761 ( smgrout PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 smgrout - )); +DATA(insert OID = 761 ( smgrout 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 smgrout - )); DESCR("storage manager(internal)"); -DATA(insert OID = 762 ( smgreq PGUID 12 f t t t 2 f 16 "210 210" 100 0 0 100 smgreq - )); +DATA(insert OID = 762 ( smgreq 10 PGUID 12 f t t t 2 f 16 "210 210" 100 0 0 100 smgreq - )); DESCR("storage manager"); -DATA(insert OID = 763 ( smgrne PGUID 12 f t t t 2 f 16 "210 210" 100 0 0 100 smgrne - )); +DATA(insert OID = 763 ( smgrne 10 PGUID 12 f t t t 2 f 16 "210 210" 100 0 0 100 smgrne - )); DESCR("storage manager"); -DATA(insert OID = 764 ( lo_import PGUID 12 f t f t 1 f 26 "25" 100 0 0 100 lo_import - )); +DATA(insert OID = 764 ( lo_import 10 PGUID 12 f t f t 1 f 26 "25" 100 0 0 100 lo_import - )); DESCR("large object import"); -DATA(insert OID = 765 ( lo_export PGUID 12 f t f t 2 f 23 "26 25" 100 0 0 100 lo_export - )); +DATA(insert OID = 765 ( lo_export 10 PGUID 12 f t f t 2 f 23 "26 25" 100 0 0 100 lo_export - )); DESCR("large object export"); -DATA(insert OID = 766 ( int4inc PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 int4inc - )); +DATA(insert OID = 766 ( int4inc 10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 int4inc - )); DESCR("increment"); -DATA(insert OID = 768 ( int4larger PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4larger - )); +DATA(insert OID = 768 ( int4larger 10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4larger - )); DESCR("larger of two"); -DATA(insert OID = 769 ( int4smaller PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4smaller - )); +DATA(insert OID = 769 ( int4smaller 10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4smaller - )); DESCR("smaller of two"); -DATA(insert OID = 770 ( int2larger PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2larger - )); +DATA(insert OID = 770 ( int2larger 10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2larger - )); DESCR("larger of two"); -DATA(insert OID = 771 ( int2smaller PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2smaller - )); +DATA(insert OID = 771 ( int2smaller 10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2smaller - )); DESCR("smaller of two"); -DATA(insert OID = 774 ( gistgettuple PGUID 12 f t f t 2 f 23 "0 0" 100 0 0 100 gistgettuple - )); +DATA(insert OID = 774 ( gistgettuple 10 PGUID 12 f t f t 2 f 23 "0 0" 100 0 0 100 gistgettuple - )); DESCR("gist(internal)"); -DATA(insert OID = 775 ( gistinsert PGUID 12 f t f t 5 f 23 "0 0 0 0 0" 100 0 0 100 gistinsert - )); +DATA(insert OID = 775 ( gistinsert 10 PGUID 12 f t f t 5 f 23 "0 0 0 0 0" 100 0 0 100 gistinsert - )); DESCR("gist(internal)"); -DATA(insert OID = 777 ( gistbeginscan PGUID 12 f t f t 4 f 23 "0 0 0 0" 100 0 0 100 gistbeginscan - )); +DATA(insert OID = 777 ( gistbeginscan 10 PGUID 12 f t f t 4 f 23 "0 0 0 0" 100 0 0 100 gistbeginscan - )); DESCR("gist(internal)"); -DATA(insert OID = 778 ( gistrescan PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 gistrescan - )); +DATA(insert OID = 778 ( gistrescan 10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 gistrescan - )); DESCR("gist(internal)"); -DATA(insert OID = 779 ( gistendscan PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 gistendscan - )); +DATA(insert OID = 779 ( gistendscan 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 gistendscan - )); DESCR("gist(internal)"); -DATA(insert OID = 780 ( gistmarkpos PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 gistmarkpos - )); +DATA(insert OID = 780 ( gistmarkpos 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 gistmarkpos - )); DESCR("gist(internal)"); -DATA(insert OID = 781 ( gistrestrpos PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 gistrestrpos - )); +DATA(insert OID = 781 ( gistrestrpos 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 gistrestrpos - )); DESCR("gist(internal)"); -DATA(insert OID = 782 ( gistbuild PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 gistbuild - )); +DATA(insert OID = 782 ( gistbuild 10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 gistbuild - )); DESCR("gist(internal)"); -DATA(insert OID = 776 ( gistbulkdelete PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 gistbulkdelete - )); +DATA(insert OID = 776 ( gistbulkdelete 10 PGUID 12 f t f t 3 f 23 "0 0 0" 100 0 0 100 gistbulkdelete - )); DESCR("gist(internal)"); -DATA(insert OID = 772 ( gistcostestimate PGUID 12 f t f t 8 f 0 "0 0 0 0 0 0 0 0" 100 0 0 100 gistcostestimate - )); +DATA(insert OID = 772 ( gistcostestimate 10 PGUID 12 f t f t 8 f 0 "0 0 0 0 0 0 0 0" 100 0 0 100 gistcostestimate - )); DESCR("gist(internal)"); -DATA(insert OID = 784 ( tintervaleq PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervaleq - )); +DATA(insert OID = 784 ( tintervaleq 10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervaleq - )); DESCR("equal"); -DATA(insert OID = 785 ( tintervalne PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervalne - )); +DATA(insert OID = 785 ( tintervalne 10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervalne - )); DESCR("not equal"); -DATA(insert OID = 786 ( tintervallt PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervallt - )); +DATA(insert OID = 786 ( tintervallt 10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervallt - )); DESCR("less-than"); -DATA(insert OID = 787 ( tintervalgt PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervalgt - )); +DATA(insert OID = 787 ( tintervalgt 10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervalgt - )); DESCR("greater-than"); -DATA(insert OID = 788 ( tintervalle PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervalle - )); +DATA(insert OID = 788 ( tintervalle 10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervalle - )); DESCR("less-than-or-equal"); -DATA(insert OID = 789 ( tintervalge PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervalge - )); +DATA(insert OID = 789 ( tintervalge 10 PGUID 12 f t t t 2 f 16 "704 704" 100 0 0 100 tintervalge - )); DESCR("greater-than-or-equal"); /* OIDS 800 - 899 */ -DATA(insert OID = 817 ( oid PGUID 12 f t t t 1 f 26 "25" 100 0 0 100 text_oid -)); +DATA(insert OID = 817 ( oid 10 PGUID 12 f t t t 1 f 26 "25" 100 0 0 100 text_oid -)); DESCR("convert text to oid"); -DATA(insert OID = 818 ( int2 PGUID 12 f t t t 1 f 21 "25" 100 0 0 100 text_int2 -)); +DATA(insert OID = 818 ( int2 10 PGUID 12 f t t t 1 f 21 "25" 100 0 0 100 text_int2 -)); DESCR("convert text to int2"); -DATA(insert OID = 819 ( int4 PGUID 12 f t t t 1 f 23 "25" 100 0 0 100 text_int4 -)); +DATA(insert OID = 819 ( int4 10 PGUID 12 f t t t 1 f 23 "25" 100 0 0 100 text_int4 -)); DESCR("convert text to int4"); -DATA(insert OID = 838 ( float8 PGUID 12 f t t t 1 f 701 "25" 100 0 0 100 text_float8 -)); +DATA(insert OID = 838 ( float8 10 PGUID 12 f t t t 1 f 701 "25" 100 0 0 100 text_float8 -)); DESCR("convert text to float8"); -DATA(insert OID = 839 ( float4 PGUID 12 f t t t 1 f 700 "25" 100 0 0 100 text_float4 -)); +DATA(insert OID = 839 ( float4 10 PGUID 12 f t t t 1 f 700 "25" 100 0 0 100 text_float4 -)); DESCR("convert text to float4"); -DATA(insert OID = 840 ( text PGUID 12 f t t t 1 f 25 "701" 100 0 0 100 float8_text -)); +DATA(insert OID = 840 ( text 10 PGUID 12 f t t t 1 f 25 "701" 100 0 0 100 float8_text -)); DESCR("convert float8 to text"); -DATA(insert OID = 841 ( text PGUID 12 f t t t 1 f 25 "700" 100 0 0 100 float4_text -)); +DATA(insert OID = 841 ( text 10 PGUID 12 f t t t 1 f 25 "700" 100 0 0 100 float4_text -)); DESCR("convert float4 to text"); -DATA(insert OID = 846 ( cash_mul_flt4 PGUID 12 f t t t 2 f 790 "790 700" 100 0 0 100 cash_mul_flt4 - )); +DATA(insert OID = 846 ( cash_mul_flt4 10 PGUID 12 f t t t 2 f 790 "790 700" 100 0 0 100 cash_mul_flt4 - )); DESCR("multiply"); -DATA(insert OID = 847 ( cash_div_flt4 PGUID 12 f t t t 2 f 790 "790 700" 100 0 0 100 cash_div_flt4 - )); +DATA(insert OID = 847 ( cash_div_flt4 10 PGUID 12 f t t t 2 f 790 "790 700" 100 0 0 100 cash_div_flt4 - )); DESCR("divide"); -DATA(insert OID = 848 ( flt4_mul_cash PGUID 12 f t t t 2 f 790 "700 790" 100 0 0 100 flt4_mul_cash - )); +DATA(insert OID = 848 ( flt4_mul_cash 10 PGUID 12 f t t t 2 f 790 "700 790" 100 0 0 100 flt4_mul_cash - )); DESCR("multiply"); -DATA(insert OID = 849 ( position PGUID 12 f t t t 2 f 23 "25 25" 100 0 0 100 textpos - )); +DATA(insert OID = 849 ( position 10 PGUID 12 f t t t 2 f 23 "25 25" 100 0 0 100 textpos - )); DESCR("return position of substring"); -DATA(insert OID = 850 ( textlike PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textlike - )); +DATA(insert OID = 850 ( textlike 10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textlike - )); DESCR("matches LIKE expression"); -DATA(insert OID = 851 ( textnlike PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textnlike - )); +DATA(insert OID = 851 ( textnlike 10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textnlike - )); DESCR("does not match LIKE expression"); -DATA(insert OID = 852 ( int48eq PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100 int48eq - )); +DATA(insert OID = 852 ( int48eq 10 PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100 int48eq - )); DESCR("equal"); -DATA(insert OID = 853 ( int48ne PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100 int48ne - )); +DATA(insert OID = 853 ( int48ne 10 PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100 int48ne - )); DESCR("not equal"); -DATA(insert OID = 854 ( int48lt PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100 int48lt - )); +DATA(insert OID = 854 ( int48lt 10 PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100 int48lt - )); DESCR("less-than"); -DATA(insert OID = 855 ( int48gt PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100 int48gt - )); +DATA(insert OID = 855 ( int48gt 10 PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100 int48gt - )); DESCR("greater-than"); -DATA(insert OID = 856 ( int48le PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100 int48le - )); +DATA(insert OID = 856 ( int48le 10 PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100 int48le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 857 ( int48ge PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100 int48ge - )); +DATA(insert OID = 857 ( int48ge 10 PGUID 12 f t t t 2 f 16 "23 20" 100 0 0 100 int48ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 858 ( namelike PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 namelike - )); +DATA(insert OID = 858 ( namelike 10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 namelike - )); DESCR("matches LIKE expression"); -DATA(insert OID = 859 ( namenlike PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 namenlike - )); +DATA(insert OID = 859 ( namenlike 10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 namenlike - )); DESCR("does not match LIKE expression"); -DATA(insert OID = 860 ( bpchar PGUID 12 f t t t 1 f 1042 "18" 100 0 0 100 char_bpchar - )); +DATA(insert OID = 860 ( bpchar 10 PGUID 12 f t t t 1 f 1042 "18" 100 0 0 100 char_bpchar - )); DESCR("convert char to char()"); -DATA(insert OID = 861 ( char PGUID 12 f t t t 1 f 18 "1042" 100 0 0 100 bpchar_char - )); +DATA(insert OID = 861 ( char 10 PGUID 12 f t t t 1 f 18 "1042" 100 0 0 100 bpchar_char - )); DESCR("convert char() to char"); -DATA(insert OID = 862 ( int4_mul_cash PGUID 12 f t t t 2 f 790 "23 790" 100 0 0 100 int4_mul_cash - )); +DATA(insert OID = 862 ( int4_mul_cash 10 PGUID 12 f t t t 2 f 790 "23 790" 100 0 0 100 int4_mul_cash - )); DESCR("multiply"); -DATA(insert OID = 863 ( int2_mul_cash PGUID 12 f t t t 2 f 790 "21 790" 100 0 0 100 int2_mul_cash - )); +DATA(insert OID = 863 ( int2_mul_cash 10 PGUID 12 f t t t 2 f 790 "21 790" 100 0 0 100 int2_mul_cash - )); DESCR("multiply"); -DATA(insert OID = 864 ( cash_mul_int4 PGUID 12 f t t t 2 f 790 "790 23" 100 0 0 100 cash_mul_int4 - )); +DATA(insert OID = 864 ( cash_mul_int4 10 PGUID 12 f t t t 2 f 790 "790 23" 100 0 0 100 cash_mul_int4 - )); DESCR("multiply"); -DATA(insert OID = 865 ( cash_div_int4 PGUID 12 f t t t 2 f 790 "790 23" 100 0 0 100 cash_div_int4 - )); +DATA(insert OID = 865 ( cash_div_int4 10 PGUID 12 f t t t 2 f 790 "790 23" 100 0 0 100 cash_div_int4 - )); DESCR("divide"); -DATA(insert OID = 866 ( cash_mul_int2 PGUID 12 f t t t 2 f 790 "790 21" 100 0 0 100 cash_mul_int2 - )); +DATA(insert OID = 866 ( cash_mul_int2 10 PGUID 12 f t t t 2 f 790 "790 21" 100 0 0 100 cash_mul_int2 - )); DESCR("multiply"); -DATA(insert OID = 867 ( cash_div_int2 PGUID 12 f t t t 2 f 790 "790 21" 100 0 0 100 cash_div_int2 - )); +DATA(insert OID = 867 ( cash_div_int2 10 PGUID 12 f t t t 2 f 790 "790 21" 100 0 0 100 cash_div_int2 - )); DESCR("divide"); -DATA(insert OID = 886 ( cash_in PGUID 12 f t t t 1 f 790 "0" 100 0 0 100 cash_in - )); +DATA(insert OID = 886 ( cash_in 10 PGUID 12 f t t t 1 f 790 "0" 100 0 0 100 cash_in - )); DESCR("(internal)"); -DATA(insert OID = 887 ( cash_out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 cash_out - )); +DATA(insert OID = 887 ( cash_out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 cash_out - )); DESCR("(internal)"); -DATA(insert OID = 888 ( cash_eq PGUID 12 f t t t 2 f 16 "790 790" 100 0 0 100 cash_eq - )); +DATA(insert OID = 888 ( cash_eq 10 PGUID 12 f t t t 2 f 16 "790 790" 100 0 0 100 cash_eq - )); DESCR("equal"); -DATA(insert OID = 889 ( cash_ne PGUID 12 f t t t 2 f 16 "790 790" 100 0 0 100 cash_ne - )); +DATA(insert OID = 889 ( cash_ne 10 PGUID 12 f t t t 2 f 16 "790 790" 100 0 0 100 cash_ne - )); DESCR("not equal"); -DATA(insert OID = 890 ( cash_lt PGUID 12 f t t t 2 f 16 "790 790" 100 0 0 100 cash_lt - )); +DATA(insert OID = 890 ( cash_lt 10 PGUID 12 f t t t 2 f 16 "790 790" 100 0 0 100 cash_lt - )); DESCR("less-than"); -DATA(insert OID = 891 ( cash_le PGUID 12 f t t t 2 f 16 "790 790" 100 0 0 100 cash_le - )); +DATA(insert OID = 891 ( cash_le 10 PGUID 12 f t t t 2 f 16 "790 790" 100 0 0 100 cash_le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 892 ( cash_gt PGUID 12 f t t t 2 f 16 "790 790" 100 0 0 100 cash_gt - )); +DATA(insert OID = 892 ( cash_gt 10 PGUID 12 f t t t 2 f 16 "790 790" 100 0 0 100 cash_gt - )); DESCR("greater-than"); -DATA(insert OID = 893 ( cash_ge PGUID 12 f t t t 2 f 16 "790 790" 100 0 0 100 cash_ge - )); +DATA(insert OID = 893 ( cash_ge 10 PGUID 12 f t t t 2 f 16 "790 790" 100 0 0 100 cash_ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 894 ( cash_pl PGUID 12 f t t t 2 f 790 "790 790" 100 0 0 100 cash_pl - )); +DATA(insert OID = 894 ( cash_pl 10 PGUID 12 f t t t 2 f 790 "790 790" 100 0 0 100 cash_pl - )); DESCR("add"); -DATA(insert OID = 895 ( cash_mi PGUID 12 f t t t 2 f 790 "790 790" 100 0 0 100 cash_mi - )); +DATA(insert OID = 895 ( cash_mi 10 PGUID 12 f t t t 2 f 790 "790 790" 100 0 0 100 cash_mi - )); DESCR("subtract"); -DATA(insert OID = 896 ( cash_mul_flt8 PGUID 12 f t t t 2 f 790 "790 701" 100 0 0 100 cash_mul_flt8 - )); +DATA(insert OID = 896 ( cash_mul_flt8 10 PGUID 12 f t t t 2 f 790 "790 701" 100 0 0 100 cash_mul_flt8 - )); DESCR("multiply"); -DATA(insert OID = 897 ( cash_div_flt8 PGUID 12 f t t t 2 f 790 "790 701" 100 0 0 100 cash_div_flt8 - )); +DATA(insert OID = 897 ( cash_div_flt8 10 PGUID 12 f t t t 2 f 790 "790 701" 100 0 0 100 cash_div_flt8 - )); DESCR("divide"); -DATA(insert OID = 898 ( cashlarger PGUID 12 f t t t 2 f 790 "790 790" 100 0 0 100 cashlarger - )); +DATA(insert OID = 898 ( cashlarger 10 PGUID 12 f t t t 2 f 790 "790 790" 100 0 0 100 cashlarger - )); DESCR("larger of two"); -DATA(insert OID = 899 ( cashsmaller PGUID 12 f t t t 2 f 790 "790 790" 100 0 0 100 cashsmaller - )); +DATA(insert OID = 899 ( cashsmaller 10 PGUID 12 f t t t 2 f 790 "790 790" 100 0 0 100 cashsmaller - )); DESCR("smaller of two"); -DATA(insert OID = 919 ( flt8_mul_cash PGUID 12 f t t t 2 f 790 "701 790" 100 0 0 100 flt8_mul_cash - )); +DATA(insert OID = 919 ( flt8_mul_cash 10 PGUID 12 f t t t 2 f 790 "701 790" 100 0 0 100 flt8_mul_cash - )); DESCR("multiply"); -DATA(insert OID = 935 ( cash_words PGUID 12 f t t t 1 f 25 "790" 100 0 0 100 cash_words - )); +DATA(insert OID = 935 ( cash_words 10 PGUID 12 f t t t 1 f 25 "790" 100 0 0 100 cash_words - )); DESCR("output amount as words"); /* OIDS 900 - 999 */ -DATA(insert OID = 940 ( mod PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2mod - )); +DATA(insert OID = 940 ( mod 10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2mod - )); DESCR("modulus"); -DATA(insert OID = 941 ( mod PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4mod - )); +DATA(insert OID = 941 ( mod 10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4mod - )); DESCR("modulus"); -DATA(insert OID = 942 ( mod PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100 int24mod - )); +DATA(insert OID = 942 ( mod 10 PGUID 12 f t t t 2 f 23 "21 23" 100 0 0 100 int24mod - )); DESCR("modulus"); -DATA(insert OID = 943 ( mod PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100 int42mod - )); +DATA(insert OID = 943 ( mod 10 PGUID 12 f t t t 2 f 23 "23 21" 100 0 0 100 int42mod - )); DESCR("modulus"); -DATA(insert OID = 945 ( int8mod PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8mod - )); +DATA(insert OID = 945 ( int8mod 10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8mod - )); DESCR("modulus"); -DATA(insert OID = 947 ( mod PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8mod - )); +DATA(insert OID = 947 ( mod 10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8mod - )); DESCR("modulus"); -DATA(insert OID = 944 ( char PGUID 12 f t t t 1 f 18 "25" 100 0 0 100 text_char - )); +DATA(insert OID = 944 ( char 10 PGUID 12 f t t t 1 f 18 "25" 100 0 0 100 text_char - )); DESCR("convert text to char"); -DATA(insert OID = 946 ( text PGUID 12 f t t t 1 f 25 "18" 100 0 0 100 char_text - )); +DATA(insert OID = 946 ( text 10 PGUID 12 f t t t 1 f 25 "18" 100 0 0 100 char_text - )); DESCR("convert char to text"); -DATA(insert OID = 950 ( istrue PGUID 12 f t t f 1 f 16 "16" 100 0 0 100 istrue - )); +DATA(insert OID = 950 ( istrue 10 PGUID 12 f t t f 1 f 16 "16" 100 0 0 100 istrue - )); DESCR("bool is true (not false or unknown)"); -DATA(insert OID = 951 ( isfalse PGUID 12 f t t f 1 f 16 "16" 100 0 0 100 isfalse - )); +DATA(insert OID = 951 ( isfalse 10 PGUID 12 f t t f 1 f 16 "16" 100 0 0 100 isfalse - )); DESCR("bool is false (not true or unknown)"); -DATA(insert OID = 952 ( lo_open PGUID 12 f t f t 2 f 23 "26 23" 100 0 0 100 lo_open - )); +DATA(insert OID = 952 ( lo_open 10 PGUID 12 f t f t 2 f 23 "26 23" 100 0 0 100 lo_open - )); DESCR("large object open"); -DATA(insert OID = 953 ( lo_close PGUID 12 f t f t 1 f 23 "23" 100 0 0 100 lo_close - )); +DATA(insert OID = 953 ( lo_close 10 PGUID 12 f t f t 1 f 23 "23" 100 0 0 100 lo_close - )); DESCR("large object close"); -DATA(insert OID = 954 ( loread PGUID 12 f t f t 2 f 17 "23 23" 100 0 0 100 loread - )); +DATA(insert OID = 954 ( loread 10 PGUID 12 f t f t 2 f 17 "23 23" 100 0 0 100 loread - )); DESCR("large object read"); -DATA(insert OID = 955 ( lowrite PGUID 12 f t f t 2 f 23 "23 17" 100 0 0 100 lowrite - )); +DATA(insert OID = 955 ( lowrite 10 PGUID 12 f t f t 2 f 23 "23 17" 100 0 0 100 lowrite - )); DESCR("large object write"); -DATA(insert OID = 956 ( lo_lseek PGUID 12 f t f t 3 f 23 "23 23 23" 100 0 0 100 lo_lseek - )); +DATA(insert OID = 956 ( lo_lseek 10 PGUID 12 f t f t 3 f 23 "23 23 23" 100 0 0 100 lo_lseek - )); DESCR("large object seek"); -DATA(insert OID = 957 ( lo_creat PGUID 12 f t f t 1 f 26 "23" 100 0 0 100 lo_creat - )); +DATA(insert OID = 957 ( lo_creat 10 PGUID 12 f t f t 1 f 26 "23" 100 0 0 100 lo_creat - )); DESCR("large object create"); -DATA(insert OID = 958 ( lo_tell PGUID 12 f t f t 1 f 23 "23" 100 0 0 100 lo_tell - )); +DATA(insert OID = 958 ( lo_tell 10 PGUID 12 f t f t 1 f 23 "23" 100 0 0 100 lo_tell - )); DESCR("large object position"); -DATA(insert OID = 959 ( on_pl PGUID 12 f t t t 2 f 16 "600 628" 100 0 0 100 on_pl - )); +DATA(insert OID = 959 ( on_pl 10 PGUID 12 f t t t 2 f 16 "600 628" 100 0 0 100 on_pl - )); DESCR("point on line?"); -DATA(insert OID = 960 ( on_sl PGUID 12 f t t t 2 f 16 "601 628" 100 0 0 100 on_sl - )); +DATA(insert OID = 960 ( on_sl 10 PGUID 12 f t t t 2 f 16 "601 628" 100 0 0 100 on_sl - )); DESCR("lseg on line?"); -DATA(insert OID = 961 ( close_pl PGUID 12 f t t t 2 f 600 "600 628" 100 0 0 100 close_pl - )); +DATA(insert OID = 961 ( close_pl 10 PGUID 12 f t t t 2 f 600 "600 628" 100 0 0 100 close_pl - )); DESCR("closest point on line"); -DATA(insert OID = 962 ( close_sl PGUID 12 f t t t 2 f 600 "601 628" 100 0 0 100 close_sl - )); +DATA(insert OID = 962 ( close_sl 10 PGUID 12 f t t t 2 f 600 "601 628" 100 0 0 100 close_sl - )); DESCR("closest point to line segment on line"); -DATA(insert OID = 963 ( close_lb PGUID 12 f t t t 2 f 600 "628 603" 100 0 0 100 close_lb - )); +DATA(insert OID = 963 ( close_lb 10 PGUID 12 f t t t 2 f 600 "628 603" 100 0 0 100 close_lb - )); DESCR("closest point to line on box"); -DATA(insert OID = 964 ( lo_unlink PGUID 12 f t f t 1 f 23 "26" 100 0 0 100 lo_unlink - )); +DATA(insert OID = 964 ( lo_unlink 10 PGUID 12 f t f t 1 f 23 "26" 100 0 0 100 lo_unlink - )); DESCR("large object unlink(delete)"); -DATA(insert OID = 972 ( regproctooid PGUID 12 f t t t 1 f 26 "24" 100 0 0 100 regproctooid - )); +DATA(insert OID = 972 ( regproctooid 10 PGUID 12 f t t t 1 f 26 "24" 100 0 0 100 regproctooid - )); DESCR("get oid for regproc"); -DATA(insert OID = 973 ( path_inter PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100 path_inter - )); +DATA(insert OID = 973 ( path_inter 10 PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100 path_inter - )); DESCR("paths intersect?"); -DATA(insert OID = 975 ( area PGUID 12 f t t t 1 f 701 "603" 100 0 0 100 box_area - )); +DATA(insert OID = 975 ( area 10 PGUID 12 f t t t 1 f 701 "603" 100 0 0 100 box_area - )); DESCR("box area"); -DATA(insert OID = 976 ( width PGUID 12 f t t t 1 f 701 "603" 100 0 0 100 box_width - )); +DATA(insert OID = 976 ( width 10 PGUID 12 f t t t 1 f 701 "603" 100 0 0 100 box_width - )); DESCR("box width"); -DATA(insert OID = 977 ( height PGUID 12 f t t t 1 f 701 "603" 100 0 0 100 box_height - )); +DATA(insert OID = 977 ( height 10 PGUID 12 f t t t 1 f 701 "603" 100 0 0 100 box_height - )); DESCR("box height"); -DATA(insert OID = 978 ( box_distance PGUID 12 f t t t 2 f 701 "603 603" 100 0 0 100 box_distance - )); +DATA(insert OID = 978 ( box_distance 10 PGUID 12 f t t t 2 f 701 "603 603" 100 0 0 100 box_distance - )); DESCR("distance between boxes"); -DATA(insert OID = 980 ( box_intersect PGUID 12 f t t t 2 f 603 "603 603" 100 0 0 100 box_intersect - )); +DATA(insert OID = 980 ( box_intersect 10 PGUID 12 f t t t 2 f 603 "603 603" 100 0 0 100 box_intersect - )); DESCR("box intersection (another box)"); -DATA(insert OID = 981 ( diagonal PGUID 12 f t t t 1 f 601 "603" 100 0 0 100 box_diagonal - )); +DATA(insert OID = 981 ( diagonal 10 PGUID 12 f t t t 1 f 601 "603" 100 0 0 100 box_diagonal - )); DESCR("box diagonal"); -DATA(insert OID = 982 ( path_n_lt PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100 path_n_lt - )); +DATA(insert OID = 982 ( path_n_lt 10 PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100 path_n_lt - )); DESCR("less-than"); -DATA(insert OID = 983 ( path_n_gt PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100 path_n_gt - )); +DATA(insert OID = 983 ( path_n_gt 10 PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100 path_n_gt - )); DESCR("greater-than"); -DATA(insert OID = 984 ( path_n_eq PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100 path_n_eq - )); +DATA(insert OID = 984 ( path_n_eq 10 PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100 path_n_eq - )); DESCR("equal"); -DATA(insert OID = 985 ( path_n_le PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100 path_n_le - )); +DATA(insert OID = 985 ( path_n_le 10 PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100 path_n_le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 986 ( path_n_ge PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100 path_n_ge - )); +DATA(insert OID = 986 ( path_n_ge 10 PGUID 12 f t t t 2 f 16 "602 602" 100 0 0 100 path_n_ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 987 ( path_length PGUID 12 f t t t 1 f 701 "602" 100 0 0 100 path_length - )); +DATA(insert OID = 987 ( path_length 10 PGUID 12 f t t t 1 f 701 "602" 100 0 0 100 path_length - )); DESCR("sum of path segments"); -DATA(insert OID = 988 ( point_ne PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_ne - )); +DATA(insert OID = 988 ( point_ne 10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_ne - )); DESCR("not equal"); -DATA(insert OID = 989 ( point_vert PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_vert - )); +DATA(insert OID = 989 ( point_vert 10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_vert - )); DESCR("vertically aligned?"); -DATA(insert OID = 990 ( point_horiz PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_horiz - )); +DATA(insert OID = 990 ( point_horiz 10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_horiz - )); DESCR("horizontally aligned?"); -DATA(insert OID = 991 ( point_distance PGUID 12 f t t t 2 f 701 "600 600" 100 0 0 100 point_distance - )); +DATA(insert OID = 991 ( point_distance 10 PGUID 12 f t t t 2 f 701 "600 600" 100 0 0 100 point_distance - )); DESCR("distance between"); -DATA(insert OID = 992 ( slope PGUID 12 f t t t 2 f 701 "600 600" 100 0 0 100 point_slope - )); +DATA(insert OID = 992 ( slope 10 PGUID 12 f t t t 2 f 701 "600 600" 100 0 0 100 point_slope - )); DESCR("slope between points"); -DATA(insert OID = 993 ( lseg PGUID 12 f t t t 2 f 601 "600 600" 100 0 0 100 lseg_construct - )); +DATA(insert OID = 993 ( lseg 10 PGUID 12 f t t t 2 f 601 "600 600" 100 0 0 100 lseg_construct - )); DESCR("convert points to line segment"); -DATA(insert OID = 994 ( lseg_intersect PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_intersect - )); +DATA(insert OID = 994 ( lseg_intersect 10 PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_intersect - )); DESCR("intersect?"); -DATA(insert OID = 995 ( lseg_parallel PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_parallel - )); +DATA(insert OID = 995 ( lseg_parallel 10 PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_parallel - )); DESCR("parallel?"); -DATA(insert OID = 996 ( lseg_perp PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_perp - )); +DATA(insert OID = 996 ( lseg_perp 10 PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_perp - )); DESCR("perpendicular?"); -DATA(insert OID = 997 ( lseg_vertical PGUID 12 f t t t 1 f 16 "601" 100 0 0 100 lseg_vertical - )); +DATA(insert OID = 997 ( lseg_vertical 10 PGUID 12 f t t t 1 f 16 "601" 100 0 0 100 lseg_vertical - )); DESCR("vertical?"); -DATA(insert OID = 998 ( lseg_horizontal PGUID 12 f t t t 1 f 16 "601" 100 0 0 100 lseg_horizontal - )); +DATA(insert OID = 998 ( lseg_horizontal 10 PGUID 12 f t t t 1 f 16 "601" 100 0 0 100 lseg_horizontal - )); DESCR("horizontal?"); -DATA(insert OID = 999 ( lseg_eq PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_eq - )); +DATA(insert OID = 999 ( lseg_eq 10 PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_eq - )); DESCR("equal"); -DATA(insert OID = 748 ( date PGUID 12 f t f t 1 f 1082 "25" 100 0 0 100 text_date - )); +DATA(insert OID = 748 ( date 10 PGUID 12 f t f t 1 f 1082 "25" 100 0 0 100 text_date - )); DESCR("convert text to date"); -DATA(insert OID = 749 ( text PGUID 12 f t f t 1 f 25 "1082" 100 0 0 100 date_text - )); +DATA(insert OID = 749 ( text 10 PGUID 12 f t f t 1 f 25 "1082" 100 0 0 100 date_text - )); DESCR("convert date to text"); -DATA(insert OID = 837 ( time PGUID 12 f t f t 1 f 1083 "25" 100 0 0 100 text_time - )); +DATA(insert OID = 837 ( time 10 PGUID 12 f t f t 1 f 1083 "25" 100 0 0 100 text_time - )); DESCR("convert text to time"); -DATA(insert OID = 948 ( text PGUID 12 f t t t 1 f 25 "1083" 100 0 0 100 time_text - )); +DATA(insert OID = 948 ( text 10 PGUID 12 f t t t 1 f 25 "1083" 100 0 0 100 time_text - )); DESCR("convert time to text"); -DATA(insert OID = 938 ( timetz PGUID 12 f t f t 1 f 1266 "25" 100 0 0 100 text_timetz - )); +DATA(insert OID = 938 ( timetz 10 PGUID 12 f t f t 1 f 1266 "25" 100 0 0 100 text_timetz - )); DESCR("convert text to timetz"); -DATA(insert OID = 939 ( text PGUID 12 f t t t 1 f 25 "1266" 100 0 0 100 timetz_text - )); +DATA(insert OID = 939 ( text 10 PGUID 12 f t t t 1 f 25 "1266" 100 0 0 100 timetz_text - )); DESCR("convert timetz to text"); /* OIDS 1000 - 1999 */ -DATA(insert OID = 1026 ( timezone PGUID 12 f t f t 2 f 25 "1186 1184" 100 0 0 100 timestamptz_izone - )); +DATA(insert OID = 1026 ( timezone 10 PGUID 12 f t f t 2 f 25 "1186 1184" 100 0 0 100 timestamptz_izone - )); DESCR("time zone"); -DATA(insert OID = 1029 ( nullvalue PGUID 12 f t t f 1 f 16 "0" 100 0 0 100 nullvalue - )); +DATA(insert OID = 1029 ( nullvalue 10 PGUID 12 f t t f 1 f 16 "0" 100 0 0 100 nullvalue - )); DESCR("(internal)"); -DATA(insert OID = 1030 ( nonnullvalue PGUID 12 f t t f 1 f 16 "0" 100 0 0 100 nonnullvalue - )); +DATA(insert OID = 1030 ( nonnullvalue 10 PGUID 12 f t t f 1 f 16 "0" 100 0 0 100 nonnullvalue - )); DESCR("(internal)"); -DATA(insert OID = 1031 ( aclitemin PGUID 12 f t f t 1 f 1033 "0" 100 0 0 100 aclitemin - )); +DATA(insert OID = 1031 ( aclitemin 10 PGUID 12 f t f t 1 f 1033 "0" 100 0 0 100 aclitemin - )); DESCR("(internal)"); -DATA(insert OID = 1032 ( aclitemout PGUID 12 f t f t 1 f 23 "1033" 100 0 0 100 aclitemout - )); +DATA(insert OID = 1032 ( aclitemout 10 PGUID 12 f t f t 1 f 23 "1033" 100 0 0 100 aclitemout - )); DESCR("(internal)"); -DATA(insert OID = 1035 ( aclinsert PGUID 12 f t f t 2 f 1034 "1034 1033" 100 0 0 100 aclinsert - )); +DATA(insert OID = 1035 ( aclinsert 10 PGUID 12 f t f t 2 f 1034 "1034 1033" 100 0 0 100 aclinsert - )); DESCR("add/update ACL item"); -DATA(insert OID = 1036 ( aclremove PGUID 12 f t f t 2 f 1034 "1034 1033" 100 0 0 100 aclremove - )); +DATA(insert OID = 1036 ( aclremove 10 PGUID 12 f t f t 2 f 1034 "1034 1033" 100 0 0 100 aclremove - )); DESCR("remove ACL item"); -DATA(insert OID = 1037 ( aclcontains PGUID 12 f t f t 2 f 16 "1034 1033" 100 0 0 100 aclcontains - )); +DATA(insert OID = 1037 ( aclcontains 10 PGUID 12 f t f t 2 f 16 "1034 1033" 100 0 0 100 aclcontains - )); DESCR("does ACL contain item?"); -DATA(insert OID = 1038 ( seteval PGUID 12 f t f t 1 t 23 "26" 100 0 0 100 seteval - )); +DATA(insert OID = 1038 ( seteval 10 PGUID 12 f t f t 1 t 23 "26" 100 0 0 100 seteval - )); DESCR("internal function supporting PostQuel-style sets"); -DATA(insert OID = 1044 ( bpcharin PGUID 12 f t t t 3 f 1042 "0 26 23" 100 0 0 100 bpcharin - )); +DATA(insert OID = 1044 ( bpcharin 10 PGUID 12 f t t t 3 f 1042 "0 26 23" 100 0 0 100 bpcharin - )); DESCR("(internal)"); -DATA(insert OID = 1045 ( bpcharout PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 bpcharout - )); +DATA(insert OID = 1045 ( bpcharout 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 bpcharout - )); DESCR("(internal)"); -DATA(insert OID = 1046 ( varcharin PGUID 12 f t t t 3 f 1043 "0 26 23" 100 0 0 100 varcharin - )); +DATA(insert OID = 1046 ( varcharin 10 PGUID 12 f t t t 3 f 1043 "0 26 23" 100 0 0 100 varcharin - )); DESCR("(internal)"); -DATA(insert OID = 1047 ( varcharout PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 varcharout - )); +DATA(insert OID = 1047 ( varcharout 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 varcharout - )); DESCR("(internal)"); -DATA(insert OID = 1048 ( bpchareq PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100 bpchareq - )); +DATA(insert OID = 1048 ( bpchareq 10 PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100 bpchareq - )); DESCR("equal"); -DATA(insert OID = 1049 ( bpcharlt PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100 bpcharlt - )); +DATA(insert OID = 1049 ( bpcharlt 10 PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100 bpcharlt - )); DESCR("less-than"); -DATA(insert OID = 1050 ( bpcharle PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100 bpcharle - )); +DATA(insert OID = 1050 ( bpcharle 10 PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100 bpcharle - )); DESCR("less-than-or-equal"); -DATA(insert OID = 1051 ( bpchargt PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100 bpchargt - )); +DATA(insert OID = 1051 ( bpchargt 10 PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100 bpchargt - )); DESCR("greater-than"); -DATA(insert OID = 1052 ( bpcharge PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100 bpcharge - )); +DATA(insert OID = 1052 ( bpcharge 10 PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100 bpcharge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 1053 ( bpcharne PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100 bpcharne - )); +DATA(insert OID = 1053 ( bpcharne 10 PGUID 12 f t t t 2 f 16 "1042 1042" 100 0 0 100 bpcharne - )); DESCR("not equal"); -DATA(insert OID = 1070 ( varchareq PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100 varchareq - )); +DATA(insert OID = 1070 ( varchareq 10 PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100 varchareq - )); DESCR("equal"); -DATA(insert OID = 1071 ( varcharlt PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100 varcharlt - )); +DATA(insert OID = 1071 ( varcharlt 10 PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100 varcharlt - )); DESCR("less-than"); -DATA(insert OID = 1072 ( varcharle PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100 varcharle - )); +DATA(insert OID = 1072 ( varcharle 10 PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100 varcharle - )); DESCR("less-than-or-equal"); -DATA(insert OID = 1073 ( varchargt PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100 varchargt - )); +DATA(insert OID = 1073 ( varchargt 10 PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100 varchargt - )); DESCR("greater-than"); -DATA(insert OID = 1074 ( varcharge PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100 varcharge - )); +DATA(insert OID = 1074 ( varcharge 10 PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100 varcharge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 1075 ( varcharne PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100 varcharne - )); +DATA(insert OID = 1075 ( varcharne 10 PGUID 12 f t t t 2 f 16 "1043 1043" 100 0 0 100 varcharne - )); DESCR("not equal"); -DATA(insert OID = 1078 ( bpcharcmp PGUID 12 f t t t 2 f 23 "1042 1042" 100 0 0 100 bpcharcmp - )); +DATA(insert OID = 1078 ( bpcharcmp 10 PGUID 12 f t t t 2 f 23 "1042 1042" 100 0 0 100 bpcharcmp - )); DESCR("less-equal-greater"); -DATA(insert OID = 1079 ( varcharcmp PGUID 12 f t t t 2 f 23 "1043 1043" 100 0 0 100 varcharcmp - )); +DATA(insert OID = 1079 ( varcharcmp 10 PGUID 12 f t t t 2 f 23 "1043 1043" 100 0 0 100 varcharcmp - )); DESCR("less-equal-greater"); -DATA(insert OID = 1080 ( hashbpchar PGUID 12 f t t t 1 f 23 "1042" 100 0 0 100 hashbpchar - )); +DATA(insert OID = 1080 ( hashbpchar 10 PGUID 12 f t t t 1 f 23 "1042" 100 0 0 100 hashbpchar - )); DESCR("hash"); -DATA(insert OID = 1081 ( format_type PGUID 12 f t t f 2 f 25 "26 23" 100 0 0 100 format_type - )); +DATA(insert OID = 1081 ( format_type 10 PGUID 12 f t t f 2 f 25 "26 23" 100 0 0 100 format_type - )); DESCR("format a type oid and atttypmod to canonical SQL"); -DATA(insert OID = 1084 ( date_in PGUID 12 f t f t 1 f 1082 "0" 100 0 0 100 date_in - )); +DATA(insert OID = 1084 ( date_in 10 PGUID 12 f t f t 1 f 1082 "0" 100 0 0 100 date_in - )); DESCR("(internal)"); -DATA(insert OID = 1085 ( date_out PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 date_out - )); +DATA(insert OID = 1085 ( date_out 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 date_out - )); DESCR("(internal)"); -DATA(insert OID = 1086 ( date_eq PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_eq - )); +DATA(insert OID = 1086 ( date_eq 10 PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_eq - )); DESCR("equal"); -DATA(insert OID = 1087 ( date_lt PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_lt - )); +DATA(insert OID = 1087 ( date_lt 10 PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_lt - )); DESCR("less-than"); -DATA(insert OID = 1088 ( date_le PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_le - )); +DATA(insert OID = 1088 ( date_le 10 PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 1089 ( date_gt PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_gt - )); +DATA(insert OID = 1089 ( date_gt 10 PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_gt - )); DESCR("greater-than"); -DATA(insert OID = 1090 ( date_ge PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_ge - )); +DATA(insert OID = 1090 ( date_ge 10 PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 1091 ( date_ne PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_ne - )); +DATA(insert OID = 1091 ( date_ne 10 PGUID 12 f t t t 2 f 16 "1082 1082" 100 0 0 100 date_ne - )); DESCR("not equal"); -DATA(insert OID = 1092 ( date_cmp PGUID 12 f t t t 2 f 23 "1082 1082" 100 0 0 100 date_cmp - )); +DATA(insert OID = 1092 ( date_cmp 10 PGUID 12 f t t t 2 f 23 "1082 1082" 100 0 0 100 date_cmp - )); DESCR("less-equal-greater"); /* OIDS 1100 - 1199 */ -DATA(insert OID = 1102 ( time_lt PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_lt - )); +DATA(insert OID = 1102 ( time_lt 10 PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_lt - )); DESCR("less-than"); -DATA(insert OID = 1103 ( time_le PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_le - )); +DATA(insert OID = 1103 ( time_le 10 PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 1104 ( time_gt PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_gt - )); +DATA(insert OID = 1104 ( time_gt 10 PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_gt - )); DESCR("greater-than"); -DATA(insert OID = 1105 ( time_ge PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_ge - )); +DATA(insert OID = 1105 ( time_ge 10 PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 1106 ( time_ne PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_ne - )); +DATA(insert OID = 1106 ( time_ne 10 PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_ne - )); DESCR("not equal"); -DATA(insert OID = 1107 ( time_cmp PGUID 12 f t t t 2 f 23 "1083 1083" 100 0 0 100 time_cmp - )); +DATA(insert OID = 1107 ( time_cmp 10 PGUID 12 f t t t 2 f 23 "1083 1083" 100 0 0 100 time_cmp - )); DESCR("less-equal-greater"); -DATA(insert OID = 1138 ( date_larger PGUID 12 f t t t 2 f 1082 "1082 1082" 100 0 0 100 date_larger - )); +DATA(insert OID = 1138 ( date_larger 10 PGUID 12 f t t t 2 f 1082 "1082 1082" 100 0 0 100 date_larger - )); DESCR("larger of two"); -DATA(insert OID = 1139 ( date_smaller PGUID 12 f t t t 2 f 1082 "1082 1082" 100 0 0 100 date_smaller - )); +DATA(insert OID = 1139 ( date_smaller 10 PGUID 12 f t t t 2 f 1082 "1082 1082" 100 0 0 100 date_smaller - )); DESCR("smaller of two"); -DATA(insert OID = 1140 ( date_mi PGUID 12 f t t t 2 f 23 "1082 1082" 100 0 0 100 date_mi - )); +DATA(insert OID = 1140 ( date_mi 10 PGUID 12 f t t t 2 f 23 "1082 1082" 100 0 0 100 date_mi - )); DESCR("subtract"); -DATA(insert OID = 1141 ( date_pli PGUID 12 f t t t 2 f 1082 "1082 23" 100 0 0 100 date_pli - )); +DATA(insert OID = 1141 ( date_pli 10 PGUID 12 f t t t 2 f 1082 "1082 23" 100 0 0 100 date_pli - )); DESCR("add"); -DATA(insert OID = 1142 ( date_mii PGUID 12 f t t t 2 f 1082 "1082 23" 100 0 0 100 date_mii - )); +DATA(insert OID = 1142 ( date_mii 10 PGUID 12 f t t t 2 f 1082 "1082 23" 100 0 0 100 date_mii - )); DESCR("subtract"); -DATA(insert OID = 1143 ( time_in PGUID 12 f t f t 1 f 1083 "0" 100 0 0 100 time_in - )); +DATA(insert OID = 1143 ( time_in 10 PGUID 12 f t f t 1 f 1083 "0" 100 0 0 100 time_in - )); DESCR("(internal)"); -DATA(insert OID = 1144 ( time_out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 time_out - )); +DATA(insert OID = 1144 ( time_out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 time_out - )); DESCR("(internal)"); -DATA(insert OID = 1145 ( time_eq PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_eq - )); +DATA(insert OID = 1145 ( time_eq 10 PGUID 12 f t t t 2 f 16 "1083 1083" 100 0 0 100 time_eq - )); DESCR("equal"); -DATA(insert OID = 1146 ( circle_add_pt PGUID 12 f t t t 2 f 718 "718 600" 100 0 0 100 circle_add_pt - )); +DATA(insert OID = 1146 ( circle_add_pt 10 PGUID 12 f t t t 2 f 718 "718 600" 100 0 0 100 circle_add_pt - )); DESCR("add"); -DATA(insert OID = 1147 ( circle_sub_pt PGUID 12 f t t t 2 f 718 "718 600" 100 0 0 100 circle_sub_pt - )); +DATA(insert OID = 1147 ( circle_sub_pt 10 PGUID 12 f t t t 2 f 718 "718 600" 100 0 0 100 circle_sub_pt - )); DESCR("subtract"); -DATA(insert OID = 1148 ( circle_mul_pt PGUID 12 f t t t 2 f 718 "718 600" 100 0 0 100 circle_mul_pt - )); +DATA(insert OID = 1148 ( circle_mul_pt 10 PGUID 12 f t t t 2 f 718 "718 600" 100 0 0 100 circle_mul_pt - )); DESCR("multiply"); -DATA(insert OID = 1149 ( circle_div_pt PGUID 12 f t t t 2 f 718 "718 600" 100 0 0 100 circle_div_pt - )); +DATA(insert OID = 1149 ( circle_div_pt 10 PGUID 12 f t t t 2 f 718 "718 600" 100 0 0 100 circle_div_pt - )); DESCR("divide"); -DATA(insert OID = 1150 ( timestamptz_in PGUID 12 f t f t 1 f 1184 "0" 100 0 0 100 timestamptz_in - )); +DATA(insert OID = 1150 ( timestamptz_in 10 PGUID 12 f t f t 1 f 1184 "0" 100 0 0 100 timestamptz_in - )); DESCR("(internal)"); -DATA(insert OID = 1151 ( timestamptz_out PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 timestamptz_out - )); +DATA(insert OID = 1151 ( timestamptz_out 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 timestamptz_out - )); DESCR("(internal)"); -DATA(insert OID = 1152 ( timestamptz_eq PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100 timestamp_eq - )); +DATA(insert OID = 1152 ( timestamptz_eq 10 PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100 timestamp_eq - )); DESCR("equal"); -DATA(insert OID = 1153 ( timestamptz_ne PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100 timestamp_ne - )); +DATA(insert OID = 1153 ( timestamptz_ne 10 PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100 timestamp_ne - )); DESCR("not equal"); -DATA(insert OID = 1154 ( timestamptz_lt PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100 timestamp_lt - )); +DATA(insert OID = 1154 ( timestamptz_lt 10 PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100 timestamp_lt - )); DESCR("less-than"); -DATA(insert OID = 1155 ( timestamptz_le PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100 timestamp_le - )); +DATA(insert OID = 1155 ( timestamptz_le 10 PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100 timestamp_le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 1156 ( timestamptz_ge PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100 timestamp_ge - )); +DATA(insert OID = 1156 ( timestamptz_ge 10 PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100 timestamp_ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 1157 ( timestamptz_gt PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100 timestamp_gt - )); +DATA(insert OID = 1157 ( timestamptz_gt 10 PGUID 12 f t t t 2 f 16 "1184 1184" 100 0 0 100 timestamp_gt - )); DESCR("greater-than"); -DATA(insert OID = 1159 ( timezone PGUID 12 f t f t 2 f 25 "25 1184" 100 0 0 100 timestamptz_zone - )); +DATA(insert OID = 1159 ( timezone 10 PGUID 12 f t f t 2 f 25 "25 1184" 100 0 0 100 timestamptz_zone - )); DESCR("time zone"); -DATA(insert OID = 1160 ( interval_in PGUID 12 f t f t 1 f 1186 "0" 100 0 0 100 interval_in - )); +DATA(insert OID = 1160 ( interval_in 10 PGUID 12 f t f t 1 f 1186 "0" 100 0 0 100 interval_in - )); DESCR("(internal)"); -DATA(insert OID = 1161 ( interval_out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 interval_out - )); +DATA(insert OID = 1161 ( interval_out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 interval_out - )); DESCR("(internal)"); -DATA(insert OID = 1162 ( interval_eq PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100 interval_eq - )); +DATA(insert OID = 1162 ( interval_eq 10 PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100 interval_eq - )); DESCR("equal"); -DATA(insert OID = 1163 ( interval_ne PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100 interval_ne - )); +DATA(insert OID = 1163 ( interval_ne 10 PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100 interval_ne - )); DESCR("not equal"); -DATA(insert OID = 1164 ( interval_lt PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100 interval_lt - )); +DATA(insert OID = 1164 ( interval_lt 10 PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100 interval_lt - )); DESCR("less-than"); -DATA(insert OID = 1165 ( interval_le PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100 interval_le - )); +DATA(insert OID = 1165 ( interval_le 10 PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100 interval_le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 1166 ( interval_ge PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100 interval_ge - )); +DATA(insert OID = 1166 ( interval_ge 10 PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100 interval_ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 1167 ( interval_gt PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100 interval_gt - )); +DATA(insert OID = 1167 ( interval_gt 10 PGUID 12 f t t t 2 f 16 "1186 1186" 100 0 0 100 interval_gt - )); DESCR("greater-than"); -DATA(insert OID = 1168 ( interval_um PGUID 12 f t t t 1 f 1186 "1186" 100 0 0 100 interval_um - )); +DATA(insert OID = 1168 ( interval_um 10 PGUID 12 f t t t 1 f 1186 "1186" 100 0 0 100 interval_um - )); DESCR("subtract"); -DATA(insert OID = 1169 ( interval_pl PGUID 12 f t t t 2 f 1186 "1186 1186" 100 0 0 100 interval_pl - )); +DATA(insert OID = 1169 ( interval_pl 10 PGUID 12 f t t t 2 f 1186 "1186 1186" 100 0 0 100 interval_pl - )); DESCR("add"); -DATA(insert OID = 1170 ( interval_mi PGUID 12 f t t t 2 f 1186 "1186 1186" 100 0 0 100 interval_mi - )); +DATA(insert OID = 1170 ( interval_mi 10 PGUID 12 f t t t 2 f 1186 "1186 1186" 100 0 0 100 interval_mi - )); DESCR("subtract"); -DATA(insert OID = 1171 ( date_part PGUID 12 f t f t 2 f 701 "25 1184" 100 0 0 100 timestamptz_part - )); +DATA(insert OID = 1171 ( date_part 10 PGUID 12 f t f t 2 f 701 "25 1184" 100 0 0 100 timestamptz_part - )); DESCR("extract field from timestamp with time zone"); -DATA(insert OID = 1172 ( date_part PGUID 12 f t t t 2 f 701 "25 1186" 100 0 0 100 interval_part - )); +DATA(insert OID = 1172 ( date_part 10 PGUID 12 f t t t 2 f 701 "25 1186" 100 0 0 100 interval_part - )); DESCR("extract field from interval"); -DATA(insert OID = 1173 ( timestamptz PGUID 12 f t f t 1 f 1184 "702" 100 0 0 100 abstime_timestamptz - )); +DATA(insert OID = 1173 ( timestamptz 10 PGUID 12 f t f t 1 f 1184 "702" 100 0 0 100 abstime_timestamptz - )); DESCR("convert abstime to timestamp with time zone"); -DATA(insert OID = 1174 ( timestamptz PGUID 12 f t f t 1 f 1184 "1082" 100 0 0 100 date_timestamptz - )); +DATA(insert OID = 1174 ( timestamptz 10 PGUID 12 f t f t 1 f 1184 "1082" 100 0 0 100 date_timestamptz - )); DESCR("convert date to timestamp with time zone"); -DATA(insert OID = 1176 ( timestamptz PGUID 14 f t f t 2 f 1184 "1082 1083" 100 0 0 100 "select timestamptz($1 +$2)" - )); +DATA(insert OID = 1176 ( timestamptz 10 PGUID 14 f t f t 2 f 1184 "1082 1083" 100 0 0 100 "select timestamptz($1+ $2)" - )); DESCR("convert date and time to timestamp with time zone"); -DATA(insert OID = 1177 ( interval PGUID 12 f t t t 1 f 1186 "703" 100 0 0 100 reltime_interval - )); +DATA(insert OID = 1177 ( interval 10 PGUID 12 f t t t 1 f 1186 "703" 100 0 0 100 reltime_interval - )); DESCR("convert reltime to interval"); -DATA(insert OID = 1178 ( date PGUID 12 f t f t 1 f 1082 "1184" 100 0 0 100 timestamptz_date - )); +DATA(insert OID = 1178 ( date 10 PGUID 12 f t f t 1 f 1082 "1184" 100 0 0 100 timestamptz_date - )); DESCR("convert timestamp with time zone to date"); -DATA(insert OID = 1179 ( date PGUID 12 f t f t 1 f 1082 "702" 100 0 0 100 abstime_date - )); +DATA(insert OID = 1179 ( date 10 PGUID 12 f t f t 1 f 1082 "702" 100 0 0 100 abstime_date - )); DESCR("convert abstime to date"); -DATA(insert OID = 1180 ( abstime PGUID 12 f t f t 1 f 702 "1184" 100 0 0 100 timestamptz_abstime - )); +DATA(insert OID = 1180 ( abstime 10 PGUID 12 f t f t 1 f 702 "1184" 100 0 0 100 timestamptz_abstime - )); DESCR("convert timestamp with time zone to abstime"); -DATA(insert OID = 1181 ( age PGUID 12 f t f t 1 f 23 "28" 100 0 0 100 xid_age - )); +DATA(insert OID = 1181 ( age 10 PGUID 12 f t f t 1 f 23 "28" 100 0 0 100 xid_age - )); DESCR("age of a transaction ID, in transactions before current transaction"); -DATA(insert OID = 1188 ( timestamptz_mi PGUID 12 f t t t 2 f 1186 "1184 1184" 100 0 0 100 timestamp_mi - )); +DATA(insert OID = 1188 ( timestamptz_mi 10 PGUID 12 f t t t 2 f 1186 "1184 1184" 100 0 0 100 timestamp_mi - )); DESCR("subtract"); -DATA(insert OID = 1189 ( timestamptz_pl_span PGUID 12 f t t t 2 f 1184 "1184 1186" 100 0 0 100 timestamp_pl_span - )); +DATA(insert OID = 1189 ( timestamptz_pl_span 10 PGUID 12 f t t t 2 f 1184 "1184 1186" 100 0 0 100 timestamp_pl_span -)); DESCR("plus"); -DATA(insert OID = 1190 ( timestamptz_mi_span PGUID 12 f t t t 2 f 1184 "1184 1186" 100 0 0 100 timestamp_mi_span - )); +DATA(insert OID = 1190 ( timestamptz_mi_span 10 PGUID 12 f t t t 2 f 1184 "1184 1186" 100 0 0 100 timestamp_mi_span -)); DESCR("minus"); -DATA(insert OID = 1191 ( timestamptz PGUID 12 f t f t 1 f 1184 "25" 100 0 0 100 text_timestamptz - )); +DATA(insert OID = 1191 ( timestamptz 10 PGUID 12 f t f t 1 f 1184 "25" 100 0 0 100 text_timestamptz - )); DESCR("convert text to timestamp with time zone"); -DATA(insert OID = 1192 ( text PGUID 12 f t f t 1 f 25 "1184" 100 0 0 100 timestamptz_text - )); +DATA(insert OID = 1192 ( text 10 PGUID 12 f t f t 1 f 25 "1184" 100 0 0 100 timestamptz_text - )); DESCR("convert timestamp to text"); -DATA(insert OID = 1193 ( text PGUID 12 f t t t 1 f 25 "1186" 100 0 0 100 interval_text - )); +DATA(insert OID = 1193 ( text 10 PGUID 12 f t t t 1 f 25 "1186" 100 0 0 100 interval_text - )); DESCR("convert interval to text"); -DATA(insert OID = 1194 ( reltime PGUID 12 f t t t 1 f 703 "1186" 100 0 0 100 interval_reltime - )); +DATA(insert OID = 1194 ( reltime 10 PGUID 12 f t t t 1 f 703 "1186" 100 0 0 100 interval_reltime - )); DESCR("convert interval to reltime"); -DATA(insert OID = 1195 ( timestamptz_smaller PGUID 12 f t t t 2 f 1184 "1184 1184" 100 0 0 100 timestamp_smaller - )); +DATA(insert OID = 1195 ( timestamptz_smaller 10 PGUID 12 f t t t 2 f 1184 "1184 1184" 100 0 0 100 timestamp_smaller -)); DESCR("smaller of two"); -DATA(insert OID = 1196 ( timestamptz_larger PGUID 12 f t t t 2 f 1184 "1184 1184" 100 0 0 100 timestamp_larger - )); +DATA(insert OID = 1196 ( timestamptz_larger 10 PGUID 12 f t t t 2 f 1184 "1184 1184" 100 0 0 100 timestamp_larger - )); DESCR("larger of two"); -DATA(insert OID = 1197 ( interval_smaller PGUID 12 f t t t 2 f 1186 "1186 1186" 100 0 0 100 interval_smaller - )); +DATA(insert OID = 1197 ( interval_smaller 10 PGUID 12 f t t t 2 f 1186 "1186 1186" 100 0 0 100 interval_smaller - )); DESCR("smaller of two"); -DATA(insert OID = 1198 ( interval_larger PGUID 12 f t t t 2 f 1186 "1186 1186" 100 0 0 100 interval_larger - )); +DATA(insert OID = 1198 ( interval_larger 10 PGUID 12 f t t t 2 f 1186 "1186 1186" 100 0 0 100 interval_larger - )); DESCR("larger of two"); -DATA(insert OID = 1199 ( age PGUID 12 f t t t 2 f 1186 "1184 1184" 100 0 0 100 timestamptz_age - )); +DATA(insert OID = 1199 ( age 10 PGUID 12 f t t t 2 f 1186 "1184 1184" 100 0 0 100 timestamptz_age - )); DESCR("date difference preserving months and years"); /* OIDS 1200 - 1299 */ -DATA(insert OID = 1200 ( reltime PGUID 12 f t t t 1 f 703 "23" 100 0 0 100 int4reltime - )); +DATA(insert OID = 1200 ( reltime 10 PGUID 12 f t t t 1 f 703 "23" 100 0 0 100 int4reltime - )); DESCR("convert int4 to reltime"); -DATA(insert OID = 1215 ( obj_description PGUID 14 f t f t 2 f 25 "26 19" 100 0 0 100 "select description from pg_descriptionwhere objoid = $1 and classoid = (select oid from pg_class where relname = $2) and objsubid = 0" - )); +DATA(insert OID = 1215 ( obj_description 10 PGUID 14 f t f t 2 f 25 "26 19" 100 0 0 100 "select description frompg_description where objoid = $1 and classoid = (select oid from pg_class where relname = $2) and objsubid = 0" - )); DESCR("get description for object id and catalog name"); -DATA(insert OID = 1216 ( col_description PGUID 14 f t f t 2 f 25 "26 23" 100 0 0 100 "select description from pg_descriptionwhere objoid = $1 and classoid = (select oid from pg_class where relname = \'pg_class\') and objsubid = $2"- )); +DATA(insert OID = 1216 ( col_description 10 PGUID 14 f t f t 2 f 25 "26 23" 100 0 0 100 "select description frompg_description where objoid = $1 and classoid = (select oid from pg_class where relname = \'pg_class\') and objsubid= $2" - )); DESCR("get description for table column"); -DATA(insert OID = 1217 ( date_trunc PGUID 12 f t t t 2 f 1184 "25 1184" 100 0 0 100 timestamptz_trunc - )); +DATA(insert OID = 1217 ( date_trunc 10 PGUID 12 f t t t 2 f 1184 "25 1184" 100 0 0 100 timestamptz_trunc - )); DESCR("truncate timestamp with time zone to specified units"); -DATA(insert OID = 1218 ( date_trunc PGUID 12 f t t t 2 f 1186 "25 1186" 100 0 0 100 interval_trunc - )); +DATA(insert OID = 1218 ( date_trunc 10 PGUID 12 f t t t 2 f 1186 "25 1186" 100 0 0 100 interval_trunc - )); DESCR("truncate interval to specified units"); -DATA(insert OID = 1219 ( int8inc PGUID 12 f t t t 1 f 20 "20" 100 0 0 100 int8inc - )); +DATA(insert OID = 1219 ( int8inc 10 PGUID 12 f t t t 1 f 20 "20" 100 0 0 100 int8inc - )); DESCR("increment"); -DATA(insert OID = 1230 ( int8abs PGUID 12 f t t t 1 f 20 "20" 100 0 0 100 int8abs - )); +DATA(insert OID = 1230 ( int8abs 10 PGUID 12 f t t t 1 f 20 "20" 100 0 0 100 int8abs - )); DESCR("absolute value"); -DATA(insert OID = 1236 ( int8larger PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8larger - )); +DATA(insert OID = 1236 ( int8larger 10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8larger - )); DESCR("larger of two"); -DATA(insert OID = 1237 ( int8smaller PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8smaller - )); +DATA(insert OID = 1237 ( int8smaller 10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8smaller - )); DESCR("smaller of two"); -DATA(insert OID = 1238 ( texticregexeq PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 texticregexeq - )); +DATA(insert OID = 1238 ( texticregexeq 10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 texticregexeq - )); DESCR("matches regex., case-insensitive"); -DATA(insert OID = 1239 ( texticregexne PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 texticregexne - )); +DATA(insert OID = 1239 ( texticregexne 10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 texticregexne - )); DESCR("does not match regex., case-insensitive"); -DATA(insert OID = 1240 ( nameicregexeq PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 nameicregexeq - )); +DATA(insert OID = 1240 ( nameicregexeq 10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 nameicregexeq - )); DESCR("matches regex., case-insensitive"); -DATA(insert OID = 1241 ( nameicregexne PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 nameicregexne - )); +DATA(insert OID = 1241 ( nameicregexne 10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 nameicregexne - )); DESCR("does not match regex., case-insensitive"); -DATA(insert OID = 1251 ( int4abs PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 int4abs - )); +DATA(insert OID = 1251 ( int4abs 10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 int4abs - )); DESCR("absolute value"); -DATA(insert OID = 1253 ( int2abs PGUID 12 f t t t 1 f 21 "21" 100 0 0 100 int2abs - )); +DATA(insert OID = 1253 ( int2abs 10 PGUID 12 f t t t 1 f 21 "21" 100 0 0 100 int2abs - )); DESCR("absolute value"); -DATA(insert OID = 1263 ( interval PGUID 12 f t f t 1 f 1186 "25" 100 0 0 100 text_interval - )); +DATA(insert OID = 1263 ( interval 10 PGUID 12 f t f t 1 f 1186 "25" 100 0 0 100 text_interval - )); DESCR("convert text to interval"); -DATA(insert OID = 1271 ( overlaps PGUID 12 f t t f 4 f 16 "1266 1266 1266 1266" 100 0 0 100 overlaps_timetz- )); +DATA(insert OID = 1271 ( overlaps 10 PGUID 12 f t t f 4 f 16 "1266 1266 1266 1266" 100 0 0 100 overlaps_timetz- )); DESCR("SQL92 interval comparison"); -DATA(insert OID = 1272 ( datetime_pl PGUID 12 f t t t 2 f 1114 "1082 1083" 100 0 0 100 datetime_timestamp - )); +DATA(insert OID = 1272 ( datetime_pl 10 PGUID 12 f t t t 2 f 1114 "1082 1083" 100 0 0 100 datetime_timestamp - )); DESCR("convert date and time to timestamp"); -DATA(insert OID = 1274 ( int84pl PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100 int84pl - )); +DATA(insert OID = 1274 ( int84pl 10 PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100 int84pl - )); DESCR("add"); -DATA(insert OID = 1275 ( int84mi PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100 int84mi - )); +DATA(insert OID = 1275 ( int84mi 10 PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100 int84mi - )); DESCR("subtract"); -DATA(insert OID = 1276 ( int84mul PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100 int84mul - )); +DATA(insert OID = 1276 ( int84mul 10 PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100 int84mul - )); DESCR("multiply"); -DATA(insert OID = 1277 ( int84div PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100 int84div - )); +DATA(insert OID = 1277 ( int84div 10 PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100 int84div - )); DESCR("divide"); -DATA(insert OID = 1278 ( int48pl PGUID 12 f t t t 2 f 20 "23 20" 100 0 0 100 int48pl - )); +DATA(insert OID = 1278 ( int48pl 10 PGUID 12 f t t t 2 f 20 "23 20" 100 0 0 100 int48pl - )); DESCR("add"); -DATA(insert OID = 1279 ( int48mi PGUID 12 f t t t 2 f 20 "23 20" 100 0 0 100 int48mi - )); +DATA(insert OID = 1279 ( int48mi 10 PGUID 12 f t t t 2 f 20 "23 20" 100 0 0 100 int48mi - )); DESCR("subtract"); -DATA(insert OID = 1280 ( int48mul PGUID 12 f t t t 2 f 20 "23 20" 100 0 0 100 int48mul - )); +DATA(insert OID = 1280 ( int48mul 10 PGUID 12 f t t t 2 f 20 "23 20" 100 0 0 100 int48mul - )); DESCR("multiply"); -DATA(insert OID = 1281 ( int48div PGUID 12 f t t t 2 f 20 "23 20" 100 0 0 100 int48div - )); +DATA(insert OID = 1281 ( int48div 10 PGUID 12 f t t t 2 f 20 "23 20" 100 0 0 100 int48div - )); DESCR("divide"); -DATA(insert OID = 1288 ( text PGUID 12 f t t t 1 f 25 "20" 100 0 0 100 int8_text - )); +DATA(insert OID = 1288 ( text 10 PGUID 12 f t t t 1 f 25 "20" 100 0 0 100 int8_text - )); DESCR("convert int8 to text"); -DATA(insert OID = 1289 ( int8 PGUID 12 f t t t 1 f 20 "25" 100 0 0 100 text_int8 - )); +DATA(insert OID = 1289 ( int8 10 PGUID 12 f t t t 1 f 20 "25" 100 0 0 100 text_int8 - )); DESCR("convert text to int8"); -DATA(insert OID = 1290 ( _bpchar PGUID 12 f t t t 2 f 1014 "1014 23" 100 0 0 100 _bpchar - )); +DATA(insert OID = 1290 ( _bpchar 10 PGUID 12 f t t t 2 f 1014 "1014 23" 100 0 0 100 _bpchar - )); DESCR("adjust char()[] to typmod length"); -DATA(insert OID = 1291 ( _varchar PGUID 12 f t t t 2 f 1015 "1015 23" 100 0 0 100 _varchar - )); +DATA(insert OID = 1291 ( _varchar 10 PGUID 12 f t t t 2 f 1015 "1015 23" 100 0 0 100 _varchar - )); DESCR("adjust varchar()[] to typmod length"); -DATA(insert OID = 1292 ( tideq PGUID 12 f t t t 2 f 16 "27 27" 100 0 0 100 tideq - )); +DATA(insert OID = 1292 ( tideq 10 PGUID 12 f t t t 2 f 16 "27 27" 100 0 0 100 tideq - )); DESCR("equal"); -DATA(insert OID = 1293 ( currtid PGUID 12 f t f t 2 f 27 "26 27" 100 0 0 100 currtid_byreloid - )); +DATA(insert OID = 1293 ( currtid 10 PGUID 12 f t f t 2 f 27 "26 27" 100 0 0 100 currtid_byreloid - )); DESCR("latest tid of a tuple"); -DATA(insert OID = 1294 ( currtid2 PGUID 12 f t f t 2 f 27 "25 27" 100 0 0 100 currtid_byrelname - )); +DATA(insert OID = 1294 ( currtid2 10 PGUID 12 f t f t 2 f 27 "25 27" 100 0 0 100 currtid_byrelname - )); DESCR("latest tid of a tuple"); -DATA(insert OID = 1296 ( timedate_pl PGUID 14 f t t t 2 f 1114 "1083 1082" 100 0 0 100 "select ($2 + $1)" - )); +DATA(insert OID = 1296 ( timedate_pl 10 PGUID 14 f t t t 2 f 1114 "1083 1082" 100 0 0 100 "select ($2 + $1)" - )); DESCR("convert time and date to timestamp"); -DATA(insert OID = 1297 ( datetimetz_pl PGUID 12 f t t t 2 f 1184 "1082 1266" 100 0 0 100 datetimetz_timestamptz - )); +DATA(insert OID = 1297 ( datetimetz_pl 10 PGUID 12 f t t t 2 f 1184 "1082 1266" 100 0 0 100 datetimetz_timestamptz- )); DESCR("convert date and time with time zone to timestamp with time zone"); -DATA(insert OID = 1298 ( timetzdate_pl PGUID 14 f t t t 2 f 1184 "1266 1082" 100 0 0 100 "select ($2 + $1)" - )); +DATA(insert OID = 1298 ( timetzdate_pl 10 PGUID 14 f t t t 2 f 1184 "1266 1082" 100 0 0 100 "select ($2 + $1)" - )); DESCR("convert time with time zone and date to timestamp"); -DATA(insert OID = 1299 ( now PGUID 12 f t f t 0 f 1184 "0" 100 0 0 100 now - )); +DATA(insert OID = 1299 ( now 10 PGUID 12 f t f t 0 f 1184 "0" 100 0 0 100 now - )); DESCR("current transaction time"); /* OIDS 1300 - 1399 */ -DATA(insert OID = 1300 ( positionsel PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 positionsel - )); +DATA(insert OID = 1300 ( positionsel 10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 positionsel - )); DESCR("restriction selectivity for position-comparison operators"); -DATA(insert OID = 1301 ( positionjoinsel PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 positionjoinsel - )); +DATA(insert OID = 1301 ( positionjoinsel 10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 positionjoinsel - )); DESCR("join selectivity for position-comparison operators"); -DATA(insert OID = 1302 ( contsel PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 contsel - )); +DATA(insert OID = 1302 ( contsel 10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 contsel - )); DESCR("restriction selectivity for containment comparison operators"); -DATA(insert OID = 1303 ( contjoinsel PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 contjoinsel - )); +DATA(insert OID = 1303 ( contjoinsel 10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 contjoinsel - )); DESCR("join selectivity for containment comparison operators"); -DATA(insert OID = 1304 ( overlaps PGUID 12 f t t f 4 f 16 "1184 1184 1184 1184" 100 0 0 100 overlaps_timestamp- )); +DATA(insert OID = 1304 ( overlaps 10 PGUID 12 f t t f 4 f 16 "1184 1184 1184 1184" 100 0 0 100 overlaps_timestamp- )); DESCR("SQL92 interval comparison"); -DATA(insert OID = 1305 ( overlaps PGUID 14 f t t f 4 f 16 "1184 1186 1184 1186" 100 0 0 100 "select ($1, ($1+ $2)) overlaps ($3, ($3 + $4))" - )); +DATA(insert OID = 1305 ( overlaps 10 PGUID 14 f t t f 4 f 16 "1184 1186 1184 1186" 100 0 0 100 "select ($1,($1 + $2)) overlaps ($3, ($3 + $4))" - )); DESCR("SQL92 interval comparison"); -DATA(insert OID = 1306 ( overlaps PGUID 14 f t t f 4 f 16 "1184 1184 1184 1186" 100 0 0 100 "select ($1, $2)overlaps ($3, ($3 + $4))" - )); +DATA(insert OID = 1306 ( overlaps 10 PGUID 14 f t t f 4 f 16 "1184 1184 1184 1186" 100 0 0 100 "select ($1,$2) overlaps ($3, ($3 + $4))" - )); DESCR("SQL92 interval comparison"); -DATA(insert OID = 1307 ( overlaps PGUID 14 f t t f 4 f 16 "1184 1186 1184 1184" 100 0 0 100 "select ($1, ($1+ $2)) overlaps ($3, $4)" - )); +DATA(insert OID = 1307 ( overlaps 10 PGUID 14 f t t f 4 f 16 "1184 1186 1184 1184" 100 0 0 100 "select ($1,($1 + $2)) overlaps ($3, $4)" - )); DESCR("SQL92 interval comparison"); -DATA(insert OID = 1308 ( overlaps PGUID 12 f t t f 4 f 16 "1083 1083 1083 1083" 100 0 0 100 overlaps_time -)); +DATA(insert OID = 1308 ( overlaps 10 PGUID 12 f t t f 4 f 16 "1083 1083 1083 1083" 100 0 0 100 overlaps_time- )); DESCR("SQL92 interval comparison"); -DATA(insert OID = 1309 ( overlaps PGUID 14 f t t f 4 f 16 "1083 1186 1083 1186" 100 0 0 100 "select ($1, ($1+ $2)) overlaps ($3, ($3 + $4))" - )); +DATA(insert OID = 1309 ( overlaps 10 PGUID 14 f t t f 4 f 16 "1083 1186 1083 1186" 100 0 0 100 "select ($1,($1 + $2)) overlaps ($3, ($3 + $4))" - )); DESCR("SQL92 interval comparison"); -DATA(insert OID = 1310 ( overlaps PGUID 14 f t t f 4 f 16 "1083 1083 1083 1186" 100 0 0 100 "select ($1, $2)overlaps ($3, ($3 + $4))" - )); +DATA(insert OID = 1310 ( overlaps 10 PGUID 14 f t t f 4 f 16 "1083 1083 1083 1186" 100 0 0 100 "select ($1,$2) overlaps ($3, ($3 + $4))" - )); DESCR("SQL92 interval comparison"); -DATA(insert OID = 1311 ( overlaps PGUID 14 f t t f 4 f 16 "1083 1186 1083 1083" 100 0 0 100 "select ($1, ($1+ $2)) overlaps ($3, $4)" - )); +DATA(insert OID = 1311 ( overlaps 10 PGUID 14 f t t f 4 f 16 "1083 1186 1083 1083" 100 0 0 100 "select ($1,($1 + $2)) overlaps ($3, $4)" - )); DESCR("SQL92 interval comparison"); -DATA(insert OID = 1312 ( timestamp_in PGUID 12 f t f t 1 f 1114 "0" 100 0 0 100 timestamp_in - )); +DATA(insert OID = 1312 ( timestamp_in 10 PGUID 12 f t f t 1 f 1114 "0" 100 0 0 100 timestamp_in - )); DESCR("(internal)"); -DATA(insert OID = 1313 ( timestamp_out PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 timestamp_out - )); +DATA(insert OID = 1313 ( timestamp_out 10 PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 timestamp_out - )); DESCR("(internal)"); -DATA(insert OID = 1314 ( timestamptz_cmp PGUID 12 f t t t 2 f 23 "1184 1184" 100 0 0 100 timestamp_cmp - )); +DATA(insert OID = 1314 ( timestamptz_cmp 10 PGUID 12 f t t t 2 f 23 "1184 1184" 100 0 0 100 timestamp_cmp - )); DESCR("less-equal-greater"); -DATA(insert OID = 1315 ( interval_cmp PGUID 12 f t t t 2 f 23 "1186 1186" 100 0 0 100 interval_cmp - )); +DATA(insert OID = 1315 ( interval_cmp 10 PGUID 12 f t t t 2 f 23 "1186 1186" 100 0 0 100 interval_cmp - )); DESCR("less-equal-greater"); -DATA(insert OID = 1316 ( time PGUID 12 f t t t 1 f 1083 "1114" 100 0 0 100 timestamp_time - )); +DATA(insert OID = 1316 ( time 10 PGUID 12 f t t t 1 f 1083 "1114" 100 0 0 100 timestamp_time - )); DESCR("convert timestamp to time"); -DATA(insert OID = 1317 ( length PGUID 12 f t t t 1 f 23 "25" 100 0 0 100 textlen - )); +DATA(insert OID = 1317 ( length 10 PGUID 12 f t t t 1 f 23 "25" 100 0 0 100 textlen - )); DESCR("length"); -DATA(insert OID = 1318 ( length PGUID 12 f t t t 1 f 23 "1042" 100 0 0 100 bpcharlen - )); +DATA(insert OID = 1318 ( length 10 PGUID 12 f t t t 1 f 23 "1042" 100 0 0 100 bpcharlen - )); DESCR("character length"); -DATA(insert OID = 1319 ( length PGUID 12 f t t t 1 f 23 "1043" 100 0 0 100 varcharlen - )); +DATA(insert OID = 1319 ( length 10 PGUID 12 f t t t 1 f 23 "1043" 100 0 0 100 varcharlen - )); DESCR("character length"); -DATA(insert OID = 1326 ( interval_div PGUID 12 f t t t 2 f 1186 "1186 701" 100 0 0 100 interval_div - )); +DATA(insert OID = 1326 ( interval_div 10 PGUID 12 f t t t 2 f 1186 "1186 701" 100 0 0 100 interval_div - )); DESCR("divide"); -DATA(insert OID = 1339 ( dlog10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dlog10 - )); +DATA(insert OID = 1339 ( dlog10 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dlog10 - )); DESCR("base 10 logarithm"); -DATA(insert OID = 1340 ( log PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dlog10 - )); +DATA(insert OID = 1340 ( log 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dlog10 - )); DESCR("base 10 logarithm"); -DATA(insert OID = 1341 ( ln PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dlog1 - )); +DATA(insert OID = 1341 ( ln 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dlog1 - )); DESCR("natural logarithm"); -DATA(insert OID = 1342 ( round PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dround - )); +DATA(insert OID = 1342 ( round 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dround - )); DESCR("round to nearest integer"); -DATA(insert OID = 1343 ( trunc PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dtrunc - )); +DATA(insert OID = 1343 ( trunc 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dtrunc - )); DESCR("truncate to integer"); -DATA(insert OID = 1344 ( sqrt PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dsqrt - )); +DATA(insert OID = 1344 ( sqrt 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dsqrt - )); DESCR("square root"); -DATA(insert OID = 1345 ( cbrt PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dcbrt - )); +DATA(insert OID = 1345 ( cbrt 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dcbrt - )); DESCR("cube root"); -DATA(insert OID = 1346 ( pow PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 dpow - )); +DATA(insert OID = 1346 ( pow 10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 dpow - )); DESCR("exponentiation"); -DATA(insert OID = 1347 ( exp PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dexp - )); +DATA(insert OID = 1347 ( exp 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dexp - )); DESCR("exponential"); /* * This form of obj_description is now deprecated, since it will fail if * OIDs are not unique across system catalogs. Use the other forms instead. */ -DATA(insert OID = 1348 ( obj_description PGUID 14 f t f t 1 f 25 "26" 100 0 0 100 "select description from pg_descriptionwhere objoid = $1 and objsubid = 0" - )); +DATA(insert OID = 1348 ( obj_description 10 PGUID 14 f t f t 1 f 25 "26" 100 0 0 100 "select description from pg_descriptionwhere objoid = $1 and objsubid = 0" - )); DESCR("get description for object id (deprecated)"); -DATA(insert OID = 1349 ( oidvectortypes PGUID 12 f t f t 1 f 25 "30" 100 0 0 100 oidvectortypes - )); +DATA(insert OID = 1349 ( oidvectortypes 10 PGUID 12 f t f t 1 f 25 "30" 100 0 0 100 oidvectortypes - )); DESCR("print type names of oidvector field"); -DATA(insert OID = 1350 ( timetz_in PGUID 12 f t f t 1 f 1266 "0" 100 0 0 100 timetz_in - )); +DATA(insert OID = 1350 ( timetz_in 10 PGUID 12 f t f t 1 f 1266 "0" 100 0 0 100 timetz_in - )); DESCR("(internal)"); -DATA(insert OID = 1351 ( timetz_out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 timetz_out - )); +DATA(insert OID = 1351 ( timetz_out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 timetz_out - )); DESCR("(internal)"); -DATA(insert OID = 1352 ( timetz_eq PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_eq - )); +DATA(insert OID = 1352 ( timetz_eq 10 PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_eq - )); DESCR("equal"); -DATA(insert OID = 1353 ( timetz_ne PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_ne - )); +DATA(insert OID = 1353 ( timetz_ne 10 PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_ne - )); DESCR("not equal"); -DATA(insert OID = 1354 ( timetz_lt PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_lt - )); +DATA(insert OID = 1354 ( timetz_lt 10 PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_lt - )); DESCR("less-than"); -DATA(insert OID = 1355 ( timetz_le PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_le - )); +DATA(insert OID = 1355 ( timetz_le 10 PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 1356 ( timetz_ge PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_ge - )); +DATA(insert OID = 1356 ( timetz_ge 10 PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 1357 ( timetz_gt PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_gt - )); +DATA(insert OID = 1357 ( timetz_gt 10 PGUID 12 f t t t 2 f 16 "1266 1266" 100 0 0 100 timetz_gt - )); DESCR("greater-than"); -DATA(insert OID = 1358 ( timetz_cmp PGUID 12 f t t t 2 f 23 "1266 1266" 100 0 0 100 timetz_cmp - )); +DATA(insert OID = 1358 ( timetz_cmp 10 PGUID 12 f t t t 2 f 23 "1266 1266" 100 0 0 100 timetz_cmp - )); DESCR("less-equal-greater"); -DATA(insert OID = 1359 ( timestamptz PGUID 12 f t t t 2 f 1184 "1082 1266" 100 0 0 100 datetimetz_timestamptz -)); +DATA(insert OID = 1359 ( timestamptz 10 PGUID 12 f t t t 2 f 1184 "1082 1266" 100 0 0 100 datetimetz_timestamptz- )); DESCR("convert date and time with time zone to timestamp with time zone"); -DATA(insert OID = 1362 ( time PGUID 14 f t t t 1 f 1083 "1083" 100 0 0 100 "select $1" - )); +DATA(insert OID = 1362 ( time 10 PGUID 14 f t t t 1 f 1083 "1083" 100 0 0 100 "select $1" - )); DESCR("convert (noop)"); -DATA(insert OID = 1364 ( time PGUID 14 f t t t 1 f 1083 "702" 100 0 0 100 "select time(cast($1 as timestampwithout time zone))" - )); +DATA(insert OID = 1364 ( time 10 PGUID 14 f t t t 1 f 1083 "702" 100 0 0 100 "select time(cast($1 as timestampwithout time zone))" - )); DESCR("convert abstime to time"); -DATA(insert OID = 1365 ( abstime PGUID 14 f t t t 1 f 702 "702" 100 0 0 100 "select $1" - )); +DATA(insert OID = 1365 ( abstime 10 PGUID 14 f t t t 1 f 702 "702" 100 0 0 100 "select $1" - )); DESCR("convert (noop)"); -DATA(insert OID = 1367 ( reltime PGUID 14 f t t t 1 f 703 "703" 100 0 0 100 "select $1" - )); +DATA(insert OID = 1367 ( reltime 10 PGUID 14 f t t t 1 f 703 "703" 100 0 0 100 "select $1" - )); DESCR("convert (noop)"); -DATA(insert OID = 1368 ( timestamptz PGUID 14 f t t t 1 f 1184 "1184" 100 0 0 100 "select $1" - )); +DATA(insert OID = 1368 ( timestamptz 10 PGUID 14 f t t t 1 f 1184 "1184" 100 0 0 100 "select $1" - )); DESCR("convert (noop)"); -DATA(insert OID = 1369 ( interval PGUID 14 f t t t 1 f 1186 "1186" 100 0 0 100 "select $1" - )); +DATA(insert OID = 1369 ( interval 10 PGUID 14 f t t t 1 f 1186 "1186" 100 0 0 100 "select $1" - )); DESCR("convert (noop)"); -DATA(insert OID = 1370 ( interval PGUID 12 f t t t 1 f 1186 "1083" 100 0 0 100 time_interval - )); +DATA(insert OID = 1370 ( interval 10 PGUID 12 f t t t 1 f 1186 "1083" 100 0 0 100 time_interval - )); DESCR("convert time to interval"); -DATA(insert OID = 1371 ( date PGUID 14 f t t t 1 f 1082 "1082" 100 0 0 100 "select $1" - )); +DATA(insert OID = 1371 ( date 10 PGUID 14 f t t t 1 f 1082 "1082" 100 0 0 100 "select $1" - )); DESCR("convert (noop)"); -DATA(insert OID = 1372 ( char_length PGUID 12 f t t t 1 f 23 "1042" 100 0 0 100 bpcharlen - )); +DATA(insert OID = 1372 ( char_length 10 PGUID 12 f t t t 1 f 23 "1042" 100 0 0 100 bpcharlen - )); DESCR("character length"); -DATA(insert OID = 1373 ( char_length PGUID 12 f t t t 1 f 23 "1043" 100 0 0 100 varcharlen - )); +DATA(insert OID = 1373 ( char_length 10 PGUID 12 f t t t 1 f 23 "1043" 100 0 0 100 varcharlen - )); DESCR("character length"); -DATA(insert OID = 1374 ( octet_length PGUID 12 f t t t 1 f 23 "25" 100 0 0 100 textoctetlen - )); +DATA(insert OID = 1374 ( octet_length 10 PGUID 12 f t t t 1 f 23 "25" 100 0 0 100 textoctetlen - )); DESCR("octet length"); -DATA(insert OID = 1375 ( octet_length PGUID 12 f t t t 1 f 23 "1042" 100 0 0 100 bpcharoctetlen - )); +DATA(insert OID = 1375 ( octet_length 10 PGUID 12 f t t t 1 f 23 "1042" 100 0 0 100 bpcharoctetlen- )); DESCR("octet length"); -DATA(insert OID = 1376 ( octet_length PGUID 12 f t t t 1 f 23 "1043" 100 0 0 100 varcharoctetlen -)); +DATA(insert OID = 1376 ( octet_length 10 PGUID 12 f t t t 1 f 23 "1043" 100 0 0 100 varcharoctetlen- )); DESCR("octet length"); -DATA(insert OID = 1377 ( time_larger PGUID 12 f t t t 2 f 1083 "1083 1083" 100 0 0 100 time_larger - )); +DATA(insert OID = 1377 ( time_larger 10 PGUID 12 f t t t 2 f 1083 "1083 1083" 100 0 0 100 time_larger - )); DESCR("larger of two"); -DATA(insert OID = 1378 ( time_smaller PGUID 12 f t t t 2 f 1083 "1083 1083" 100 0 0 100 time_smaller - )); +DATA(insert OID = 1378 ( time_smaller 10 PGUID 12 f t t t 2 f 1083 "1083 1083" 100 0 0 100 time_smaller - )); DESCR("smaller of two"); -DATA(insert OID = 1379 ( timetz_larger PGUID 12 f t t t 2 f 1266 "1266 1266" 100 0 0 100 timetz_larger - )); +DATA(insert OID = 1379 ( timetz_larger 10 PGUID 12 f t t t 2 f 1266 "1266 1266" 100 0 0 100 timetz_larger - )); DESCR("larger of two"); -DATA(insert OID = 1380 ( timetz_smaller PGUID 12 f t t t 2 f 1266 "1266 1266" 100 0 0 100 timetz_smaller - )); +DATA(insert OID = 1380 ( timetz_smaller 10 PGUID 12 f t t t 2 f 1266 "1266 1266" 100 0 0 100 timetz_smaller - )); DESCR("smaller of two"); -DATA(insert OID = 1381 ( char_length PGUID 12 f t t t 1 f 23 "25" 100 0 0 100 textlen - )); +DATA(insert OID = 1381 ( char_length 10 PGUID 12 f t t t 1 f 23 "25" 100 0 0 100 textlen - )); DESCR("length"); -DATA(insert OID = 1382 ( date_part PGUID 14 f t f t 2 f 701 "25 702" 100 0 0 100 "select date_part($1, timestamptz($2))"- )); +DATA(insert OID = 1382 ( date_part 10 PGUID 14 f t f t 2 f 701 "25 702" 100 0 0 100 "select date_part($1, timestamptz($2))"- )); DESCR("extract field from abstime"); -DATA(insert OID = 1383 ( date_part PGUID 14 f t f t 2 f 701 "25 703" 100 0 0 100 "select date_part($1, interval($2))"- )); +DATA(insert OID = 1383 ( date_part 10 PGUID 14 f t f t 2 f 701 "25 703" 100 0 0 100 "select date_part($1, interval($2))"- )); DESCR("extract field from reltime"); -DATA(insert OID = 1384 ( date_part PGUID 14 f t t t 2 f 701 "25 1082" 100 0 0 100 "select date_part($1, cast($2 astimestamp without time zone))" - )); +DATA(insert OID = 1384 ( date_part 10 PGUID 14 f t t t 2 f 701 "25 1082" 100 0 0 100 "select date_part($1, cast($2as timestamp without time zone))" - )); DESCR("extract field from date"); -DATA(insert OID = 1385 ( date_part PGUID 14 f t t t 2 f 701 "25 1083" 100 0 0 100 "select date_part($1, interval($2))"- )); +DATA(insert OID = 1385 ( date_part 10 PGUID 14 f t t t 2 f 701 "25 1083" 100 0 0 100 "select date_part($1, interval($2))"- )); DESCR("extract field from time"); -DATA(insert OID = 1386 ( age PGUID 14 f t f t 1 f 1186 "1184" 100 0 0 100 "select age(cast(current_date as timestampwith time zone), $1)" - )); +DATA(insert OID = 1386 ( age 10 PGUID 14 f t f t 1 f 1186 "1184" 100 0 0 100 "select age(cast(current_date astimestamp with time zone), $1)" - )); DESCR("date difference from today preserving months and years"); -DATA(insert OID = 1387 ( timetz PGUID 14 f t t t 1 f 1266 "1266" 100 0 0 100 "select $1" - )); +DATA(insert OID = 1387 ( timetz 10 PGUID 14 f t t t 1 f 1266 "1266" 100 0 0 100 "select $1" - )); DESCR("noop conversion"); -DATA(insert OID = 1388 ( timetz PGUID 12 f t f t 1 f 1266 "1184" 100 0 0 100 timestamptz_timetz - )); +DATA(insert OID = 1388 ( timetz 10 PGUID 12 f t f t 1 f 1266 "1184" 100 0 0 100 timestamptz_timetz - )); DESCR("convert timestamp to timetz"); -DATA(insert OID = 1389 ( isfinite PGUID 12 f t t t 1 f 16 "1184" 100 0 0 100 timestamp_finite - )); +DATA(insert OID = 1389 ( isfinite 10 PGUID 12 f t t t 1 f 16 "1184" 100 0 0 100 timestamp_finite - )); DESCR("boolean test"); -DATA(insert OID = 1390 ( isfinite PGUID 12 f t t t 1 f 16 "1186" 100 0 0 100 interval_finite - )); +DATA(insert OID = 1390 ( isfinite 10 PGUID 12 f t t t 1 f 16 "1186" 100 0 0 100 interval_finite - )); DESCR("boolean test"); -DATA(insert OID = 1391 ( factorial PGUID 12 f t t t 1 f 23 "21" 100 0 0 100 int2fac - )); +DATA(insert OID = 1391 ( factorial 10 PGUID 12 f t t t 1 f 23 "21" 100 0 0 100 int2fac - )); DESCR("factorial"); -DATA(insert OID = 1392 ( factorial PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 int4fac - )); +DATA(insert OID = 1392 ( factorial 10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 int4fac - )); DESCR("factorial"); -DATA(insert OID = 1393 ( factorial PGUID 12 f t t t 1 f 20 "20" 100 0 0 100 int8fac - )); +DATA(insert OID = 1393 ( factorial 10 PGUID 12 f t t t 1 f 20 "20" 100 0 0 100 int8fac - )); DESCR("factorial"); -DATA(insert OID = 1394 ( abs PGUID 12 f t t t 1 f 700 "700" 100 0 0 100 float4abs - )); +DATA(insert OID = 1394 ( abs 10 PGUID 12 f t t t 1 f 700 "700" 100 0 0 100 float4abs - )); DESCR("absolute value"); -DATA(insert OID = 1395 ( abs PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 float8abs - )); +DATA(insert OID = 1395 ( abs 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 float8abs - )); DESCR("absolute value"); -DATA(insert OID = 1396 ( abs PGUID 12 f t t t 1 f 20 "20" 100 0 0 100 int8abs - )); +DATA(insert OID = 1396 ( abs 10 PGUID 12 f t t t 1 f 20 "20" 100 0 0 100 int8abs - )); DESCR("absolute value"); -DATA(insert OID = 1397 ( abs PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 int4abs - )); +DATA(insert OID = 1397 ( abs 10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 int4abs - )); DESCR("absolute value"); -DATA(insert OID = 1398 ( abs PGUID 12 f t t t 1 f 21 "21" 100 0 0 100 int2abs - )); +DATA(insert OID = 1398 ( abs 10 PGUID 12 f t t t 1 f 21 "21" 100 0 0 100 int2abs - )); DESCR("absolute value"); /* OIDS 1400 - 1499 */ -DATA(insert OID = 1400 ( name PGUID 12 f t t t 1 f 19 "1043" 100 0 0 100 text_name - )); +DATA(insert OID = 1400 ( name 10 PGUID 12 f t t t 1 f 19 "1043" 100 0 0 100 text_name - )); DESCR("convert varchar to name"); -DATA(insert OID = 1401 ( varchar PGUID 12 f t t t 1 f 1043 "19" 100 0 0 100 name_text - )); +DATA(insert OID = 1401 ( varchar 10 PGUID 12 f t t t 1 f 1043 "19" 100 0 0 100 name_text - )); DESCR("convert name to varchar"); -DATA(insert OID = 1402 ( float4 PGUID 14 f t t t 1 f 700 "700" 100 0 0 100 "select $1" - )); +DATA(insert OID = 1402 ( float4 10 PGUID 14 f t t t 1 f 700 "700" 100 0 0 100 "select $1" - )); DESCR("convert float4 to float4 (no-op)"); -DATA(insert OID = 1403 ( int2 PGUID 14 f t t t 1 f 21 "21" 100 0 0 100 "select $1" - )); +DATA(insert OID = 1403 ( int2 10 PGUID 14 f t t t 1 f 21 "21" 100 0 0 100 "select $1" - )); DESCR("convert (no-op)"); -DATA(insert OID = 1404 ( float8 PGUID 14 f t t t 1 f 701 "701" 100 0 0 100 "select $1" - )); +DATA(insert OID = 1404 ( float8 10 PGUID 14 f t t t 1 f 701 "701" 100 0 0 100 "select $1" - )); DESCR("convert (no-op)"); -DATA(insert OID = 1405 ( int4 PGUID 14 f t t t 1 f 23 "23" 100 0 0 100 "select $1" - )); +DATA(insert OID = 1405 ( int4 10 PGUID 14 f t t t 1 f 23 "23" 100 0 0 100 "select $1" - )); DESCR("convert (no-op)"); -DATA(insert OID = 1406 ( isvertical PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_vert - )); +DATA(insert OID = 1406 ( isvertical 10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_vert - )); DESCR("vertically aligned?"); -DATA(insert OID = 1407 ( ishorizontal PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_horiz - )); +DATA(insert OID = 1407 ( ishorizontal 10 PGUID 12 f t t t 2 f 16 "600 600" 100 0 0 100 point_horiz - )); DESCR("horizontally aligned?"); -DATA(insert OID = 1408 ( isparallel PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_parallel - )); +DATA(insert OID = 1408 ( isparallel 10 PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_parallel - )); DESCR("parallel?"); -DATA(insert OID = 1409 ( isperp PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_perp - )); +DATA(insert OID = 1409 ( isperp 10 PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_perp - )); DESCR("perpendicular?"); -DATA(insert OID = 1410 ( isvertical PGUID 12 f t t t 1 f 16 "601" 100 0 0 100 lseg_vertical - )); +DATA(insert OID = 1410 ( isvertical 10 PGUID 12 f t t t 1 f 16 "601" 100 0 0 100 lseg_vertical - )); DESCR("vertical?"); -DATA(insert OID = 1411 ( ishorizontal PGUID 12 f t t t 1 f 16 "601" 100 0 0 100 lseg_horizontal - )); +DATA(insert OID = 1411 ( ishorizontal 10 PGUID 12 f t t t 1 f 16 "601" 100 0 0 100 lseg_horizontal - )); DESCR("horizontal?"); -DATA(insert OID = 1412 ( isparallel PGUID 12 f t t t 2 f 16 "628 628" 100 0 0 100 line_parallel - )); +DATA(insert OID = 1412 ( isparallel 10 PGUID 12 f t t t 2 f 16 "628 628" 100 0 0 100 line_parallel - )); DESCR("lines parallel?"); -DATA(insert OID = 1413 ( isperp PGUID 12 f t t t 2 f 16 "628 628" 100 0 0 100 line_perp - )); +DATA(insert OID = 1413 ( isperp 10 PGUID 12 f t t t 2 f 16 "628 628" 100 0 0 100 line_perp - )); DESCR("lines perpendicular?"); -DATA(insert OID = 1414 ( isvertical PGUID 12 f t t t 1 f 16 "628" 100 0 0 100 line_vertical - )); +DATA(insert OID = 1414 ( isvertical 10 PGUID 12 f t t t 1 f 16 "628" 100 0 0 100 line_vertical - )); DESCR("lines vertical?"); -DATA(insert OID = 1415 ( ishorizontal PGUID 12 f t t t 1 f 16 "628" 100 0 0 100 line_horizontal - )); +DATA(insert OID = 1415 ( ishorizontal 10 PGUID 12 f t t t 1 f 16 "628" 100 0 0 100 line_horizontal - )); DESCR("lines horizontal?"); -DATA(insert OID = 1416 ( point PGUID 12 f t t t 1 f 600 "718" 100 0 0 100 circle_center - )); +DATA(insert OID = 1416 ( point 10 PGUID 12 f t t t 1 f 600 "718" 100 0 0 100 circle_center - )); DESCR("center of"); -DATA(insert OID = 1417 ( isnottrue PGUID 12 f t t f 1 f 16 "16" 100 0 0 100 isnottrue - )); +DATA(insert OID = 1417 ( isnottrue 10 PGUID 12 f t t f 1 f 16 "16" 100 0 0 100 isnottrue - )); DESCR("bool is not true (ie, false or unknown)"); -DATA(insert OID = 1418 ( isnotfalse PGUID 12 f t t f 1 f 16 "16" 100 0 0 100 isnotfalse - )); +DATA(insert OID = 1418 ( isnotfalse 10 PGUID 12 f t t f 1 f 16 "16" 100 0 0 100 isnotfalse - )); DESCR("bool is not false (ie, true or unknown)"); -DATA(insert OID = 1419 ( time PGUID 12 f t t t 1 f 1083 "1186" 100 0 0 100 interval_time - )); +DATA(insert OID = 1419 ( time 10 PGUID 12 f t t t 1 f 1083 "1186" 100 0 0 100 interval_time - )); DESCR("convert interval to time"); -DATA(insert OID = 1421 ( box PGUID 12 f t t t 2 f 603 "600 600" 100 0 0 100 points_box - )); +DATA(insert OID = 1421 ( box 10 PGUID 12 f t t t 2 f 603 "600 600" 100 0 0 100 points_box - )); DESCR("convert points to box"); -DATA(insert OID = 1422 ( box_add PGUID 12 f t t t 2 f 603 "603 600" 100 0 0 100 box_add - )); +DATA(insert OID = 1422 ( box_add 10 PGUID 12 f t t t 2 f 603 "603 600" 100 0 0 100 box_add - )); DESCR("add point to box (translate)"); -DATA(insert OID = 1423 ( box_sub PGUID 12 f t t t 2 f 603 "603 600" 100 0 0 100 box_sub - )); +DATA(insert OID = 1423 ( box_sub 10 PGUID 12 f t t t 2 f 603 "603 600" 100 0 0 100 box_sub - )); DESCR("subtract point from box (translate)"); -DATA(insert OID = 1424 ( box_mul PGUID 12 f t t t 2 f 603 "603 600" 100 0 0 100 box_mul - )); +DATA(insert OID = 1424 ( box_mul 10 PGUID 12 f t t t 2 f 603 "603 600" 100 0 0 100 box_mul - )); DESCR("multiply box by point (scale)"); -DATA(insert OID = 1425 ( box_div PGUID 12 f t t t 2 f 603 "603 600" 100 0 0 100 box_div - )); +DATA(insert OID = 1425 ( box_div 10 PGUID 12 f t t t 2 f 603 "603 600" 100 0 0 100 box_div - )); DESCR("divide box by point (scale)"); -DATA(insert OID = 1426 ( path_contain_pt PGUID 14 f t t t 2 f 16 "602 600" 100 0 0 100 "select on_ppath($2, $1)"- )); +DATA(insert OID = 1426 ( path_contain_pt 10 PGUID 14 f t t t 2 f 16 "602 600" 100 0 0 100 "select on_ppath($2, $1)"- )); DESCR("path contains point?"); -DATA(insert OID = 1428 ( poly_contain_pt PGUID 12 f t t t 2 f 16 "604 600" 100 0 0 100 poly_contain_pt - )); +DATA(insert OID = 1428 ( poly_contain_pt 10 PGUID 12 f t t t 2 f 16 "604 600" 100 0 0 100 poly_contain_pt - )); DESCR("polygon contains point?"); -DATA(insert OID = 1429 ( pt_contained_poly PGUID 12 f t t t 2 f 16 "600 604" 100 0 0 100 pt_contained_poly - )); +DATA(insert OID = 1429 ( pt_contained_poly 10 PGUID 12 f t t t 2 f 16 "600 604" 100 0 0 100 pt_contained_poly - )); DESCR("point contained by polygon?"); -DATA(insert OID = 1430 ( isclosed PGUID 12 f t t t 1 f 16 "602" 100 0 0 100 path_isclosed - )); +DATA(insert OID = 1430 ( isclosed 10 PGUID 12 f t t t 1 f 16 "602" 100 0 0 100 path_isclosed - )); DESCR("path closed?"); -DATA(insert OID = 1431 ( isopen PGUID 12 f t t t 1 f 16 "602" 100 0 0 100 path_isopen - )); +DATA(insert OID = 1431 ( isopen 10 PGUID 12 f t t t 1 f 16 "602" 100 0 0 100 path_isopen - )); DESCR("path open?"); -DATA(insert OID = 1432 ( path_npoints PGUID 12 f t t t 1 f 23 "602" 100 0 0 100 path_npoints - )); +DATA(insert OID = 1432 ( path_npoints 10 PGUID 12 f t t t 1 f 23 "602" 100 0 0 100 path_npoints - )); DESCR("# points in path"); /* pclose and popen might better be named close and open, but that crashes initdb. * - thomas 97/04/20 */ -DATA(insert OID = 1433 ( pclose PGUID 12 f t t t 1 f 602 "602" 100 0 0 100 path_close - )); +DATA(insert OID = 1433 ( pclose 10 PGUID 12 f t t t 1 f 602 "602" 100 0 0 100 path_close - )); DESCR("close path"); -DATA(insert OID = 1434 ( popen PGUID 12 f t t t 1 f 602 "602" 100 0 0 100 path_open - )); +DATA(insert OID = 1434 ( popen 10 PGUID 12 f t t t 1 f 602 "602" 100 0 0 100 path_open - )); DESCR("open path"); -DATA(insert OID = 1435 ( path_add PGUID 12 f t t t 2 f 602 "602 602" 100 0 0 100 path_add - )); +DATA(insert OID = 1435 ( path_add 10 PGUID 12 f t t t 2 f 602 "602 602" 100 0 0 100 path_add - )); DESCR("concatenate open paths"); -DATA(insert OID = 1436 ( path_add_pt PGUID 12 f t t t 2 f 602 "602 600" 100 0 0 100 path_add_pt - )); +DATA(insert OID = 1436 ( path_add_pt 10 PGUID 12 f t t t 2 f 602 "602 600" 100 0 0 100 path_add_pt - )); DESCR("add (translate path)"); -DATA(insert OID = 1437 ( path_sub_pt PGUID 12 f t t t 2 f 602 "602 600" 100 0 0 100 path_sub_pt - )); +DATA(insert OID = 1437 ( path_sub_pt 10 PGUID 12 f t t t 2 f 602 "602 600" 100 0 0 100 path_sub_pt - )); DESCR("subtract (translate path)"); -DATA(insert OID = 1438 ( path_mul_pt PGUID 12 f t t t 2 f 602 "602 600" 100 0 0 100 path_mul_pt - )); +DATA(insert OID = 1438 ( path_mul_pt 10 PGUID 12 f t t t 2 f 602 "602 600" 100 0 0 100 path_mul_pt - )); DESCR("multiply (rotate/scale path)"); -DATA(insert OID = 1439 ( path_div_pt PGUID 12 f t t t 2 f 602 "602 600" 100 0 0 100 path_div_pt - )); +DATA(insert OID = 1439 ( path_div_pt 10 PGUID 12 f t t t 2 f 602 "602 600" 100 0 0 100 path_div_pt - )); DESCR("divide (rotate/scale path)"); -DATA(insert OID = 1440 ( point PGUID 12 f t t t 2 f 600 "701 701" 100 0 0 100 construct_point - )); +DATA(insert OID = 1440 ( point 10 PGUID 12 f t t t 2 f 600 "701 701" 100 0 0 100 construct_point - )); DESCR("convert x, y to point"); -DATA(insert OID = 1441 ( point_add PGUID 12 f t t t 2 f 600 "600 600" 100 0 0 100 point_add - )); +DATA(insert OID = 1441 ( point_add 10 PGUID 12 f t t t 2 f 600 "600 600" 100 0 0 100 point_add - )); DESCR("add points (translate)"); -DATA(insert OID = 1442 ( point_sub PGUID 12 f t t t 2 f 600 "600 600" 100 0 0 100 point_sub - )); +DATA(insert OID = 1442 ( point_sub 10 PGUID 12 f t t t 2 f 600 "600 600" 100 0 0 100 point_sub - )); DESCR("subtract points (translate)"); -DATA(insert OID = 1443 ( point_mul PGUID 12 f t t t 2 f 600 "600 600" 100 0 0 100 point_mul - )); +DATA(insert OID = 1443 ( point_mul 10 PGUID 12 f t t t 2 f 600 "600 600" 100 0 0 100 point_mul - )); DESCR("multiply points (scale/rotate)"); -DATA(insert OID = 1444 ( point_div PGUID 12 f t t t 2 f 600 "600 600" 100 0 0 100 point_div - )); +DATA(insert OID = 1444 ( point_div 10 PGUID 12 f t t t 2 f 600 "600 600" 100 0 0 100 point_div - )); DESCR("divide points (scale/rotate)"); -DATA(insert OID = 1445 ( poly_npoints PGUID 12 f t t t 1 f 23 "604" 100 0 0 100 poly_npoints - )); +DATA(insert OID = 1445 ( poly_npoints 10 PGUID 12 f t t t 1 f 23 "604" 100 0 0 100 poly_npoints - )); DESCR("number of points in polygon"); -DATA(insert OID = 1446 ( box PGUID 12 f t t t 1 f 603 "604" 100 0 0 100 poly_box - )); +DATA(insert OID = 1446 ( box 10 PGUID 12 f t t t 1 f 603 "604" 100 0 0 100 poly_box - )); DESCR("convert polygon to bounding box"); -DATA(insert OID = 1447 ( path PGUID 12 f t t t 1 f 602 "604" 100 0 0 100 poly_path - )); +DATA(insert OID = 1447 ( path 10 PGUID 12 f t t t 1 f 602 "604" 100 0 0 100 poly_path - )); DESCR("convert polygon to path"); -DATA(insert OID = 1448 ( polygon PGUID 12 f t t t 1 f 604 "603" 100 0 0 100 box_poly - )); +DATA(insert OID = 1448 ( polygon 10 PGUID 12 f t t t 1 f 604 "603" 100 0 0 100 box_poly - )); DESCR("convert box to polygon"); -DATA(insert OID = 1449 ( polygon PGUID 12 f t t t 1 f 604 "602" 100 0 0 100 path_poly - )); +DATA(insert OID = 1449 ( polygon 10 PGUID 12 f t t t 1 f 604 "602" 100 0 0 100 path_poly - )); DESCR("convert path to polygon"); -DATA(insert OID = 1450 ( circle_in PGUID 12 f t t t 1 f 718 "0" 100 0 0 100 circle_in - )); +DATA(insert OID = 1450 ( circle_in 10 PGUID 12 f t t t 1 f 718 "0" 100 0 0 100 circle_in - )); DESCR("(internal)"); -DATA(insert OID = 1451 ( circle_out PGUID 12 f t t t 1 f 23 "718" 100 0 0 100 circle_out - )); +DATA(insert OID = 1451 ( circle_out 10 PGUID 12 f t t t 1 f 23 "718" 100 0 0 100 circle_out - )); DESCR("(internal)"); -DATA(insert OID = 1452 ( circle_same PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_same - )); +DATA(insert OID = 1452 ( circle_same 10 PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_same - )); DESCR("same as"); -DATA(insert OID = 1453 ( circle_contain PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_contain - )); +DATA(insert OID = 1453 ( circle_contain 10 PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_contain - )); DESCR("contains"); -DATA(insert OID = 1454 ( circle_left PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_left - )); +DATA(insert OID = 1454 ( circle_left 10 PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_left - )); DESCR("is left of"); -DATA(insert OID = 1455 ( circle_overleft PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_overleft - )); +DATA(insert OID = 1455 ( circle_overleft 10 PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_overleft - )); DESCR("overlaps, but does not extend to right of"); -DATA(insert OID = 1456 ( circle_overright PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_overright - )); +DATA(insert OID = 1456 ( circle_overright 10 PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_overright - )); DESCR(""); -DATA(insert OID = 1457 ( circle_right PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_right - )); +DATA(insert OID = 1457 ( circle_right 10 PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_right - )); DESCR("is right of"); -DATA(insert OID = 1458 ( circle_contained PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_contained - )); +DATA(insert OID = 1458 ( circle_contained 10 PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_contained - )); DESCR(""); -DATA(insert OID = 1459 ( circle_overlap PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_overlap - )); +DATA(insert OID = 1459 ( circle_overlap 10 PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_overlap - )); DESCR("overlaps"); -DATA(insert OID = 1460 ( circle_below PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_below - )); +DATA(insert OID = 1460 ( circle_below 10 PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_below - )); DESCR("is below"); -DATA(insert OID = 1461 ( circle_above PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_above - )); +DATA(insert OID = 1461 ( circle_above 10 PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_above - )); DESCR("is above"); -DATA(insert OID = 1462 ( circle_eq PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_eq - )); +DATA(insert OID = 1462 ( circle_eq 10 PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_eq - )); DESCR("equal by area"); -DATA(insert OID = 1463 ( circle_ne PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_ne - )); +DATA(insert OID = 1463 ( circle_ne 10 PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_ne - )); DESCR("not equal by area"); -DATA(insert OID = 1464 ( circle_lt PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_lt - )); +DATA(insert OID = 1464 ( circle_lt 10 PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_lt - )); DESCR("less-than by area"); -DATA(insert OID = 1465 ( circle_gt PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_gt - )); +DATA(insert OID = 1465 ( circle_gt 10 PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_gt - )); DESCR("greater-than by area"); -DATA(insert OID = 1466 ( circle_le PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_le - )); +DATA(insert OID = 1466 ( circle_le 10 PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_le - )); DESCR("less-than-or-equal by area"); -DATA(insert OID = 1467 ( circle_ge PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_ge - )); +DATA(insert OID = 1467 ( circle_ge 10 PGUID 12 f t t t 2 f 16 "718 718" 100 0 0 100 circle_ge - )); DESCR("greater-than-or-equal by area"); -DATA(insert OID = 1468 ( area PGUID 12 f t t t 1 f 701 "718" 100 0 0 100 circle_area - )); +DATA(insert OID = 1468 ( area 10 PGUID 12 f t t t 1 f 701 "718" 100 0 0 100 circle_area - )); DESCR("area of circle"); -DATA(insert OID = 1469 ( diameter PGUID 12 f t t t 1 f 701 "718" 100 0 0 100 circle_diameter - )); +DATA(insert OID = 1469 ( diameter 10 PGUID 12 f t t t 1 f 701 "718" 100 0 0 100 circle_diameter - )); DESCR("diameter of circle"); -DATA(insert OID = 1470 ( radius PGUID 12 f t t t 1 f 701 "718" 100 0 0 100 circle_radius - )); +DATA(insert OID = 1470 ( radius 10 PGUID 12 f t t t 1 f 701 "718" 100 0 0 100 circle_radius - )); DESCR("radius of circle"); -DATA(insert OID = 1471 ( circle_distance PGUID 12 f t t t 2 f 701 "718 718" 100 0 0 100 circle_distance - )); +DATA(insert OID = 1471 ( circle_distance 10 PGUID 12 f t t t 2 f 701 "718 718" 100 0 0 100 circle_distance - )); DESCR("distance between"); -DATA(insert OID = 1472 ( circle_center PGUID 12 f t t t 1 f 600 "718" 100 0 0 100 circle_center - )); +DATA(insert OID = 1472 ( circle_center 10 PGUID 12 f t t t 1 f 600 "718" 100 0 0 100 circle_center - )); DESCR("center of"); -DATA(insert OID = 1473 ( circle PGUID 12 f t t t 2 f 718 "600 701" 100 0 0 100 cr_circle - )); +DATA(insert OID = 1473 ( circle 10 PGUID 12 f t t t 2 f 718 "600 701" 100 0 0 100 cr_circle - )); DESCR("convert point and radius to circle"); -DATA(insert OID = 1474 ( circle PGUID 12 f t t t 1 f 718 "604" 100 0 0 100 poly_circle - )); +DATA(insert OID = 1474 ( circle 10 PGUID 12 f t t t 1 f 718 "604" 100 0 0 100 poly_circle - )); DESCR("convert polygon to circle"); -DATA(insert OID = 1475 ( polygon PGUID 12 f t t t 2 f 604 "23 718" 100 0 0 100 circle_poly - )); +DATA(insert OID = 1475 ( polygon 10 PGUID 12 f t t t 2 f 604 "23 718" 100 0 0 100 circle_poly - )); DESCR("convert vertex count and circle to polygon"); -DATA(insert OID = 1476 ( dist_pc PGUID 12 f t t t 2 f 701 "600 718" 100 0 0 100 dist_pc - )); +DATA(insert OID = 1476 ( dist_pc 10 PGUID 12 f t t t 2 f 701 "600 718" 100 0 0 100 dist_pc - )); DESCR("distance between point and circle"); -DATA(insert OID = 1477 ( circle_contain_pt PGUID 12 f t t t 2 f 16 "718 600" 100 0 0 100 circle_contain_pt - )); +DATA(insert OID = 1477 ( circle_contain_pt 10 PGUID 12 f t t t 2 f 16 "718 600" 100 0 0 100 circle_contain_pt - )); DESCR("circle contains point?"); -DATA(insert OID = 1478 ( pt_contained_circle PGUID 12 f t t t 2 f 16 "600 718" 100 0 0 100 pt_contained_circle -)); +DATA(insert OID = 1478 ( pt_contained_circle 10 PGUID 12 f t t t 2 f 16 "600 718" 100 0 0 100 pt_contained_circle- )); DESCR("point inside circle?"); -DATA(insert OID = 1479 ( circle PGUID 12 f t t t 1 f 718 "603" 100 0 0 100 box_circle - )); +DATA(insert OID = 1479 ( circle 10 PGUID 12 f t t t 1 f 718 "603" 100 0 0 100 box_circle - )); DESCR("convert box to circle"); -DATA(insert OID = 1480 ( box PGUID 12 f t t t 1 f 603 "718" 100 0 0 100 circle_box - )); +DATA(insert OID = 1480 ( box 10 PGUID 12 f t t t 1 f 603 "718" 100 0 0 100 circle_box - )); DESCR("convert circle to box"); -DATA(insert OID = 1481 ( tinterval PGUID 12 f t t t 2 f 704 "702 702" 100 0 0 100 mktinterval - )); +DATA(insert OID = 1481 ( tinterval 10 PGUID 12 f t t t 2 f 704 "702 702" 100 0 0 100 mktinterval - )); DESCR("convert to tinterval"); -DATA(insert OID = 1482 ( lseg_ne PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_ne - )); +DATA(insert OID = 1482 ( lseg_ne 10 PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_ne - )); DESCR("not equal"); -DATA(insert OID = 1483 ( lseg_lt PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_lt - )); +DATA(insert OID = 1483 ( lseg_lt 10 PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_lt - )); DESCR("less-than by length"); -DATA(insert OID = 1484 ( lseg_le PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_le - )); +DATA(insert OID = 1484 ( lseg_le 10 PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_le - )); DESCR("less-than-or-equal by length"); -DATA(insert OID = 1485 ( lseg_gt PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_gt - )); +DATA(insert OID = 1485 ( lseg_gt 10 PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_gt - )); DESCR("greater-than by length"); -DATA(insert OID = 1486 ( lseg_ge PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_ge - )); +DATA(insert OID = 1486 ( lseg_ge 10 PGUID 12 f t t t 2 f 16 "601 601" 100 0 0 100 lseg_ge - )); DESCR("greater-than-or-equal by length"); -DATA(insert OID = 1487 ( lseg_length PGUID 12 f t t t 1 f 701 "601" 100 0 0 100 lseg_length - )); +DATA(insert OID = 1487 ( lseg_length 10 PGUID 12 f t t t 1 f 701 "601" 100 0 0 100 lseg_length - )); DESCR("distance between endpoints"); -DATA(insert OID = 1488 ( close_ls PGUID 12 f t t t 2 f 600 "628 601" 100 0 0 100 close_ls - )); +DATA(insert OID = 1488 ( close_ls 10 PGUID 12 f t t t 2 f 600 "628 601" 100 0 0 100 close_ls - )); DESCR("closest point to line on line segment"); -DATA(insert OID = 1489 ( close_lseg PGUID 12 f t t t 2 f 600 "601 601" 100 0 0 100 close_lseg - )); +DATA(insert OID = 1489 ( close_lseg 10 PGUID 12 f t t t 2 f 600 "601 601" 100 0 0 100 close_lseg - )); DESCR("closest point to line segment on line segment"); -DATA(insert OID = 1490 ( line_in PGUID 12 f t t t 1 f 628 "0" 100 0 0 100 line_in - )); +DATA(insert OID = 1490 ( line_in 10 PGUID 12 f t t t 1 f 628 "0" 100 0 0 100 line_in - )); DESCR("(internal)"); -DATA(insert OID = 1491 ( line_out PGUID 12 f t t t 1 f 23 "628" 100 0 0 100 line_out - )); +DATA(insert OID = 1491 ( line_out 10 PGUID 12 f t t t 1 f 23 "628" 100 0 0 100 line_out - )); DESCR("(internal)"); -DATA(insert OID = 1492 ( line_eq PGUID 12 f t t t 2 f 16 "628 628" 100 0 0 100 line_eq - )); +DATA(insert OID = 1492 ( line_eq 10 PGUID 12 f t t t 2 f 16 "628 628" 100 0 0 100 line_eq - )); DESCR("lines equal?"); -DATA(insert OID = 1493 ( line PGUID 12 f t t t 2 f 628 "600 600" 100 0 0 100 line_construct_pp - )); +DATA(insert OID = 1493 ( line 10 PGUID 12 f t t t 2 f 628 "600 600" 100 0 0 100 line_construct_pp - )); DESCR("line from points"); -DATA(insert OID = 1494 ( line_interpt PGUID 12 f t t t 2 f 600 "628 628" 100 0 0 100 line_interpt - )); +DATA(insert OID = 1494 ( line_interpt 10 PGUID 12 f t t t 2 f 600 "628 628" 100 0 0 100 line_interpt - )); DESCR("intersection point"); -DATA(insert OID = 1495 ( line_intersect PGUID 12 f t t t 2 f 16 "628 628" 100 0 0 100 line_intersect - )); +DATA(insert OID = 1495 ( line_intersect 10 PGUID 12 f t t t 2 f 16 "628 628" 100 0 0 100 line_intersect - )); DESCR("lines intersect?"); -DATA(insert OID = 1496 ( line_parallel PGUID 12 f t t t 2 f 16 "628 628" 100 0 0 100 line_parallel - )); +DATA(insert OID = 1496 ( line_parallel 10 PGUID 12 f t t t 2 f 16 "628 628" 100 0 0 100 line_parallel - )); DESCR("lines parallel?"); -DATA(insert OID = 1497 ( line_perp PGUID 12 f t t t 2 f 16 "628 628" 100 0 0 100 line_perp - )); +DATA(insert OID = 1497 ( line_perp 10 PGUID 12 f t t t 2 f 16 "628 628" 100 0 0 100 line_perp - )); DESCR("lines perpendicular?"); -DATA(insert OID = 1498 ( line_vertical PGUID 12 f t t t 1 f 16 "628" 100 0 0 100 line_vertical - )); +DATA(insert OID = 1498 ( line_vertical 10 PGUID 12 f t t t 1 f 16 "628" 100 0 0 100 line_vertical - )); DESCR("lines vertical?"); -DATA(insert OID = 1499 ( line_horizontal PGUID 12 f t t t 1 f 16 "628" 100 0 0 100 line_horizontal - )); +DATA(insert OID = 1499 ( line_horizontal 10 PGUID 12 f t t t 1 f 16 "628" 100 0 0 100 line_horizontal - )); DESCR("lines horizontal?"); /* OIDS 1500 - 1599 */ -DATA(insert OID = 1530 ( length PGUID 12 f t t t 1 f 701 "601" 100 0 0 100 lseg_length - )); +DATA(insert OID = 1530 ( length 10 PGUID 12 f t t t 1 f 701 "601" 100 0 0 100 lseg_length - )); DESCR("distance between endpoints"); -DATA(insert OID = 1531 ( length PGUID 12 f t t t 1 f 701 "602" 100 0 0 100 path_length - )); +DATA(insert OID = 1531 ( length 10 PGUID 12 f t t t 1 f 701 "602" 100 0 0 100 path_length - )); DESCR("sum of path segments"); -DATA(insert OID = 1532 ( point PGUID 12 f t t t 1 f 600 "601" 100 0 0 100 lseg_center - )); +DATA(insert OID = 1532 ( point 10 PGUID 12 f t t t 1 f 600 "601" 100 0 0 100 lseg_center - )); DESCR("center of"); -DATA(insert OID = 1533 ( point PGUID 12 f t t t 1 f 600 "602" 100 0 0 100 path_center - )); +DATA(insert OID = 1533 ( point 10 PGUID 12 f t t t 1 f 600 "602" 100 0 0 100 path_center - )); DESCR("center of"); -DATA(insert OID = 1534 ( point PGUID 12 f t t t 1 f 600 "603" 100 0 0 100 box_center - )); +DATA(insert OID = 1534 ( point 10 PGUID 12 f t t t 1 f 600 "603" 100 0 0 100 box_center - )); DESCR("center of"); -DATA(insert OID = 1540 ( point PGUID 12 f t t t 1 f 600 "604" 100 0 0 100 poly_center - )); +DATA(insert OID = 1540 ( point 10 PGUID 12 f t t t 1 f 600 "604" 100 0 0 100 poly_center - )); DESCR("center of"); -DATA(insert OID = 1541 ( lseg PGUID 12 f t t t 1 f 601 "603" 100 0 0 100 box_diagonal - )); +DATA(insert OID = 1541 ( lseg 10 PGUID 12 f t t t 1 f 601 "603" 100 0 0 100 box_diagonal - )); DESCR("diagonal of"); -DATA(insert OID = 1542 ( center PGUID 12 f t t t 1 f 600 "603" 100 0 0 100 box_center - )); +DATA(insert OID = 1542 ( center 10 PGUID 12 f t t t 1 f 600 "603" 100 0 0 100 box_center - )); DESCR("center of"); -DATA(insert OID = 1543 ( center PGUID 12 f t t t 1 f 600 "718" 100 0 0 100 circle_center - )); +DATA(insert OID = 1543 ( center 10 PGUID 12 f t t t 1 f 600 "718" 100 0 0 100 circle_center - )); DESCR("center of"); -DATA(insert OID = 1544 ( polygon PGUID 14 f t t t 1 f 604 "718" 100 0 0 100 "select polygon(12, $1)" - )); +DATA(insert OID = 1544 ( polygon 10 PGUID 14 f t t t 1 f 604 "718" 100 0 0 100 "select polygon(12, $1)" - )); DESCR("convert circle to 12-vertex polygon"); -DATA(insert OID = 1545 ( npoints PGUID 12 f t t t 1 f 23 "602" 100 0 0 100 path_npoints - )); +DATA(insert OID = 1545 ( npoints 10 PGUID 12 f t t t 1 f 23 "602" 100 0 0 100 path_npoints - )); DESCR("# points in path"); -DATA(insert OID = 1556 ( npoints PGUID 12 f t t t 1 f 23 "604" 100 0 0 100 poly_npoints - )); +DATA(insert OID = 1556 ( npoints 10 PGUID 12 f t t t 1 f 23 "604" 100 0 0 100 poly_npoints - )); DESCR("number of points in polygon"); -DATA(insert OID = 1564 ( bit_in PGUID 12 f t t t 1 f 1560 "0" 100 0 0 100 bit_in - )); +DATA(insert OID = 1564 ( bit_in 10 PGUID 12 f t t t 1 f 1560 "0" 100 0 0 100 bit_in - )); DESCR("(internal)"); -DATA(insert OID = 1565 ( bit_out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 bit_out - )); +DATA(insert OID = 1565 ( bit_out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 bit_out - )); DESCR("(internal)"); -DATA(insert OID = 1569 ( like PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textlike - )); +DATA(insert OID = 1569 ( like 10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textlike - )); DESCR("matches LIKE expression"); -DATA(insert OID = 1570 ( notlike PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textnlike - )); +DATA(insert OID = 1570 ( notlike 10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 textnlike - )); DESCR("does not match LIKE expression"); -DATA(insert OID = 1571 ( like PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 namelike - )); +DATA(insert OID = 1571 ( like 10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 namelike - )); DESCR("matches LIKE expression"); -DATA(insert OID = 1572 ( notlike PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 namenlike - )); +DATA(insert OID = 1572 ( notlike 10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 namenlike - )); DESCR("does not match LIKE expression"); -DATA(insert OID = 1573 ( int8 PGUID 14 f t t t 1 f 20 "20" 100 0 0 100 "select $1" - )); +DATA(insert OID = 1573 ( int8 10 PGUID 14 f t t t 1 f 20 "20" 100 0 0 100 "select $1" - )); DESCR("convert int8 to int8 (no-op)"); /* SEQUENCEs nextval & currval functions */ -DATA(insert OID = 1574 ( nextval PGUID 12 f t f t 1 f 20 "25" 100 0 0 100 nextval - )); +DATA(insert OID = 1574 ( nextval 10 PGUID 12 f t f t 1 f 20 "25" 100 0 0 100 nextval - )); DESCR("sequence next value"); -DATA(insert OID = 1575 ( currval PGUID 12 f t f t 1 f 20 "25" 100 0 0 100 currval - )); +DATA(insert OID = 1575 ( currval 10 PGUID 12 f t f t 1 f 20 "25" 100 0 0 100 currval - )); DESCR("sequence current value"); -DATA(insert OID = 1576 ( setval PGUID 12 f t f t 2 f 20 "25 20" 100 0 0 100 setval - )); +DATA(insert OID = 1576 ( setval 10 PGUID 12 f t f t 2 f 20 "25 20" 100 0 0 100 setval - )); DESCR("set sequence value"); -DATA(insert OID = 1765 ( setval PGUID 12 f t f t 3 f 20 "25 20 16" 100 0 0 100 setval_and_iscalled - )); +DATA(insert OID = 1765 ( setval 10 PGUID 12 f t f t 3 f 20 "25 20 16" 100 0 0 100 setval_and_iscalled - )); DESCR("set sequence value and iscalled status"); -DATA(insert OID = 1579 ( varbit_in PGUID 12 f t t t 1 f 1562 "0" 100 0 0 100 varbit_in - )); +DATA(insert OID = 1579 ( varbit_in 10 PGUID 12 f t t t 1 f 1562 "0" 100 0 0 100 varbit_in - )); DESCR("(internal)"); -DATA(insert OID = 1580 ( varbit_out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 varbit_out - )); +DATA(insert OID = 1580 ( varbit_out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 varbit_out - )); DESCR("(internal)"); -DATA(insert OID = 1581 ( biteq PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100 biteq - )); +DATA(insert OID = 1581 ( biteq 10 PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100 biteq - )); DESCR("equal"); -DATA(insert OID = 1582 ( bitne PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100 bitne - )); +DATA(insert OID = 1582 ( bitne 10 PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100 bitne - )); DESCR("not equal"); -DATA(insert OID = 1592 ( bitge PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100 bitge - )); +DATA(insert OID = 1592 ( bitge 10 PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100 bitge - )); DESCR("greater than or equal"); -DATA(insert OID = 1593 ( bitgt PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100 bitgt - )); +DATA(insert OID = 1593 ( bitgt 10 PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100 bitgt - )); DESCR("greater than"); -DATA(insert OID = 1594 ( bitle PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100 bitle - )); +DATA(insert OID = 1594 ( bitle 10 PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100 bitle - )); DESCR("less than or equal"); -DATA(insert OID = 1595 ( bitlt PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100 bitlt - )); +DATA(insert OID = 1595 ( bitlt 10 PGUID 12 f t t t 2 f 16 "1560 1560" 100 0 0 100 bitlt - )); DESCR("less than"); -DATA(insert OID = 1596 ( bitcmp PGUID 12 f t t t 2 f 23 "1560 1560" 100 0 0 100 bitcmp - )); +DATA(insert OID = 1596 ( bitcmp 10 PGUID 12 f t t t 2 f 23 "1560 1560" 100 0 0 100 bitcmp - )); DESCR("compare"); -DATA(insert OID = 1598 ( random PGUID 12 f t f t 0 f 701 "0" 100 0 0 100 drandom - )); +DATA(insert OID = 1598 ( random 10 PGUID 12 f t f t 0 f 701 "0" 100 0 0 100 drandom - )); DESCR("random value"); -DATA(insert OID = 1599 ( setseed PGUID 12 f t f t 1 f 23 "701" 100 0 0 100 setseed - )); +DATA(insert OID = 1599 ( setseed 10 PGUID 12 f t f t 1 f 23 "701" 100 0 0 100 setseed - )); DESCR("set random seed"); /* OIDS 1600 - 1699 */ -DATA(insert OID = 1600 ( asin PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dasin - )); +DATA(insert OID = 1600 ( asin 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dasin - )); DESCR("arcsine"); -DATA(insert OID = 1601 ( acos PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dacos - )); +DATA(insert OID = 1601 ( acos 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dacos - )); DESCR("arccosine"); -DATA(insert OID = 1602 ( atan PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 datan - )); +DATA(insert OID = 1602 ( atan 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 datan - )); DESCR("arctangent"); -DATA(insert OID = 1603 ( atan2 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 datan2 - )); +DATA(insert OID = 1603 ( atan2 10 PGUID 12 f t t t 2 f 701 "701 701" 100 0 0 100 datan2 - )); DESCR("arctangent, two arguments"); -DATA(insert OID = 1604 ( sin PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dsin - )); +DATA(insert OID = 1604 ( sin 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dsin - )); DESCR("sine"); -DATA(insert OID = 1605 ( cos PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dcos - )); +DATA(insert OID = 1605 ( cos 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dcos - )); DESCR("cosine"); -DATA(insert OID = 1606 ( tan PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dtan - )); +DATA(insert OID = 1606 ( tan 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dtan - )); DESCR("tangent"); -DATA(insert OID = 1607 ( cot PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dcot - )); +DATA(insert OID = 1607 ( cot 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 dcot - )); DESCR("cotangent"); -DATA(insert OID = 1608 ( degrees PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 degrees - )); +DATA(insert OID = 1608 ( degrees 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 degrees - )); DESCR("radians to degrees"); -DATA(insert OID = 1609 ( radians PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 radians - )); +DATA(insert OID = 1609 ( radians 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 radians - )); DESCR("degrees to radians"); -DATA(insert OID = 1610 ( pi PGUID 12 f t t t 0 f 701 "0" 100 0 0 100 dpi - )); +DATA(insert OID = 1610 ( pi 10 PGUID 12 f t t t 0 f 701 "0" 100 0 0 100 dpi - )); DESCR("PI"); -DATA(insert OID = 1618 ( interval_mul PGUID 12 f t t t 2 f 1186 "1186 701" 100 0 0 100 interval_mul - )); +DATA(insert OID = 1618 ( interval_mul 10 PGUID 12 f t t t 2 f 1186 "1186 701" 100 0 0 100 interval_mul - )); DESCR("multiply interval"); -DATA(insert OID = 1619 ( varchar PGUID 12 f t t t 1 f 1043 "23" 100 0 0 100 int4_text - )); +DATA(insert OID = 1619 ( varchar 10 PGUID 12 f t t t 1 f 1043 "23" 100 0 0 100 int4_text - )); DESCR("convert int4 to varchar"); -DATA(insert OID = 1620 ( ascii PGUID 12 f t t t 1 f 23 "25" 100 0 0 100 ascii - )); +DATA(insert OID = 1620 ( ascii 10 PGUID 12 f t t t 1 f 23 "25" 100 0 0 100 ascii - )); DESCR("convert first char to int4"); -DATA(insert OID = 1621 ( chr PGUID 12 f t t t 1 f 25 "23" 100 0 0 100 chr - )); +DATA(insert OID = 1621 ( chr 10 PGUID 12 f t t t 1 f 25 "23" 100 0 0 100 chr - )); DESCR("convert int4 to char"); -DATA(insert OID = 1622 ( repeat PGUID 12 f t t t 2 f 25 "25 23" 100 0 0 100 repeat - )); +DATA(insert OID = 1622 ( repeat 10 PGUID 12 f t t t 2 f 25 "25 23" 100 0 0 100 repeat - )); DESCR("replicate string int4 times"); -DATA(insert OID = 1623 ( varchar PGUID 12 f t t t 1 f 1043 "20" 100 0 0 100 int8_text - )); +DATA(insert OID = 1623 ( varchar 10 PGUID 12 f t t t 1 f 1043 "20" 100 0 0 100 int8_text - )); DESCR("convert int8 to varchar"); -DATA(insert OID = 1624 ( mul_d_interval PGUID 12 f t t t 2 f 1186 "701 1186" 100 0 0 100 mul_d_interval - )); +DATA(insert OID = 1624 ( mul_d_interval 10 PGUID 12 f t t t 2 f 1186 "701 1186" 100 0 0 100 mul_d_interval - )); -DATA(insert OID = 1633 ( texticlike PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 texticlike - )); +DATA(insert OID = 1633 ( texticlike 10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 texticlike - )); DESCR("matches LIKE expression, case-insensitive"); -DATA(insert OID = 1634 ( texticnlike PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 texticnlike - )); +DATA(insert OID = 1634 ( texticnlike 10 PGUID 12 f t t t 2 f 16 "25 25" 100 0 0 100 texticnlike - )); DESCR("does not match LIKE expression, case-insensitive"); -DATA(insert OID = 1635 ( nameiclike PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 nameiclike - )); +DATA(insert OID = 1635 ( nameiclike 10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 nameiclike - )); DESCR("matches LIKE expression, case-insensitive"); -DATA(insert OID = 1636 ( nameicnlike PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 nameicnlike - )); +DATA(insert OID = 1636 ( nameicnlike 10 PGUID 12 f t t t 2 f 16 "19 25" 100 0 0 100 nameicnlike - )); DESCR("does not match LIKE expression, case-insensitive"); -DATA(insert OID = 1637 ( like_escape PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100 like_escape - )); +DATA(insert OID = 1637 ( like_escape 10 PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100 like_escape - )); DESCR("convert match pattern to use backslash escapes"); -DATA(insert OID = 1689 ( update_pg_pwd PGUID 12 f t f t 0 f 0 "" 100 0 0 100 update_pg_pwd - )); +DATA(insert OID = 1689 ( update_pg_pwd 10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100 update_pg_pwd - )); DESCR("update pg_pwd file"); /* Oracle Compatibility Related Functions - By Edmund Mergl <E.Mergl@bawue.de> */ -DATA(insert OID = 868 ( strpos PGUID 12 f t t t 2 f 23 "25 25" 100 0 0 100 textpos - )); +DATA(insert OID = 868 ( strpos 10 PGUID 12 f t t t 2 f 23 "25 25" 100 0 0 100 textpos - )); DESCR("find position of substring"); -DATA(insert OID = 870 ( lower PGUID 12 f t t t 1 f 25 "25" 100 0 0 100 lower - )); +DATA(insert OID = 870 ( lower 10 PGUID 12 f t t t 1 f 25 "25" 100 0 0 100 lower - )); DESCR("lowercase"); -DATA(insert OID = 871 ( upper PGUID 12 f t t t 1 f 25 "25" 100 0 0 100 upper - )); +DATA(insert OID = 871 ( upper 10 PGUID 12 f t t t 1 f 25 "25" 100 0 0 100 upper - )); DESCR("uppercase"); -DATA(insert OID = 872 ( initcap PGUID 12 f t t t 1 f 25 "25" 100 0 0 100 initcap - )); +DATA(insert OID = 872 ( initcap 10 PGUID 12 f t t t 1 f 25 "25" 100 0 0 100 initcap - )); DESCR("capitalize each word"); -DATA(insert OID = 873 ( lpad PGUID 12 f t t t 3 f 25 "25 23 25" 100 0 0 100 lpad - )); +DATA(insert OID = 873 ( lpad 10 PGUID 12 f t t t 3 f 25 "25 23 25" 100 0 0 100 lpad - )); DESCR("left-pad string to length"); -DATA(insert OID = 874 ( rpad PGUID 12 f t t t 3 f 25 "25 23 25" 100 0 0 100 rpad - )); +DATA(insert OID = 874 ( rpad 10 PGUID 12 f t t t 3 f 25 "25 23 25" 100 0 0 100 rpad - )); DESCR("right-pad string to length"); -DATA(insert OID = 875 ( ltrim PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100 ltrim - )); +DATA(insert OID = 875 ( ltrim 10 PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100 ltrim - )); DESCR("left-pad string to length"); -DATA(insert OID = 876 ( rtrim PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100 rtrim - )); +DATA(insert OID = 876 ( rtrim 10 PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100 rtrim - )); DESCR("right-pad string to length"); -DATA(insert OID = 877 ( substr PGUID 12 f t t t 3 f 25 "25 23 23" 100 0 0 100 text_substr - )); +DATA(insert OID = 877 ( substr 10 PGUID 12 f t t t 3 f 25 "25 23 23" 100 0 0 100 text_substr - )); DESCR("return portion of string"); -DATA(insert OID = 878 ( translate PGUID 12 f t t t 3 f 25 "25 25 25" 100 0 0 100 translate - )); +DATA(insert OID = 878 ( translate 10 PGUID 12 f t t t 3 f 25 "25 25 25" 100 0 0 100 translate - )); DESCR("map a set of character appearing in string"); -DATA(insert OID = 879 ( lpad PGUID 14 f t t t 2 f 25 "25 23" 100 0 0 100 "select lpad($1, $2, \' \')" - )); +DATA(insert OID = 879 ( lpad 10 PGUID 14 f t t t 2 f 25 "25 23" 100 0 0 100 "select lpad($1, $2, \' \')" -)); DESCR("left-pad string to length"); -DATA(insert OID = 880 ( rpad PGUID 14 f t t t 2 f 25 "25 23" 100 0 0 100 "select rpad($1, $2, \' \')" - )); +DATA(insert OID = 880 ( rpad 10 PGUID 14 f t t t 2 f 25 "25 23" 100 0 0 100 "select rpad($1, $2, \' \')" -)); DESCR("right-pad string to length"); -DATA(insert OID = 881 ( ltrim PGUID 14 f t t t 1 f 25 "25" 100 0 0 100 "select ltrim($1, \' \')" - )); +DATA(insert OID = 881 ( ltrim 10 PGUID 14 f t t t 1 f 25 "25" 100 0 0 100 "select ltrim($1, \' \')" - )); DESCR("remove initial characters from string"); -DATA(insert OID = 882 ( rtrim PGUID 14 f t t t 1 f 25 "25" 100 0 0 100 "select rtrim($1, \' \')" - )); +DATA(insert OID = 882 ( rtrim 10 PGUID 14 f t t t 1 f 25 "25" 100 0 0 100 "select rtrim($1, \' \')" - )); DESCR("remove trailing characters from string"); -DATA(insert OID = 883 ( substr PGUID 14 f t t t 2 f 25 "25 23" 100 0 0 100 "select substr($1, $2, -1)" - )); +DATA(insert OID = 883 ( substr 10 PGUID 14 f t t t 2 f 25 "25 23" 100 0 0 100 "select substr($1, $2, -1)" - )); DESCR("return portion of string"); -DATA(insert OID = 884 ( btrim PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100 btrim - )); +DATA(insert OID = 884 ( btrim 10 PGUID 12 f t t t 2 f 25 "25 25" 100 0 0 100 btrim - )); DESCR("trim both ends of string"); -DATA(insert OID = 885 ( btrim PGUID 14 f t t t 1 f 25 "25" 100 0 0 100 "select btrim($1, \' \')" - )); +DATA(insert OID = 885 ( btrim 10 PGUID 14 f t t t 1 f 25 "25" 100 0 0 100 "select btrim($1, \' \')" - )); DESCR("trim both ends of string"); -DATA(insert OID = 936 ( substring PGUID 12 f t t t 3 f 25 "25 23 23" 100 0 0 100 text_substr - )); +DATA(insert OID = 936 ( substring 10 PGUID 12 f t t t 3 f 25 "25 23 23" 100 0 0 100 text_substr - )); DESCR("return portion of string"); -DATA(insert OID = 937 ( substring PGUID 14 f t t t 2 f 25 "25 23" 100 0 0 100 "select substring($1, $2, -1)" - )); +DATA(insert OID = 937 ( substring 10 PGUID 14 f t t t 2 f 25 "25 23" 100 0 0 100 "select substring($1, $2, -1)" -)); DESCR("return portion of string"); /* for multi-byte support */ /* return database encoding name */ -DATA(insert OID = 1039 ( getdatabaseencoding PGUID 12 f t f t 0 f 19 "0" 100 0 0 100 getdatabaseencoding - )); +DATA(insert OID = 1039 ( getdatabaseencoding 10 PGUID 12 f t f t 0 f 19 "0" 100 0 0 100 getdatabaseencoding - )); DESCR("encoding name of current database"); /* return client encoding name i.e. session encoding */ -DATA(insert OID = 810 ( pg_client_encoding PGUID 12 f t f t 0 f 19 "0" 100 0 0 100 pg_client_encoding - )); +DATA(insert OID = 810 ( pg_client_encoding 10 PGUID 12 f t f t 0 f 19 "0" 100 0 0 100 pg_client_encoding - )); DESCR("encoding name of current database"); -DATA(insert OID = 1717 ( convert PGUID 12 f t f t 2 f 25 "25 19" 100 0 0 100 pg_convert - )); +DATA(insert OID = 1717 ( convert 10 PGUID 12 f t f t 2 f 25 "25 19" 100 0 0 100 pg_convert - )); DESCR("convert string with specified destination encoding name"); -DATA(insert OID = 1813 ( convert PGUID 12 f t f t 3 f 25 "25 19 19" 100 0 0 100 pg_convert2 - )); +DATA(insert OID = 1813 ( convert 10 PGUID 12 f t f t 3 f 25 "25 19 19" 100 0 0 100 pg_convert2 - )); DESCR("convert string with specified encoding names"); -DATA(insert OID = 1264 ( pg_char_to_encoding PGUID 12 f t f t 1 f 23 "19" 100 0 0 100 PG_char_to_encoding - )); +DATA(insert OID = 1264 ( pg_char_to_encoding 10 PGUID 12 f t f t 1 f 23 "19" 100 0 0 100 PG_char_to_encoding - )); DESCR("convert encoding name to encoding id"); -DATA(insert OID = 1597 ( pg_encoding_to_char PGUID 12 f t f t 1 f 19 "23" 100 0 0 100 PG_encoding_to_char - )); +DATA(insert OID = 1597 ( pg_encoding_to_char 10 PGUID 12 f t f t 1 f 19 "23" 100 0 0 100 PG_encoding_to_char - )); DESCR("convert encoding id to encoding name"); -DATA(insert OID = 1638 ( oidgt PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100 oidgt - )); +DATA(insert OID = 1638 ( oidgt 10 PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100 oidgt - )); DESCR("greater-than"); -DATA(insert OID = 1639 ( oidge PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100 oidge - )); +DATA(insert OID = 1639 ( oidge 10 PGUID 12 f t t t 2 f 16 "26 26" 100 0 0 100 oidge - )); DESCR("greater-than-or-equal"); /* System-view support functions */ -DATA(insert OID = 1640 ( pg_get_ruledef PGUID 12 f t f t 1 f 25 "19" 100 0 0 100 pg_get_ruledef - )); +DATA(insert OID = 1640 ( pg_get_ruledef 10 PGUID 12 f t f t 1 f 25 "19" 100 0 0 100 pg_get_ruledef - )); DESCR("source text of a rule"); -DATA(insert OID = 1641 ( pg_get_viewdef PGUID 12 f t f t 1 f 25 "19" 100 0 0 100 pg_get_viewdef - )); +DATA(insert OID = 1641 ( pg_get_viewdef 10 PGUID 12 f t f t 1 f 25 "19" 100 0 0 100 pg_get_viewdef - )); DESCR("select statement of a view"); -DATA(insert OID = 1642 ( pg_get_userbyid PGUID 12 f t f t 1 f 19 "23" 100 0 0 100 pg_get_userbyid - )); +DATA(insert OID = 1642 ( pg_get_userbyid 10 PGUID 12 f t f t 1 f 19 "23" 100 0 0 100 pg_get_userbyid - )); DESCR("user name by UID (with fallback)"); -DATA(insert OID = 1643 ( pg_get_indexdef PGUID 12 f t f t 1 f 25 "26" 100 0 0 100 pg_get_indexdef - )); +DATA(insert OID = 1643 ( pg_get_indexdef 10 PGUID 12 f t f t 1 f 25 "26" 100 0 0 100 pg_get_indexdef - )); DESCR("index description"); -DATA(insert OID = 1716 ( pg_get_expr PGUID 12 f t f t 2 f 25 "25 26" 100 0 0 100 pg_get_expr - )); +DATA(insert OID = 1716 ( pg_get_expr 10 PGUID 12 f t f t 2 f 25 "25 26" 100 0 0 100 pg_get_expr - )); DESCR("deparse an encoded expression"); /* Generic referential integrity constraint triggers */ -DATA(insert OID = 1644 ( RI_FKey_check_ins PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_check_ins - )); +DATA(insert OID = 1644 ( RI_FKey_check_ins 10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_check_ins - )); DESCR("referential integrity FOREIGN KEY ... REFERENCES"); -DATA(insert OID = 1645 ( RI_FKey_check_upd PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_check_upd - )); +DATA(insert OID = 1645 ( RI_FKey_check_upd 10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_check_upd - )); DESCR("referential integrity FOREIGN KEY ... REFERENCES"); -DATA(insert OID = 1646 ( RI_FKey_cascade_del PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_cascade_del - )); +DATA(insert OID = 1646 ( RI_FKey_cascade_del 10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_cascade_del - )); DESCR("referential integrity ON DELETE CASCADE"); -DATA(insert OID = 1647 ( RI_FKey_cascade_upd PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_cascade_upd - )); +DATA(insert OID = 1647 ( RI_FKey_cascade_upd 10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_cascade_upd - )); DESCR("referential integrity ON UPDATE CASCADE"); -DATA(insert OID = 1648 ( RI_FKey_restrict_del PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_restrict_del - )); +DATA(insert OID = 1648 ( RI_FKey_restrict_del 10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_restrict_del - )); DESCR("referential integrity ON DELETE RESTRICT"); -DATA(insert OID = 1649 ( RI_FKey_restrict_upd PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_restrict_upd - )); +DATA(insert OID = 1649 ( RI_FKey_restrict_upd 10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_restrict_upd - )); DESCR("referential integrity ON UPDATE RESTRICT"); -DATA(insert OID = 1650 ( RI_FKey_setnull_del PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_setnull_del - )); +DATA(insert OID = 1650 ( RI_FKey_setnull_del 10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_setnull_del - )); DESCR("referential integrity ON DELETE SET NULL"); -DATA(insert OID = 1651 ( RI_FKey_setnull_upd PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_setnull_upd - )); +DATA(insert OID = 1651 ( RI_FKey_setnull_upd 10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_setnull_upd - )); DESCR("referential integrity ON UPDATE SET NULL"); -DATA(insert OID = 1652 ( RI_FKey_setdefault_del PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_setdefault_del - )); +DATA(insert OID = 1652 ( RI_FKey_setdefault_del 10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_setdefault_del - )); DESCR("referential integrity ON DELETE SET DEFAULT"); -DATA(insert OID = 1653 ( RI_FKey_setdefault_upd PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_setdefault_upd - )); +DATA(insert OID = 1653 ( RI_FKey_setdefault_upd 10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_setdefault_upd - )); DESCR("referential integrity ON UPDATE SET DEFAULT"); -DATA(insert OID = 1654 ( RI_FKey_noaction_del PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_noaction_del - )); +DATA(insert OID = 1654 ( RI_FKey_noaction_del 10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_noaction_del - )); DESCR("referential integrity ON DELETE NO ACTION"); -DATA(insert OID = 1655 ( RI_FKey_noaction_upd PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_noaction_upd - )); +DATA(insert OID = 1655 ( RI_FKey_noaction_upd 10 PGUID 12 f t f t 0 f 0 "" 100 0 0 100 RI_FKey_noaction_upd - )); DESCR("referential integrity ON UPDATE NO ACTION"); -DATA(insert OID = 1666 ( varbiteq PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100 biteq - )); +DATA(insert OID = 1666 ( varbiteq 10 PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100 biteq - )); DESCR("equal"); -DATA(insert OID = 1667 ( varbitne PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100 bitne - )); +DATA(insert OID = 1667 ( varbitne 10 PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100 bitne - )); DESCR("not equal"); -DATA(insert OID = 1668 ( varbitge PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100 bitge - )); +DATA(insert OID = 1668 ( varbitge 10 PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100 bitge - )); DESCR("greater than or equal"); -DATA(insert OID = 1669 ( varbitgt PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100 bitgt - )); +DATA(insert OID = 1669 ( varbitgt 10 PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100 bitgt - )); DESCR("greater than"); -DATA(insert OID = 1670 ( varbitle PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100 bitle - )); +DATA(insert OID = 1670 ( varbitle 10 PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100 bitle - )); DESCR("less than or equal"); -DATA(insert OID = 1671 ( varbitlt PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100 bitlt - )); +DATA(insert OID = 1671 ( varbitlt 10 PGUID 12 f t t t 2 f 16 "1562 1562" 100 0 0 100 bitlt - )); DESCR("less than"); -DATA(insert OID = 1672 ( varbitcmp PGUID 12 f t t t 2 f 23 "1562 1562" 100 0 0 100 bitcmp - )); +DATA(insert OID = 1672 ( varbitcmp 10 PGUID 12 f t t t 2 f 23 "1562 1562" 100 0 0 100 bitcmp - )); DESCR("compare"); -DATA(insert OID = 1673 ( bitand PGUID 12 f t t t 2 f 1560 "1560 1560" 100 0 0 100 bitand - )); +DATA(insert OID = 1673 ( bitand 10 PGUID 12 f t t t 2 f 1560 "1560 1560" 100 0 0 100 bitand - )); DESCR("bitwise and"); -DATA(insert OID = 1674 ( bitor PGUID 12 f t t t 2 f 1560 "1560 1560" 100 0 0 100 bitor - )); +DATA(insert OID = 1674 ( bitor 10 PGUID 12 f t t t 2 f 1560 "1560 1560" 100 0 0 100 bitor - )); DESCR("bitwise or"); -DATA(insert OID = 1675 ( bitxor PGUID 12 f t t t 2 f 1560 "1560 1560" 100 0 0 100 bitxor - )); +DATA(insert OID = 1675 ( bitxor 10 PGUID 12 f t t t 2 f 1560 "1560 1560" 100 0 0 100 bitxor - )); DESCR("bitwise exclusive or"); -DATA(insert OID = 1676 ( bitnot PGUID 12 f t t t 1 f 1560 "1560" 100 0 0 100 bitnot - )); +DATA(insert OID = 1676 ( bitnot 10 PGUID 12 f t t t 1 f 1560 "1560" 100 0 0 100 bitnot - )); DESCR("bitwise negation"); -DATA(insert OID = 1677 ( bitshiftleft PGUID 12 f t t t 2 f 1560 "1560 23" 100 0 0 100 bitshiftleft - )); +DATA(insert OID = 1677 ( bitshiftleft 10 PGUID 12 f t t t 2 f 1560 "1560 23" 100 0 0 100 bitshiftleft - )); DESCR("bitwise left shift"); -DATA(insert OID = 1678 ( bitshiftright PGUID 12 f t t t 2 f 1560 "1560 23" 100 0 0 100 bitshiftright - )); +DATA(insert OID = 1678 ( bitshiftright 10 PGUID 12 f t t t 2 f 1560 "1560 23" 100 0 0 100 bitshiftright - )); DESCR("bitwise right shift"); -DATA(insert OID = 1679 ( bitcat PGUID 12 f t t t 2 f 1560 "1560 1560" 100 0 0 100 bitcat - )); +DATA(insert OID = 1679 ( bitcat 10 PGUID 12 f t t t 2 f 1560 "1560 1560" 100 0 0 100 bitcat - )); DESCR("bitwise concatenation"); -DATA(insert OID = 1680 ( substring PGUID 12 f t t t 3 f 1560 "1560 23 23" 100 0 0 100 bitsubstr - )); +DATA(insert OID = 1680 ( substring 10 PGUID 12 f t t t 3 f 1560 "1560 23 23" 100 0 0 100 bitsubstr - )); DESCR("return portion of bitstring"); -DATA(insert OID = 1681 ( length PGUID 12 f t t t 1 f 23 "1560" 100 0 0 100 bitlength - )); +DATA(insert OID = 1681 ( length 10 PGUID 12 f t t t 1 f 23 "1560" 100 0 0 100 bitlength - )); DESCR("bitstring length"); -DATA(insert OID = 1682 ( octet_length PGUID 12 f t t t 1 f 23 "1560" 100 0 0 100 bitoctetlength - )); +DATA(insert OID = 1682 ( octet_length 10 PGUID 12 f t t t 1 f 23 "1560" 100 0 0 100 bitoctetlength - )); DESCR("octet length"); -DATA(insert OID = 1683 ( bitfromint4 PGUID 12 f t t t 1 f 1560 "23" 100 0 0 100 bitfromint4 - )); +DATA(insert OID = 1683 ( bitfromint4 10 PGUID 12 f t t t 1 f 1560 "23" 100 0 0 100 bitfromint4 - )); DESCR("int4 to bitstring"); -DATA(insert OID = 1684 ( bittoint4 PGUID 12 f t t t 1 f 23 "1560" 100 0 0 100 bittoint4 - )); +DATA(insert OID = 1684 ( bittoint4 10 PGUID 12 f t t t 1 f 23 "1560" 100 0 0 100 bittoint4 - )); DESCR("bitstring to int4"); -DATA(insert OID = 1685 ( bit PGUID 12 f t t t 2 f 1560 "1560 23" 100 0 0 100 bit - )); +DATA(insert OID = 1685 ( bit 10 PGUID 12 f t t t 2 f 1560 "1560 23" 100 0 0 100 bit - )); DESCR("adjust bit() to typmod length"); -DATA(insert OID = 1686 ( _bit PGUID 12 f t t t 2 f 1561 "1561 23" 100 0 0 100 _bit - )); +DATA(insert OID = 1686 ( _bit 10 PGUID 12 f t t t 2 f 1561 "1561 23" 100 0 0 100 _bit - )); DESCR("adjust bit()[] to typmod length"); -DATA(insert OID = 1687 ( varbit PGUID 12 f t t t 2 f 1562 "1562 23" 100 0 0 100 varbit - )); +DATA(insert OID = 1687 ( varbit 10 PGUID 12 f t t t 2 f 1562 "1562 23" 100 0 0 100 varbit - )); DESCR("adjust varbit() to typmod length"); -DATA(insert OID = 1688 ( _varbit PGUID 12 f t t t 2 f 1563 "1563 23" 100 0 0 100 _varbit - )); +DATA(insert OID = 1688 ( _varbit 10 PGUID 12 f t t t 2 f 1563 "1563 23" 100 0 0 100 _varbit - )); DESCR("adjust varbit()[] to typmod length"); -DATA(insert OID = 1698 ( position PGUID 12 f t t t 2 f 23 "1560 1560" 100 0 0 100 bitposition - )); +DATA(insert OID = 1698 ( position 10 PGUID 12 f t t t 2 f 23 "1560 1560" 100 0 0 100 bitposition - )); DESCR("return position of sub-bitstring"); -DATA(insert OID = 1699 ( substring PGUID 14 f t t t 2 f 1560 "1560 23" 100 0 0 100 "select substring($1, $2,-1)" - )); +DATA(insert OID = 1699 ( substring 10 PGUID 14 f t t t 2 f 1560 "1560 23" 100 0 0 100 "select substring($1,$2, -1)" - )); DESCR("return portion of bitstring"); /* for mac type support */ -DATA(insert OID = 436 ( macaddr_in PGUID 12 f t t t 1 f 829 "0" 100 0 0 100 macaddr_in - )); +DATA(insert OID = 436 ( macaddr_in 10 PGUID 12 f t t t 1 f 829 "0" 100 0 0 100 macaddr_in - )); DESCR("(internal)"); -DATA(insert OID = 437 ( macaddr_out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 macaddr_out - )); +DATA(insert OID = 437 ( macaddr_out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 macaddr_out - )); DESCR("(internal)"); -DATA(insert OID = 752 ( text PGUID 12 f t t t 1 f 25 "829" 100 0 0 100 macaddr_text - )); +DATA(insert OID = 752 ( text 10 PGUID 12 f t t t 1 f 25 "829" 100 0 0 100 macaddr_text - )); DESCR("MAC address to text"); -DATA(insert OID = 753 ( trunc PGUID 12 f t t t 1 f 829 "829" 100 0 0 100 macaddr_trunc - )); +DATA(insert OID = 753 ( trunc 10 PGUID 12 f t t t 1 f 829 "829" 100 0 0 100 macaddr_trunc - )); DESCR("MAC manufacturer fields"); -DATA(insert OID = 767 ( macaddr PGUID 12 f t t t 1 f 829 "25" 100 0 0 100 text_macaddr - )); +DATA(insert OID = 767 ( macaddr 10 PGUID 12 f t t t 1 f 829 "25" 100 0 0 100 text_macaddr - )); DESCR("text to MAC address"); -DATA(insert OID = 830 ( macaddr_eq PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100 macaddr_eq - )); +DATA(insert OID = 830 ( macaddr_eq 10 PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100 macaddr_eq - )); DESCR("equal"); -DATA(insert OID = 831 ( macaddr_lt PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100 macaddr_lt - )); +DATA(insert OID = 831 ( macaddr_lt 10 PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100 macaddr_lt - )); DESCR("less-than"); -DATA(insert OID = 832 ( macaddr_le PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100 macaddr_le - )); +DATA(insert OID = 832 ( macaddr_le 10 PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100 macaddr_le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 833 ( macaddr_gt PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100 macaddr_gt - )); +DATA(insert OID = 833 ( macaddr_gt 10 PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100 macaddr_gt - )); DESCR("greater-than"); -DATA(insert OID = 834 ( macaddr_ge PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100 macaddr_ge - )); +DATA(insert OID = 834 ( macaddr_ge 10 PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100 macaddr_ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 835 ( macaddr_ne PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100 macaddr_ne - )); +DATA(insert OID = 835 ( macaddr_ne 10 PGUID 12 f t t t 2 f 16 "829 829" 100 0 0 100 macaddr_ne - )); DESCR("not equal"); -DATA(insert OID = 836 ( macaddr_cmp PGUID 12 f t t t 2 f 23 "829 829" 100 0 0 100 macaddr_cmp - )); +DATA(insert OID = 836 ( macaddr_cmp 10 PGUID 12 f t t t 2 f 23 "829 829" 100 0 0 100 macaddr_cmp - )); DESCR("less-equal-greater"); /* for inet type support */ -DATA(insert OID = 910 ( inet_in PGUID 12 f t t t 1 f 869 "0" 100 0 0 100 inet_in - )); +DATA(insert OID = 910 ( inet_in 10 PGUID 12 f t t t 1 f 869 "0" 100 0 0 100 inet_in - )); DESCR("(internal)"); -DATA(insert OID = 911 ( inet_out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 inet_out - )); +DATA(insert OID = 911 ( inet_out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 inet_out - )); DESCR("(internal)"); /* for cidr type support */ -DATA(insert OID = 1267 ( cidr_in PGUID 12 f t t t 1 f 650 "0" 100 0 0 100 cidr_in - )); +DATA(insert OID = 1267 ( cidr_in 10 PGUID 12 f t t t 1 f 650 "0" 100 0 0 100 cidr_in - )); DESCR("(internal)"); -DATA(insert OID = 1427 ( cidr_out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 cidr_out - )); +DATA(insert OID = 1427 ( cidr_out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 cidr_out - )); DESCR("(internal)"); /* these are used for both inet and cidr */ -DATA(insert OID = 920 ( network_eq PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_eq - )); +DATA(insert OID = 920 ( network_eq 10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_eq - )); DESCR("equal"); -DATA(insert OID = 921 ( network_lt PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_lt - )); +DATA(insert OID = 921 ( network_lt 10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_lt - )); DESCR("less-than"); -DATA(insert OID = 922 ( network_le PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_le - )); +DATA(insert OID = 922 ( network_le 10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 923 ( network_gt PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_gt - )); +DATA(insert OID = 923 ( network_gt 10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_gt - )); DESCR("greater-than"); -DATA(insert OID = 924 ( network_ge PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_ge - )); +DATA(insert OID = 924 ( network_ge 10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 925 ( network_ne PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_ne - )); +DATA(insert OID = 925 ( network_ne 10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_ne - )); DESCR("not equal"); -DATA(insert OID = 926 ( network_cmp PGUID 12 f t t t 2 f 23 "869 869" 100 0 0 100 network_cmp - )); +DATA(insert OID = 926 ( network_cmp 10 PGUID 12 f t t t 2 f 23 "869 869" 100 0 0 100 network_cmp - )); DESCR("less-equal-greater"); -DATA(insert OID = 927 ( network_sub PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_sub - )); +DATA(insert OID = 927 ( network_sub 10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_sub - )); DESCR("is-subnet"); -DATA(insert OID = 928 ( network_subeq PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_subeq - )); +DATA(insert OID = 928 ( network_subeq 10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_subeq - )); DESCR("is-subnet-or-equal"); -DATA(insert OID = 929 ( network_sup PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_sup - )); +DATA(insert OID = 929 ( network_sup 10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_sup - )); DESCR("is-supernet"); -DATA(insert OID = 930 ( network_supeq PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_supeq - )); +DATA(insert OID = 930 ( network_supeq 10 PGUID 12 f t t t 2 f 16 "869 869" 100 0 0 100 network_supeq - )); DESCR("is-supernet-or-equal"); /* inet/cidr functions */ -DATA(insert OID = 605 ( abbrev PGUID 12 f t t t 1 f 25 "869" 100 0 0 100 network_abbrev - )); +DATA(insert OID = 605 ( abbrev 10 PGUID 12 f t t t 1 f 25 "869" 100 0 0 100 network_abbrev - )); DESCR("abbreviated display of inet/cidr value"); -DATA(insert OID = 683 ( network PGUID 12 f t t t 1 f 650 "869" 100 0 0 100 network_network - )); +DATA(insert OID = 683 ( network 10 PGUID 12 f t t t 1 f 650 "869" 100 0 0 100 network_network - )); DESCR("network part of address"); -DATA(insert OID = 696 ( netmask PGUID 12 f t t t 1 f 869 "869" 100 0 0 100 network_netmask - )); +DATA(insert OID = 696 ( netmask 10 PGUID 12 f t t t 1 f 869 "869" 100 0 0 100 network_netmask - )); DESCR("netmask of address"); -DATA(insert OID = 697 ( masklen PGUID 12 f t t t 1 f 23 "869" 100 0 0 100 network_masklen - )); +DATA(insert OID = 697 ( masklen 10 PGUID 12 f t t t 1 f 23 "869" 100 0 0 100 network_masklen - )); DESCR("netmask length"); -DATA(insert OID = 698 ( broadcast PGUID 12 f t t t 1 f 869 "869" 100 0 0 100 network_broadcast - )); +DATA(insert OID = 698 ( broadcast 10 PGUID 12 f t t t 1 f 869 "869" 100 0 0 100 network_broadcast - )); DESCR("broadcast address of network"); -DATA(insert OID = 699 ( host PGUID 12 f t t t 1 f 25 "869" 100 0 0 100 network_host - )); +DATA(insert OID = 699 ( host 10 PGUID 12 f t t t 1 f 25 "869" 100 0 0 100 network_host - )); DESCR("show address octets only"); -DATA(insert OID = 730 ( text PGUID 12 f t t t 1 f 25 "869" 100 0 0 100 network_show - )); +DATA(insert OID = 730 ( text 10 PGUID 12 f t t t 1 f 25 "869" 100 0 0 100 network_show - )); DESCR("show all parts of inet/cidr value"); -DATA(insert OID = 1713 ( inet PGUID 12 f t t t 1 f 869 "25" 100 0 0 100 text_inet - )); +DATA(insert OID = 1713 ( inet 10 PGUID 12 f t t t 1 f 869 "25" 100 0 0 100 text_inet - )); DESCR("text to inet"); -DATA(insert OID = 1714 ( cidr PGUID 12 f t t t 1 f 650 "25" 100 0 0 100 text_cidr - )); +DATA(insert OID = 1714 ( cidr 10 PGUID 12 f t t t 1 f 650 "25" 100 0 0 100 text_cidr - )); DESCR("text to cidr"); -DATA(insert OID = 1715 ( set_masklen PGUID 12 f t t t 2 f 869 "869 23" 100 0 0 100 inet_set_masklen - )); +DATA(insert OID = 1715 ( set_masklen 10 PGUID 12 f t t t 2 f 869 "869 23" 100 0 0 100 inet_set_masklen - )); DESCR("change the netmask of an inet"); -DATA(insert OID = 1690 ( time_mi_time PGUID 12 f t t t 2 f 1186 "1083 1083" 100 0 0 100 time_mi_time - )); +DATA(insert OID = 1690 ( time_mi_time 10 PGUID 12 f t t t 2 f 1186 "1083 1083" 100 0 0 100 time_mi_time - )); DESCR("minus"); -DATA(insert OID = 1691 ( boolle PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100 boolle - )); +DATA(insert OID = 1691 ( boolle 10 PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100 boolle - )); DESCR("less-than-or-equal"); -DATA(insert OID = 1692 ( boolge PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100 boolge - )); +DATA(insert OID = 1692 ( boolge 10 PGUID 12 f t t t 2 f 16 "16 16" 100 0 0 100 boolge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 1693 ( btboolcmp PGUID 12 f t t t 2 f 23 "16 16" 100 0 0 100 btboolcmp - )); +DATA(insert OID = 1693 ( btboolcmp 10 PGUID 12 f t t t 2 f 23 "16 16" 100 0 0 100 btboolcmp - )); DESCR("btree less-equal-greater"); -DATA(insert OID = 1696 ( timetz_hash PGUID 12 f t t t 1 f 23 "1266" 100 0 0 100 timetz_hash - )); +DATA(insert OID = 1696 ( timetz_hash 10 PGUID 12 f t t t 1 f 23 "1266" 100 0 0 100 timetz_hash - )); DESCR("hash"); -DATA(insert OID = 1697 ( interval_hash PGUID 12 f t t t 1 f 23 "1186" 100 0 0 100 interval_hash - )); +DATA(insert OID = 1697 ( interval_hash 10 PGUID 12 f t t t 1 f 23 "1186" 100 0 0 100 interval_hash - )); DESCR("hash"); /* OID's 1700 - 1799 NUMERIC data type */ -DATA(insert OID = 1701 ( numeric_in PGUID 12 f t t t 3 f 1700 "0 26 23" 100 0 0 100 numeric_in - )); +DATA(insert OID = 1701 ( numeric_in 10 PGUID 12 f t t t 3 f 1700 "0 26 23" 100 0 0 100 numeric_in - )); DESCR("(internal)"); -DATA(insert OID = 1702 ( numeric_out PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 numeric_out - )); +DATA(insert OID = 1702 ( numeric_out 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 numeric_out - )); DESCR("(internal)"); -DATA(insert OID = 1703 ( numeric PGUID 12 f t t t 2 f 1700 "1700 23" 100 0 0 100 numeric - )); +DATA(insert OID = 1703 ( numeric 10 PGUID 12 f t t t 2 f 1700 "1700 23" 100 0 0 100 numeric - )); DESCR("adjust numeric to typmod precision/scale"); -DATA(insert OID = 1704 ( numeric_abs PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_abs - )); +DATA(insert OID = 1704 ( numeric_abs 10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_abs - )); DESCR("absolute value"); -DATA(insert OID = 1705 ( abs PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_abs - )); +DATA(insert OID = 1705 ( abs 10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_abs - )); DESCR("absolute value"); -DATA(insert OID = 1706 ( sign PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_sign - )); +DATA(insert OID = 1706 ( sign 10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_sign - )); DESCR("sign of value"); -DATA(insert OID = 1707 ( round PGUID 12 f t t t 2 f 1700 "1700 23" 100 0 0 100 numeric_round - )); +DATA(insert OID = 1707 ( round 10 PGUID 12 f t t t 2 f 1700 "1700 23" 100 0 0 100 numeric_round - )); DESCR("value rounded to 'scale'"); -DATA(insert OID = 1708 ( round PGUID 14 f t t t 1 f 1700 "1700" 100 0 0 100 "select round($1,0)" - )); +DATA(insert OID = 1708 ( round 10 PGUID 14 f t t t 1 f 1700 "1700" 100 0 0 100 "select round($1,0)"- )); DESCR("value rounded to 'scale' of zero"); -DATA(insert OID = 1709 ( trunc PGUID 12 f t t t 2 f 1700 "1700 23" 100 0 0 100 numeric_trunc - )); +DATA(insert OID = 1709 ( trunc 10 PGUID 12 f t t t 2 f 1700 "1700 23" 100 0 0 100 numeric_trunc - )); DESCR("value truncated to 'scale'"); -DATA(insert OID = 1710 ( trunc PGUID 14 f t t t 1 f 1700 "1700" 100 0 0 100 "select trunc($1,0)" - )); +DATA(insert OID = 1710 ( trunc 10 PGUID 14 f t t t 1 f 1700 "1700" 100 0 0 100 "select trunc($1,0)"- )); DESCR("value truncated to 'scale' of zero"); -DATA(insert OID = 1711 ( ceil PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_ceil - )); +DATA(insert OID = 1711 ( ceil 10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_ceil - )); DESCR("smallest integer >= value"); -DATA(insert OID = 1712 ( floor PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_floor - )); +DATA(insert OID = 1712 ( floor 10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_floor - )); DESCR("largest integer <= value"); -DATA(insert OID = 1718 ( numeric_eq PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100 numeric_eq - )); +DATA(insert OID = 1718 ( numeric_eq 10 PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100 numeric_eq - )); DESCR("equal"); -DATA(insert OID = 1719 ( numeric_ne PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100 numeric_ne - )); +DATA(insert OID = 1719 ( numeric_ne 10 PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100 numeric_ne - )); DESCR("not equal"); -DATA(insert OID = 1720 ( numeric_gt PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100 numeric_gt - )); +DATA(insert OID = 1720 ( numeric_gt 10 PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100 numeric_gt - )); DESCR("greater-than"); -DATA(insert OID = 1721 ( numeric_ge PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100 numeric_ge - )); +DATA(insert OID = 1721 ( numeric_ge 10 PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100 numeric_ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 1722 ( numeric_lt PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100 numeric_lt - )); +DATA(insert OID = 1722 ( numeric_lt 10 PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100 numeric_lt - )); DESCR("less-than"); -DATA(insert OID = 1723 ( numeric_le PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100 numeric_le - )); +DATA(insert OID = 1723 ( numeric_le 10 PGUID 12 f t t t 2 f 16 "1700 1700" 100 0 0 100 numeric_le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 1724 ( numeric_add PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_add - )); +DATA(insert OID = 1724 ( numeric_add 10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_add - )); DESCR("add"); -DATA(insert OID = 1725 ( numeric_sub PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_sub - )); +DATA(insert OID = 1725 ( numeric_sub 10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_sub - )); DESCR("subtract"); -DATA(insert OID = 1726 ( numeric_mul PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_mul - )); +DATA(insert OID = 1726 ( numeric_mul 10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_mul - )); DESCR("multiply"); -DATA(insert OID = 1727 ( numeric_div PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_div - )); +DATA(insert OID = 1727 ( numeric_div 10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_div - )); DESCR("divide"); -DATA(insert OID = 1728 ( mod PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_mod - )); +DATA(insert OID = 1728 ( mod 10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_mod - )); DESCR("modulus"); -DATA(insert OID = 1729 ( numeric_mod PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_mod - )); +DATA(insert OID = 1729 ( numeric_mod 10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_mod - )); DESCR("modulus"); -DATA(insert OID = 1730 ( sqrt PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_sqrt - )); +DATA(insert OID = 1730 ( sqrt 10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_sqrt - )); DESCR("square root"); -DATA(insert OID = 1731 ( numeric_sqrt PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_sqrt - )); +DATA(insert OID = 1731 ( numeric_sqrt 10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_sqrt - )); DESCR("square root"); -DATA(insert OID = 1732 ( exp PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_exp - )); +DATA(insert OID = 1732 ( exp 10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_exp - )); DESCR("e raised to the power of n"); -DATA(insert OID = 1733 ( numeric_exp PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_exp - )); +DATA(insert OID = 1733 ( numeric_exp 10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_exp - )); DESCR("e raised to the power of n"); -DATA(insert OID = 1734 ( ln PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_ln - )); +DATA(insert OID = 1734 ( ln 10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_ln - )); DESCR("natural logarithm of n"); -DATA(insert OID = 1735 ( numeric_ln PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_ln - )); +DATA(insert OID = 1735 ( numeric_ln 10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_ln - )); DESCR("natural logarithm of n"); -DATA(insert OID = 1736 ( log PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_log - )); +DATA(insert OID = 1736 ( log 10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_log - )); DESCR("logarithm base m of n"); -DATA(insert OID = 1737 ( numeric_log PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_log - )); +DATA(insert OID = 1737 ( numeric_log 10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_log - )); DESCR("logarithm base m of n"); -DATA(insert OID = 1738 ( pow PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_power - )); +DATA(insert OID = 1738 ( pow 10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_power - )); DESCR("m raised to the power of n"); -DATA(insert OID = 1739 ( numeric_power PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_power - )); +DATA(insert OID = 1739 ( numeric_power 10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_power -)); DESCR("m raised to the power of n"); -DATA(insert OID = 1740 ( numeric PGUID 12 f t t t 1 f 1700 "23" 100 0 0 100 int4_numeric - )); +DATA(insert OID = 1740 ( numeric 10 PGUID 12 f t t t 1 f 1700 "23" 100 0 0 100 int4_numeric - )); DESCR("(internal)"); -DATA(insert OID = 1741 ( log PGUID 14 f t t t 1 f 1700 "1700" 100 0 0 100 "select log(10, $1)" - )); +DATA(insert OID = 1741 ( log 10 PGUID 14 f t t t 1 f 1700 "1700" 100 0 0 100 "select log(10, $1)" -)); DESCR("logarithm base 10 of n"); -DATA(insert OID = 1742 ( numeric PGUID 12 f t t t 1 f 1700 "700" 100 0 0 100 float4_numeric - )); +DATA(insert OID = 1742 ( numeric 10 PGUID 12 f t t t 1 f 1700 "700" 100 0 0 100 float4_numeric - )); DESCR("(internal)"); -DATA(insert OID = 1743 ( numeric PGUID 12 f t t t 1 f 1700 "701" 100 0 0 100 float8_numeric - )); +DATA(insert OID = 1743 ( numeric 10 PGUID 12 f t t t 1 f 1700 "701" 100 0 0 100 float8_numeric - )); DESCR("(internal)"); -DATA(insert OID = 1744 ( int4 PGUID 12 f t t t 1 f 23 "1700" 100 0 0 100 numeric_int4 - )); +DATA(insert OID = 1744 ( int4 10 PGUID 12 f t t t 1 f 23 "1700" 100 0 0 100 numeric_int4 - )); DESCR("(internal)"); -DATA(insert OID = 1745 ( float4 PGUID 12 f t t t 1 f 700 "1700" 100 0 0 100 numeric_float4 - )); +DATA(insert OID = 1745 ( float4 10 PGUID 12 f t t t 1 f 700 "1700" 100 0 0 100 numeric_float4 - )); DESCR("(internal)"); -DATA(insert OID = 1746 ( float8 PGUID 12 f t t t 1 f 701 "1700" 100 0 0 100 numeric_float8 - )); +DATA(insert OID = 1746 ( float8 10 PGUID 12 f t t t 1 f 701 "1700" 100 0 0 100 numeric_float8 - )); DESCR("(internal)"); -DATA(insert OID = 1747 ( time_pl_interval PGUID 12 f t t t 2 f 1083 "1083 1186" 100 0 0 100 time_pl_interval - )); +DATA(insert OID = 1747 ( time_pl_interval 10 PGUID 12 f t t t 2 f 1083 "1083 1186" 100 0 0 100 time_pl_interval- )); DESCR("plus"); -DATA(insert OID = 1748 ( time_mi_interval PGUID 12 f t t t 2 f 1083 "1083 1186" 100 0 0 100 time_mi_interval - )); +DATA(insert OID = 1748 ( time_mi_interval 10 PGUID 12 f t t t 2 f 1083 "1083 1186" 100 0 0 100 time_mi_interval- )); DESCR("minus"); -DATA(insert OID = 1749 ( timetz_pl_interval PGUID 12 f t t t 2 f 1266 "1266 1186" 100 0 0 100 timetz_pl_interval- )); +DATA(insert OID = 1749 ( timetz_pl_interval 10 PGUID 12 f t t t 2 f 1266 "1266 1186" 100 0 0 100 timetz_pl_interval- )); DESCR("plus"); -DATA(insert OID = 1750 ( timetz_mi_interval PGUID 12 f t t t 2 f 1266 "1266 1186" 100 0 0 100 timetz_mi_interval- )); +DATA(insert OID = 1750 ( timetz_mi_interval 10 PGUID 12 f t t t 2 f 1266 "1266 1186" 100 0 0 100 timetz_mi_interval- )); DESCR("minus"); -DATA(insert OID = 1764 ( numeric_inc PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_inc - )); +DATA(insert OID = 1764 ( numeric_inc 10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_inc - )); DESCR("increment by one"); -DATA(insert OID = 1766 ( numeric_smaller PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_smaller - )); +DATA(insert OID = 1766 ( numeric_smaller 10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_smaller -)); DESCR("smaller of two numbers"); -DATA(insert OID = 1767 ( numeric_larger PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_larger - )); +DATA(insert OID = 1767 ( numeric_larger 10 PGUID 12 f t t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_larger- )); DESCR("larger of two numbers"); -DATA(insert OID = 1769 ( numeric_cmp PGUID 12 f t t t 2 f 23 "1700 1700" 100 0 0 100 numeric_cmp - )); +DATA(insert OID = 1769 ( numeric_cmp 10 PGUID 12 f t t t 2 f 23 "1700 1700" 100 0 0 100 numeric_cmp - )); DESCR("compare two numbers"); -DATA(insert OID = 1771 ( numeric_uminus PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_uminus - )); +DATA(insert OID = 1771 ( numeric_uminus 10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_uminus - )); DESCR("negate"); -DATA(insert OID = 1779 ( int8 PGUID 12 f t t t 1 f 20 "1700" 100 0 0 100 numeric_int8 - )); +DATA(insert OID = 1779 ( int8 10 PGUID 12 f t t t 1 f 20 "1700" 100 0 0 100 numeric_int8 - )); DESCR("(internal)"); -DATA(insert OID = 1781 ( numeric PGUID 12 f t t t 1 f 1700 "20" 100 0 0 100 int8_numeric - )); +DATA(insert OID = 1781 ( numeric 10 PGUID 12 f t t t 1 f 1700 "20" 100 0 0 100 int8_numeric - )); DESCR("(internal)"); -DATA(insert OID = 1782 ( numeric PGUID 12 f t t t 1 f 1700 "21" 100 0 0 100 int2_numeric - )); +DATA(insert OID = 1782 ( numeric 10 PGUID 12 f t t t 1 f 1700 "21" 100 0 0 100 int2_numeric - )); DESCR("(internal)"); -DATA(insert OID = 1783 ( int2 PGUID 12 f t t t 1 f 21 "1700" 100 0 0 100 numeric_int2 - )); +DATA(insert OID = 1783 ( int2 10 PGUID 12 f t t t 1 f 21 "1700" 100 0 0 100 numeric_int2 - )); DESCR("(internal)"); /* formatting */ -DATA(insert OID = 1770 ( to_char PGUID 12 f t f t 2 f 25 "1184 25" 100 0 0 100 timestamptz_to_char - )); +DATA(insert OID = 1770 ( to_char 10 PGUID 12 f t f t 2 f 25 "1184 25" 100 0 0 100 timestamptz_to_char - )); DESCR("format timestamp with time zone to text"); -DATA(insert OID = 1772 ( to_char PGUID 12 f t t t 2 f 25 "1700 25" 100 0 0 100 numeric_to_char - )); +DATA(insert OID = 1772 ( to_char 10 PGUID 12 f t t t 2 f 25 "1700 25" 100 0 0 100 numeric_to_char - )); DESCR("format numeric to text"); -DATA(insert OID = 1773 ( to_char PGUID 12 f t t t 2 f 25 "23 25" 100 0 0 100 int4_to_char - )); +DATA(insert OID = 1773 ( to_char 10 PGUID 12 f t t t 2 f 25 "23 25" 100 0 0 100 int4_to_char - )); DESCR("format int4 to text"); -DATA(insert OID = 1774 ( to_char PGUID 12 f t t t 2 f 25 "20 25" 100 0 0 100 int8_to_char - )); +DATA(insert OID = 1774 ( to_char 10 PGUID 12 f t t t 2 f 25 "20 25" 100 0 0 100 int8_to_char - )); DESCR("format int8 to text"); -DATA(insert OID = 1775 ( to_char PGUID 12 f t t t 2 f 25 "700 25" 100 0 0 100 float4_to_char - )); +DATA(insert OID = 1775 ( to_char 10 PGUID 12 f t t t 2 f 25 "700 25" 100 0 0 100 float4_to_char - )); DESCR("format float4 to text"); -DATA(insert OID = 1776 ( to_char PGUID 12 f t t t 2 f 25 "701 25" 100 0 0 100 float8_to_char - )); +DATA(insert OID = 1776 ( to_char 10 PGUID 12 f t t t 2 f 25 "701 25" 100 0 0 100 float8_to_char - )); DESCR("format float8 to text"); -DATA(insert OID = 1777 ( to_number PGUID 12 f t t t 2 f 1700 "25 25" 100 0 0 100 numeric_to_number - )); +DATA(insert OID = 1777 ( to_number 10 PGUID 12 f t t t 2 f 1700 "25 25" 100 0 0 100 numeric_to_number - )); DESCR("convert text to numeric"); -DATA(insert OID = 1778 ( to_timestamp PGUID 12 f t f t 2 f 1184 "25 25" 100 0 0 100 to_timestamp - )); +DATA(insert OID = 1778 ( to_timestamp 10 PGUID 12 f t f t 2 f 1184 "25 25" 100 0 0 100 to_timestamp - )); DESCR("convert text to timestamp"); -DATA(insert OID = 1780 ( to_date PGUID 12 f t t t 2 f 1082 "25 25" 100 0 0 100 to_date - )); +DATA(insert OID = 1780 ( to_date 10 PGUID 12 f t t t 2 f 1082 "25 25" 100 0 0 100 to_date - )); DESCR("convert text to date"); -DATA(insert OID = 1768 ( to_char PGUID 12 f t t t 2 f 25 "1186 25" 100 0 0 100 interval_to_char - )); +DATA(insert OID = 1768 ( to_char 10 PGUID 12 f t t t 2 f 25 "1186 25" 100 0 0 100 interval_to_char - )); DESCR("format interval to text"); -DATA(insert OID = 1282 ( quote_ident PGUID 12 f t t t 1 f 25 "25" 100 0 0 100 quote_ident - )); +DATA(insert OID = 1282 ( quote_ident 10 PGUID 12 f t t t 1 f 25 "25" 100 0 0 100 quote_ident - )); DESCR("quote an identifier for usage in a querystring"); -DATA(insert OID = 1283 ( quote_literal PGUID 12 f t t t 1 f 25 "25" 100 0 0 100 quote_literal - )); +DATA(insert OID = 1283 ( quote_literal 10 PGUID 12 f t t t 1 f 25 "25" 100 0 0 100 quote_literal - )); DESCR("quote a literal for usage in a querystring"); -DATA(insert OID = 1798 ( oidin PGUID 12 f t t t 1 f 26 "0" 100 0 0 100 oidin - )); +DATA(insert OID = 1798 ( oidin 10 PGUID 12 f t t t 1 f 26 "0" 100 0 0 100 oidin - )); DESCR("(internal)"); -DATA(insert OID = 1799 ( oidout PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 oidout - )); +DATA(insert OID = 1799 ( oidout 10 PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 oidout - )); DESCR("(internal)"); -DATA(insert OID = 1810 ( bit_length PGUID 14 f t t t 1 f 23 "17" 100 0 0 100 "select octet_length($1) * 8" - )); +DATA(insert OID = 1810 ( bit_length 10 PGUID 14 f t t t 1 f 23 "17" 100 0 0 100 "select octet_length($1) * 8" - )); DESCR("length in bits"); -DATA(insert OID = 1811 ( bit_length PGUID 14 f t t t 1 f 23 "25" 100 0 0 100 "select octet_length($1) * 8" - )); +DATA(insert OID = 1811 ( bit_length 10 PGUID 14 f t t t 1 f 23 "25" 100 0 0 100 "select octet_length($1) * 8"- )); DESCR("length in bits"); -DATA(insert OID = 1812 ( bit_length PGUID 14 f t t t 1 f 23 "1560" 100 0 0 100 "select length($1)" - )); +DATA(insert OID = 1812 ( bit_length 10 PGUID 14 f t t t 1 f 23 "1560" 100 0 0 100 "select length($1)" - )); DESCR("length in bits"); /* Selectivity estimators for LIKE and related operators */ -DATA(insert OID = 1814 ( iclikesel PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 iclikesel - )); +DATA(insert OID = 1814 ( iclikesel 10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 iclikesel - )); DESCR("restriction selectivity of ILIKE"); -DATA(insert OID = 1815 ( icnlikesel PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 icnlikesel - )); +DATA(insert OID = 1815 ( icnlikesel 10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 icnlikesel - )); DESCR("restriction selectivity of NOT ILIKE"); -DATA(insert OID = 1816 ( iclikejoinsel PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 iclikejoinsel - )); +DATA(insert OID = 1816 ( iclikejoinsel 10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 iclikejoinsel - )); DESCR("join selectivity of ILIKE"); -DATA(insert OID = 1817 ( icnlikejoinsel PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 icnlikejoinsel - )); +DATA(insert OID = 1817 ( icnlikejoinsel 10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 icnlikejoinsel - )); DESCR("join selectivity of NOT ILIKE"); -DATA(insert OID = 1818 ( regexeqsel PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 regexeqsel - )); +DATA(insert OID = 1818 ( regexeqsel 10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 regexeqsel - )); DESCR("restriction selectivity of regex match"); -DATA(insert OID = 1819 ( likesel PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 likesel - )); +DATA(insert OID = 1819 ( likesel 10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 likesel - )); DESCR("restriction selectivity of LIKE"); -DATA(insert OID = 1820 ( icregexeqsel PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 icregexeqsel - )); +DATA(insert OID = 1820 ( icregexeqsel 10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 icregexeqsel - )); DESCR("restriction selectivity of case-insensitive regex match"); -DATA(insert OID = 1821 ( regexnesel PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 regexnesel - )); +DATA(insert OID = 1821 ( regexnesel 10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 regexnesel - )); DESCR("restriction selectivity of regex non-match"); -DATA(insert OID = 1822 ( nlikesel PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 nlikesel - )); +DATA(insert OID = 1822 ( nlikesel 10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 nlikesel - )); DESCR("restriction selectivity of NOT LIKE"); -DATA(insert OID = 1823 ( icregexnesel PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 icregexnesel - )); +DATA(insert OID = 1823 ( icregexnesel 10 PGUID 12 f t f t 4 f 701 "0 26 0 23" 100 0 0 100 icregexnesel - )); DESCR("restriction selectivity of case-insensitive regex non-match"); -DATA(insert OID = 1824 ( regexeqjoinsel PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 regexeqjoinsel - )); +DATA(insert OID = 1824 ( regexeqjoinsel 10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 regexeqjoinsel - )); DESCR("join selectivity of regex match"); -DATA(insert OID = 1825 ( likejoinsel PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 likejoinsel - )); +DATA(insert OID = 1825 ( likejoinsel 10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 likejoinsel - )); DESCR("join selectivity of LIKE"); -DATA(insert OID = 1826 ( icregexeqjoinsel PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 icregexeqjoinsel - )); +DATA(insert OID = 1826 ( icregexeqjoinsel 10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 icregexeqjoinsel - )); DESCR("join selectivity of case-insensitive regex match"); -DATA(insert OID = 1827 ( regexnejoinsel PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 regexnejoinsel - )); +DATA(insert OID = 1827 ( regexnejoinsel 10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 regexnejoinsel - )); DESCR("join selectivity of regex non-match"); -DATA(insert OID = 1828 ( nlikejoinsel PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 nlikejoinsel - )); +DATA(insert OID = 1828 ( nlikejoinsel 10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 nlikejoinsel - )); DESCR("join selectivity of NOT LIKE"); -DATA(insert OID = 1829 ( icregexnejoinsel PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 icregexnejoinsel - )); +DATA(insert OID = 1829 ( icregexnejoinsel 10 PGUID 12 f t f t 3 f 701 "0 26 0" 100 0 0 100 icregexnejoinsel - )); DESCR("join selectivity of case-insensitive regex non-match"); /* Aggregate-related functions */ -DATA(insert OID = 1830 ( float8_avg PGUID 12 f t t t 1 f 701 "1022" 100 0 0 100 float8_avg - )); +DATA(insert OID = 1830 ( float8_avg 10 PGUID 12 f t t t 1 f 701 "1022" 100 0 0 100 float8_avg - )); DESCR("AVG aggregate final function"); -DATA(insert OID = 1831 ( float8_variance PGUID 12 f t t t 1 f 701 "1022" 100 0 0 100 float8_variance - )); +DATA(insert OID = 1831 ( float8_variance 10 PGUID 12 f t t t 1 f 701 "1022" 100 0 0 100 float8_variance - )); DESCR("VARIANCE aggregate final function"); -DATA(insert OID = 1832 ( float8_stddev PGUID 12 f t t t 1 f 701 "1022" 100 0 0 100 float8_stddev - )); +DATA(insert OID = 1832 ( float8_stddev 10 PGUID 12 f t t t 1 f 701 "1022" 100 0 0 100 float8_stddev - )); DESCR("STDDEV aggregate final function"); -DATA(insert OID = 1833 ( numeric_accum PGUID 12 f t t t 2 f 1231 "1231 1700" 100 0 0 100 numeric_accum - )); +DATA(insert OID = 1833 ( numeric_accum 10 PGUID 12 f t t t 2 f 1231 "1231 1700" 100 0 0 100 numeric_accum - )); DESCR("aggregate transition function"); -DATA(insert OID = 1834 ( int2_accum PGUID 12 f t t t 2 f 1231 "1231 21" 100 0 0 100 int2_accum - )); +DATA(insert OID = 1834 ( int2_accum 10 PGUID 12 f t t t 2 f 1231 "1231 21" 100 0 0 100 int2_accum - )); DESCR("aggregate transition function"); -DATA(insert OID = 1835 ( int4_accum PGUID 12 f t t t 2 f 1231 "1231 23" 100 0 0 100 int4_accum - )); +DATA(insert OID = 1835 ( int4_accum 10 PGUID 12 f t t t 2 f 1231 "1231 23" 100 0 0 100 int4_accum - )); DESCR("aggregate transition function"); -DATA(insert OID = 1836 ( int8_accum PGUID 12 f t t t 2 f 1231 "1231 20" 100 0 0 100 int8_accum - )); +DATA(insert OID = 1836 ( int8_accum 10 PGUID 12 f t t t 2 f 1231 "1231 20" 100 0 0 100 int8_accum - )); DESCR("aggregate transition function"); -DATA(insert OID = 1837 ( numeric_avg PGUID 12 f t t t 1 f 1700 "1231" 100 0 0 100 numeric_avg - )); +DATA(insert OID = 1837 ( numeric_avg 10 PGUID 12 f t t t 1 f 1700 "1231" 100 0 0 100 numeric_avg - )); DESCR("AVG aggregate final function"); -DATA(insert OID = 1838 ( numeric_variance PGUID 12 f t t t 1 f 1700 "1231" 100 0 0 100 numeric_variance - )); +DATA(insert OID = 1838 ( numeric_variance 10 PGUID 12 f t t t 1 f 1700 "1231" 100 0 0 100 numeric_variance - )); DESCR("VARIANCE aggregate final function"); -DATA(insert OID = 1839 ( numeric_stddev PGUID 12 f t t t 1 f 1700 "1231" 100 0 0 100 numeric_stddev - )); +DATA(insert OID = 1839 ( numeric_stddev 10 PGUID 12 f t t t 1 f 1700 "1231" 100 0 0 100 numeric_stddev - )); DESCR("STDDEV aggregate final function"); -DATA(insert OID = 1840 ( int2_sum PGUID 12 f t t f 2 f 20 "20 21" 100 0 0 100 int2_sum - )); +DATA(insert OID = 1840 ( int2_sum 10 PGUID 12 f t t f 2 f 20 "20 21" 100 0 0 100 int2_sum - )); DESCR("SUM(int2) transition function"); -DATA(insert OID = 1841 ( int4_sum PGUID 12 f t t f 2 f 20 "20 23" 100 0 0 100 int4_sum - )); +DATA(insert OID = 1841 ( int4_sum 10 PGUID 12 f t t f 2 f 20 "20 23" 100 0 0 100 int4_sum - )); DESCR("SUM(int4) transition function"); -DATA(insert OID = 1842 ( int8_sum PGUID 12 f t t f 2 f 1700 "1700 20" 100 0 0 100 int8_sum - )); +DATA(insert OID = 1842 ( int8_sum 10 PGUID 12 f t t f 2 f 1700 "1700 20" 100 0 0 100 int8_sum - )); DESCR("SUM(int8) transition function"); -DATA(insert OID = 1843 ( interval_accum PGUID 12 f t t t 2 f 1187 "1187 1186" 100 0 0 100 interval_accum - )); +DATA(insert OID = 1843 ( interval_accum 10 PGUID 12 f t t t 2 f 1187 "1187 1186" 100 0 0 100 interval_accum - )); DESCR("aggregate transition function"); -DATA(insert OID = 1844 ( interval_avg PGUID 12 f t t t 1 f 1186 "1187" 100 0 0 100 interval_avg - )); +DATA(insert OID = 1844 ( interval_avg 10 PGUID 12 f t t t 1 f 1186 "1187" 100 0 0 100 interval_avg - )); DESCR("AVG aggregate final function"); -DATA(insert OID = 1962 ( int2_avg_accum PGUID 12 f t t t 2 f 1016 "1016 21" 100 0 0 100 int2_avg_accum - )); +DATA(insert OID = 1962 ( int2_avg_accum 10 PGUID 12 f t t t 2 f 1016 "1016 21" 100 0 0 100 int2_avg_accum - )); DESCR("AVG(int2) transition function"); -DATA(insert OID = 1963 ( int4_avg_accum PGUID 12 f t t t 2 f 1016 "1016 23" 100 0 0 100 int4_avg_accum - )); +DATA(insert OID = 1963 ( int4_avg_accum 10 PGUID 12 f t t t 2 f 1016 "1016 23" 100 0 0 100 int4_avg_accum - )); DESCR("AVG(int4) transition function"); -DATA(insert OID = 1964 ( int8_avg PGUID 12 f t t t 1 f 1700 "1016" 100 0 0 100 int8_avg - )); +DATA(insert OID = 1964 ( int8_avg 10 PGUID 12 f t t t 1 f 1700 "1016" 100 0 0 100 int8_avg - )); DESCR("AVG(int) aggregate final function"); /* To ASCII conversion */ -DATA(insert OID = 1845 ( to_ascii PGUID 12 f t t t 1 f 25 "25" 100 0 0 100 to_ascii_default - )); +DATA(insert OID = 1845 ( to_ascii 10 PGUID 12 f t t t 1 f 25 "25" 100 0 0 100 to_ascii_default - )); DESCR("encode text from DB encoding to ASCII text"); -DATA(insert OID = 1846 ( to_ascii PGUID 12 f t t t 2 f 25 "25 23" 100 0 0 100 to_ascii_enc - )); +DATA(insert OID = 1846 ( to_ascii 10 PGUID 12 f t t t 2 f 25 "25 23" 100 0 0 100 to_ascii_enc - )); DESCR("encode text from encoding to ASCII text"); -DATA(insert OID = 1847 ( to_ascii PGUID 12 f t t t 2 f 25 "25 19" 100 0 0 100 to_ascii_encname - )); +DATA(insert OID = 1847 ( to_ascii 10 PGUID 12 f t t t 2 f 25 "25 19" 100 0 0 100 to_ascii_encname - )); DESCR("encode text from encoding to ASCII text"); -DATA(insert OID = 1848 ( interval_pl_time PGUID 12 f t t t 2 f 1083 "1186 1083" 100 0 0 100 interval_pl_time - )); +DATA(insert OID = 1848 ( interval_pl_time 10 PGUID 12 f t t t 2 f 1083 "1186 1083" 100 0 0 100 interval_pl_time- )); DESCR("plus"); -DATA(insert OID = 1850 ( int28eq PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100 int28eq - )); +DATA(insert OID = 1850 ( int28eq 10 PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100 int28eq - )); DESCR("equal"); -DATA(insert OID = 1851 ( int28ne PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100 int28ne - )); +DATA(insert OID = 1851 ( int28ne 10 PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100 int28ne - )); DESCR("not equal"); -DATA(insert OID = 1852 ( int28lt PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100 int28lt - )); +DATA(insert OID = 1852 ( int28lt 10 PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100 int28lt - )); DESCR("less-than"); -DATA(insert OID = 1853 ( int28gt PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100 int28gt - )); +DATA(insert OID = 1853 ( int28gt 10 PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100 int28gt - )); DESCR("greater-than"); -DATA(insert OID = 1854 ( int28le PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100 int28le - )); +DATA(insert OID = 1854 ( int28le 10 PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100 int28le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 1855 ( int28ge PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100 int28ge - )); +DATA(insert OID = 1855 ( int28ge 10 PGUID 12 f t t t 2 f 16 "21 20" 100 0 0 100 int28ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 1856 ( int82eq PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100 int82eq - )); +DATA(insert OID = 1856 ( int82eq 10 PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100 int82eq - )); DESCR("equal"); -DATA(insert OID = 1857 ( int82ne PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100 int82ne - )); +DATA(insert OID = 1857 ( int82ne 10 PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100 int82ne - )); DESCR("not equal"); -DATA(insert OID = 1858 ( int82lt PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100 int82lt - )); +DATA(insert OID = 1858 ( int82lt 10 PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100 int82lt - )); DESCR("less-than"); -DATA(insert OID = 1859 ( int82gt PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100 int82gt - )); +DATA(insert OID = 1859 ( int82gt 10 PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100 int82gt - )); DESCR("greater-than"); -DATA(insert OID = 1860 ( int82le PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100 int82le - )); +DATA(insert OID = 1860 ( int82le 10 PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100 int82le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 1861 ( int82ge PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100 int82ge - )); +DATA(insert OID = 1861 ( int82ge 10 PGUID 12 f t t t 2 f 16 "20 21" 100 0 0 100 int82ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 1892 ( int2and PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2and - )); +DATA(insert OID = 1892 ( int2and 10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2and - )); DESCR("binary and"); -DATA(insert OID = 1893 ( int2or PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2or - )); +DATA(insert OID = 1893 ( int2or 10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2or - )); DESCR("binary or"); -DATA(insert OID = 1894 ( int2xor PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2xor - )); +DATA(insert OID = 1894 ( int2xor 10 PGUID 12 f t t t 2 f 21 "21 21" 100 0 0 100 int2xor - )); DESCR("binary xor"); -DATA(insert OID = 1895 ( int2not PGUID 12 f t t t 1 f 21 "21" 100 0 0 100 int2not - )); +DATA(insert OID = 1895 ( int2not 10 PGUID 12 f t t t 1 f 21 "21" 100 0 0 100 int2not - )); DESCR("binary not"); -DATA(insert OID = 1896 ( int2shl PGUID 12 f t t t 2 f 21 "21 23" 100 0 0 100 int2shl - )); +DATA(insert OID = 1896 ( int2shl 10 PGUID 12 f t t t 2 f 21 "21 23" 100 0 0 100 int2shl - )); DESCR("binary shift left"); -DATA(insert OID = 1897 ( int2shr PGUID 12 f t t t 2 f 21 "21 23" 100 0 0 100 int2shr - )); +DATA(insert OID = 1897 ( int2shr 10 PGUID 12 f t t t 2 f 21 "21 23" 100 0 0 100 int2shr - )); DESCR("binary shift right"); -DATA(insert OID = 1898 ( int4and PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4and - )); +DATA(insert OID = 1898 ( int4and 10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4and - )); DESCR("binary and"); -DATA(insert OID = 1899 ( int4or PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4or - )); +DATA(insert OID = 1899 ( int4or 10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4or - )); DESCR("binary or"); -DATA(insert OID = 1900 ( int4xor PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4xor - )); +DATA(insert OID = 1900 ( int4xor 10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4xor - )); DESCR("binary xor"); -DATA(insert OID = 1901 ( int4not PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 int4not - )); +DATA(insert OID = 1901 ( int4not 10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 int4not - )); DESCR("binary not"); -DATA(insert OID = 1902 ( int4shl PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4shl - )); +DATA(insert OID = 1902 ( int4shl 10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4shl - )); DESCR("binary shift left"); -DATA(insert OID = 1903 ( int4shr PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4shr - )); +DATA(insert OID = 1903 ( int4shr 10 PGUID 12 f t t t 2 f 23 "23 23" 100 0 0 100 int4shr - )); DESCR("binary shift right"); -DATA(insert OID = 1904 ( int8and PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8and - )); +DATA(insert OID = 1904 ( int8and 10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8and - )); DESCR("binary and"); -DATA(insert OID = 1905 ( int8or PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8or - )); +DATA(insert OID = 1905 ( int8or 10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8or - )); DESCR("binary or"); -DATA(insert OID = 1906 ( int8xor PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8xor - )); +DATA(insert OID = 1906 ( int8xor 10 PGUID 12 f t t t 2 f 20 "20 20" 100 0 0 100 int8xor - )); DESCR("binary xor"); -DATA(insert OID = 1907 ( int8not PGUID 12 f t t t 1 f 20 "20" 100 0 0 100 int8not - )); +DATA(insert OID = 1907 ( int8not 10 PGUID 12 f t t t 1 f 20 "20" 100 0 0 100 int8not - )); DESCR("binary not"); -DATA(insert OID = 1908 ( int8shl PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100 int8shl - )); +DATA(insert OID = 1908 ( int8shl 10 PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100 int8shl - )); DESCR("binary shift left"); -DATA(insert OID = 1909 ( int8shr PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100 int8shr - )); +DATA(insert OID = 1909 ( int8shr 10 PGUID 12 f t t t 2 f 20 "20 23" 100 0 0 100 int8shr - )); DESCR("binary shift right"); -DATA(insert OID = 1910 ( int8up PGUID 12 f t t t 1 f 20 "20" 100 0 0 100 int8up - )); +DATA(insert OID = 1910 ( int8up 10 PGUID 12 f t t t 1 f 20 "20" 100 0 0 100 int8up - )); DESCR("unary plus"); -DATA(insert OID = 1911 ( int2up PGUID 12 f t t t 1 f 21 "21" 100 0 0 100 int2up - )); +DATA(insert OID = 1911 ( int2up 10 PGUID 12 f t t t 1 f 21 "21" 100 0 0 100 int2up - )); DESCR("unary plus"); -DATA(insert OID = 1912 ( int4up PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 int4up - )); +DATA(insert OID = 1912 ( int4up 10 PGUID 12 f t t t 1 f 23 "23" 100 0 0 100 int4up - )); DESCR("unary plus"); -DATA(insert OID = 1913 ( float4up PGUID 12 f t t t 1 f 700 "700" 100 0 0 100 float4up - )); +DATA(insert OID = 1913 ( float4up 10 PGUID 12 f t t t 1 f 700 "700" 100 0 0 100 float4up - )); DESCR("unary plus"); -DATA(insert OID = 1914 ( float8up PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 float8up - )); +DATA(insert OID = 1914 ( float8up 10 PGUID 12 f t t t 1 f 701 "701" 100 0 0 100 float8up - )); DESCR("unary plus"); -DATA(insert OID = 1915 ( numeric_uplus PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_uplus - )); +DATA(insert OID = 1915 ( numeric_uplus 10 PGUID 12 f t t t 1 f 1700 "1700" 100 0 0 100 numeric_uplus - )); DESCR("unary plus"); -DATA(insert OID = 1922 ( has_table_privilege PGUID 12 f t f t 3 f 16 "19 19 25" 100 0 0 100 has_table_privilege_name_name- )); +DATA(insert OID = 1922 ( has_table_privilege 10 PGUID 12 f t f t 3 f 16 "19 19 25" 100 0 0 100 has_table_privilege_name_name- )); DESCR("user privilege on relation by username, relname"); -DATA(insert OID = 1923 ( has_table_privilege PGUID 12 f t f t 3 f 16 "19 26 25" 100 0 0 100 has_table_privilege_name_id- )); +DATA(insert OID = 1923 ( has_table_privilege 10 PGUID 12 f t f t 3 f 16 "19 26 25" 100 0 0 100 has_table_privilege_name_id- )); DESCR("user privilege on relation by username, rel oid"); -DATA(insert OID = 1924 ( has_table_privilege PGUID 12 f t f t 3 f 16 "23 19 25" 100 0 0 100 has_table_privilege_id_name- )); +DATA(insert OID = 1924 ( has_table_privilege 10 PGUID 12 f t f t 3 f 16 "23 19 25" 100 0 0 100 has_table_privilege_id_name- )); DESCR("user privilege on relation by usesysid, relname"); -DATA(insert OID = 1925 ( has_table_privilege PGUID 12 f t f t 3 f 16 "23 26 25" 100 0 0 100 has_table_privilege_id_id- )); +DATA(insert OID = 1925 ( has_table_privilege 10 PGUID 12 f t f t 3 f 16 "23 26 25" 100 0 0 100 has_table_privilege_id_id- )); DESCR("user privilege on relation by usesysid, rel oid"); -DATA(insert OID = 1926 ( has_table_privilege PGUID 12 f t f t 2 f 16 "19 25" 100 0 0 100 has_table_privilege_name- )); +DATA(insert OID = 1926 ( has_table_privilege 10 PGUID 12 f t f t 2 f 16 "19 25" 100 0 0 100 has_table_privilege_name- )); DESCR("current user privilege on relation by relname"); -DATA(insert OID = 1927 ( has_table_privilege PGUID 12 f t f t 2 f 16 "26 25" 100 0 0 100 has_table_privilege_id- )); +DATA(insert OID = 1927 ( has_table_privilege 10 PGUID 12 f t f t 2 f 16 "26 25" 100 0 0 100 has_table_privilege_id- )); DESCR("current user privilege on relation by rel oid"); -DATA(insert OID = 1928 ( pg_stat_get_numscans PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_numscans- )); +DATA(insert OID = 1928 ( pg_stat_get_numscans 10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_numscans- )); DESCR("Statistics: Number of scans done for table/index"); -DATA(insert OID = 1929 ( pg_stat_get_tuples_returned PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_tuples_returned- )); +DATA(insert OID = 1929 ( pg_stat_get_tuples_returned 10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_tuples_returned- )); DESCR("Statistics: Number of tuples read by seqscan"); -DATA(insert OID = 1930 ( pg_stat_get_tuples_fetched PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_tuples_fetched- )); +DATA(insert OID = 1930 ( pg_stat_get_tuples_fetched 10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_tuples_fetched- )); DESCR("Statistics: Number of tuples fetched by idxscan"); -DATA(insert OID = 1931 ( pg_stat_get_tuples_inserted PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_tuples_inserted- )); +DATA(insert OID = 1931 ( pg_stat_get_tuples_inserted 10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_tuples_inserted- )); DESCR("Statistics: Number of tuples inserted"); -DATA(insert OID = 1932 ( pg_stat_get_tuples_updated PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_tuples_updated- )); +DATA(insert OID = 1932 ( pg_stat_get_tuples_updated 10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_tuples_updated- )); DESCR("Statistics: Number of tuples updated"); -DATA(insert OID = 1933 ( pg_stat_get_tuples_deleted PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_tuples_deleted- )); +DATA(insert OID = 1933 ( pg_stat_get_tuples_deleted 10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_tuples_deleted- )); DESCR("Statistics: Number of tuples deleted"); -DATA(insert OID = 1934 ( pg_stat_get_blocks_fetched PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_blocks_fetched- )); +DATA(insert OID = 1934 ( pg_stat_get_blocks_fetched 10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_blocks_fetched- )); DESCR("Statistics: Number of blocks fetched"); -DATA(insert OID = 1935 ( pg_stat_get_blocks_hit PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_blocks_hit- )); +DATA(insert OID = 1935 ( pg_stat_get_blocks_hit 10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_blocks_hit- )); DESCR("Statistics: Number of blocks found in cache"); -DATA(insert OID = 1936 ( pg_stat_get_backend_idset PGUID 12 f t f t 0 t 23 "" 100 0 0 100 pg_stat_get_backend_idset- )); +DATA(insert OID = 1936 ( pg_stat_get_backend_idset 10 PGUID 12 f t f t 0 t 23 "" 100 0 0 100 pg_stat_get_backend_idset- )); DESCR("Statistics: Currently active backend IDs"); -DATA(insert OID = 1937 ( pg_stat_get_backend_pid PGUID 12 f t f t 1 f 23 "23" 100 0 0 100 pg_stat_get_backend_pid- )); +DATA(insert OID = 1937 ( pg_stat_get_backend_pid 10 PGUID 12 f t f t 1 f 23 "23" 100 0 0 100 pg_stat_get_backend_pid- )); DESCR("Statistics: PID of backend"); -DATA(insert OID = 1938 ( pg_stat_get_backend_dbid PGUID 12 f t f t 1 f 26 "23" 100 0 0 100 pg_stat_get_backend_dbid- )); +DATA(insert OID = 1938 ( pg_stat_get_backend_dbid 10 PGUID 12 f t f t 1 f 26 "23" 100 0 0 100 pg_stat_get_backend_dbid- )); DESCR("Statistics: Database ID of backend"); -DATA(insert OID = 1939 ( pg_stat_get_backend_userid PGUID 12 f t f t 1 f 26 "23" 100 0 0 100 pg_stat_get_backend_userid- )); +DATA(insert OID = 1939 ( pg_stat_get_backend_userid 10 PGUID 12 f t f t 1 f 26 "23" 100 0 0 100 pg_stat_get_backend_userid- )); DESCR("Statistics: User ID of backend"); -DATA(insert OID = 1940 ( pg_stat_get_backend_activity PGUID 12 f t f t 1 f 25 "23" 100 0 0 100 pg_stat_get_backend_activity- )); +DATA(insert OID = 1940 ( pg_stat_get_backend_activity 10 PGUID 12 f t f t 1 f 25 "23" 100 0 0 100 pg_stat_get_backend_activity- )); DESCR("Statistics: Current query of backend"); -DATA(insert OID = 1941 ( pg_stat_get_db_numbackends PGUID 12 f t f t 1 f 23 "26" 100 0 0 100 pg_stat_get_db_numbackends- )); +DATA(insert OID = 1941 ( pg_stat_get_db_numbackends 10 PGUID 12 f t f t 1 f 23 "26" 100 0 0 100 pg_stat_get_db_numbackends- )); DESCR("Statistics: Number of backends in database"); -DATA(insert OID = 1942 ( pg_stat_get_db_xact_commit PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_db_xact_commit- )); +DATA(insert OID = 1942 ( pg_stat_get_db_xact_commit 10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_db_xact_commit- )); DESCR("Statistics: Transactions committed"); -DATA(insert OID = 1943 ( pg_stat_get_db_xact_rollback PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_db_xact_rollback- )); +DATA(insert OID = 1943 ( pg_stat_get_db_xact_rollback 10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_db_xact_rollback- )); DESCR("Statistics: Transactions rolled back"); -DATA(insert OID = 1944 ( pg_stat_get_db_blocks_fetched PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_db_blocks_fetched- )); +DATA(insert OID = 1944 ( pg_stat_get_db_blocks_fetched 10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_db_blocks_fetched- )); DESCR("Statistics: Blocks fetched for database"); -DATA(insert OID = 1945 ( pg_stat_get_db_blocks_hit PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_db_blocks_hit- )); +DATA(insert OID = 1945 ( pg_stat_get_db_blocks_hit 10 PGUID 12 f t f t 1 f 20 "26" 100 0 0 100 pg_stat_get_db_blocks_hit- )); DESCR("Statistics: Block found in cache for database"); -DATA(insert OID = 1946 ( encode PGUID 12 f t t t 2 f 25 "17 25" 100 0 0 100 binary_encode - )); +DATA(insert OID = 1946 ( encode 10 PGUID 12 f t t t 2 f 25 "17 25" 100 0 0 100 binary_encode -)); DESCR("Convert bytea value into some ascii-only text string"); -DATA(insert OID = 1947 ( decode PGUID 12 f t t t 2 f 17 "25 25" 100 0 0 100 binary_decode - )); +DATA(insert OID = 1947 ( decode 10 PGUID 12 f t t t 2 f 17 "25 25" 100 0 0 100 binary_decode -)); DESCR("Convert ascii-encoded text string into bytea value"); -DATA(insert OID = 1948 ( byteaeq PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 byteaeq - )); +DATA(insert OID = 1948 ( byteaeq 10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 byteaeq - )); DESCR("equal"); -DATA(insert OID = 1949 ( bytealt PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 bytealt - )); +DATA(insert OID = 1949 ( bytealt 10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 bytealt - )); DESCR("less-than"); -DATA(insert OID = 1950 ( byteale PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 byteale - )); +DATA(insert OID = 1950 ( byteale 10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 byteale - )); DESCR("less-than-or-equal"); -DATA(insert OID = 1951 ( byteagt PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 byteagt - )); +DATA(insert OID = 1951 ( byteagt 10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 byteagt - )); DESCR("greater-than"); -DATA(insert OID = 1952 ( byteage PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 byteage - )); +DATA(insert OID = 1952 ( byteage 10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 byteage - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 1953 ( byteane PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 byteane - )); +DATA(insert OID = 1953 ( byteane 10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 byteane - )); DESCR("not equal"); -DATA(insert OID = 1954 ( byteacmp PGUID 12 f t t t 2 f 23 "17 17" 100 0 0 100 byteacmp - )); +DATA(insert OID = 1954 ( byteacmp 10 PGUID 12 f t t t 2 f 23 "17 17" 100 0 0 100 byteacmp - )); DESCR("less-equal-greater"); -DATA(insert OID = 1961 ( timestamp PGUID 12 f t t t 2 f 1114 "1114 23" 100 0 0 100 timestamp_scale - )); +DATA(insert OID = 1961 ( timestamp 10 PGUID 12 f t t t 2 f 1114 "1114 23" 100 0 0 100 timestamp_scale - )); DESCR("adjust time precision"); -DATA(insert OID = 1965 ( oidlarger PGUID 12 f t t t 2 f 26 "26 26" 100 0 0 100 oidlarger - )); +DATA(insert OID = 1965 ( oidlarger 10 PGUID 12 f t t t 2 f 26 "26 26" 100 0 0 100 oidlarger - )); DESCR("larger of two"); -DATA(insert OID = 1966 ( oidsmaller PGUID 12 f t t t 2 f 26 "26 26" 100 0 0 100 oidsmaller - )); +DATA(insert OID = 1966 ( oidsmaller 10 PGUID 12 f t t t 2 f 26 "26 26" 100 0 0 100 oidsmaller - )); DESCR("smaller of two"); -DATA(insert OID = 1967 ( timestamptz PGUID 12 f t t t 2 f 1184 "1184 23" 100 0 0 100 timestamptz_scale - )); +DATA(insert OID = 1967 ( timestamptz 10 PGUID 12 f t t t 2 f 1184 "1184 23" 100 0 0 100 timestamptz_scale - )); DESCR("adjust time precision"); -DATA(insert OID = 1968 ( time PGUID 12 f t t t 2 f 1083 "1083 23" 100 0 0 100 time_scale - )); +DATA(insert OID = 1968 ( time 10 PGUID 12 f t t t 2 f 1083 "1083 23" 100 0 0 100 time_scale - )); DESCR("adjust time precision"); -DATA(insert OID = 1969 ( timetz PGUID 12 f t t t 2 f 1266 "1266 23" 100 0 0 100 timetz_scale - )); +DATA(insert OID = 1969 ( timetz 10 PGUID 12 f t t t 2 f 1266 "1266 23" 100 0 0 100 timetz_scale - )); DESCR("adjust time with time zone precision"); -DATA(insert OID = 2005 ( bytealike PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 bytealike - )); +DATA(insert OID = 2005 ( bytealike 10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 bytealike - )); DESCR("matches LIKE expression"); -DATA(insert OID = 2006 ( byteanlike PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 byteanlike - )); +DATA(insert OID = 2006 ( byteanlike 10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 byteanlike - )); DESCR("does not match LIKE expression"); -DATA(insert OID = 2007 ( like PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 bytealike - )); +DATA(insert OID = 2007 ( like 10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 bytealike - )); DESCR("matches LIKE expression"); -DATA(insert OID = 2008 ( notlike PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 byteanlike - )); +DATA(insert OID = 2008 ( notlike 10 PGUID 12 f t t t 2 f 16 "17 17" 100 0 0 100 byteanlike - )); DESCR("does not match LIKE expression"); -DATA(insert OID = 2009 ( like_escape PGUID 12 f t t t 2 f 17 "17 17" 100 0 0 100 like_escape_bytea - )); +DATA(insert OID = 2009 ( like_escape 10 PGUID 12 f t t t 2 f 17 "17 17" 100 0 0 100 like_escape_bytea - )); DESCR("convert match pattern to use backslash escapes"); -DATA(insert OID = 2010 ( length PGUID 12 f t t t 1 f 23 "17" 100 0 0 100 byteaoctetlen - )); +DATA(insert OID = 2010 ( length 10 PGUID 12 f t t t 1 f 23 "17" 100 0 0 100 byteaoctetlen - )); DESCR("octet length"); -DATA(insert OID = 2011 ( byteacat PGUID 12 f t t t 2 f 17 "17 17" 100 0 0 100 byteacat - )); +DATA(insert OID = 2011 ( byteacat 10 PGUID 12 f t t t 2 f 17 "17 17" 100 0 0 100 byteacat - )); DESCR("concatenate"); -DATA(insert OID = 2012 ( substring PGUID 12 f t t t 3 f 17 "17 23 23" 100 0 0 100 bytea_substr - )); +DATA(insert OID = 2012 ( substring 10 PGUID 12 f t t t 3 f 17 "17 23 23" 100 0 0 100 bytea_substr - )); DESCR("return portion of string"); -DATA(insert OID = 2013 ( substring PGUID 14 f t t t 2 f 17 "17 23" 100 0 0 100 "select substring($1, $2, -1)"- )); +DATA(insert OID = 2013 ( substring 10 PGUID 14 f t t t 2 f 17 "17 23" 100 0 0 100 "select substring($1, $2,-1)" - )); DESCR("return portion of string"); -DATA(insert OID = 2014 ( position PGUID 12 f t t t 2 f 23 "17 17" 100 0 0 100 byteapos - )); +DATA(insert OID = 2014 ( position 10 PGUID 12 f t t t 2 f 23 "17 17" 100 0 0 100 byteapos - )); DESCR("return position of substring"); -DATA(insert OID = 2015 ( btrim PGUID 12 f t t t 2 f 17 "17 17" 100 0 0 100 byteatrim - )); +DATA(insert OID = 2015 ( btrim 10 PGUID 12 f t t t 2 f 17 "17 17" 100 0 0 100 byteatrim - )); DESCR("trim both ends of string"); -DATA(insert OID = 2020 ( date_trunc PGUID 12 f t t t 2 f 1114 "25 1114" 100 0 0 100 timestamp_trunc - )); +DATA(insert OID = 2020 ( date_trunc 10 PGUID 12 f t t t 2 f 1114 "25 1114" 100 0 0 100 timestamp_trunc - )); DESCR("truncate timestamp to specified units"); -DATA(insert OID = 2021 ( date_part PGUID 12 f t t t 2 f 701 "25 1114" 100 0 0 100 timestamp_part - )); +DATA(insert OID = 2021 ( date_part 10 PGUID 12 f t t t 2 f 701 "25 1114" 100 0 0 100 timestamp_part - )); DESCR("extract field from timestamp"); -DATA(insert OID = 2022 ( timestamp PGUID 12 f t f t 1 f 1114 "25" 100 0 0 100 text_timestamp - )); +DATA(insert OID = 2022 ( timestamp 10 PGUID 12 f t f t 1 f 1114 "25" 100 0 0 100 text_timestamp - )); DESCR("convert text to timestamp"); -DATA(insert OID = 2023 ( timestamp PGUID 12 f t f t 1 f 1114 "702" 100 0 0 100 abstime_timestamp - )); +DATA(insert OID = 2023 ( timestamp 10 PGUID 12 f t f t 1 f 1114 "702" 100 0 0 100 abstime_timestamp - )); DESCR("convert abstime to timestamp"); -DATA(insert OID = 2024 ( timestamp PGUID 12 f t t t 1 f 1114 "1082" 100 0 0 100 date_timestamp - )); +DATA(insert OID = 2024 ( timestamp 10 PGUID 12 f t t t 1 f 1114 "1082" 100 0 0 100 date_timestamp - )); DESCR("convert date to timestamp"); -DATA(insert OID = 2025 ( timestamp PGUID 12 f t t t 2 f 1114 "1082 1083" 100 0 0 100 datetime_timestamp - )); +DATA(insert OID = 2025 ( timestamp 10 PGUID 12 f t t t 2 f 1114 "1082 1083" 100 0 0 100 datetime_timestamp- )); DESCR("convert date and time to timestamp"); -DATA(insert OID = 2026 ( timestamp PGUID 14 f t t t 1 f 1114 "1114" 100 0 0 100 "select $1" - )); +DATA(insert OID = 2026 ( timestamp 10 PGUID 14 f t t t 1 f 1114 "1114" 100 0 0 100 "select $1" - )); DESCR("convert (noop)"); -DATA(insert OID = 2027 ( timestamp PGUID 12 f t f t 1 f 1114 "1184" 100 0 0 100 timestamptz_timestamp - )); +DATA(insert OID = 2027 ( timestamp 10 PGUID 12 f t f t 1 f 1114 "1184" 100 0 0 100 timestamptz_timestamp -)); DESCR("convert date and time with time zone to timestamp"); -DATA(insert OID = 2028 ( timestamptz PGUID 12 f t f t 1 f 1184 "1114" 100 0 0 100 timestamp_timestamptz - )); +DATA(insert OID = 2028 ( timestamptz 10 PGUID 12 f t f t 1 f 1184 "1114" 100 0 0 100 timestamp_timestamptz - )); DESCR("convert date and time with time zone to timestamp"); -DATA(insert OID = 2029 ( date PGUID 12 f t t t 1 f 1082 "1114" 100 0 0 100 timestamp_date - )); +DATA(insert OID = 2029 ( date 10 PGUID 12 f t t t 1 f 1082 "1114" 100 0 0 100 timestamp_date - )); DESCR("convert timestamp to date"); -DATA(insert OID = 2030 ( abstime PGUID 12 f t f t 1 f 702 "1114" 100 0 0 100 timestamp_abstime - )); +DATA(insert OID = 2030 ( abstime 10 PGUID 12 f t f t 1 f 702 "1114" 100 0 0 100 timestamp_abstime - )); DESCR("convert timestamp to abstime"); -DATA(insert OID = 2031 ( timestamp_mi PGUID 12 f t t t 2 f 1186 "1114 1114" 100 0 0 100 timestamp_mi - )); +DATA(insert OID = 2031 ( timestamp_mi 10 PGUID 12 f t t t 2 f 1186 "1114 1114" 100 0 0 100 timestamp_mi - )); DESCR("subtract"); -DATA(insert OID = 2032 ( timestamp_pl_span PGUID 12 f t t t 2 f 1114 "1114 1186" 100 0 0 100 timestamp_pl_span - )); +DATA(insert OID = 2032 ( timestamp_pl_span 10 PGUID 12 f t t t 2 f 1114 "1114 1186" 100 0 0 100 timestamp_pl_span - )); DESCR("plus"); -DATA(insert OID = 2033 ( timestamp_mi_span PGUID 12 f t t t 2 f 1114 "1114 1186" 100 0 0 100 timestamp_mi_span - )); +DATA(insert OID = 2033 ( timestamp_mi_span 10 PGUID 12 f t t t 2 f 1114 "1114 1186" 100 0 0 100 timestamp_mi_span - )); DESCR("minus"); -DATA(insert OID = 2034 ( text PGUID 12 f t f t 1 f 25 "1114" 100 0 0 100 timestamp_text - )); +DATA(insert OID = 2034 ( text 10 PGUID 12 f t f t 1 f 25 "1114" 100 0 0 100 timestamp_text - )); DESCR("convert timestamp to text"); -DATA(insert OID = 2035 ( timestamp_smaller PGUID 12 f t t t 2 f 1114 "1114 1114" 100 0 0 100 timestamp_smaller - )); +DATA(insert OID = 2035 ( timestamp_smaller 10 PGUID 12 f t t t 2 f 1114 "1114 1114" 100 0 0 100 timestamp_smaller - )); DESCR("smaller of two"); -DATA(insert OID = 2036 ( timestamp_larger PGUID 12 f t t t 2 f 1114 "1114 1114" 100 0 0 100 timestamp_larger - )); +DATA(insert OID = 2036 ( timestamp_larger 10 PGUID 12 f t t t 2 f 1114 "1114 1114" 100 0 0 100 timestamp_larger - )); DESCR("larger of two"); -DATA(insert OID = 2037 ( timetz PGUID 12 f t f t 2 f 1266 "25 1266" 100 0 0 100 timetz_zone - )); +DATA(insert OID = 2037 ( timetz 10 PGUID 12 f t f t 2 f 1266 "25 1266" 100 0 0 100 timetz_zone - )); DESCR("time with time zone"); -DATA(insert OID = 2038 ( timetz PGUID 12 f t t t 2 f 1266 "1186 1266" 100 0 0 100 timetz_izone - )); +DATA(insert OID = 2038 ( timetz 10 PGUID 12 f t t t 2 f 1266 "1186 1266" 100 0 0 100 timetz_izone - )); DESCR("time with time zone"); -DATA(insert OID = 2041 ( overlaps PGUID 12 f t t f 4 f 16 "1114 1114 1114 1114" 100 0 0 100 overlaps_timestamp- )); +DATA(insert OID = 2041 ( overlaps 10 PGUID 12 f t t f 4 f 16 "1114 1114 1114 1114" 100 0 0 100 overlaps_timestamp- )); DESCR("SQL92 interval comparison"); -DATA(insert OID = 2042 ( overlaps PGUID 14 f t t f 4 f 16 "1114 1186 1114 1186" 100 0 0 100 "select ($1, ($1+ $2)) overlaps ($3, ($3 + $4))" - )); +DATA(insert OID = 2042 ( overlaps 10 PGUID 14 f t t f 4 f 16 "1114 1186 1114 1186" 100 0 0 100 "select ($1,($1 + $2)) overlaps ($3, ($3 + $4))" - )); DESCR("SQL92 interval comparison"); -DATA(insert OID = 2043 ( overlaps PGUID 14 f t t f 4 f 16 "1114 1114 1114 1186" 100 0 0 100 "select ($1, $2)overlaps ($3, ($3 + $4))" - )); +DATA(insert OID = 2043 ( overlaps 10 PGUID 14 f t t f 4 f 16 "1114 1114 1114 1186" 100 0 0 100 "select ($1,$2) overlaps ($3, ($3 + $4))" - )); DESCR("SQL92 interval comparison"); -DATA(insert OID = 2044 ( overlaps PGUID 14 f t t f 4 f 16 "1114 1186 1114 1114" 100 0 0 100 "select ($1, ($1+ $2)) overlaps ($3, $4)" - )); +DATA(insert OID = 2044 ( overlaps 10 PGUID 14 f t t f 4 f 16 "1114 1186 1114 1114" 100 0 0 100 "select ($1,($1 + $2)) overlaps ($3, $4)" - )); DESCR("SQL92 interval comparison"); -DATA(insert OID = 2045 ( timestamp_cmp PGUID 12 f t t t 2 f 23 "1114 1114" 100 0 0 100 timestamp_cmp - )); +DATA(insert OID = 2045 ( timestamp_cmp 10 PGUID 12 f t t t 2 f 23 "1114 1114" 100 0 0 100 timestamp_cmp - )); DESCR("less-equal-greater"); -DATA(insert OID = 2046 ( time PGUID 12 f t t t 1 f 1083 "1266" 100 0 0 100 timetz_time - )); +DATA(insert OID = 2046 ( time 10 PGUID 12 f t t t 1 f 1083 "1266" 100 0 0 100 timetz_time - )); DESCR("convert time with time zone to time"); -DATA(insert OID = 2047 ( timetz PGUID 12 f t f t 1 f 1266 "1083" 100 0 0 100 time_timetz - )); +DATA(insert OID = 2047 ( timetz 10 PGUID 12 f t f t 1 f 1266 "1083" 100 0 0 100 time_timetz - )); DESCR("convert time to timetz"); -DATA(insert OID = 2048 ( isfinite PGUID 12 f t t t 1 f 16 "1114" 100 0 0 100 timestamp_finite - )); +DATA(insert OID = 2048 ( isfinite 10 PGUID 12 f t t t 1 f 16 "1114" 100 0 0 100 timestamp_finite - )); DESCR("boolean test"); -DATA(insert OID = 2049 ( to_char PGUID 12 f t f t 2 f 25 "1114 25" 100 0 0 100 timestamp_to_char - )); +DATA(insert OID = 2049 ( to_char 10 PGUID 12 f t f t 2 f 25 "1114 25" 100 0 0 100 timestamp_to_char - )); DESCR("format timestamp to text"); -DATA(insert OID = 2050 ( interval_mi_time PGUID 14 f t t t 2 f 1083 "1186 1083" 100 0 0 100 "select $2 - $1" - )); +DATA(insert OID = 2050 ( interval_mi_time 10 PGUID 14 f t t t 2 f 1083 "1186 1083" 100 0 0 100 "select $2 - $1" - )); DESCR("minus"); -DATA(insert OID = 2051 ( interval_mi_timetz PGUID 14 f t t t 2 f 1266 "1186 1266" 100 0 0 100 "select $2 - $1" - )); +DATA(insert OID = 2051 ( interval_mi_timetz 10 PGUID 14 f t t t 2 f 1266 "1186 1266" 100 0 0 100 "select $2 - $1" -)); DESCR("minus"); -DATA(insert OID = 2052 ( timestamp_eq PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100 timestamp_eq - )); +DATA(insert OID = 2052 ( timestamp_eq 10 PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100 timestamp_eq - )); DESCR("equal"); -DATA(insert OID = 2053 ( timestamp_ne PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100 timestamp_ne - )); +DATA(insert OID = 2053 ( timestamp_ne 10 PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100 timestamp_ne - )); DESCR("not equal"); -DATA(insert OID = 2054 ( timestamp_lt PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100 timestamp_lt - )); +DATA(insert OID = 2054 ( timestamp_lt 10 PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100 timestamp_lt - )); DESCR("less-than"); -DATA(insert OID = 2055 ( timestamp_le PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100 timestamp_le - )); +DATA(insert OID = 2055 ( timestamp_le 10 PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100 timestamp_le - )); DESCR("less-than-or-equal"); -DATA(insert OID = 2056 ( timestamp_ge PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100 timestamp_ge - )); +DATA(insert OID = 2056 ( timestamp_ge 10 PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100 timestamp_ge - )); DESCR("greater-than-or-equal"); -DATA(insert OID = 2057 ( timestamp_gt PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100 timestamp_gt - )); +DATA(insert OID = 2057 ( timestamp_gt 10 PGUID 12 f t t t 2 f 16 "1114 1114" 100 0 0 100 timestamp_gt - )); DESCR("greater-than"); -DATA(insert OID = 2058 ( age PGUID 12 f t t t 2 f 1186 "1114 1114" 100 0 0 100 timestamp_age - )); +DATA(insert OID = 2058 ( age 10 PGUID 12 f t t t 2 f 1186 "1114 1114" 100 0 0 100 timestamp_age - )); DESCR("date difference preserving months and years"); -DATA(insert OID = 2059 ( age PGUID 14 f t f t 1 f 1186 "1114" 100 0 0 100 "select age(cast(current_dateas timestamp without time zone), $1)" - )); +DATA(insert OID = 2059 ( age 10 PGUID 14 f t f t 1 f 1186 "1114" 100 0 0 100 "select age(cast(current_dateas timestamp without time zone), $1)" - )); DESCR("date difference from today preserving months and years"); -DATA(insert OID = 2069 ( timezone PGUID 12 f t f t 2 f 1184 "25 1114" 100 0 0 100 timestamp_zone - )); +DATA(insert OID = 2069 ( timezone 10 PGUID 12 f t f t 2 f 1184 "25 1114" 100 0 0 100 timestamp_zone - )); DESCR("time zone"); -DATA(insert OID = 2070 ( timezone PGUID 12 f t f t 2 f 1184 "1186 1114" 100 0 0 100 timestamp_izone - )); +DATA(insert OID = 2070 ( timezone 10 PGUID 12 f t f t 2 f 1184 "1186 1114" 100 0 0 100 timestamp_izone - )); DESCR("time zone"); @@ -2869,6 +2871,7 @@ * prototypes for functions pg_proc.c */ extern Oid ProcedureCreate(char *procedureName, + Oid packId, bool replace, bool returnsSet, char *returnTypeName, Index: src/include/catalog/pg_type.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/catalog/pg_type.h,v retrieving revision 1.112 diff -u -r1.112 pg_type.h --- src/include/catalog/pg_type.h 2001/09/28 08:09:14 1.112 +++ src/include/catalog/pg_type.h 2001/10/17 16:42:01 @@ -39,6 +39,7 @@ CATALOG(pg_type) BOOTSTRAP { NameData typname; + Oid typpack; int4 typowner; /* @@ -158,24 +159,25 @@ * compiler constants for pg_type * ---------------- */ -#define Natts_pg_type 17 +#define Natts_pg_type 18 #define Anum_pg_type_typname 1 -#define Anum_pg_type_typowner 2 -#define Anum_pg_type_typlen 3 -#define Anum_pg_type_typprtlen 4 -#define Anum_pg_type_typbyval 5 -#define Anum_pg_type_typtype 6 -#define Anum_pg_type_typisdefined 7 -#define Anum_pg_type_typdelim 8 -#define Anum_pg_type_typrelid 9 -#define Anum_pg_type_typelem 10 -#define Anum_pg_type_typinput 11 -#define Anum_pg_type_typoutput 12 -#define Anum_pg_type_typreceive 13 -#define Anum_pg_type_typsend 14 -#define Anum_pg_type_typalign 15 -#define Anum_pg_type_typstorage 16 -#define Anum_pg_type_typdefault 17 +#define Anum_pg_type_typpack 2 +#define Anum_pg_type_typowner 3 +#define Anum_pg_type_typlen 4 +#define Anum_pg_type_typprtlen 5 +#define Anum_pg_type_typbyval 6 +#define Anum_pg_type_typtype 7 +#define Anum_pg_type_typisdefined 8 +#define Anum_pg_type_typdelim 9 +#define Anum_pg_type_typrelid 10 +#define Anum_pg_type_typelem 11 +#define Anum_pg_type_typinput 12 +#define Anum_pg_type_typoutput 13 +#define Anum_pg_type_typreceive 14 +#define Anum_pg_type_typsend 15 +#define Anum_pg_type_typalign 16 +#define Anum_pg_type_typstorage 17 +#define Anum_pg_type_typdefault 18 /* ---------------- * initial contents of pg_type @@ -190,82 +192,82 @@ */ /* OIDS 1 - 99 */ -DATA(insert OID = 16 ( bool PGUID 1 1 t b t \054 0 0 boolin boolout boolin boolout c p _null_ )); +DATA(insert OID = 16 ( bool 10 PGUID 1 1 t b t \054 0 0 boolin boolout boolin boolout c p _null_ )); DESCR("boolean, 'true'/'false'"); #define BOOLOID 16 -DATA(insert OID = 17 ( bytea PGUID -1 -1 f b t \054 0 0 byteain byteaout byteain byteaout i x _null_ )); +DATA(insert OID = 17 ( bytea 10 PGUID -1 -1 f b t \054 0 0 byteain byteaout byteain byteaout i x _null_ )); DESCR("variable-length string, binary values escaped"); #define BYTEAOID 17 -DATA(insert OID = 18 ( char PGUID 1 1 t b t \054 0 0 charin charout charin charout c p _null_ )); +DATA(insert OID = 18 ( char 10 PGUID 1 1 t b t \054 0 0 charin charout charin charout c p _null_ )); DESCR("single character"); #define CHAROID 18 -DATA(insert OID = 19 ( name PGUID NAMEDATALEN NAMEDATALEN f b t \054 0 18 namein nameout namein nameout i p_null_ )); +DATA(insert OID = 19 ( name 10 PGUID NAMEDATALEN NAMEDATALEN f b t \054 0 18 namein nameout namein nameouti p _null_ )); DESCR("31-character type for storing system identifiers"); #define NAMEOID 19 -DATA(insert OID = 20 ( int8 PGUID 8 20 f b t \054 0 0 int8in int8out int8in int8out d p _null_ )); +DATA(insert OID = 20 ( int8 10 PGUID 8 20 f b t \054 0 0 int8in int8out int8in int8out d p _null_ )); DESCR("~18 digit integer, 8-byte storage"); #define INT8OID 20 -DATA(insert OID = 21 ( int2 PGUID 2 5 t b t \054 0 0 int2in int2out int2in int2out s p _null_ )); +DATA(insert OID = 21 ( int2 10 PGUID 2 5 t b t \054 0 0 int2in int2out int2in int2out s p _null_ )); DESCR("-32 thousand to 32 thousand, 2-byte storage"); #define INT2OID 21 -DATA(insert OID = 22 ( int2vector PGUID INDEX_MAX_KEYS*2 -1 f b t \054 0 21 int2vectorin int2vectorout int2vectorinint2vectorout i p _null_ )); +DATA(insert OID = 22 ( int2vector 10 PGUID INDEX_MAX_KEYS*2 -1 f b t \054 0 21 int2vectorin int2vectorout int2vectorinint2vectorout i p _null_ )); DESCR("array of INDEX_MAX_KEYS int2 integers, used in system tables"); #define INT2VECTOROID 22 -DATA(insert OID = 23 ( int4 PGUID 4 10 t b t \054 0 0 int4in int4out int4in int4out i p _null_ )); +DATA(insert OID = 23 ( int4 10 PGUID 4 10 t b t \054 0 0 int4in int4out int4in int4out i p _null_ )); DESCR("-2 billion to 2 billion integer, 4-byte storage"); #define INT4OID 23 -DATA(insert OID = 24 ( regproc PGUID 4 16 t b t \054 0 0 regprocin regprocout regprocin regprocout i p _null_)); +DATA(insert OID = 24 ( regproc 10 PGUID 4 16 t b t \054 0 0 regprocin regprocout regprocin regprocout i p _null_)); DESCR("registered procedure"); #define REGPROCOID 24 -DATA(insert OID = 25 ( text PGUID -1 -1 f b t \054 0 0 textin textout textin textout i x _null_ )); +DATA(insert OID = 25 ( text 10 PGUID -1 -1 f b t \054 0 0 textin textout textin textout i x _null_ )); DESCR("variable-length string, no limit specified"); #define TEXTOID 25 -DATA(insert OID = 26 ( oid PGUID 4 10 t b t \054 0 0 oidin oidout oidin oidout i p _null_ )); +DATA(insert OID = 26 ( oid 10 PGUID 4 10 t b t \054 0 0 oidin oidout oidin oidout i p _null_ )); DESCR("object identifier(oid), maximum 4 billion"); #define OIDOID 26 -DATA(insert OID = 27 ( tid PGUID 6 19 f b t \054 0 0 tidin tidout tidin tidout i p _null_ )); +DATA(insert OID = 27 ( tid 10 PGUID 6 19 f b t \054 0 0 tidin tidout tidin tidout i p _null_ )); DESCR("(Block, offset), physical location of tuple"); #define TIDOID 27 -DATA(insert OID = 28 ( xid PGUID 4 12 t b t \054 0 0 xidin xidout xidin xidout i p _null_ )); +DATA(insert OID = 28 ( xid 10 PGUID 4 12 t b t \054 0 0 xidin xidout xidin xidout i p _null_ )); DESCR("transaction id"); #define XIDOID 28 -DATA(insert OID = 29 ( cid PGUID 4 10 t b t \054 0 0 cidin cidout cidin cidout i p _null_ )); +DATA(insert OID = 29 ( cid 10 PGUID 4 10 t b t \054 0 0 cidin cidout cidin cidout i p _null_ )); DESCR("command identifier type, sequence in transaction id"); #define CIDOID 29 -DATA(insert OID = 30 ( oidvector PGUID INDEX_MAX_KEYS*4 -1 f b t \054 0 26 oidvectorin oidvectorout oidvectorin oidvectorouti p _null_ )); +DATA(insert OID = 30 ( oidvector 10 PGUID INDEX_MAX_KEYS*4 -1 f b t \054 0 26 oidvectorin oidvectorout oidvectorinoidvectorout i p _null_ )); DESCR("array of INDEX_MAX_KEYS oids, used in system tables"); #define OIDVECTOROID 30 -DATA(insert OID = 32 ( SET PGUID -1 -1 f b t \054 0 0 textin textout textin textout i p _null_ )); +DATA(insert OID = 32 ( SET 10 PGUID -1 -1 f b t \054 0 0 textin textout textin textout i p _null_ )); DESCR("set of tuples"); -DATA(insert OID = 71 ( pg_type PGUID 4 4 t c t \054 1247 0 int4in int4out int4in int4out i p _null_)); -DATA(insert OID = 75 ( pg_attribute PGUID 4 4 t c t \054 1249 0 int4in int4out int4in int4out i p _null_)); -DATA(insert OID = 81 ( pg_proc PGUID 4 4 t c t \054 1255 0 int4in int4out int4in int4out i p _null_)); -DATA(insert OID = 83 ( pg_class PGUID 4 4 t c t \054 1259 0 int4in int4out int4in int4out i p _null_)); -DATA(insert OID = 86 ( pg_shadow PGUID 4 4 t c t \054 1260 0 int4in int4out int4in int4out i p _null_)); -DATA(insert OID = 87 ( pg_group PGUID 4 4 t c t \054 1261 0 int4in int4out int4in int4out i p _null_)); -DATA(insert OID = 88 ( pg_database PGUID 4 4 t c t \054 1262 0 int4in int4out int4in int4out i p _null_)); +DATA(insert OID = 71 ( pg_type 10 PGUID 4 4 t c t \054 1247 0 int4in int4out int4in int4out i p _null_)); +DATA(insert OID = 75 ( pg_attribute 10 PGUID 4 4 t c t \054 1249 0 int4in int4out int4in int4out i p _null_)); +DATA(insert OID = 81 ( pg_proc 10 PGUID 4 4 t c t \054 1255 0 int4in int4out int4in int4out i p _null_)); +DATA(insert OID = 83 ( pg_class 10 PGUID 4 4 t c t \054 1259 0 int4in int4out int4in int4out i p _null_)); +DATA(insert OID = 86 ( pg_shadow 10 PGUID 4 4 t c t \054 1260 0 int4in int4out int4in int4out i p _null_)); +DATA(insert OID = 87 ( pg_group 10 PGUID 4 4 t c t \054 1261 0 int4in int4out int4in int4out i p _null_)); +DATA(insert OID = 88 ( pg_database 10 PGUID 4 4 t c t \054 1262 0 int4in int4out int4in int4out i p _null_)); /* OIDS 100 - 199 */ /* OIDS 200 - 299 */ -DATA(insert OID = 210 ( smgr PGUID 2 12 t b t \054 0 0 smgrin smgrout smgrin smgrout s p _null_ )); +DATA(insert OID = 210 ( smgr 10 PGUID 2 12 t b t \054 0 0 smgrin smgrout smgrin smgrout s p _null_ )); DESCR("storage manager"); /* OIDS 300 - 399 */ @@ -275,167 +277,167 @@ /* OIDS 500 - 599 */ /* OIDS 600 - 699 */ -DATA(insert OID = 600 ( point PGUID 16 24 f b t \054 0 701 point_in point_out point_in point_out d p _null_ )); +DATA(insert OID = 600 ( point 10 PGUID 16 24 f b t \054 0 701 point_in point_out point_in point_out d p _null_ )); DESCR("geometric point '(x, y)'"); #define POINTOID 600 -DATA(insert OID = 601 ( lseg PGUID 32 48 f b t \054 0 600 lseg_in lseg_out lseg_in lseg_out d p _null_ )); +DATA(insert OID = 601 ( lseg 10 PGUID 32 48 f b t \054 0 600 lseg_in lseg_out lseg_in lseg_out d p _null_ )); DESCR("geometric line segment '(pt1,pt2)'"); #define LSEGOID 601 -DATA(insert OID = 602 ( path PGUID -1 -1 f b t \054 0 0 path_in path_out path_in path_out d x _null_ )); +DATA(insert OID = 602 ( path 10 PGUID -1 -1 f b t \054 0 0 path_in path_out path_in path_out d x _null_ )); DESCR("geometric path '(pt1,...)'"); #define PATHOID 602 -DATA(insert OID = 603 ( box PGUID 32 100 f b t \073 0 600 box_in box_out box_in box_out d p _null_ )); +DATA(insert OID = 603 ( box 10 PGUID 32 100 f b t \073 0 600 box_in box_out box_in box_out d p _null_ )); DESCR("geometric box '(lower left,upper right)'"); #define BOXOID 603 -DATA(insert OID = 604 ( polygon PGUID -1 -1 f b t \054 0 0 poly_in poly_out poly_in poly_out d x _null_ )); +DATA(insert OID = 604 ( polygon 10 PGUID -1 -1 f b t \054 0 0 poly_in poly_out poly_in poly_out d x _null_ )); DESCR("geometric polygon '(pt1,...)'"); #define POLYGONOID 604 -DATA(insert OID = 628 ( line PGUID 32 48 f b t \054 0 701 line_in line_out line_in line_out d p _null_ )); +DATA(insert OID = 628 ( line 10 PGUID 32 48 f b t \054 0 701 line_in line_out line_in line_out d p _null_ )); DESCR("geometric line '(pt1,pt2)'"); #define LINEOID 628 -DATA(insert OID = 629 ( _line PGUID -1 -1 f b t \054 0 628 array_in array_out array_in array_out d x _null_ )); +DATA(insert OID = 629 ( _line 10 PGUID -1 -1 f b t \054 0 628 array_in array_out array_in array_out d x _null_ )); DESCR(""); /* OIDS 700 - 799 */ -DATA(insert OID = 700 ( float4 PGUID 4 12 f b t \054 0 0 float4in float4out float4in float4out i p _null_ )); +DATA(insert OID = 700 ( float4 10 PGUID 4 12 f b t \054 0 0 float4in float4out float4in float4out i p _null_ )); DESCR("single-precision floating point number, 4-byte storage"); #define FLOAT4OID 700 -DATA(insert OID = 701 ( float8 PGUID 8 24 f b t \054 0 0 float8in float8out float8in float8out d p _null_ )); +DATA(insert OID = 701 ( float8 10 PGUID 8 24 f b t \054 0 0 float8in float8out float8in float8out d p _null_ )); DESCR("double-precision floating point number, 8-byte storage"); #define FLOAT8OID 701 -DATA(insert OID = 702 ( abstime PGUID 4 20 t b t \054 0 0 nabstimein nabstimeout nabstimein nabstimeout i p _null_)); +DATA(insert OID = 702 ( abstime 10 PGUID 4 20 t b t \054 0 0 nabstimein nabstimeout nabstimein nabstimeout i p _null_)); DESCR("absolute, limited-range date and time (Unix system time)"); #define ABSTIMEOID 702 -DATA(insert OID = 703 ( reltime PGUID 4 20 t b t \054 0 0 reltimein reltimeout reltimein reltimeout i p _null_ )); +DATA(insert OID = 703 ( reltime 10 PGUID 4 20 t b t \054 0 0 reltimein reltimeout reltimein reltimeout i p _null_)); DESCR("relative, limited-range time interval (Unix delta time)"); #define RELTIMEOID 703 -DATA(insert OID = 704 ( tinterval PGUID 12 47 f b t \054 0 0 tintervalin tintervalout tintervalin tintervalout i p _null_)); +DATA(insert OID = 704 ( tinterval 10 PGUID 12 47 f b t \054 0 0 tintervalin tintervalout tintervalin tintervalout ip _null_ )); DESCR("(abstime,abstime), time interval"); #define TINTERVALOID 704 -DATA(insert OID = 705 ( unknown PGUID -1 -1 f b t \054 0 0 textin textout textin textout i p _null_ )); +DATA(insert OID = 705 ( unknown 10 PGUID -1 -1 f b t \054 0 0 textin textout textin textout i p _null_ )); DESCR(""); #define UNKNOWNOID 705 -DATA(insert OID = 718 ( circle PGUID 24 47 f b t \054 0 0 circle_in circle_out circle_in circle_out d p _null_ )); +DATA(insert OID = 718 ( circle 10 PGUID 24 47 f b t \054 0 0 circle_in circle_out circle_in circle_out d p _null_)); DESCR("geometric circle '(center,radius)'"); #define CIRCLEOID 718 -DATA(insert OID = 719 ( _circle PGUID -1 -1 f b t \054 0 718 array_in array_out array_in array_out d x _null_ )); -DATA(insert OID = 790 ( money PGUID 4 24 f b t \054 0 0 cash_in cash_out cash_in cash_out i p _null_ )); +DATA(insert OID = 719 ( _circle 10 PGUID -1 -1 f b t \054 0 718 array_in array_out array_in array_out d x _null_ )); +DATA(insert OID = 790 ( money 10 PGUID 4 24 f b t \054 0 0 cash_in cash_out cash_in cash_out i p _null_ )); DESCR("$d,ddd.cc, money"); #define CASHOID 790 -DATA(insert OID = 791 ( _money PGUID -1 -1 f b t \054 0 790 array_in array_out array_in array_out i x _null_ )); +DATA(insert OID = 791 ( _money 10 PGUID -1 -1 f b t \054 0 790 array_in array_out array_in array_out i x _null_ )); /* OIDS 800 - 899 */ -DATA(insert OID = 829 ( macaddr PGUID 6 -1 f b t \054 0 0 macaddr_in macaddr_out macaddr_in macaddr_out i p _null_ )); +DATA(insert OID = 829 ( macaddr 10 PGUID 6 -1 f b t \054 0 0 macaddr_in macaddr_out macaddr_in macaddr_out i p _null_)); DESCR("XX:XX:XX:XX:XX:XX, MAC address"); #define MACADDROID 829 -DATA(insert OID = 869 ( inet PGUID -1 -1 f b t \054 0 0 inet_in inet_out inet_in inet_out i p _null_ )); +DATA(insert OID = 869 ( inet 10 PGUID -1 -1 f b t \054 0 0 inet_in inet_out inet_in inet_out i p _null_ )); DESCR("IP address/netmask, host address, netmask optional"); #define INETOID 869 -DATA(insert OID = 650 ( cidr PGUID -1 -1 f b t \054 0 0 cidr_in cidr_out cidr_in cidr_out i p _null_ )); +DATA(insert OID = 650 ( cidr 10 PGUID -1 -1 f b t \054 0 0 cidr_in cidr_out cidr_in cidr_out i p _null_ )); DESCR("network IP address/netmask, network address"); #define CIDROID 650 /* OIDS 900 - 999 */ /* OIDS 1000 - 1099 */ -DATA(insert OID = 1000 ( _bool PGUID -1 -1 f b t \054 0 16 array_in array_out array_in array_out i x _null_)); -DATA(insert OID = 1001 ( _bytea PGUID -1 -1 f b t \054 0 17 array_in array_out array_in array_out i x _null_ )); -DATA(insert OID = 1002 ( _char PGUID -1 -1 f b t \054 0 18 array_in array_out array_in array_out i x _null_)); -DATA(insert OID = 1003 ( _name PGUID -1 -1 f b t \054 0 19 array_in array_out array_in array_out i x _null_)); -DATA(insert OID = 1005 ( _int2 PGUID -1 -1 f b t \054 0 21 array_in array_out array_in array_out i x _null_)); -DATA(insert OID = 1006 ( _int2vector PGUID -1 -1 f b t \054 0 22 array_in array_out array_in array_out i x _null_ )); -DATA(insert OID = 1007 ( _int4 PGUID -1 -1 f b t \054 0 23 array_in array_out array_in array_out i x _null_)); -DATA(insert OID = 1008 ( _regproc PGUID -1 -1 f b t \054 0 24 array_in array_out array_in array_out i x _null_)); -DATA(insert OID = 1009 ( _text PGUID -1 -1 f b t \054 0 25 array_in array_out array_in array_out i x _null_)); -DATA(insert OID = 1028 ( _oid PGUID -1 -1 f b t \054 0 26 array_in array_out array_in array_out i x _null_)); -DATA(insert OID = 1010 ( _tid PGUID -1 -1 f b t \054 0 27 array_in array_out array_in array_out i x _null_)); -DATA(insert OID = 1011 ( _xid PGUID -1 -1 f b t \054 0 28 array_in array_out array_in array_out i x _null_)); -DATA(insert OID = 1012 ( _cid PGUID -1 -1 f b t \054 0 29 array_in array_out array_in array_out i x _null_)); -DATA(insert OID = 1013 ( _oidvector PGUID -1 -1 f b t \054 0 30 array_in array_out array_in array_out i x _null_ )); -DATA(insert OID = 1014 ( _bpchar PGUID -1 -1 f b t \054 0 1042 array_in array_out array_in array_out i x _null_ )); -DATA(insert OID = 1015 ( _varchar PGUID -1 -1 f b t \054 0 1043 array_in array_out array_in array_out i x _null_ )); -DATA(insert OID = 1016 ( _int8 PGUID -1 -1 f b t \054 0 20 array_in array_out array_in array_out d x _null_)); -DATA(insert OID = 1017 ( _point PGUID -1 -1 f b t \054 0 600 array_in array_out array_in array_out d x _null_ )); -DATA(insert OID = 1018 ( _lseg PGUID -1 -1 f b t \054 0 601 array_in array_out array_in array_out d x _null_ )); -DATA(insert OID = 1019 ( _path PGUID -1 -1 f b t \054 0 602 array_in array_out array_in array_out d x _null_ )); -DATA(insert OID = 1020 ( _box PGUID -1 -1 f b t \073 0 603 array_in array_out array_in array_out d x _null_ )); -DATA(insert OID = 1021 ( _float4 PGUID -1 -1 f b t \054 0 700 array_in array_out array_in array_out i x _null_ )); -DATA(insert OID = 1022 ( _float8 PGUID -1 -1 f b t \054 0 701 array_in array_out array_in array_out d x _null_ )); -DATA(insert OID = 1023 ( _abstime PGUID -1 -1 f b t \054 0 702 array_in array_out array_in array_out i x _null_ )); -DATA(insert OID = 1024 ( _reltime PGUID -1 -1 f b t \054 0 703 array_in array_out array_in array_out i x _null_ )); -DATA(insert OID = 1025 ( _tinterval PGUID -1 -1 f b t \054 0 704 array_in array_out array_in array_out i x _null_ )); -DATA(insert OID = 1027 ( _polygon PGUID -1 -1 f b t \054 0 604 array_in array_out array_in array_out d x _null_ )); +DATA(insert OID = 1000 ( _bool 10 PGUID -1 -1 f b t \054 0 16 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1001 ( _bytea 10 PGUID -1 -1 f b t \054 0 17 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1002 ( _char 10 PGUID -1 -1 f b t \054 0 18 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1003 ( _name 10 PGUID -1 -1 f b t \054 0 19 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1005 ( _int2 10 PGUID -1 -1 f b t \054 0 21 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1006 ( _int2vector 10 PGUID -1 -1 f b t \054 0 22 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1007 ( _int4 10 PGUID -1 -1 f b t \054 0 23 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1008 ( _regproc 10 PGUID -1 -1 f b t \054 0 24 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1009 ( _text 10 PGUID -1 -1 f b t \054 0 25 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1028 ( _oid 10 PGUID -1 -1 f b t \054 0 26 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1010 ( _tid 10 PGUID -1 -1 f b t \054 0 27 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1011 ( _xid 10 PGUID -1 -1 f b t \054 0 28 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1012 ( _cid 10 PGUID -1 -1 f b t \054 0 29 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1013 ( _oidvector 10 PGUID -1 -1 f b t \054 0 30 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1014 ( _bpchar 10 PGUID -1 -1 f b t \054 0 1042 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1015 ( _varchar 10 PGUID -1 -1 f b t \054 0 1043 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1016 ( _int8 10 PGUID -1 -1 f b t \054 0 20 array_in array_out array_in array_out d x _null_)); +DATA(insert OID = 1017 ( _point 10 PGUID -1 -1 f b t \054 0 600 array_in array_out array_in array_out d x _null_ )); +DATA(insert OID = 1018 ( _lseg 10 PGUID -1 -1 f b t \054 0 601 array_in array_out array_in array_out d x _null_)); +DATA(insert OID = 1019 ( _path 10 PGUID -1 -1 f b t \054 0 602 array_in array_out array_in array_out d x _null_)); +DATA(insert OID = 1020 ( _box 10 PGUID -1 -1 f b t \073 0 603 array_in array_out array_in array_out d x _null_)); +DATA(insert OID = 1021 ( _float4 10 PGUID -1 -1 f b t \054 0 700 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1022 ( _float8 10 PGUID -1 -1 f b t \054 0 701 array_in array_out array_in array_out d x _null_)); +DATA(insert OID = 1023 ( _abstime 10 PGUID -1 -1 f b t \054 0 702 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1024 ( _reltime 10 PGUID -1 -1 f b t \054 0 703 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1025 ( _tinterval 10 PGUID -1 -1 f b t \054 0 704 array_in array_out array_in array_out i x _null_ )); +DATA(insert OID = 1027 ( _polygon 10 PGUID -1 -1 f b t \054 0 604 array_in array_out array_in array_out d x _null_)); /* * Note: the size of aclitem needs to match sizeof(AclItem) in acl.h. * Thanks to some padding, this will be 8 on all platforms. * We also have an Assert to make sure. */ #define ACLITEMSIZE 8 -DATA(insert OID = 1033 ( aclitem PGUID 8 -1 f b t \054 0 0 aclitemin aclitemout aclitemin aclitemout i p _null_ )); +DATA(insert OID = 1033 ( aclitem 10 PGUID 8 -1 f b t \054 0 0 aclitemin aclitemout aclitemin aclitemout i p _null_)); DESCR("access control list"); -DATA(insert OID = 1034 ( _aclitem PGUID -1 -1 f b t \054 0 1033 array_in array_out array_in array_out i x _null_ )); -DATA(insert OID = 1040 ( _macaddr PGUID -1 -1 f b t \054 0 829 array_in array_out array_in array_out i x _null_ )); -DATA(insert OID = 1041 ( _inet PGUID -1 -1 f b t \054 0 869 array_in array_out array_in array_out i x _null_ )); -DATA(insert OID = 651 ( _cidr PGUID -1 -1 f b t \054 0 650 array_in array_out array_in array_out i x _null_ )); -DATA(insert OID = 1042 ( bpchar PGUID -1 -1 f b t \054 0 0 bpcharin bpcharout bpcharin bpcharout i x _null_)); +DATA(insert OID = 1034 ( _aclitem 10 PGUID -1 -1 f b t \054 0 1033 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1040 ( _macaddr 10 PGUID -1 -1 f b t \054 0 829 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1041 ( _inet 10 PGUID -1 -1 f b t \054 0 869 array_in array_out array_in array_out i x _null_ )); +DATA(insert OID = 651 ( _cidr 10 PGUID -1 -1 f b t \054 0 650 array_in array_out array_in array_out i x _null_ )); +DATA(insert OID = 1042 ( bpchar 10 PGUID -1 -1 f b t \054 0 0 bpcharin bpcharout bpcharin bpcharout i x _null_)); DESCR("char(length), blank-padded string, fixed storage length"); #define BPCHAROID 1042 -DATA(insert OID = 1043 ( varchar PGUID -1 -1 f b t \054 0 0 varcharin varcharout varcharin varcharout i x _null_)); +DATA(insert OID = 1043 ( varchar 10 PGUID -1 -1 f b t \054 0 0 varcharin varcharout varcharin varcharout i x _null_)); DESCR("varchar(length), non-blank-padded string, variable storage length"); #define VARCHAROID 1043 -DATA(insert OID = 1082 ( date PGUID 4 10 t b t \054 0 0 date_in date_out date_in date_out i p _null_ )); +DATA(insert OID = 1082 ( date 10 PGUID 4 10 t b t \054 0 0 date_in date_out date_in date_out i p _null_ )); DESCR("ANSI SQL date"); #define DATEOID 1082 -DATA(insert OID = 1083 ( time PGUID 8 16 f b t \054 0 0 time_in time_out time_in time_out d p _null_ )); +DATA(insert OID = 1083 ( time 10 PGUID 8 16 f b t \054 0 0 time_in time_out time_in time_out d p _null_ )); DESCR("hh:mm:ss, ANSI SQL time"); #define TIMEOID 1083 /* OIDS 1100 - 1199 */ -DATA(insert OID = 1114 ( timestamp PGUID 8 47 f b t \054 0 0 timestamp_in timestamp_out timestamp_in timestamp_outd p _null_ )); +DATA(insert OID = 1114 ( timestamp 10 PGUID 8 47 f b t \054 0 0 timestamp_in timestamp_out timestamp_in timestamp_outd p _null_ )); DESCR("date and time"); #define TIMESTAMPOID 1114 -DATA(insert OID = 1115 ( _timestamp PGUID -1 -1 f b t \054 0 1184 array_in array_out array_in array_out d x _null_)); -DATA(insert OID = 1182 ( _date PGUID -1 -1 f b t \054 0 1082 array_in array_out array_in array_out i x _null_)); -DATA(insert OID = 1183 ( _time PGUID -1 -1 f b t \054 0 1083 array_in array_out array_in array_out d x _null_)); -DATA(insert OID = 1184 ( timestamptz PGUID 8 47 f b t \054 0 0 timestamptz_in timestamptz_out timestamptz_in timestamptz_outd p _null_ )); +DATA(insert OID = 1115 ( _timestamp 10 PGUID -1 -1 f b t \054 0 1184 array_in array_out array_in array_out d x _null_)); +DATA(insert OID = 1182 ( _date 10 PGUID -1 -1 f b t \054 0 1082 array_in array_out array_in array_out i x_null_ )); +DATA(insert OID = 1183 ( _time 10 PGUID -1 -1 f b t \054 0 1083 array_in array_out array_in array_out d x_null_ )); +DATA(insert OID = 1184 ( timestamptz 10 PGUID 8 47 f b t \054 0 0 timestamptz_in timestamptz_out timestamptz_in timestamptz_outd p _null_ )); DESCR("date and time with time zone"); #define TIMESTAMPTZOID 1184 -DATA(insert OID = 1185 ( _timestamptz PGUID -1 -1 f b t \054 0 1184 array_in array_out array_in array_out d x _null_)); -DATA(insert OID = 1186 ( interval PGUID 12 47 f b t \054 0 0 interval_in interval_out interval_in interval_out dp _null_ )); +DATA(insert OID = 1185 ( _timestamptz 10 PGUID -1 -1 f b t \054 0 1184 array_in array_out array_in array_out d x _null_)); +DATA(insert OID = 1186 ( interval 10 PGUID 12 47 f b t \054 0 0 interval_in interval_out interval_in interval_outd p _null_ )); DESCR("@ <number> <units>, time interval"); #define INTERVALOID 1186 -DATA(insert OID = 1187 ( _interval PGUID -1 -1 f b t \054 0 1186 array_in array_out array_in array_out d x _null_)); +DATA(insert OID = 1187 ( _interval 10 PGUID -1 -1 f b t \054 0 1186 array_in array_out array_in array_out d x_null_ )); /* OIDS 1200 - 1299 */ -DATA(insert OID = 1231 ( _numeric PGUID -1 -1 f b t \054 0 1700 array_in array_out array_in array_out i x _null_)); -DATA(insert OID = 1266 ( timetz PGUID 12 22 f b t \054 0 0 timetz_in timetz_out timetz_in timetz_out d p _null_)); +DATA(insert OID = 1231 ( _numeric 10 PGUID -1 -1 f b t \054 0 1700 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1266 ( timetz 10 PGUID 12 22 f b t \054 0 0 timetz_in timetz_out timetz_in timetz_out d p_null_ )); DESCR("hh:mm:ss, ANSI SQL time"); #define TIMETZOID 1266 -DATA(insert OID = 1270 ( _timetz PGUID -1 -1 f b t \054 0 1266 array_in array_out array_in array_out d x _null_)); +DATA(insert OID = 1270 ( _timetz 10 PGUID -1 -1 f b t \054 0 1266 array_in array_out array_in array_out d x _null_)); /* OIDS 1500 - 1599 */ -DATA(insert OID = 1560 ( bit PGUID -1 -1 f b t \054 0 0 bit_in bit_out bit_in bit_out i x _null_ )); +DATA(insert OID = 1560 ( bit 10 PGUID -1 -1 f b t \054 0 0 bit_in bit_out bit_in bit_out i x _null_ )); DESCR("fixed-length bit string"); #define BITOID 1560 -DATA(insert OID = 1561 ( _bit PGUID -1 -1 f b t \054 0 1560 array_in array_out array_in array_out i x _null_)); -DATA(insert OID = 1562 ( varbit PGUID -1 -1 f b t \054 0 0 varbit_in varbit_out varbit_in varbit_out i x _null_)); +DATA(insert OID = 1561 ( _bit 10 PGUID -1 -1 f b t \054 0 1560 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1562 ( varbit 10 PGUID -1 -1 f b t \054 0 0 varbit_in varbit_out varbit_in varbit_out i x_null_ )); DESCR("variable-length bit string"); #define VARBITOID 1562 -DATA(insert OID = 1563 ( _varbit PGUID -1 -1 f b t \054 0 1562 array_in array_out array_in array_out i x _null_)); +DATA(insert OID = 1563 ( _varbit 10 PGUID -1 -1 f b t \054 0 1562 array_in array_out array_in array_out i x _null_)); /* OIDS 1600 - 1699 */ /* OIDS 1700 - 1799 */ -DATA(insert OID = 1700 ( numeric PGUID -1 -1 f b t \054 0 0 numeric_in numeric_out numeric_in numeric_out i m _null_)); +DATA(insert OID = 1700 ( numeric 10 PGUID -1 -1 f b t \054 0 0 numeric_in numeric_out numeric_in numeric_out i m_null_ )); DESCR("numeric(precision, decimal), arbitrary precision number"); #define NUMERICOID 1700 /* OID 1790 */ -DATA(insert OID = 1790 ( refcursor PGUID -1 -1 f b t \054 0 0 textin textout textin textout i x _null_ )); +DATA(insert OID = 1790 ( refcursor 10 PGUID -1 -1 f b t \054 0 0 textin textout textin textout i x _null_ )); DESCR("reference cursor (portal name)"); #define REFCURSOROID 1790 @@ -443,19 +445,21 @@ /* * prototypes for functions in pg_type.c */ +struct DefElem; extern Oid TypeGet(char *typeName, bool *defined); -extern Oid TypeShellMake(char *typeName); +extern Oid TypeShellMake(char *typeName, Oid packId); extern Oid TypeCreate(char *typeName, + Oid packId, Oid assignedTypeOid, Oid relationOid, int16 internalSize, int16 externalSize, char typeType, char typDelim, - char *inputProcedure, - char *outputProcedure, - char *receiveProcedure, - char *sendProcedure, + struct DefElem *inputProcedure, + struct DefElem *outputProcedure, + struct DefElem *receiveProcedure, + struct DefElem *sendProcedure, char *elementTypeName, char *defaultTypeValue, bool passedByValue, Index: src/include/commands/defrem.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/commands/defrem.h,v retrieving revision 1.25 diff -u -r1.25 defrem.h --- src/include/commands/defrem.h 2001/09/08 01:10:21 1.25 +++ src/include/commands/defrem.h 2001/10/17 16:42:01 @@ -36,9 +36,10 @@ * prototypes in define.c */ extern void CreateFunction(ProcedureStmt *stmt); -extern void DefineOperator(char *name, List *parameters); -extern void DefineAggregate(char *name, List *parameters); -extern void DefineType(char *name, List *parameters); +extern void DefineOperator(char *name, Oid packId, List *parameters); +extern void DefineAggregate(char *name, Oid packId, List *parameters); +extern void DefineType(char *name, Oid packId, List *parameters); +extern void CreatePackage(PackageStmt *stmt); /* * prototypes in remove.c @@ -48,5 +49,7 @@ char *typeName1, char *typeName2); extern void RemoveType(char *typeName); extern void RemoveAggregate(char *aggName, char *aggType); +extern void RemovePackage(char *packname); +extern void DoRemovePackage(Oid packID, char *packname); #endif /* DEFREM_H */ Index: src/include/executor/spi.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/executor/spi.h,v retrieving revision 1.28 diff -u -r1.28 spi.h --- src/include/executor/spi.h 2001/08/02 18:08:43 1.28 +++ src/include/executor/spi.h 2001/10/17 16:42:02 @@ -82,8 +82,10 @@ extern void SPI_push(void); extern void SPI_pop(void); extern int SPI_exec(char *src, int tcount); +extern int SPI_pack_exec(char *src, Oid packId,int tcount); extern int SPI_execp(void *plan, Datum *values, char *Nulls, int tcount); extern void *SPI_prepare(char *src, int nargs, Oid *argtypes); +extern void *SPI_pack_prepare(char *src, Oid packId, int nargs, Oid *argtypes); extern void *SPI_saveplan(void *plan); extern int SPI_freeplan(void *plan); Index: src/include/nodes/nodes.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/nodes/nodes.h,v retrieving revision 1.93 diff -u -r1.93 nodes.h --- src/include/nodes/nodes.h 2001/07/16 19:12:58 1.93 +++ src/include/nodes/nodes.h 2001/10/17 16:42:02 @@ -194,6 +194,9 @@ T_DropGroupStmt, T_ReindexStmt, T_CheckPointStmt, + T_PackageStmt, + T_PackageGlobal, + T_RemovePackageStmt, T_A_Expr = 700, T_Attr, Index: src/include/nodes/parsenodes.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/nodes/parsenodes.h,v retrieving revision 1.146 diff -u -r1.146 parsenodes.h --- src/include/nodes/parsenodes.h 2001/10/12 00:07:15 1.146 +++ src/include/nodes/parsenodes.h 2001/10/17 16:42:03 @@ -296,6 +296,8 @@ List *args; /* list of (T_String) Values or NULL */ bool before; /* BEFORE/AFTER */ bool row; /* ROW/STATEMENT */ + bool packexact; /* exact package specification */ + Oid package; /* package context */ char actions[4]; /* Insert, Update, Delete */ char *lang; /* currently not used, always NULL */ char *text; /* AS 'text' */ @@ -425,6 +427,7 @@ int defType; /* OPERATOR|P_TYPE|AGGREGATE */ char *defname; List *definition; /* a list of DefElem */ + Oid package; /* context in which to add */ } DefineStmt; @@ -519,6 +522,7 @@ typedef struct ProcedureStmt { NodeTag type; + Oid package; /* package context function is in */ bool replace; /* T => replace if already exists */ char *funcname; /* name of function to create */ List *argTypes; /* list of argument types (TypeName nodes) */ @@ -529,6 +533,40 @@ } ProcedureStmt; /* ---------------------- + * Load Package Body Statement + * ---------------------- + */ +typedef struct PackageStmt +{ + NodeTag type; + char *packname; /* name of package to create */ + /* + * Now for the lists of what we can have in a package + * + * All items in a given list are added before the next list is + * processed. They are added in the order listed here, starting + * with variables. + */ + List *variables; /* list of CreateStmt */ + List *initfuncs; /* list of ProcedureStmt */ + List *types; /* list of DefineStmt */ + List *functions; /* list of ProcedureStmt */ + List *aggregates; /* list of DefineStmt */ + List *operators; /* list of DefineStmt */ +} PackageStmt; + +/* ---------------------- + * Global declaration for package + * ---------------------- + */ +typedef struct PackageGlobal +{ + NodeTag type; + char *name; + char *typetext; +} PackageGlobal; + +/* ---------------------- * Drop Aggregate Statement * ---------------------- */ @@ -551,6 +589,16 @@ } RemoveFuncStmt; /* ---------------------- + * Drop Package Statement + * ---------------------- + */ +typedef struct RemovePackageStmt +{ + NodeTag type; + char *packname; /* package to drop */ +} RemovePackageStmt; + +/* ---------------------- * Drop Operator Statement * ---------------------- */ @@ -1133,14 +1181,19 @@ * indicates we saw 'foo(DISTINCT ...)'. In either case, the construct * *must* be an aggregate call. Otherwise, it might be either an * aggregate or some other kind of function. + * + * package_exact indicates we got this function name as "package.function". + * If it's not in that package, don't look in standard. */ typedef struct FuncCall { NodeTag type; + Oid package; /* package either we're in or to look in */ char *funcname; /* name of function */ List *args; /* the arguments (list of exprs) */ bool agg_star; /* argument was really '*' */ bool agg_distinct; /* arguments were labeled DISTINCT */ + bool package_exact; /* look only in given package */ } FuncCall; /* @@ -1219,20 +1272,29 @@ typedef struct IndexElem { NodeTag type; + Oid packId; /* package context for function */ char *name; /* name of attribute to index, or function */ List *args; /* list of names of function arguments */ char *class; /* name of desired opclass; NULL = default */ + bool package_exact; /* were we given a package ID for the func? */ } IndexElem; /* * DefElem - * a definition (used in definition lists in the form of defname = arg) + * + * A few places may pass a name that might be a function name. In those + * places, we pass along package info. arg will be non-NULL in these cases. + * packexact means we were handed a package ID. package is either the + * exact package, or the package context. */ typedef struct DefElem { NodeTag type; + Oid package; char *defname; Node *arg; /* a (Value *) or a (TypeName *) */ + bool packexact; } DefElem; Index: src/include/nodes/primnodes.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/nodes/primnodes.h,v retrieving revision 1.54 diff -u -r1.54 primnodes.h --- src/include/nodes/primnodes.h 2001/05/07 00:43:25 1.54 +++ src/include/nodes/primnodes.h 2001/10/17 16:42:04 @@ -281,7 +281,8 @@ typedef struct Aggref { NodeTag type; - char *aggname; /* name of the aggregate */ + char *aggname; /* name of the aggregate, for messages */ + Oid aggId; /* oid of the aggregate */ Oid basetype; /* base type Oid of the aggregate (ie, * input type) */ Oid aggtype; /* type Oid of final result of the Index: src/include/parser/gramparse.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/parser/gramparse.h,v retrieving revision 1.16 diff -u -r1.16 gramparse.h --- src/include/parser/gramparse.h 2001/09/20 14:20:28 1.16 +++ src/include/parser/gramparse.h 2001/10/17 16:42:04 @@ -24,7 +24,7 @@ extern void yyerror(const char *message); /* from gram.y */ -extern void parser_init(Oid *typev, int nargs); +extern void parser_init(Oid packId, Oid *typev, int nargs); extern Oid param_type(int t); extern int yyparse(void); extern char *xlateSqlFunc(char *name); Index: src/include/parser/parse_agg.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/parser/parse_agg.h,v retrieving revision 1.17 diff -u -r1.17 parse_agg.h --- src/include/parser/parse_agg.h 2001/01/24 19:43:27 1.17 +++ src/include/parser/parse_agg.h 2001/10/17 16:42:04 @@ -18,7 +18,7 @@ extern void AddAggToParseState(ParseState *pstate, Aggref *aggref); extern void parseCheckAggregates(ParseState *pstate, Query *qry, Node *qual); -extern Aggref *ParseAgg(ParseState *pstate, char *aggname, Oid basetype, +extern Aggref *ParseAgg(ParseState *pstate, Oid aggId, Oid basetype, List *args, bool agg_star, bool agg_distinct, int precedence); extern void agg_error(char *caller, char *aggname, Oid basetypeID); Index: src/include/parser/parse_func.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/parser/parse_func.h,v retrieving revision 1.32 diff -u -r1.32 parse_func.h --- src/include/parser/parse_func.h 2001/10/04 22:06:46 1.32 +++ src/include/parser/parse_func.h 2001/10/17 16:42:04 @@ -35,6 +35,7 @@ typedef struct _CandidateList { Oid *args; + Oid oid; struct _CandidateList *next; } *CandidateList; @@ -52,16 +53,20 @@ extern Node *ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs, bool agg_star, bool agg_distinct, - int precedence); + int precedence, Oid packId, bool pack_explicit); -extern FuncDetailCode func_get_detail(char *funcname, List *fargs, - int nargs, Oid *argtypes, +extern FuncDetailCode func_get_detail(char *funcname, Oid packId, + List *fargs, int nargs, Oid *argtypes, Oid *funcid, Oid *rettype, bool *retset, Oid **true_typeids); extern bool typeInheritsFrom(Oid subclassTypeId, Oid superclassTypeId); -extern void func_error(char *caller, char *funcname, +extern void func_error(char *caller, char *funcname, Oid packID, bool exact, int nargs, Oid *argtypes, char *msg); + +struct DefElem; struct HeapTupleData; +extern struct HeapTupleData *GetFuncFromDefElem(struct DefElem *node, int nargs, + Oid *fnArgs, char *caller, char *type1, char *type2); #endif /* PARSE_FUNC_H */ Index: src/include/parser/parser.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/parser/parser.h,v retrieving revision 1.8 diff -u -r1.8 parser.h --- src/include/parser/parser.h 2001/01/24 19:43:27 1.8 +++ src/include/parser/parser.h 2001/10/17 16:42:04 @@ -16,6 +16,6 @@ #include "parser/parse_node.h" -extern List *parser(char *str, Oid *typev, int nargs); +extern List *parser(char *str, Oid packId, Oid *typev, int nargs); #endif /* PARSER_H */ Index: src/include/tcop/tcopprot.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/tcop/tcopprot.h,v retrieving revision 1.42 diff -u -r1.42 tcopprot.h --- src/include/tcop/tcopprot.h 2001/09/07 16:12:49 1.42 +++ src/include/tcop/tcopprot.h 2001/10/17 16:42:05 @@ -34,7 +34,7 @@ #ifndef BOOTSTRAP_INCLUDE extern List *pg_parse_and_rewrite(char *query_string, - Oid *typev, int nargs); + Oid packId, Oid *typev, int nargs); extern Plan *pg_plan_query(Query *querytree); extern void pg_exec_query_string(char *query_string, CommandDest dest, Index: src/include/utils/acl.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/utils/acl.h,v retrieving revision 1.36 diff -u -r1.36 acl.h --- src/include/utils/acl.h 2001/06/12 16:34:27 1.36 +++ src/include/utils/acl.h 2001/10/17 16:42:05 @@ -202,6 +202,7 @@ extern bool pg_ownercheck(Oid userid, const char *name, int cacheid); extern bool pg_oper_ownercheck(Oid userid, Oid oprid); +extern bool pg_pack_ownercheck(Oid userid, char *packname); extern bool pg_func_ownercheck(Oid userid, char *funcname, int nargs, Oid *arglist); extern bool pg_aggr_ownercheck(Oid userid, char *aggname, Index: src/include/utils/syscache.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/include/utils/syscache.h,v retrieving revision 1.33 diff -u -r1.33 syscache.h --- src/include/utils/syscache.h 2001/08/21 16:36:06 1.33 +++ src/include/utils/syscache.h 2001/10/17 16:42:05 @@ -29,32 +29,36 @@ */ #define AGGNAME 0 -#define AMNAME 1 -#define AMOPOPID 2 -#define AMOPSTRATEGY 3 -#define AMPROCNUM 4 -#define ATTNAME 5 -#define ATTNUM 6 -#define CLAAMNAME 7 -#define CLAOID 8 -#define GRONAME 9 -#define GROSYSID 10 -#define INDEXRELID 11 -#define INHRELID 12 -#define LANGNAME 13 -#define LANGOID 14 -#define OPERNAME 15 -#define OPEROID 16 -#define PROCNAME 17 -#define PROCOID 18 -#define RELNAME 19 -#define RELOID 20 -#define RULENAME 21 -#define SHADOWNAME 22 -#define SHADOWSYSID 23 -#define STATRELATT 24 -#define TYPENAME 25 -#define TYPEOID 26 +#define AGGOID 1 +#define AMNAME 2 +#define AMOPOPID 3 +#define AMOPSTRATEGY 4 +#define AMPROCNUM 5 +#define ATTNAME 6 +#define ATTNUM 7 +#define CLAAMNAME 8 +#define CLAOID 9 +#define GRONAME 10 +#define GROSYSID 11 +#define INDEXRELID 12 +#define INHRELID 13 +#define LANGNAME 14 +#define LANGOID 15 +#define OPERNAME 16 +#define OPEROID 17 +#define PACKAGENAME 18 +#define PACKAGEOID 19 +#define PACKAGEGLOBAL 20 +#define PROCNAME 21 +#define PROCOID 22 +#define RELNAME 23 +#define RELOID 24 +#define RULENAME 25 +#define SHADOWNAME 26 +#define SHADOWSYSID 27 +#define STATRELATT 28 +#define TYPENAME 29 +#define TYPEOID 30 extern void InitCatalogCache(void); @@ -72,5 +76,9 @@ extern Datum SysCacheGetAttr(int cacheId, HeapTuple tup, AttrNumber attributeNumber, bool *isNull); + +#ifndef STANDARDPackageId +#define STANDARDPackageId 10 +#endif #endif /* SYSCACHE_H */ Index: src/pl/plpgsql/src/gram.y =================================================================== RCS file: /projects/cvsroot/pgsql/src/pl/plpgsql/src/gram.y,v retrieving revision 1.27 diff -u -r1.27 gram.y --- src/pl/plpgsql/src/gram.y 2001/10/09 15:59:56 1.27 +++ src/pl/plpgsql/src/gram.y 2001/10/17 16:42:13 @@ -196,6 +196,7 @@ %token T_WORD %token T_NUMBER %token T_ERROR +%token T_GLOBALDECL %token O_OPTION %token O_DUMP @@ -209,6 +210,11 @@ | T_TRIGGER comp_optsect pl_block opt_semi { yylval.program = (PLpgSQL_stmt_block *)$3; + } + | T_GLOBALDECL decl_statement + { + /* all work done in growing namespace */ + yylval.program = NULL; } ; Index: src/pl/plpgsql/src/pl_comp.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/pl/plpgsql/src/pl_comp.c,v retrieving revision 1.36 diff -u -r1.36 pl_comp.c --- src/pl/plpgsql/src/pl_comp.c 2001/10/09 15:59:56 1.36 +++ src/pl/plpgsql/src/pl_comp.c 2001/10/17 16:42:14 @@ -133,14 +133,10 @@ elog(ERROR, "plpgsql: cache lookup for proc %u failed", fn_oid); /* - * Setup the scanner input and error info + * Setup the error info */ procStruct = (Form_pg_proc) GETSTRUCT(procTup); - proc_source = DatumGetCString(DirectFunctionCall1(textout, - PointerGetDatum(&procStruct->prosrc))); - plpgsql_setinput(proc_source, functype); plpgsql_error_funcname = pstrdup(NameStr(procStruct->proname)); - plpgsql_error_lineno = 0; /* * Catch elog() so we can provide notice about where the error is @@ -169,15 +165,28 @@ * Initialize the compiler */ plpgsql_ns_init(); - plpgsql_ns_push(NULL); plpgsql_DumpExecTree = 0; datums_alloc = 128; - plpgsql_nDatums = 0; plpgsql_Datums = palloc(sizeof(PLpgSQL_datum *) * datums_alloc); - datums_last = 0; /* + * Now that we have our langId and packId, finish initing our context + */ + datums_last = plpgsql_packagecontext(procStruct->propack, + procStruct->prolang, &datums_alloc); + plpgsql_nDatums = datums_last; + plpgsql_ns_push(NULL); + + /* + * Setup the scanner input and error info + */ + proc_source = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(&procStruct->prosrc))); + plpgsql_setinput(proc_source, functype); + plpgsql_error_lineno = 0; + + /* * Create the new function node */ function = malloc(sizeof(PLpgSQL_function)); @@ -186,6 +195,8 @@ function->fn_name = strdup(NameStr(procStruct->proname)); function->fn_oid = fn_oid; + function->fn_pack = procStruct->propack; + function->fn_lang = procStruct->prolang; function->fn_xmin = procTup->t_data->t_xmin; function->fn_cmin = procTup->t_data->t_cmin; function->fn_functype = functype; @@ -524,6 +535,9 @@ ReleaseSysCache(procTup); + /* Remove the plackage context we added */ + plpgsql_pack_pop(); + /* * Restore the previous elog() jump target */ @@ -1191,6 +1205,7 @@ var->value = (Datum) 0; var->isnull = true; var->freeval = false; + var->useMalloc = false; ReleaseSysCache(typetup); ReleaseSysCache(attrtup); Index: src/pl/plpgsql/src/pl_exec.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v retrieving revision 1.47 diff -u -r1.47 pl_exec.c --- src/pl/plpgsql/src/pl_exec.c 2001/08/02 21:31:23 1.47 +++ src/pl/plpgsql/src/pl_exec.c 2001/10/17 16:42:16 @@ -48,6 +48,7 @@ #include "pl.tab.h" #include "access/heapam.h" +#include "catalog/pg_package.h" #include "catalog/pg_proc.h" #include "catalog/pg_type.h" #include "commands/trigger.h" @@ -150,7 +151,156 @@ int32 reqtypmod, bool *isnull); static void exec_set_found(PLpgSQL_execstate * estate, bool state); +static int exec_prep_package(PLpgSQL_execstate * estate, Oid packId, + Oid langId, PLpgSQL_function * func); +static void exec_init_datum(PLpgSQL_execstate * estate, PLpgSQL_datum *d); +/* ---------- + * exec_prep_package Make sure a package has been inited, and + * return the number of globals from it + * ---------- + */ +int +exec_prep_package(PLpgSQL_execstate * estate, Oid packId, Oid langId, + PLpgSQL_function * func) +{ + PLpgSQL_pack *p; + + + for(p = pack_list; p; p = p->next) + if ((p->ourId == packId) && (p->langId == langId)) + { + int i; + + for (i = 0; i < p->varcount; i++) + { + switch (p->variables[i]->dtype) + { + case PLPGSQL_DTYPE_VAR: + case PLPGSQL_DTYPE_REC: + case PLPGSQL_DTYPE_ROW: + case PLPGSQL_DTYPE_RECFIELD: + estate->datums[i] = p->variables[i]; + break; + + default: + elog(ERROR, "unknown dtype %d in exec_pack_prep()", + p->variables[i]->dtype); + } + } + if (p->inited == false) + { + int i; + HeapTuple tuple; + PLpgSQL_dstring ds; + Oid *typeId; + + for (i = 0; i < p->varcount; i++) + { + switch (p->variables[i]->dtype) + { + case PLPGSQL_DTYPE_VAR: + { + /* + * Duplicate the setting to null which + * usually happens for local variables + */ + PLpgSQL_var *var = (PLpgSQL_var *) + p->variables[i]; + var->value = 0; + var->isnull = true; + var->freeval = false; + } + break; + + case PLPGSQL_DTYPE_REC: + case PLPGSQL_DTYPE_ROW: + case PLPGSQL_DTYPE_RECFIELD: + /* Not normally set to null */ + /* Do we need to do something? */ + } + exec_init_datum(estate, p->variables[i]); + } + + p->inited = true; + + typeId = palloc(FUNC_MAX_ARGS * sizeof(Oid)); + MemSet(typeId, 0, FUNC_MAX_ARGS * sizeof(Oid)); + + /* Now see about running the init routine */ + plpgsql_dstring_init(&ds); + plpgsql_dstring_append(&ds, "select "); + + tuple = SearchSysCache(PACKAGEOID, + ObjectIdGetDatum(packId), + 0, 0, 0); + + if (!HeapTupleIsValid(tuple)) + elog(ERROR, "package initialization: can't get packname"); + + plpgsql_dstring_append(&ds, + DatumGetCString(DirectFunctionCall1(nameout, + NameGetDatum( + &((Form_pg_package) GETSTRUCT(tuple))->packname)))); + ReleaseSysCache(tuple); + i = ds.used+1; + plpgsql_dstring_append(&ds, ".__packinit_"); + + tuple = SearchSysCache(LANGOID, + ObjectIdGetDatum(langId), + 0, 0, 0); + + if (!HeapTupleIsValid(tuple)) + elog(ERROR, "package initialization: can't get langname"); + + plpgsql_dstring_append(&ds, + DatumGetCString(DirectFunctionCall1(nameout, + NameGetDatum( + &((Form_pg_language) GETSTRUCT(tuple))->lanname)))); + + ReleaseSysCache(tuple); + + /* + * Now we have "select packname.__packinit_<languagename>" in + * ds. Check to see if __packinit_<languagename> is in this + * package. If not, just exit - we're done. If it is + * listed, make sure we're not it - someone didn't + * explicitly type select packname.__packinit_<languagename> + * at the prompt. If we are it, exit. + * + * Otherwise, do a select which will fire it up. Note that + * since we have installed the package info already, that + * invocation will think the package has been inited. + */ + tuple = SearchSysCache(PROCNAME, + PointerGetDatum(&ds.value[i]), + Int32GetDatum(packId), + Int32GetDatum(0), + PointerGetDatum(typeId)); + if (HeapTupleIsValid(tuple)) + { + if (tuple->t_data->t_oid != func->fn_oid) + { + plpgsql_dstring_append(&ds, " ();"); + + i = SPI_exec(ds.value, 0); + + if (i != SPI_OK_SELECT) + elog(ERROR, + "package init unsuccessful, returned %d", + i); + SPI_freetuptable(SPI_tuptable); + } + ReleaseSysCache(tuple); + } + } + return p->varcount; + } + + return 0; /* Why didn't we find a package definition?? */ +} + + /* ---------- * plpgsql_exec_function Called by the call handler for @@ -161,7 +311,8 @@ plpgsql_exec_function(PLpgSQL_function * func, FunctionCallInfo fcinfo) { PLpgSQL_execstate estate; - int i; + int i, + globalCount; sigjmp_buf save_restart; PLpgSQL_function *save_efunc; PLpgSQL_stmt *save_estmt; @@ -189,8 +340,19 @@ */ if (error_info_func != NULL) { - elog(NOTICE, "Error occurred while executing PL/pgSQL function %s", - error_info_func->fn_name); + if (error_info_func->fn_pack != STANDARDPackageId) + { + elog(NOTICE, + "Error occurred while executing PL/pgSQL function %s" + " of package %d", + error_info_func->fn_name, error_info_func->fn_pack); + } + else + { + elog(NOTICE, + "Error occurred while executing PL/pgSQL function %s", + error_info_func->fn_name); + } if (error_info_stmt != NULL) { char *stmttype; @@ -278,9 +440,16 @@ plpgsql_estate_setup(&estate, func); /* + * make sure our package is initialized, link in the globals, and + * find out how many globals there are. + */ + globalCount = exec_prep_package(&estate, func->fn_pack, func->fn_lang, + func); + + /* * Make local execution copies of all the datums */ - for (i = 0; i < func->ndatums; i++) + for (i = globalCount; i < func->ndatums; i++) { switch (func->datums[i]->dtype) { @@ -457,7 +626,8 @@ TriggerData *trigdata) { PLpgSQL_execstate estate; - int i; + int i, + globalCount; sigjmp_buf save_restart; PLpgSQL_function *save_efunc; PLpgSQL_stmt *save_estmt; @@ -489,8 +659,19 @@ */ if (error_info_func != NULL) { - elog(NOTICE, "Error occurred while executing PL/pgSQL function %s", - error_info_func->fn_name); + if (error_info_func->fn_pack != STANDARDPackageId) + { + elog(NOTICE, + "Error occurred while executing PL/pgSQL function %s" + " of package %d", + error_info_func->fn_name, error_info_func->fn_pack); + } + else + { + elog(NOTICE, + "Error occurred while executing PL/pgSQL function %s", + error_info_func->fn_name); + } if (error_info_stmt != NULL) { char *stmttype; @@ -572,9 +753,16 @@ plpgsql_estate_setup(&estate, func); /* + * make sure our package is initialized, link in the globals, and + * find out how many globals there are. + */ + globalCount = exec_prep_package(&estate, func->fn_pack, func->fn_lang, + func); + + /* * Make local execution copies of all the datums */ - for (i = 0; i < func->ndatums; i++) + for (i = globalCount; i < func->ndatums; i++) { switch (func->datums[i]->dtype) { @@ -834,6 +1022,73 @@ /* ---------- + * exec_init_datum Initialize one datum + * ---------- + */ +void +exec_init_datum(PLpgSQL_execstate * estate, PLpgSQL_datum *d) +{ + switch (d->dtype) + { + case PLPGSQL_DTYPE_VAR: + { + PLpgSQL_var *var = (PLpgSQL_var *) (d); + + if (var->freeval) + { + if (var->useMalloc) + free((void *)(var->value)); + else + pfree((void *)(var->value)); + var->freeval = FALSE; + } + + if (!var->isconst || var->isnull) + { + if (var->default_val == NULL) + { + var->value = (Datum) 0; + var->isnull = true; + if (var->notnull) + elog(ERROR, + "variable '%s' declared NOT NULL cannot" + " default to NULL", var->refname); + } + else + { + exec_assign_expr(estate, (PLpgSQL_datum *) var, + var->default_val); + } + } + break; + } + + case PLPGSQL_DTYPE_REC: + { + PLpgSQL_rec *rec = (PLpgSQL_rec *) (d); + + if (rec->freetup) + { + heap_freetuple(rec->tup); + FreeTupleDesc(rec->tupdesc); + rec->freetup = false; + } + + rec->tup = NULL; + rec->tupdesc = NULL; + break; + } + + case PLPGSQL_DTYPE_RECFIELD: + break; + + default: + elog(ERROR, "unknown dtype %d in exec_init_datum()", d->dtype); + } +} + + +/* ---------- * exec_stmt_block Execute a block of statements * ---------- */ @@ -850,60 +1105,7 @@ for (i = 0; i < block->n_initvars; i++) { n = block->initvarnos[i]; - - switch (estate->datums[n]->dtype) - { - case PLPGSQL_DTYPE_VAR: - { - PLpgSQL_var *var = (PLpgSQL_var *) (estate->datums[n]); - - if (var->freeval) - { - pfree((void *)(var->value)); - var->freeval = false; - } - - if (!var->isconst || var->isnull) - { - if (var->default_val == NULL) - { - var->value = (Datum) 0; - var->isnull = true; - if (var->notnull) - elog(ERROR, "variable '%s' declared NOT NULL cannot default to NULL", var->refname); - } - else - { - exec_assign_expr(estate, (PLpgSQL_datum *) var, - var->default_val); - } - } - } - break; - - case PLPGSQL_DTYPE_REC: - { - PLpgSQL_rec *rec = (PLpgSQL_rec *) (estate->datums[n]); - - if (rec->freetup) - { - heap_freetuple(rec->tup); - FreeTupleDesc(rec->tupdesc); - rec->freetup = false; - } - - rec->tup = NULL; - rec->tupdesc = NULL; - } - break; - - case PLPGSQL_DTYPE_RECFIELD: - break; - - default: - elog(ERROR, "unknown dtype %d in exec_stmt_block()", estate->datums[n]->dtype); - } - + exec_init_datum(estate, estate->datums[n]); } /* @@ -1828,6 +2030,7 @@ estate->rettupdesc = NULL; estate->retisset = func->fn_retset; estate->exitlabel = NULL; + estate->packId = func->fn_pack; estate->trig_nargs = 0; estate->trig_argv = NULL; @@ -1923,9 +2126,10 @@ /* * Generate and save the plan */ - plan = SPI_prepare(expr->query, expr->nparams, argtypes); + plan = SPI_pack_prepare(expr->query, estate->packId, expr->nparams, + argtypes); if (plan == NULL) - elog(ERROR, "SPI_prepare() failed on \"%s\"", expr->query); + elog(ERROR, "SPI_pack_prepare() failed on \"%s\"", expr->query); expr->plan = SPI_saveplan(plan); expr->plan_argtypes = ((_SPI_plan *) expr->plan)->argtypes; expr->plan_simple_expr = NULL; @@ -2232,7 +2436,7 @@ /* * Prepare a plan and open an implicit cursor for the query */ - plan = SPI_prepare(querystr, 0, NULL); + plan = SPI_pack_prepare(querystr, estate->packId, 0, NULL); if (plan == NULL) elog(ERROR, "SPI_prepare() failed for dynamic query \"%s\"", querystr); portal = SPI_cursor_open(NULL, plan, NULL, NULL); @@ -2450,9 +2654,23 @@ * ---------- */ if (curvar->freeval) - pfree((void *)(curvar->value)); + { + if (curvar->useMalloc) + free((void *)(curvar->value)); + else + pfree((void *)(curvar->value)); + } curvar->value = DirectFunctionCall1(textin, CStringGetDatum(portal->name)); + if (curvar->useMalloc) + { + text *new; + + new = malloc(VARSIZE((text *)curvar->value)); + memmove(new, (void *)curvar->value, VARSIZE((text *)curvar->value)); + pfree((void *)curvar->value); + curvar->value = PointerGetDatum(new); + } curvar->isnull = false; curvar->freeval = true; @@ -2574,9 +2792,23 @@ * ---------- */ if (curvar->freeval) - pfree((void *)(curvar->value)); + { + if (curvar->useMalloc) + free((void *)(curvar->value)); + else + pfree((void *)(curvar->value)); + } curvar->value = DirectFunctionCall1(textin, CStringGetDatum(portal->name)); + if (curvar->useMalloc) + { + text *new; + + new = malloc(VARSIZE((text *)curvar->value)); + memmove(new, (void *)curvar->value, VARSIZE((text *)curvar->value)); + pfree((void *)curvar->value); + curvar->value = PointerGetDatum(new); + } curvar->isnull = false; curvar->freeval = true; @@ -2757,8 +2989,11 @@ if (var->freeval) { - pfree((void *)(var->value)); - var->freeval = false; + if (var->useMalloc) + free((void *)(var->value)); + else + pfree((void *)(var->value)); + var->freeval = FALSE; } newvalue = exec_cast_value(value, valtype, var->datatype->typoid, @@ -2778,7 +3013,7 @@ */ if (!var->datatype->typbyval && !*isNull) { - if (newvalue == value) + if (newvalue == value || var->useMalloc) { int len; @@ -2786,12 +3021,18 @@ len = VARSIZE(newvalue); else len = var->datatype->typlen; - var->value = (Datum) palloc(len); + if (var->useMalloc) + var->value = (Datum) malloc(len); + else + var->value = (Datum) palloc(len); memcpy((void *)(var->value), (void *)newvalue, len); + /* if we palloc'd space but should've malloc'd do a pfree */ + if (newvalue != value) + pfree((void *)newvalue); } else var->value = newvalue; - var->freeval = true; + var->freeval = TRUE; } else var->value = newvalue; Index: src/pl/plpgsql/src/pl_funcs.c =================================================================== RCS file: /projects/cvsroot/pgsql/src/pl/plpgsql/src/pl_funcs.c,v retrieving revision 1.16 diff -u -r1.16 pl_funcs.c --- src/pl/plpgsql/src/pl_funcs.c 2001/10/09 15:59:56 1.16 +++ src/pl/plpgsql/src/pl_funcs.c 2001/10/17 16:42:16 @@ -48,6 +48,12 @@ /* ---------- + * Variables for package handling + * ---------- + */ +PLpgSQL_pack *pack_list; + +/* ---------- * Local variables for the namestack handling * ---------- */ @@ -285,13 +291,13 @@ int i; /* - * Lookup in the current namespace only + * Lookup in the current namespace only, don't rename package globals */ /* * Lookup name in the namestack */ - for (ns = ns_current; ns != NULL; ns = ns->upper) + for (ns = ns_current; ns->upper != NULL; ns = ns->upper) { for (i = 1; i < ns->items_used; i++) { @@ -359,6 +365,217 @@ return ret; } +/* ---------- + * plpgsql_packagecontext + * Find the global variable context for our package + * ---------- + */ +int +plpgsql_packagecontext(Oid packId, Oid langId, int *datums_alloc) +{ + PLpgSQL_pack *p; + int i, + ret, + proc; + char *ch; + PLpgSQL_nsitem *newitem, + *thisOne, + **newitems; + + for(p = pack_list; p; p = p->next) + if ((p->ourId == packId) && (p->langId == langId)) + { + /* Set up this package context */ + p->namespace->upper = ns_current; + ns_current = p->namespace; + + while (*datums_alloc < p->varcount) + { + *datums_alloc *= 2; + plpgsql_Datums = repalloc(plpgsql_Datums, + sizeof(PLpgSQL_datum *) * (*datums_alloc)); + } + if (p->varcount > 0) + { + memcpy(plpgsql_Datums, p->variables, + sizeof(PLpgSQL_datum *) * p->varcount); + } + + return p->varcount; + } + + /* ---------- + * This is the first invocation of a function in this package in + * this backend. So do package init. + * + * First we make a rather empty entry and put it in the list. + * + * Then we grab our global variables, and start shoving them into our + * new namespace. + * ---------- + */ + + p = malloc(sizeof(PLpgSQL_pack)); + + p->ourId = packId; + p->langId = langId; + p->next = pack_list; + pack_list = p; + + /* Inline'd plpgsql_ns_push that uses malloc() */ + p->namespace = malloc(sizeof(PLpgSQL_ns)); + memset(p->namespace, 0, sizeof(PLpgSQL_ns)); + p->namespace->upper = ns_current; + ns_current = p->namespace; + + plpgsql_nDatums = 0; + + plpgsql_ns_additem(PLPGSQL_NSTYPE_LABEL, 0, NULL); + + ch = palloc(512); + snprintf(ch, 512, "select pglobalvname, pglobalvtype from pg_packglobal " + "where pglobalid = %u and pgloballang = %u " + "order by pglobalseq", packId, langId); + ret = SPI_exec(ch, 0); + + proc = SPI_processed; + + if ((ret == SPI_OK_SELECT) && (proc > 0)) + { + TupleDesc tupdesc = SPI_tuptable->tupdesc; + SPITupleTable *tuptable = SPI_tuptable; + PLpgSQL_function *function = palloc(sizeof(PLpgSQL_function)); + PLpgSQL_dstring ds; + + plpgsql_dstring_init(&ds); + memset(function, 0, sizeof(PLpgSQL_function)); + plpgsql_curr_compile = function; + + function->fn_pack = packId; + function->fn_lang = langId; + function->fn_functype = T_GLOBALDECL; + + for (i = 0; i < proc; i++) + { + HeapTuple tuple = tuptable->vals[i]; + + ds.used = 0; + ds.value[0] = '\0'; + + plpgsql_dstring_append(&ds, SPI_getvalue(tuple, tupdesc, 1)); + plpgsql_dstring_append(&ds, " "); + plpgsql_dstring_append(&ds, SPI_getvalue(tuple, tupdesc, 2)); + plpgsql_dstring_append(&ds, ";"); + + plpgsql_setinput(plpgsql_dstring_get(&ds), T_GLOBALDECL); + plpgsql_error_funcname = "Package initialization"; + plpgsql_error_lineno = 0; + + ret = plpgsql_yyparse(); + if (ret) + { + elog(ERROR, "plpgsql: parser returned %d parsing global '%s'", + ret, plpgsql_dstring_get(&ds)); + } + /* ---------- + * The actual meat of the work was done by yyparse changing the + * namespace. + * ---------- + */ + } + plpgsql_dstring_free(&ds); + } + + /* ---------- + * We just added a lot of things to the namespace using palloc. Redo + * with malloc. + *---------- + */ + newitems = malloc(sizeof(PLpgSQL_nsitem *) * p->namespace->items_alloc); + for (i = 0; i < p->namespace->items_used; i++) + { + int j; + + thisOne = p->namespace->items[i]; + + j = sizeof(PLpgSQL_nsitem) + strlen(thisOne->name); + + newitem = malloc(j); + memcpy(newitem, thisOne, j); + + newitems[i] = newitem; + } + p->namespace->items = newitems; + + /* ---------- + * Now finish setting up our state. Will init values and run + * init routine before execing code (but after compiling). + * ---------- + */ + p->initvarcount = plpgsql_add_initdatums(&p->initvars); + p->varcount = plpgsql_nDatums; + p->inited = false; + + p->variables = malloc(sizeof(PLpgSQL_datum *) * p->varcount); + memcpy(p->variables, plpgsql_Datums, sizeof(PLpgSQL_datum *) * p->varcount); + + /* ---------- + * Fix up the data items so that they too aren't using palloc + * ---------- + */ + for (i = 0; i < p->varcount; i++) + { + PLpgSQL_datum *it = p->variables[i]; + + it->dUseMalloc = true; + switch (it->dtype) + { + case PLPGSQL_DTYPE_VAR: + break; /* everything aloocated to here is malloc'd */ + + case PLPGSQL_DTYPE_REC: + break; /* Don't know what to do yet */ + + case PLPGSQL_DTYPE_ROW: + /* Probably want to play with fieldnames & varnos */ + { + void *new; + PLpgSQL_row *theRow = (PLpgSQL_row *)it; + + new = malloc(1024 * sizeof(char *)); + memcpy(new, theRow->fieldnames, + sizeof(char *) * theRow->nfields); + pfree(theRow->fieldnames); + theRow->fieldnames = new; + + new = malloc(1024 * sizeof(int)); + memcpy(new, theRow->varnos, + sizeof(int) * theRow->nfields); + pfree(theRow->varnos); + theRow->varnos = new; + } + break; + + + case PLPGSQL_DTYPE_RECFIELD: + break; /* looks fine */ + + default: + break; + } + } + + return plpgsql_nDatums; +} + +/* + * Undo the implicit push done above + */ +void +plpgsql_pack_pop(void) +{ + ns_current = ns_current->upper; +} Index: src/pl/plpgsql/src/plpgsql.h =================================================================== RCS file: /projects/cvsroot/pgsql/src/pl/plpgsql/src/plpgsql.h,v retrieving revision 1.19 diff -u -r1.19 plpgsql.h --- src/pl/plpgsql/src/plpgsql.h 2001/10/09 15:59:56 1.19 +++ src/pl/plpgsql/src/plpgsql.h 2001/10/17 16:42:18 @@ -152,6 +152,7 @@ { /* Generic datum array item */ int dtype; int dno; + bool dUseMalloc; /* don't palloc, use malloc */ } PLpgSQL_datum; @@ -159,6 +160,7 @@ { /* SQL Query to plan and execute */ int dtype; int exprno; + bool useMalloc; char *query; void *plan; Node *plan_simple_expr; @@ -173,6 +175,7 @@ { /* Local variable */ int dtype; int varno; + bool useMalloc; char *refname; int lineno; @@ -193,6 +196,7 @@ { /* Rowtype */ int dtype; int rowno; + bool useMalloc; char *refname; int lineno; Oid rowtypeclass; @@ -207,6 +211,7 @@ { /* Record of undefined structure */ int dtype; int recno; + bool useMalloc; char *refname; int lineno; @@ -221,6 +226,7 @@ { /* Field in record */ int dtype; int rfno; + bool useMalloc; char *fieldname; int recno; } PLpgSQL_recfield; @@ -230,6 +236,7 @@ { /* Positional argument to trigger */ int dtype; int dno; + bool useMalloc; PLpgSQL_expr *argnum; } PLpgSQL_trigarg; @@ -238,6 +245,7 @@ { /* Item in the compilers namestack */ int itemtype; int itemno; + bool useMalloc; char name[1]; } PLpgSQL_nsitem; @@ -250,6 +258,18 @@ struct PLpgSQL_ns *upper; } PLpgSQL_ns; +typedef struct PLpgSQL_pack +{ /* Package context */ + struct PLpgSQL_pack *next; + struct PLpgSQL_ns *namespace; + PLpgSQL_datum **variables; + int *initvars; + Oid ourId; + Oid langId; + int varcount; + int initvarcount; + bool inited; +} PLpgSQL_pack; typedef struct { /* List of execution nodes */ @@ -455,8 +475,10 @@ typedef struct PLpgSQL_function { /* Complete compiled function */ - char *fn_name; Oid fn_oid; + Oid fn_pack; + Oid fn_lang; + char *fn_name; TransactionId fn_xmin; CommandId fn_cmin; int fn_functype; @@ -503,6 +525,7 @@ int trig_nargs; Datum *trig_argv; + Oid packId; int found_varno; int ndatums; PLpgSQL_datum **datums; @@ -527,6 +550,9 @@ extern int plpgsql_error_lineno; extern char *plpgsql_error_funcname; +extern PLpgSQL_function *plpgsql_curr_compile; + +extern PLpgSQL_pack *pack_list; /* linkage to the real yytext and yylineno variables */ extern char *plpgsql_base_yytext; #define plpgsql_yytext plpgsql_base_yytext @@ -598,6 +624,8 @@ */ extern void plpgsql_dumptree(PLpgSQL_function * func); extern char *plpgsql_tolower(char *s); +extern int plpgsql_packagecontext(Oid packId, Oid langId, int *datums_alloc); +extern void plpgsql_pack_pop(void); /* ---------- * Externs in gram.y and scan.l Index: src/test/regress/expected/errors.out =================================================================== RCS file: /projects/cvsroot/pgsql/src/test/regress/expected/errors.out,v retrieving revision 1.27 diff -u -r1.27 errors.out --- src/test/regress/expected/errors.out 2001/10/03 20:54:22 1.27 +++ src/test/regress/expected/errors.out 2001/10/17 16:42:21 @@ -105,7 +105,7 @@ stype = int4, finalfunc = int2um, initcond = '0'); -ERROR: AggregateCreate: function 'int2um(int4)' does not exist +ERROR: AggregateCreate: Function 'int2um'('int4') does not exist -- left out basetype create aggregate newcnt1 (sfunc = int4inc, stype = int4, Index: src/test/regress/expected/sanity_check.out =================================================================== RCS file: /projects/cvsroot/pgsql/src/test/regress/expected/sanity_check.out,v retrieving revision 1.16 diff -u -r1.16 sanity_check.out --- src/test/regress/expected/sanity_check.out 2001/08/27 23:23:34 1.16 +++ src/test/regress/expected/sanity_check.out 2001/10/17 16:42:21 @@ -47,6 +47,8 @@ pg_largeobject | t pg_opclass | t pg_operator | t + pg_package | t + pg_packglobal | t pg_proc | t pg_relcheck | t pg_rewrite | t @@ -59,5 +61,5 @@ shighway | t tenk1 | t tenk2 | t -(49 rows) +(51 rows)
pgsql-patches by date: