Cross-data-type comparisons are now indexable by btrees, pursuant to my

pghackers proposal of 8-Nov.  All the existing cross-type comparison
operators (int2/int4/int8 and float4/float8) have appropriate support.
The original proposal of storing the right-hand-side datatype as part of
the primary key for pg_amop and pg_amproc got modified a bit in the event;
it is easier to store zero as the 'default' case and only store a nonzero
when the operator is actually cross-type.  Along the way, remove the
long-since-defunct bigbox_ops operator class.
This commit is contained in:
Tom Lane
2003-11-12 21:15:59 +00:00
parent 49f98fa833
commit fa5c8a055a
76 changed files with 2237 additions and 1492 deletions

View File

@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: nbtree.h,v 1.72 2003/11/09 21:30:37 tgl Exp $
* $Id: nbtree.h,v 1.73 2003/11/12 21:15:57 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -341,7 +341,7 @@ typedef struct xl_btree_newpage
/*
* Operator strategy numbers for B-tree have been moved to access/skey.h,
* because many places need to use them in ScanKeyEntryInitialize() calls.
* because many places need to use them in ScanKeyInit() calls.
*/
/*
@ -404,12 +404,12 @@ typedef struct BTScanOpaqueData
Buffer btso_mrkbuf;
ItemPointerData curHeapIptr;
ItemPointerData mrkHeapIptr;
/* these fields are set by _bt_orderkeys(), which see for more info: */
/* these fields are set by _bt_preprocess_keys(): */
bool qual_ok; /* false if qual can never be satisfied */
int numberOfKeys; /* number of scan keys */
int numberOfKeys; /* number of preprocessed scan keys */
int numberOfRequiredKeys; /* number of keys that must be
* matched to continue the scan */
ScanKey keyData; /* array of scan keys */
ScanKey keyData; /* array of preprocessed scan keys */
} BTScanOpaqueData;
typedef BTScanOpaqueData *BTScanOpaque;
@ -424,7 +424,6 @@ extern Datum btinsert(PG_FUNCTION_ARGS);
extern Datum btgettuple(PG_FUNCTION_ARGS);
extern Datum btbeginscan(PG_FUNCTION_ARGS);
extern Datum btrescan(PG_FUNCTION_ARGS);
extern void btmovescan(IndexScanDesc scan, Datum v);
extern Datum btendscan(PG_FUNCTION_ARGS);
extern Datum btmarkpos(PG_FUNCTION_ARGS);
extern Datum btrestrpos(PG_FUNCTION_ARGS);
@ -480,7 +479,7 @@ extern ScanKey _bt_mkscankey(Relation rel, IndexTuple itup);
extern ScanKey _bt_mkscankey_nodata(Relation rel);
extern void _bt_freeskey(ScanKey skey);
extern void _bt_freestack(BTStack stack);
extern void _bt_orderkeys(IndexScanDesc scan);
extern void _bt_preprocess_keys(IndexScanDesc scan);
extern bool _bt_checkkeys(IndexScanDesc scan, IndexTuple tuple,
ScanDirection dir, bool *continuescan);
extern BTItem _bt_formitem(IndexTuple itup);

View File

@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: skey.h,v 1.23 2003/11/09 21:30:37 tgl Exp $
* $Id: skey.h,v 1.24 2003/11/12 21:15:57 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -20,7 +20,8 @@
/*
* Strategy numbers identify the semantics that particular operators have
* with respect to particular operator classes.
* with respect to particular operator classes. In some cases a strategy
* subtype (an OID) is used as further information.
*/
typedef uint16 StrategyNumber;
@ -47,23 +48,23 @@ typedef uint16 StrategyNumber;
* (The data structure can support unary indexable operators too; in that
* case sk_argument would go unused. This is not currently implemented.)
*
* For an index scan, sk_strategy must be set correctly for the operator.
* When using a ScanKey in a heap scan, sk_strategy is not used and may be
* set to InvalidStrategy.
* For an index scan, sk_strategy and sk_subtype must be set correctly for
* the operator. When using a ScanKey in a heap scan, these fields are not
* used and may be set to InvalidStrategy/InvalidOid.
*
* Note: in some places, ScanKeys are used as a convenient representation
* for the invocation of an access method support procedure. In this case
* sk_strategy is not meaningful, and sk_func may refer to a function that
* returns something other than boolean.
* sk_strategy/sk_subtype are not meaningful, and sk_func may refer to a
* function that returns something other than boolean.
*/
typedef struct ScanKeyData
{
int sk_flags; /* flags, see below */
AttrNumber sk_attno; /* table or index column number */
StrategyNumber sk_strategy; /* operator strategy number */
Oid sk_subtype; /* strategy subtype */
FmgrInfo sk_func; /* lookup info for function to call */
Datum sk_argument; /* data to compare */
Oid sk_argtype; /* datatype of sk_argument */
} ScanKeyData;
typedef ScanKeyData *ScanKey;
@ -76,19 +77,24 @@ typedef ScanKeyData *ScanKey;
/*
* prototypes for functions in access/common/scankey.c
*/
extern void ScanKeyInit(ScanKey entry,
AttrNumber attributeNumber,
StrategyNumber strategy,
RegProcedure procedure,
Datum argument);
extern void ScanKeyEntryInitialize(ScanKey entry,
int flags,
AttrNumber attributeNumber,
StrategyNumber strategy,
Oid subtype,
RegProcedure procedure,
Datum argument,
Oid argtype);
Datum argument);
extern void ScanKeyEntryInitializeWithInfo(ScanKey entry,
int flags,
AttrNumber attributeNumber,
StrategyNumber strategy,
Oid subtype,
FmgrInfo *finfo,
Datum argument,
Oid argtype);
Datum argument);
#endif /* SKEY_H */

View File

@ -37,7 +37,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: catversion.h,v 1.210 2003/10/21 16:23:16 tgl Exp $
* $Id: catversion.h,v 1.211 2003/11/12 21:15:57 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -53,6 +53,6 @@
*/
/* yyyymmddN */
#define CATALOG_VERSION_NO 200310211
#define CATALOG_VERSION_NO 200311101
#endif

View File

@ -8,7 +8,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: indexing.h,v 1.79 2003/08/04 02:40:10 momjian Exp $
* $Id: indexing.h,v 1.80 2003/11/12 21:15:57 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -24,8 +24,8 @@
* macros rather than hardwiring the actual index name.
*/
#define AccessMethodOperatorIndex "pg_amop_opr_opc_index"
#define AccessMethodStrategyIndex "pg_amop_opc_strategy_index"
#define AccessMethodProcedureIndex "pg_amproc_opc_procnum_index"
#define AccessMethodStrategyIndex "pg_amop_opc_strat_index"
#define AccessMethodProcedureIndex "pg_amproc_opc_proc_index"
#define AggregateFnoidIndex "pg_aggregate_fnoid_index"
#define AmNameIndex "pg_am_name_index"
#define AmOidIndex "pg_am_oid_index"
@ -115,9 +115,9 @@ extern void CatalogUpdateIndexes(Relation heapRel, HeapTuple heapTuple);
DECLARE_UNIQUE_INDEX(pg_aggregate_fnoid_index on pg_aggregate using btree(aggfnoid 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));
DECLARE_UNIQUE_INDEX(pg_amop_opc_strat_index on pg_amop using btree(amopclaid oid_ops, amopsubtype oid_ops, amopstrategy int2_ops));
DECLARE_UNIQUE_INDEX(pg_amop_opr_opc_index on pg_amop using btree(amopopr oid_ops, amopclaid oid_ops));
DECLARE_UNIQUE_INDEX(pg_amop_opc_strategy_index on pg_amop using btree(amopclaid oid_ops, amopstrategy int2_ops));
DECLARE_UNIQUE_INDEX(pg_amproc_opc_procnum_index on pg_amproc using btree(amopclaid oid_ops, amprocnum int2_ops));
DECLARE_UNIQUE_INDEX(pg_amproc_opc_proc_index on pg_amproc using btree(amopclaid oid_ops, amprocsubtype oid_ops, amprocnum int2_ops));
DECLARE_UNIQUE_INDEX(pg_attrdef_adrelid_adnum_index on pg_attrdef using btree(adrelid oid_ops, adnum int2_ops));
DECLARE_UNIQUE_INDEX(pg_attrdef_oid_index on pg_attrdef using btree(oid oid_ops));
DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnam_index on pg_attribute using btree(attrelid oid_ops, attname name_ops));

