mirror of https://github.com/postgres/postgres
For upcoming BRIN opclasses, it's convenient to have strategy numbers defined in a single place. Since there's nothing appropriate, create it. The StrategyNumber typedef now lives there, as well as existing strategy numbers for B-trees (from skey.h) and R-tree-and-friends (from gist.h). skey.h is forced to include stratnum.h because of the StrategyNumber typedef, but gist.h is not; extensions that currently rely on gist.h for rtree strategy numbers might need to add a new A few .c files can stop including skey.h and/or gist.h, which is a nice side benefit. Per discussion: https://www.postgresql.org/message-id/20150514232132.GZ2523@alvh.no-ip.org Authored by Emre Hasegeli and Álvaro. (It's not clear to me why bootscanner.l has any #include lines at all.)pull/14/head
parent
1e98fa0bf8
commit
26df7066cc
@ -0,0 +1,75 @@ |
|||||||
|
/*-------------------------------------------------------------------------
|
||||||
|
* |
||||||
|
* stratnum.h |
||||||
|
* POSTGRES strategy number definitions. |
||||||
|
* |
||||||
|
* |
||||||
|
* Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group |
||||||
|
* Portions Copyright (c) 1994, Regents of the University of California |
||||||
|
* |
||||||
|
* src/include/access/stratnum.h |
||||||
|
* |
||||||
|
*------------------------------------------------------------------------- |
||||||
|
*/ |
||||||
|
#ifndef STRATNUM_H |
||||||
|
#define STRATNUM_H |
||||||
|
|
||||||
|
/*
|
||||||
|
* Strategy numbers identify the semantics that particular operators have |
||||||
|
* with respect to particular operator classes. In some cases a strategy |
||||||
|
* subtype (an OID) is used as further information. |
||||||
|
*/ |
||||||
|
typedef uint16 StrategyNumber; |
||||||
|
|
||||||
|
#define InvalidStrategy ((StrategyNumber) 0) |
||||||
|
|
||||||
|
/*
|
||||||
|
* Strategy numbers for B-tree indexes. |
||||||
|
*/ |
||||||
|
#define BTLessStrategyNumber 1 |
||||||
|
#define BTLessEqualStrategyNumber 2 |
||||||
|
#define BTEqualStrategyNumber 3 |
||||||
|
#define BTGreaterEqualStrategyNumber 4 |
||||||
|
#define BTGreaterStrategyNumber 5 |
||||||
|
|
||||||
|
#define BTMaxStrategyNumber 5 |
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Strategy numbers common to (some) GiST, SP-GiST and BRIN opclasses. |
||||||
|
* |
||||||
|
* The first few of these come from the R-Tree indexing method (hence the |
||||||
|
* names); the others have been added over time as they have been needed. |
||||||
|
*/ |
||||||
|
#define RTLeftStrategyNumber 1 /* for << */ |
||||||
|
#define RTOverLeftStrategyNumber 2 /* for &< */ |
||||||
|
#define RTOverlapStrategyNumber 3 /* for && */ |
||||||
|
#define RTOverRightStrategyNumber 4 /* for &> */ |
||||||
|
#define RTRightStrategyNumber 5 /* for >> */ |
||||||
|
#define RTSameStrategyNumber 6 /* for ~= */ |
||||||
|
#define RTContainsStrategyNumber 7 /* for @> */ |
||||||
|
#define RTContainedByStrategyNumber 8 /* for <@ */ |
||||||
|
#define RTOverBelowStrategyNumber 9 /* for &<| */ |
||||||
|
#define RTBelowStrategyNumber 10 /* for <<| */ |
||||||
|
#define RTAboveStrategyNumber 11 /* for |>> */ |
||||||
|
#define RTOverAboveStrategyNumber 12 /* for |&> */ |
||||||
|
#define RTOldContainsStrategyNumber 13 /* for old spelling of @> */ |
||||||
|
#define RTOldContainedByStrategyNumber 14 /* for old spelling of <@ */ |
||||||
|
#define RTKNNSearchStrategyNumber 15 /* for <-> (distance) */ |
||||||
|
#define RTContainsElemStrategyNumber 16 /* for range types @> elem */ |
||||||
|
#define RTAdjacentStrategyNumber 17 /* for -|- */ |
||||||
|
#define RTEqualStrategyNumber 18 /* for = */ |
||||||
|
#define RTNotEqualStrategyNumber 19 /* for != */ |
||||||
|
#define RTLessStrategyNumber 20 /* for < */ |
||||||
|
#define RTLessEqualStrategyNumber 21 /* for <= */ |
||||||
|
#define RTGreaterStrategyNumber 22 /* for > */ |
||||||
|
#define RTGreaterEqualStrategyNumber 23 /* for >= */ |
||||||
|
#define RTSubStrategyNumber 24 /* for inet >> */ |
||||||
|
#define RTSubOrEqualStrategyNumber 25 /* for inet <<= */ |
||||||
|
#define RTSuperStrategyNumber 26 /* for inet << */ |
||||||
|
#define RTSuperOrEqualStrategyNumber 27 /* for inet >>= */ |
||||||
|
|
||||||
|
#define RTMaxStrategyNumber 27 |
||||||
|
|
||||||
|
|
||||||
|
#endif /* STRATNUM_H */ |
||||||
Loading…
Reference in new issue