View File

@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: namespace.h,v 1.27 2003/08/04 02:40:10 momjian Exp $
* $Id: namespace.h,v 1.28 2003/11/12 21:15:57 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -42,9 +42,9 @@ typedef struct _OpclassCandidateList
char *opcname_tmp; /* for internal use of namespace lookup */
int pathpos; /* for internal use of namespace lookup */
Oid oid; /* the opclass's OID */
Oid opcintype; /* type of input data for opclass */
Oid opcintype; /* type of data indexed by opclass */
bool opcdefault; /* T if opclass is default for opcintype */
Oid opckeytype; /* type of index data, or InvalidOid */
Oid opckeytype; /* type of data in index, or InvalidOid */
} *OpclassCandidateList;

View File

@ -6,17 +6,24 @@
*
* The amop table identifies the operators associated with each index opclass.
*
* Note: the primary key for this table is <amopclaid, amopstrategy>.
* The primary key for this table is <amopclaid, amopsubtype, amopstrategy>.
* amopsubtype is equal to zero for an opclass's "default" operators
* (which normally are those that accept the opclass's opcintype on both
* left and right sides). Some index AMs allow nondefault operators to
* exist for a single strategy --- for example, in the btree AM nondefault
* operators can have right-hand input data types different from opcintype,
* and their amopsubtype is equal to the right-hand input data type.
*
* We also keep a unique index on <amopclaid, amopopr>, so that we can
* use a syscache to quickly answer questions of the form "is this operator
* in this opclass?". This implies that the same operator cannot be listed
* for multiple strategy numbers of a single opclass.
* for multiple subtypes or strategy numbers of a single opclass.
*
*
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: pg_amop.h,v 1.55 2003/08/17 19:58:06 tgl Exp $
* $Id: pg_amop.h,v 1.56 2003/11/12 21:15:57 tgl Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
@ -42,6 +49,7 @@
CATALOG(pg_amop) BKI_WITHOUT_OIDS
{
Oid amopclaid; /* the index opclass this entry is for */
Oid amopsubtype; /* operator subtype, or zero if default */
int2 amopstrategy; /* operator strategy number */
bool amopreqcheck; /* index hit must be rechecked */
Oid amopopr; /* the operator's pg_operator OID */
@ -58,11 +66,12 @@ typedef FormData_pg_amop *Form_pg_amop;
* compiler constants for pg_amop
* ----------------
*/
#define Natts_pg_amop 4
#define Natts_pg_amop 5
#define Anum_pg_amop_amopclaid 1
#define Anum_pg_amop_amopstrategy 2
#define Anum_pg_amop_amopreqcheck 3
#define Anum_pg_amop_amopopr 4
#define Anum_pg_amop_amopsubtype 2
#define Anum_pg_amop_amopstrategy 3
#define Anum_pg_amop_amopreqcheck 4
#define Anum_pg_amop_amopopr 5
/* ----------------
* initial contents of pg_amop
@ -73,460 +82,495 @@ typedef FormData_pg_amop *Form_pg_amop;
* rtree box_ops
*/
DATA(insert ( 425 1 f 493 ));
DATA(insert ( 425 2 f 494 ));
DATA(insert ( 425 3 f 500 ));
DATA(insert ( 425 4 f 495 ));
DATA(insert ( 425 5 f 496 ));
DATA(insert ( 425 6 f 499 ));
DATA(insert ( 425 7 f 498 ));
DATA(insert ( 425 8 f 497 ));
/*
* rtree bigbox_ops
*/
DATA(insert ( 422 1 f 493 ));
DATA(insert ( 422 2 f 494 ));
DATA(insert ( 422 3 f 500 ));
DATA(insert ( 422 4 f 495 ));
DATA(insert ( 422 5 f 496 ));
DATA(insert ( 422 6 f 499 ));
DATA(insert ( 422 7 f 498 ));
DATA(insert ( 422 8 f 497 ));
DATA(insert ( 425 0 1 f 493 ));
DATA(insert ( 425 0 2 f 494 ));
DATA(insert ( 425 0 3 f 500 ));
DATA(insert ( 425 0 4 f 495 ));
DATA(insert ( 425 0 5 f 496 ));
DATA(insert ( 425 0 6 f 499 ));
DATA(insert ( 425 0 7 f 498 ));
DATA(insert ( 425 0 8 f 497 ));
/*
* rtree poly_ops (supports polygons)
*/
DATA(insert ( 1993 1 f 485 ));
DATA(insert ( 1993 2 f 486 ));
DATA(insert ( 1993 3 f 492 ));
DATA(insert ( 1993 4 f 487 ));
DATA(insert ( 1993 5 f 488 ));
DATA(insert ( 1993 6 f 491 ));
DATA(insert ( 1993 7 f 490 ));
DATA(insert ( 1993 8 f 489 ));
DATA(insert ( 1993 0 1 f 485 ));
DATA(insert ( 1993 0 2 f 486 ));
DATA(insert ( 1993 0 3 f 492 ));
DATA(insert ( 1993 0 4 f 487 ));
DATA(insert ( 1993 0 5 f 488 ));
DATA(insert ( 1993 0 6 f 491 ));
DATA(insert ( 1993 0 7 f 490 ));
DATA(insert ( 1993 0 8 f 489 ));
/*
* btree int2_ops
*/
DATA(insert ( 1976 1 f 95 ));
DATA(insert ( 1976 2 f 522 ));
DATA(insert ( 1976 3 f 94 ));
DATA(insert ( 1976 4 f 524 ));
DATA(insert ( 1976 5 f 520 ));
DATA(insert ( 1976 0 1 f 95 ));
DATA(insert ( 1976 0 2 f 522 ));
DATA(insert ( 1976 0 3 f 94 ));
DATA(insert ( 1976 0 4 f 524 ));
DATA(insert ( 1976 0 5 f 520 ));
/* crosstype operators int24 */
DATA(insert ( 1976 23 1 f 534 ));
DATA(insert ( 1976 23 2 f 540 ));
DATA(insert ( 1976 23 3 f 532 ));
DATA(insert ( 1976 23 4 f 542 ));
DATA(insert ( 1976 23 5 f 536 ));
/* crosstype operators int28 */
DATA(insert ( 1976 20 1 f 1864 ));
DATA(insert ( 1976 20 2 f 1866 ));
DATA(insert ( 1976 20 3 f 1862 ));
DATA(insert ( 1976 20 4 f 1867 ));
DATA(insert ( 1976 20 5 f 1865 ));
/*
* btree int4_ops
*/
DATA(insert ( 1978 1 f 97 ));
DATA(insert ( 1978 2 f 523 ));
DATA(insert ( 1978 3 f 96 ));
DATA(insert ( 1978 4 f 525 ));
DATA(insert ( 1978 5 f 521 ));
DATA(insert ( 1978 0 1 f 97 ));
DATA(insert ( 1978 0 2 f 523 ));
DATA(insert ( 1978 0 3 f 96 ));
DATA(insert ( 1978 0 4 f 525 ));
DATA(insert ( 1978 0 5 f 521 ));
/* crosstype operators int42 */
DATA(insert ( 1978 21 1 f 535 ));
DATA(insert ( 1978 21 2 f 541 ));
DATA(insert ( 1978 21 3 f 533 ));
DATA(insert ( 1978 21 4 f 543 ));
DATA(insert ( 1978 21 5 f 537 ));
/* crosstype operators int48 */
DATA(insert ( 1978 20 1 f 37 ));
DATA(insert ( 1978 20 2 f 80 ));
DATA(insert ( 1978 20 3 f 15 ));
DATA(insert ( 1978 20 4 f 82 ));
DATA(insert ( 1978 20 5 f 76 ));
/*
* btree int8_ops
*/
DATA(insert ( 1980 1 f 412 ));
DATA(insert ( 1980 2 f 414 ));
DATA(insert ( 1980 3 f 410 ));
DATA(insert ( 1980 4 f 415 ));
DATA(insert ( 1980 5 f 413 ));
DATA(insert ( 1980 0 1 f 412 ));
DATA(insert ( 1980 0 2 f 414 ));
DATA(insert ( 1980 0 3 f 410 ));
DATA(insert ( 1980 0 4 f 415 ));
DATA(insert ( 1980 0 5 f 413 ));
/* crosstype operators int82 */
DATA(insert ( 1980 21 1 f 1870 ));
DATA(insert ( 1980 21 2 f 1872 ));
DATA(insert ( 1980 21 3 f 1868 ));
DATA(insert ( 1980 21 4 f 1873 ));
DATA(insert ( 1980 21 5 f 1871 ));
/* crosstype operators int84 */
DATA(insert ( 1980 23 1 f 418 ));
DATA(insert ( 1980 23 2 f 420 ));
DATA(insert ( 1980 23 3 f 416 ));
DATA(insert ( 1980 23 4 f 430 ));
DATA(insert ( 1980 23 5 f 419 ));
/*
* btree oid_ops
*/
DATA(insert ( 1989 1 f 609 ));
DATA(insert ( 1989 2 f 611 ));
DATA(insert ( 1989 3 f 607 ));
DATA(insert ( 1989 4 f 612 ));
DATA(insert ( 1989 5 f 610 ));
DATA(insert ( 1989 0 1 f 609 ));
DATA(insert ( 1989 0 2 f 611 ));
DATA(insert ( 1989 0 3 f 607 ));
DATA(insert ( 1989 0 4 f 612 ));
DATA(insert ( 1989 0 5 f 610 ));
/*
* btree oidvector_ops
*/
DATA(insert ( 1991 1 f 645 ));
DATA(insert ( 1991 2 f 647 ));
DATA(insert ( 1991 3 f 649 ));
DATA(insert ( 1991 4 f 648 ));
DATA(insert ( 1991 5 f 646 ));
DATA(insert ( 1991 0 1 f 645 ));
DATA(insert ( 1991 0 2 f 647 ));
DATA(insert ( 1991 0 3 f 649 ));
DATA(insert ( 1991 0 4 f 648 ));
DATA(insert ( 1991 0 5 f 646 ));
/*
* btree float4_ops
*/
DATA(insert ( 1970 1 f 622 ));
DATA(insert ( 1970 2 f 624 ));
DATA(insert ( 1970 3 f 620 ));
DATA(insert ( 1970 4 f 625 ));
DATA(insert ( 1970 5 f 623 ));
DATA(insert ( 1970 0 1 f 622 ));
DATA(insert ( 1970 0 2 f 624 ));
DATA(insert ( 1970 0 3 f 620 ));
DATA(insert ( 1970 0 4 f 625 ));
DATA(insert ( 1970 0 5 f 623 ));
/* crosstype operators float48 */
DATA(insert ( 1970 701 1 f 1122 ));
DATA(insert ( 1970 701 2 f 1124 ));
DATA(insert ( 1970 701 3 f 1120 ));
DATA(insert ( 1970 701 4 f 1125 ));
DATA(insert ( 1970 701 5 f 1123 ));
/*
* btree float8_ops
*/
DATA(insert ( 1972 1 f 672 ));
DATA(insert ( 1972 2 f 673 ));
DATA(insert ( 1972 3 f 670 ));
DATA(insert ( 1972 4 f 675 ));
DATA(insert ( 1972 5 f 674 ));
DATA(insert ( 1972 0 1 f 672 ));
DATA(insert ( 1972 0 2 f 673 ));
DATA(insert ( 1972 0 3 f 670 ));
DATA(insert ( 1972 0 4 f 675 ));
DATA(insert ( 1972 0 5 f 674 ));
/* crosstype operators float84 */
DATA(insert ( 1972 700 1 f 1132 ));
DATA(insert ( 1972 700 2 f 1134 ));
DATA(insert ( 1972 700 3 f 1130 ));
DATA(insert ( 1972 700 4 f 1135 ));
DATA(insert ( 1972 700 5 f 1133 ));
/*
* btree char_ops
*/
DATA(insert ( 429 1 f 631 ));
DATA(insert ( 429 2 f 632 ));
DATA(insert ( 429 3 f 92 ));
DATA(insert ( 429 4 f 634 ));
DATA(insert ( 429 5 f 633 ));
DATA(insert ( 429 0 1 f 631 ));
DATA(insert ( 429 0 2 f 632 ));
DATA(insert ( 429 0 3 f 92 ));
DATA(insert ( 429 0 4 f 634 ));
DATA(insert ( 429 0 5 f 633 ));
/*
* btree name_ops
*/
DATA(insert ( 1986 1 f 660 ));
DATA(insert ( 1986 2 f 661 ));
DATA(insert ( 1986 3 f 93 ));
DATA(insert ( 1986 4 f 663 ));
DATA(insert ( 1986 5 f 662 ));
DATA(insert ( 1986 0 1 f 660 ));
DATA(insert ( 1986 0 2 f 661 ));
DATA(insert ( 1986 0 3 f 93 ));
DATA(insert ( 1986 0 4 f 663 ));
DATA(insert ( 1986 0 5 f 662 ));
/*
* btree text_ops
*/
DATA(insert ( 1994 1 f 664 ));
DATA(insert ( 1994 2 f 665 ));
DATA(insert ( 1994 3 f 98 ));
DATA(insert ( 1994 4 f 667 ));
DATA(insert ( 1994 5 f 666 ));
DATA(insert ( 1994 0 1 f 664 ));
DATA(insert ( 1994 0 2 f 665 ));
DATA(insert ( 1994 0 3 f 98 ));
DATA(insert ( 1994 0 4 f 667 ));
DATA(insert ( 1994 0 5 f 666 ));
/*
* btree bpchar_ops
*/
DATA(insert ( 426 1 f 1058 ));
DATA(insert ( 426 2 f 1059 ));
DATA(insert ( 426 3 f 1054 ));
DATA(insert ( 426 4 f 1061 ));
DATA(insert ( 426 5 f 1060 ));
DATA(insert ( 426 0 1 f 1058 ));
DATA(insert ( 426 0 2 f 1059 ));
DATA(insert ( 426 0 3 f 1054 ));
DATA(insert ( 426 0 4 f 1061 ));
DATA(insert ( 426 0 5 f 1060 ));
/*
* btree varchar_ops (same operators as text_ops)
*/
DATA(insert ( 2003 1 f 664 ));
DATA(insert ( 2003 2 f 665 ));
DATA(insert ( 2003 3 f 98 ));
DATA(insert ( 2003 4 f 667 ));
DATA(insert ( 2003 5 f 666 ));
DATA(insert ( 2003 0 1 f 664 ));
DATA(insert ( 2003 0 2 f 665 ));
DATA(insert ( 2003 0 3 f 98 ));
DATA(insert ( 2003 0 4 f 667 ));
DATA(insert ( 2003 0 5 f 666 ));
/*
* btree bytea_ops
*/
DATA(insert ( 428 1 f 1957 ));
DATA(insert ( 428 2 f 1958 ));
DATA(insert ( 428 3 f 1955 ));
DATA(insert ( 428 4 f 1960 ));
DATA(insert ( 428 5 f 1959 ));
DATA(insert ( 428 0 1 f 1957 ));
DATA(insert ( 428 0 2 f 1958 ));
DATA(insert ( 428 0 3 f 1955 ));
DATA(insert ( 428 0 4 f 1960 ));
DATA(insert ( 428 0 5 f 1959 ));
/*
* btree abstime_ops
*/
DATA(insert ( 421 1 f 562 ));
DATA(insert ( 421 2 f 564 ));
DATA(insert ( 421 3 f 560 ));
DATA(insert ( 421 4 f 565 ));
DATA(insert ( 421 5 f 563 ));
DATA(insert ( 421 0 1 f 562 ));
DATA(insert ( 421 0 2 f 564 ));
DATA(insert ( 421 0 3 f 560 ));
DATA(insert ( 421 0 4 f 565 ));
DATA(insert ( 421 0 5 f 563 ));
/*
* btree date_ops
*/
DATA(insert ( 434 1 f 1095 ));
DATA(insert ( 434 2 f 1096 ));
DATA(insert ( 434 3 f 1093 ));
DATA(insert ( 434 4 f 1098 ));
DATA(insert ( 434 5 f 1097 ));
DATA(insert ( 434 0 1 f 1095 ));
DATA(insert ( 434 0 2 f 1096 ));
DATA(insert ( 434 0 3 f 1093 ));
DATA(insert ( 434 0 4 f 1098 ));
DATA(insert ( 434 0 5 f 1097 ));
/*
* btree time_ops
*/
DATA(insert ( 1996 1 f 1110 ));
DATA(insert ( 1996 2 f 1111 ));
DATA(insert ( 1996 3 f 1108 ));
DATA(insert ( 1996 4 f 1113 ));
DATA(insert ( 1996 5 f 1112 ));
DATA(insert ( 1996 0 1 f 1110 ));
DATA(insert ( 1996 0 2 f 1111 ));
DATA(insert ( 1996 0 3 f 1108 ));
DATA(insert ( 1996 0 4 f 1113 ));
DATA(insert ( 1996 0 5 f 1112 ));
/*
* btree timetz_ops
*/
DATA(insert ( 2000 1 f 1552 ));
DATA(insert ( 2000 2 f 1553 ));
DATA(insert ( 2000 3 f 1550 ));
DATA(insert ( 2000 4 f 1555 ));
DATA(insert ( 2000 5 f 1554 ));
DATA(insert ( 2000 0 1 f 1552 ));
DATA(insert ( 2000 0 2 f 1553 ));
DATA(insert ( 2000 0 3 f 1550 ));
DATA(insert ( 2000 0 4 f 1555 ));
DATA(insert ( 2000 0 5 f 1554 ));
/*
* btree timestamp_ops
*/
DATA(insert ( 2039 1 f 2062 ));
DATA(insert ( 2039 2 f 2063 ));
DATA(insert ( 2039 3 f 2060 ));
DATA(insert ( 2039 4 f 2065 ));
DATA(insert ( 2039 5 f 2064 ));
DATA(insert ( 2039 0 1 f 2062 ));
DATA(insert ( 2039 0 2 f 2063 ));
DATA(insert ( 2039 0 3 f 2060 ));
DATA(insert ( 2039 0 4 f 2065 ));
DATA(insert ( 2039 0 5 f 2064 ));
/*
* btree timestamptz_ops
*/
DATA(insert ( 1998 1 f 1322 ));
DATA(insert ( 1998 2 f 1323 ));
DATA(insert ( 1998 3 f 1320 ));
DATA(insert ( 1998 4 f 1325 ));
DATA(insert ( 1998 5 f 1324 ));
DATA(insert ( 1998 0 1 f 1322 ));
DATA(insert ( 1998 0 2 f 1323 ));
DATA(insert ( 1998 0 3 f 1320 ));
DATA(insert ( 1998 0 4 f 1325 ));
DATA(insert ( 1998 0 5 f 1324 ));
/*
* btree interval_ops
*/
DATA(insert ( 1982 1 f 1332 ));
DATA(insert ( 1982 2 f 1333 ));
DATA(insert ( 1982 3 f 1330 ));
DATA(insert ( 1982 4 f 1335 ));
DATA(insert ( 1982 5 f 1334 ));
DATA(insert ( 1982 0 1 f 1332 ));
DATA(insert ( 1982 0 2 f 1333 ));
DATA(insert ( 1982 0 3 f 1330 ));
DATA(insert ( 1982 0 4 f 1335 ));
DATA(insert ( 1982 0 5 f 1334 ));
/*
* btree macaddr
*/
DATA(insert ( 1984 1 f 1222 ));
DATA(insert ( 1984 2 f 1223 ));
DATA(insert ( 1984 3 f 1220 ));
DATA(insert ( 1984 4 f 1225 ));
DATA(insert ( 1984 5 f 1224 ));
DATA(insert ( 1984 0 1 f 1222 ));
DATA(insert ( 1984 0 2 f 1223 ));
DATA(insert ( 1984 0 3 f 1220 ));
DATA(insert ( 1984 0 4 f 1225 ));
DATA(insert ( 1984 0 5 f 1224 ));
/*
* btree inet
*/
DATA(insert ( 1974 1 f 1203 ));
DATA(insert ( 1974 2 f 1204 ));
DATA(insert ( 1974 3 f 1201 ));
DATA(insert ( 1974 4 f 1206 ));
DATA(insert ( 1974 5 f 1205 ));
DATA(insert ( 1974 0 1 f 1203 ));
DATA(insert ( 1974 0 2 f 1204 ));
DATA(insert ( 1974 0 3 f 1201 ));
DATA(insert ( 1974 0 4 f 1206 ));
DATA(insert ( 1974 0 5 f 1205 ));
/*
* btree cidr
*/
DATA(insert ( 432 1 f 822 ));
DATA(insert ( 432 2 f 823 ));
DATA(insert ( 432 3 f 820 ));
DATA(insert ( 432 4 f 825 ));
DATA(insert ( 432 5 f 824 ));
DATA(insert ( 432 0 1 f 822 ));
DATA(insert ( 432 0 2 f 823 ));
DATA(insert ( 432 0 3 f 820 ));
DATA(insert ( 432 0 4 f 825 ));
DATA(insert ( 432 0 5 f 824 ));
/*
* btree numeric
*/
DATA(insert ( 1988 1 f 1754 ));
DATA(insert ( 1988 2 f 1755 ));
DATA(insert ( 1988 3 f 1752 ));
DATA(insert ( 1988 4 f 1757 ));
DATA(insert ( 1988 5 f 1756 ));
DATA(insert ( 1988 0 1 f 1754 ));
DATA(insert ( 1988 0 2 f 1755 ));
DATA(insert ( 1988 0 3 f 1752 ));
DATA(insert ( 1988 0 4 f 1757 ));
DATA(insert ( 1988 0 5 f 1756 ));
/*
* btree bool
*/
DATA(insert ( 424 1 f 58 ));
DATA(insert ( 424 2 f 1694 ));
DATA(insert ( 424 3 f 91 ));
DATA(insert ( 424 4 f 1695 ));
DATA(insert ( 424 5 f 59 ));
DATA(insert ( 424 0 1 f 58 ));
DATA(insert ( 424 0 2 f 1694 ));
DATA(insert ( 424 0 3 f 91 ));
DATA(insert ( 424 0 4 f 1695 ));
DATA(insert ( 424 0 5 f 59 ));
/*
* btree bit
*/
DATA(insert ( 423 1 f 1786 ));
DATA(insert ( 423 2 f 1788 ));
DATA(insert ( 423 3 f 1784 ));
DATA(insert ( 423 4 f 1789 ));
DATA(insert ( 423 5 f 1787 ));
DATA(insert ( 423 0 1 f 1786 ));
DATA(insert ( 423 0 2 f 1788 ));
DATA(insert ( 423 0 3 f 1784 ));
DATA(insert ( 423 0 4 f 1789 ));
DATA(insert ( 423 0 5 f 1787 ));
/*
* btree varbit
*/
DATA(insert ( 2002 1 f 1806 ));
DATA(insert ( 2002 2 f 1808 ));
DATA(insert ( 2002 3 f 1804 ));
DATA(insert ( 2002 4 f 1809 ));
DATA(insert ( 2002 5 f 1807 ));
DATA(insert ( 2002 0 1 f 1806 ));
DATA(insert ( 2002 0 2 f 1808 ));
DATA(insert ( 2002 0 3 f 1804 ));
DATA(insert ( 2002 0 4 f 1809 ));
DATA(insert ( 2002 0 5 f 1807 ));
/*
* btree text pattern
*/
DATA(insert ( 2095 1 f 2314 ));
DATA(insert ( 2095 2 f 2315 ));
DATA(insert ( 2095 3 f 2316 ));
DATA(insert ( 2095 4 f 2317 ));
DATA(insert ( 2095 5 f 2318 ));
DATA(insert ( 2095 0 1 f 2314 ));
DATA(insert ( 2095 0 2 f 2315 ));
DATA(insert ( 2095 0 3 f 2316 ));
DATA(insert ( 2095 0 4 f 2317 ));
DATA(insert ( 2095 0 5 f 2318 ));
/*
* btree varchar pattern (same operators as text)
*/
DATA(insert ( 2096 1 f 2314 ));
DATA(insert ( 2096 2 f 2315 ));
DATA(insert ( 2096 3 f 2316 ));
DATA(insert ( 2096 4 f 2317 ));
DATA(insert ( 2096 5 f 2318 ));
DATA(insert ( 2096 0 1 f 2314 ));
DATA(insert ( 2096 0 2 f 2315 ));
DATA(insert ( 2096 0 3 f 2316 ));
DATA(insert ( 2096 0 4 f 2317 ));
DATA(insert ( 2096 0 5 f 2318 ));
/*
* btree bpchar pattern
*/
DATA(insert ( 2097 1 f 2326 ));
DATA(insert ( 2097 2 f 2327 ));
DATA(insert ( 2097 3 f 2328 ));
DATA(insert ( 2097 4 f 2329 ));
DATA(insert ( 2097 5 f 2330 ));
DATA(insert ( 2097 0 1 f 2326 ));
DATA(insert ( 2097 0 2 f 2327 ));
DATA(insert ( 2097 0 3 f 2328 ));
DATA(insert ( 2097 0 4 f 2329 ));
DATA(insert ( 2097 0 5 f 2330 ));
/*
* btree name pattern
*/
DATA(insert ( 2098 1 f 2332 ));
DATA(insert ( 2098 2 f 2333 ));
DATA(insert ( 2098 3 f 2334 ));
DATA(insert ( 2098 4 f 2335 ));
DATA(insert ( 2098 5 f 2336 ));
DATA(insert ( 2098 0 1 f 2332 ));
DATA(insert ( 2098 0 2 f 2333 ));
DATA(insert ( 2098 0 3 f 2334 ));
DATA(insert ( 2098 0 4 f 2335 ));
DATA(insert ( 2098 0 5 f 2336 ));
/*
* btree money_ops
*/
DATA(insert ( 2099 1 f 902 ));
DATA(insert ( 2099 2 f 904 ));
DATA(insert ( 2099 3 f 900 ));
DATA(insert ( 2099 4 f 905 ));
DATA(insert ( 2099 5 f 903 ));
DATA(insert ( 2099 0 1 f 902 ));
DATA(insert ( 2099 0 2 f 904 ));
DATA(insert ( 2099 0 3 f 900 ));
DATA(insert ( 2099 0 4 f 905 ));
DATA(insert ( 2099 0 5 f 903 ));
/*
* btree reltime_ops
*/
DATA(insert ( 2233 1 f 568 ));
DATA(insert ( 2233 2 f 570 ));
DATA(insert ( 2233 3 f 566 ));
DATA(insert ( 2233 4 f 569 ));
DATA(insert ( 2233 5 f 571 ));
DATA(insert ( 2233 0 1 f 568 ));
DATA(insert ( 2233 0 2 f 570 ));
DATA(insert ( 2233 0 3 f 566 ));
DATA(insert ( 2233 0 4 f 571 ));
DATA(insert ( 2233 0 5 f 569 ));
/*
* btree tinterval_ops
*/
DATA(insert ( 2234 1 f 813 ));
DATA(insert ( 2234 2 f 815 ));
DATA(insert ( 2234 3 f 811 ));
DATA(insert ( 2234 4 f 814 ));
DATA(insert ( 2234 5 f 816 ));
DATA(insert ( 2234 0 1 f 813 ));
DATA(insert ( 2234 0 2 f 815 ));
DATA(insert ( 2234 0 3 f 811 ));
DATA(insert ( 2234 0 4 f 816 ));
DATA(insert ( 2234 0 5 f 814 ));
/*
* btree array_ops
*/
DATA(insert ( 397 1 f 1072 ));
DATA(insert ( 397 2 f 1074 ));
DATA(insert ( 397 3 f 1070 ));
DATA(insert ( 397 4 f 1075 ));
DATA(insert ( 397 5 f 1073 ));
DATA(insert ( 397 0 1 f 1072 ));
DATA(insert ( 397 0 2 f 1074 ));
DATA(insert ( 397 0 3 f 1070 ));
DATA(insert ( 397 0 4 f 1075 ));
DATA(insert ( 397 0 5 f 1073 ));
/*
* hash index _ops
*/
/* bpchar_ops */
DATA(insert ( 427 1 f 1054 ));
DATA(insert ( 427 0 1 f 1054 ));
/* char_ops */
DATA(insert ( 431 1 f 92 ));
DATA(insert ( 431 0 1 f 92 ));
/* cidr_ops */
DATA(insert ( 433 1 f 820 ));
DATA(insert ( 433 0 1 f 820 ));
/* date_ops */
DATA(insert ( 435 1 f 1093 ));
DATA(insert ( 435 0 1 f 1093 ));
/* float4_ops */
DATA(insert ( 1971 1 f 620 ));
DATA(insert ( 1971 0 1 f 620 ));
/* float8_ops */
DATA(insert ( 1973 1 f 670 ));
DATA(insert ( 1973 0 1 f 670 ));
/* inet_ops */
DATA(insert ( 1975 1 f 1201 ));
DATA(insert ( 1975 0 1 f 1201 ));
/* int2_ops */
DATA(insert ( 1977 1 f 94 ));
DATA(insert ( 1977 0 1 f 94 ));
/* int4_ops */
DATA(insert ( 1979 1 f 96 ));
DATA(insert ( 1979 0 1 f 96 ));
/* int8_ops */
DATA(insert ( 1981 1 f 410 ));
DATA(insert ( 1981 0 1 f 410 ));
/* interval_ops */
DATA(insert ( 1983 1 f 1330 ));
DATA(insert ( 1983 0 1 f 1330 ));
/* macaddr_ops */
DATA(insert ( 1985 1 f 1220 ));
DATA(insert ( 1985 0 1 f 1220 ));
/* name_ops */
DATA(insert ( 1987 1 f 93 ));
DATA(insert ( 1987 0 1 f 93 ));
/* oid_ops */
DATA(insert ( 1990 1 f 607 ));
DATA(insert ( 1990 0 1 f 607 ));
/* oidvector_ops */
DATA(insert ( 1992 1 f 649 ));
DATA(insert ( 1992 0 1 f 649 ));
/* text_ops */
DATA(insert ( 1995 1 f 98 ));
DATA(insert ( 1995 0 1 f 98 ));
/* time_ops */
DATA(insert ( 1997 1 f 1108 ));
DATA(insert ( 1997 0 1 f 1108 ));
/* timestamptz_ops */
DATA(insert ( 1999 1 f 1320 ));
DATA(insert ( 1999 0 1 f 1320 ));
/* timetz_ops */
DATA(insert ( 2001 1 f 1550 ));
DATA(insert ( 2001 0 1 f 1550 ));
/* varchar_ops */
DATA(insert ( 2004 1 f 98 ));
DATA(insert ( 2004 0 1 f 98 ));
/* timestamp_ops */
DATA(insert ( 2040 1 f 2060 ));
DATA(insert ( 2040 0 1 f 2060 ));
/* bool_ops */
DATA(insert ( 2222 1 f 91 ));
DATA(insert ( 2222 0 1 f 91 ));
/* bytea_ops */
DATA(insert ( 2223 1 f 1955 ));
DATA(insert ( 2223 0 1 f 1955 ));
/* int2vector_ops */
DATA(insert ( 2224 1 f 386 ));
DATA(insert ( 2224 0 1 f 386 ));
/* xid_ops */
DATA(insert ( 2225 1 f 352 ));
DATA(insert ( 2225 0 1 f 352 ));
/* cid_ops */
DATA(insert ( 2226 1 f 385 ));
DATA(insert ( 2226 0 1 f 385 ));
/* abstime_ops */
DATA(insert ( 2227 1 f 560 ));
DATA(insert ( 2227 0 1 f 560 ));
/* reltime_ops */
DATA(insert ( 2228 1 f 566 ));
DATA(insert ( 2228 0 1 f 566 ));
/* text_pattern_ops */
DATA(insert ( 2229 1 f 2316 ));
DATA(insert ( 2229 0 1 f 2316 ));
/* varchar_pattern_ops */
DATA(insert ( 2230 1 f 2316 ));
DATA(insert ( 2230 0 1 f 2316 ));
/* bpchar_pattern_ops */
DATA(insert ( 2231 1 f 2328 ));
DATA(insert ( 2231 0 1 f 2328 ));
/* name_pattern_ops */
DATA(insert ( 2232 1 f 2334 ));
DATA(insert ( 2232 0 1 f 2334 ));
/* aclitem_ops */
DATA(insert ( 2235 1 f 974 ));
DATA(insert ( 2235 0 1 f 974 ));
#endif /* PG_AMOP_H */

View File

@ -6,15 +6,20 @@
*
* The amproc table identifies support procedures associated with index
* opclasses. These procedures can't be listed in pg_amop since they are
* not associated with indexable operators for the opclass.
* not the implementation of any indexable operator for the opclass.
*
* Note: the primary key for this table is <amopclaid, amprocnum>.
* The primary key for this table is <amopclaid, amprocsubtype, amprocnum>.
* amprocsubtype is equal to zero for an opclass's "default" procedures.
* Usually a nondefault amprocsubtype indicates a support procedure to be
* used with operators having the same nondefault amopsubtype. The exact
* behavior depends on the index AM, however, and some don't pay attention
* to subtype at all.
*
*
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: pg_amproc.h,v 1.44 2003/08/17 19:58:06 tgl Exp $
* $Id: pg_amproc.h,v 1.45 2003/11/12 21:15:57 tgl Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
@ -40,6 +45,7 @@
CATALOG(pg_amproc) BKI_WITHOUT_OIDS
{
Oid amopclaid; /* the index opclass this entry is for */
Oid amprocsubtype; /* procedure subtype, or zero if default */
int2 amprocnum; /* support procedure index */
regproc amproc; /* OID of the proc */
} FormData_pg_amproc;
@ -55,10 +61,11 @@ typedef FormData_pg_amproc *Form_pg_amproc;
* compiler constants for pg_amproc
* ----------------
*/
#define Natts_pg_amproc 3
#define Natts_pg_amproc 4
#define Anum_pg_amproc_amopclaid 1
#define Anum_pg_amproc_amprocnum 2
#define Anum_pg_amproc_amproc 3
#define Anum_pg_amproc_amprocsubtype 2
#define Anum_pg_amproc_amprocnum 3
#define Anum_pg_amproc_amproc 4
/* ----------------
* initial contents of pg_amproc
@ -66,88 +73,93 @@ typedef FormData_pg_amproc *Form_pg_amproc;
*/
/* rtree */
DATA(insert ( 422 1 193 ));
DATA(insert ( 422 2 194 ));
DATA(insert ( 422 3 196 ));
DATA(insert ( 425 1 193 ));
DATA(insert ( 425 2 194 ));
DATA(insert ( 425 3 195 ));
DATA(insert ( 1993 1 197 ));
DATA(insert ( 1993 2 198 ));
DATA(insert ( 1993 3 199 ));
DATA(insert ( 425 0 1 193 ));
DATA(insert ( 425 0 2 194 ));
DATA(insert ( 425 0 3 195 ));
DATA(insert ( 1993 0 1 197 ));
DATA(insert ( 1993 0 2 198 ));
DATA(insert ( 1993 0 3 199 ));
/* btree */
DATA(insert ( 397 1 382 ));
DATA(insert ( 421 1 357 ));
DATA(insert ( 423 1 1596 ));
DATA(insert ( 424 1 1693 ));
DATA(insert ( 426 1 1078 ));
DATA(insert ( 428 1 1954 ));
DATA(insert ( 429 1 358 ));
DATA(insert ( 432 1 926 ));
DATA(insert ( 434 1 1092 ));
DATA(insert ( 1970 1 354 ));
DATA(insert ( 1972 1 355 ));
DATA(insert ( 1974 1 926 ));
DATA(insert ( 1976 1 350 ));
DATA(insert ( 1978 1 351 ));
DATA(insert ( 1980 1 842 ));
DATA(insert ( 1982 1 1315 ));
DATA(insert ( 1984 1 836 ));
DATA(insert ( 1986 1 359 ));
DATA(insert ( 1988 1 1769 ));
DATA(insert ( 1989 1 356 ));
DATA(insert ( 1991 1 404 ));
DATA(insert ( 1994 1 360 ));
DATA(insert ( 1996 1 1107 ));
DATA(insert ( 1998 1 1314 ));
DATA(insert ( 2000 1 1358 ));
DATA(insert ( 2002 1 1672 ));
DATA(insert ( 2003 1 360 ));
DATA(insert ( 2039 1 2045 ));
DATA(insert ( 2095 1 2166 ));
DATA(insert ( 2096 1 2166 ));
DATA(insert ( 2097 1 2180 ));
DATA(insert ( 2098 1 2187 ));
DATA(insert ( 2099 1 377 ));
DATA(insert ( 2233 1 380 ));
DATA(insert ( 2234 1 381 ));
DATA(insert ( 397 0 1 382 ));
DATA(insert ( 421 0 1 357 ));
DATA(insert ( 423 0 1 1596 ));
DATA(insert ( 424 0 1 1693 ));
DATA(insert ( 426 0 1 1078 ));
DATA(insert ( 428 0 1 1954 ));
DATA(insert ( 429 0 1 358 ));
DATA(insert ( 432 0 1 926 ));
DATA(insert ( 434 0 1 1092 ));
DATA(insert ( 1970 0 1 354 ));
DATA(insert ( 1970 701 1 2194 ));
DATA(insert ( 1972 0 1 355 ));
DATA(insert ( 1972 700 1 2195 ));
DATA(insert ( 1974 0 1 926 ));
DATA(insert ( 1976 0 1 350 ));
DATA(insert ( 1976 23 1 2190 ));
DATA(insert ( 1976 20 1 2192 ));
DATA(insert ( 1978 0 1 351 ));
DATA(insert ( 1978 20 1 2188 ));
DATA(insert ( 1978 21 1 2191 ));
DATA(insert ( 1980 0 1 842 ));
DATA(insert ( 1980 23 1 2189 ));
DATA(insert ( 1980 21 1 2193 ));
DATA(insert ( 1982 0 1 1315 ));
DATA(insert ( 1984 0 1 836 ));
DATA(insert ( 1986 0 1 359 ));
DATA(insert ( 1988 0 1 1769 ));
DATA(insert ( 1989 0 1 356 ));
DATA(insert ( 1991 0 1 404 ));
DATA(insert ( 1994 0 1 360 ));
DATA(insert ( 1996 0 1 1107 ));
DATA(insert ( 1998 0 1 1314 ));
DATA(insert ( 2000 0 1 1358 ));
DATA(insert ( 2002 0 1 1672 ));
DATA(insert ( 2003 0 1 360 ));
DATA(insert ( 2039 0 1 2045 ));
DATA(insert ( 2095 0 1 2166 ));
DATA(insert ( 2096 0 1 2166 ));
DATA(insert ( 2097 0 1 2180 ));
DATA(insert ( 2098 0 1 2187 ));
DATA(insert ( 2099 0 1 377 ));
DATA(insert ( 2233 0 1 380 ));
DATA(insert ( 2234 0 1 381 ));
/* hash */
DATA(insert ( 427 1 1080 ));
DATA(insert ( 431 1 454 ));
DATA(insert ( 433 1 456 ));
DATA(insert ( 435 1 450 ));
DATA(insert ( 1971 1 451 ));
DATA(insert ( 1973 1 452 ));
DATA(insert ( 1975 1 456 ));
DATA(insert ( 1977 1 449 ));
DATA(insert ( 1979 1 450 ));
DATA(insert ( 1981 1 949 ));
DATA(insert ( 1983 1 1697 ));
DATA(insert ( 1985 1 399 ));
DATA(insert ( 1987 1 455 ));
DATA(insert ( 1990 1 453 ));
DATA(insert ( 1992 1 457 ));
DATA(insert ( 1995 1 400 ));
DATA(insert ( 1997 1 452 ));
DATA(insert ( 1999 1 452 ));
DATA(insert ( 2001 1 1696 ));
DATA(insert ( 2004 1 400 ));
DATA(insert ( 2040 1 452 ));
DATA(insert ( 2222 1 454 ));
DATA(insert ( 2223 1 456 ));
DATA(insert ( 2224 1 398 ));
DATA(insert ( 2225 1 450 ));
DATA(insert ( 2226 1 450 ));
DATA(insert ( 2227 1 450 ));
DATA(insert ( 2228 1 450 ));
DATA(insert ( 2229 1 456 ));
DATA(insert ( 2230 1 456 ));
DATA(insert ( 2231 1 456 ));
DATA(insert ( 2232 1 455 ));
DATA(insert ( 2235 1 329 ));
DATA(insert ( 427 0 1 1080 ));
DATA(insert ( 431 0 1 454 ));
DATA(insert ( 433 0 1 456 ));
DATA(insert ( 435 0 1 450 ));
DATA(insert ( 1971 0 1 451 ));
DATA(insert ( 1973 0 1 452 ));
DATA(insert ( 1975 0 1 456 ));
DATA(insert ( 1977 0 1 449 ));
DATA(insert ( 1979 0 1 450 ));
DATA(insert ( 1981 0 1 949 ));
DATA(insert ( 1983 0 1 1697 ));
DATA(insert ( 1985 0 1 399 ));
DATA(insert ( 1987 0 1 455 ));
DATA(insert ( 1990 0 1 453 ));
DATA(insert ( 1992 0 1 457 ));
DATA(insert ( 1995 0 1 400 ));
DATA(insert ( 1997 0 1 452 ));
DATA(insert ( 1999 0 1 452 ));
DATA(insert ( 2001 0 1 1696 ));
DATA(insert ( 2004 0 1 400 ));
DATA(insert ( 2040 0 1 452 ));
DATA(insert ( 2222 0 1 454 ));
DATA(insert ( 2223 0 1 456 ));
DATA(insert ( 2224 0 1 398 ));
DATA(insert ( 2225 0 1 450 ));
DATA(insert ( 2226 0 1 450 ));
DATA(insert ( 2227 0 1 450 ));
DATA(insert ( 2228 0 1 450 ));
DATA(insert ( 2229 0 1 456 ));
DATA(insert ( 2230 0 1 456 ));
DATA(insert ( 2231 0 1 456 ));
DATA(insert ( 2232 0 1 455 ));
DATA(insert ( 2235 0 1 329 ));
#endif /* PG_AMPROC_H */

View File

@ -16,17 +16,18 @@
* such an index.
*
* Normally opckeytype = InvalidOid (zero), indicating that the data stored
* in the index is the same as the input data. If opckeytype is nonzero
* then it indicates that a conversion step is needed to produce the stored
* index data, which will be of type opckeytype (which might be the same or
* different from the input data). Performing such a conversion is the
* responsibility of the index access method --- not all AMs support this.
* in the index is the same as the data in the indexed column. If opckeytype
* is nonzero then it indicates that a conversion step is needed to produce
* the stored index data, which will be of type opckeytype (which might be
* the same or different from the input datatype). Performing such a
* conversion is the responsibility of the index access method --- not all
* AMs support this.
*
*
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: pg_opclass.h,v 1.57 2003/08/17 19:58:06 tgl Exp $
* $Id: pg_opclass.h,v 1.58 2003/11/12 21:15:57 tgl Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
@ -56,9 +57,9 @@ CATALOG(pg_opclass)
NameData opcname; /* name of this opclass */
Oid opcnamespace; /* namespace of this opclass */
int4 opcowner; /* opclass owner */
Oid opcintype; /* type of input data for opclass */
Oid opcintype; /* type of data indexed by opclass */
bool opcdefault; /* T if opclass is default for opcintype */
Oid opckeytype; /* type of index data, or InvalidOid */
Oid opckeytype; /* type of data in index, or InvalidOid */
} FormData_pg_opclass;
/* ----------------
@ -89,7 +90,6 @@ typedef FormData_pg_opclass *Form_pg_opclass;
DATA(insert OID = 421 ( 403 abstime_ops PGNSP PGUID 702 t 0 ));
DATA(insert OID = 397 ( 403 array_ops PGNSP PGUID 2277 t 0 ));
#define ARRAY_BTREE_OPS_OID 397
DATA(insert OID = 422 ( 402 bigbox_ops PGNSP PGUID 603 f 0 ));
DATA(insert OID = 423 ( 403 bit_ops PGNSP PGUID 1560 t 0 ));
DATA(insert OID = 424 ( 403 bool_ops PGNSP PGUID 16 t 0 ));
DATA(insert OID = 425 ( 402 box_ops PGNSP PGUID 603 t 0 ));

View File

@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: pg_proc.h,v 1.314 2003/10/21 16:23:16 tgl Exp $
* $Id: pg_proc.h,v 1.315 2003/11/12 21:15:57 tgl Exp $
*
* NOTES
* The script catalog/genbki.sh reads this file and generates .bki
@ -400,8 +400,6 @@ DATA(insert OID = 194 ( rt_box_inter PGNSP PGUID 12 f f t f i 2 2278 "603 60
DESCR("r-tree");
DATA(insert OID = 195 ( rt_box_size PGNSP PGUID 12 f f t f i 2 2278 "603 2281" rt_box_size - _null_ ));
DESCR("r-tree");
DATA(insert OID = 196 ( rt_bigbox_size PGNSP PGUID 12 f f t f i 2 2278 "603 2281" rt_bigbox_size - _null_ ));
DESCR("r-tree");
DATA(insert OID = 197 ( rt_poly_union PGNSP PGUID 12 f f t f i 2 604 "604 604" rt_poly_union - _null_ ));
DESCR("r-tree");
DATA(insert OID = 198 ( rt_poly_inter PGNSP PGUID 12 f f t f i 2 2278 "604 604" rt_poly_inter - _null_ ));
@ -3075,6 +3073,15 @@ DATA(insert OID = 2185 ( name_pattern_gt PGNSP PGUID 12 f f t f i 2 16 "19 19" n
DATA(insert OID = 2186 ( name_pattern_ne PGNSP PGUID 12 f f t f i 2 16 "19 19" name_pattern_ne - _null_ ));
DATA(insert OID = 2187 ( btname_pattern_cmp PGNSP PGUID 12 f f t f i 2 23 "19 19" btname_pattern_cmp - _null_ ));
DATA(insert OID = 2188 ( btint48cmp PGNSP PGUID 12 f f t f i 2 23 "23 20" btint48cmp - _null_ ));
DATA(insert OID = 2189 ( btint84cmp PGNSP PGUID 12 f f t f i 2 23 "20 23" btint84cmp - _null_ ));
DATA(insert OID = 2190 ( btint24cmp PGNSP PGUID 12 f f t f i 2 23 "21 23" btint24cmp - _null_ ));
DATA(insert OID = 2191 ( btint42cmp PGNSP PGUID 12 f f t f i 2 23 "23 21" btint42cmp - _null_ ));
DATA(insert OID = 2192 ( btint28cmp PGNSP PGUID 12 f f t f i 2 23 "21 20" btint28cmp - _null_ ));
DATA(insert OID = 2193 ( btint82cmp PGNSP PGUID 12 f f t f i 2 23 "20 21" btint82cmp - _null_ ));
DATA(insert OID = 2194 ( btfloat48cmp PGNSP PGUID 12 f f t f i 2 23 "700 701" btfloat48cmp - _null_ ));
DATA(insert OID = 2195 ( btfloat84cmp PGNSP PGUID 12 f f t f i 2 23 "701 700" btfloat84cmp - _null_ ));
DATA(insert OID = 2212 ( regprocedurein PGNSP PGUID 12 f f t f s 1 2202 "2275" regprocedurein - _null_ ));
DESCR("I/O");
@ -3157,7 +3164,6 @@ DATA(insert OID = 2273 ( has_schema_privilege PGNSP PGUID 12 f f t f s 2 16
DESCR("current user privilege on schema by schema oid");
DATA(insert OID = 2290 ( record_in PGNSP PGUID 12 f f t f i 1 2249 "2275" record_in - _null_ ));
DESCR("I/O");
DATA(insert OID = 2291 ( record_out PGNSP PGUID 12 f f t f i 1 2275 "2249" record_out - _null_ ));

View File

@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: plannodes.h,v 1.69 2003/11/09 21:30:37 tgl Exp $
* $Id: plannodes.h,v 1.70 2003/11/12 21:15:59 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -165,6 +165,7 @@ typedef struct IndexScan
List *indxqual; /* list of sublists of index quals */
List *indxqualorig; /* the same in original form */
List *indxstrategy; /* list of sublists of strategy numbers */
List *indxsubtype; /* list of sublists of strategy subtypes */
ScanDirection indxorderdir; /* forward or backward or don't care */
} IndexScan;

View File

@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: builtins.h,v 1.228 2003/08/17 19:58:06 tgl Exp $
* $Id: builtins.h,v 1.229 2003/11/12 21:15:59 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -219,6 +219,14 @@ extern Datum btint4cmp(PG_FUNCTION_ARGS);
extern Datum btint8cmp(PG_FUNCTION_ARGS);
extern Datum btfloat4cmp(PG_FUNCTION_ARGS);
extern Datum btfloat8cmp(PG_FUNCTION_ARGS);
extern Datum btint48cmp(PG_FUNCTION_ARGS);
extern Datum btint84cmp(PG_FUNCTION_ARGS);
extern Datum btint24cmp(PG_FUNCTION_ARGS);
extern Datum btint42cmp(PG_FUNCTION_ARGS);
extern Datum btint28cmp(PG_FUNCTION_ARGS);
extern Datum btint82cmp(PG_FUNCTION_ARGS);
extern Datum btfloat48cmp(PG_FUNCTION_ARGS);
extern Datum btfloat84cmp(PG_FUNCTION_ARGS);
extern Datum btoidcmp(PG_FUNCTION_ARGS);
extern Datum btoidvectorcmp(PG_FUNCTION_ARGS);
extern Datum btabstimecmp(PG_FUNCTION_ARGS);

View File

@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: geo_decls.h,v 1.41 2003/08/04 02:40:15 momjian Exp $
* $Id: geo_decls.h,v 1.42 2003/11/12 21:15:59 tgl Exp $
*
* NOTE
* These routines do *not* use the float types from adt/.
@ -399,7 +399,6 @@ extern Datum circle_area(PG_FUNCTION_ARGS);
extern Datum rt_box_union(PG_FUNCTION_ARGS);
extern Datum rt_box_inter(PG_FUNCTION_ARGS);
extern Datum rt_box_size(PG_FUNCTION_ARGS);
extern Datum rt_bigbox_size(PG_FUNCTION_ARGS);
extern Datum rt_poly_size(PG_FUNCTION_ARGS);
extern Datum rt_poly_union(PG_FUNCTION_ARGS);
extern Datum rt_poly_inter(PG_FUNCTION_ARGS);

View File

@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: lsyscache.h,v 1.83 2003/11/09 21:30:38 tgl Exp $
* $Id: lsyscache.h,v 1.84 2003/11/12 21:15:59 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -26,10 +26,11 @@ typedef enum IOFuncSelector
extern bool op_in_opclass(Oid opno, Oid opclass);
extern void get_op_opclass_properties(Oid opno, Oid opclass,
int *strategy, bool *recheck);
extern Oid get_opclass_member(Oid opclass, int16 strategy);
int *strategy, Oid *subtype,
bool *recheck);
extern Oid get_opclass_member(Oid opclass, Oid subtype, int16 strategy);
extern Oid get_op_hash_function(Oid opno);
extern Oid get_opclass_proc(Oid opclass, int16 procnum);
extern Oid get_opclass_proc(Oid opclass, Oid subtype, int16 procnum);
extern char *get_attname(Oid relid, AttrNumber attnum);
extern char *get_relid_attribute_name(Oid relid, AttrNumber attnum);
extern AttrNumber get_attnum(Oid relid, const char *attname);

View File

@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: rel.h,v 1.69 2003/11/09 21:30:38 tgl Exp $
* $Id: rel.h,v 1.70 2003/11/12 21:15:59 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -139,8 +139,8 @@ typedef struct RelationData
/*
* index access support info (used only for an index relation)
*
* Note: only operators and support procs for the index's own datatype
* are cached, not any cross-type operators. The arrays are indexed by
* Note: only default operators and support procs for each opclass are
* cached, namely those with subtype zero. The arrays are indexed by
* strategy or support number, which is a sufficient identifier given
* that restriction.
*/