1 /*-------------------------------------------------------------------------
2  *
3  * stratnum.h
4  *	  POSTGRES strategy number definitions.
5  *
6  *
7  * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
8  * Portions Copyright (c) 1994, Regents of the University of California
9  *
10  * src/include/access/stratnum.h
11  *
12  *-------------------------------------------------------------------------
13  */
14 #ifndef STRATNUM_H
15 #define STRATNUM_H
16 
17 /*
18  * Strategy numbers identify the semantics that particular operators have
19  * with respect to particular operator classes.  In some cases a strategy
20  * subtype (an OID) is used as further information.
21  */
22 typedef uint16 StrategyNumber;
23 
24 #define InvalidStrategy ((StrategyNumber) 0)
25 
26 /*
27  * Strategy numbers for B-tree indexes.
28  */
29 #define BTLessStrategyNumber			1
30 #define BTLessEqualStrategyNumber		2
31 #define BTEqualStrategyNumber			3
32 #define BTGreaterEqualStrategyNumber	4
33 #define BTGreaterStrategyNumber			5
34 
35 #define BTMaxStrategyNumber				5
36 
37 
38 /*
39  * Strategy numbers common to (some) GiST, SP-GiST and BRIN opclasses.
40  *
41  * The first few of these come from the R-Tree indexing method (hence the
42  * names); the others have been added over time as they have been needed.
43  */
44 #define RTLeftStrategyNumber			1		/* for << */
45 #define RTOverLeftStrategyNumber		2		/* for &< */
46 #define RTOverlapStrategyNumber			3		/* for && */
47 #define RTOverRightStrategyNumber		4		/* for &> */
48 #define RTRightStrategyNumber			5		/* for >> */
49 #define RTSameStrategyNumber			6		/* for ~= */
50 #define RTContainsStrategyNumber		7		/* for @> */
51 #define RTContainedByStrategyNumber		8		/* for <@ */
52 #define RTOverBelowStrategyNumber		9		/* for &<| */
53 #define RTBelowStrategyNumber			10		/* for <<| */
54 #define RTAboveStrategyNumber			11		/* for |>> */
55 #define RTOverAboveStrategyNumber		12		/* for |&> */
56 #define RTOldContainsStrategyNumber		13		/* for old spelling of @> */
57 #define RTOldContainedByStrategyNumber	14		/* for old spelling of <@ */
58 #define RTKNNSearchStrategyNumber		15		/* for <-> (distance) */
59 #define RTContainsElemStrategyNumber	16		/* for range types @> elem */
60 #define RTAdjacentStrategyNumber		17		/* for -|- */
61 #define RTEqualStrategyNumber			18		/* for = */
62 #define RTNotEqualStrategyNumber		19		/* for != */
63 #define RTLessStrategyNumber			20		/* for < */
64 #define RTLessEqualStrategyNumber		21		/* for <= */
65 #define RTGreaterStrategyNumber			22		/* for > */
66 #define RTGreaterEqualStrategyNumber	23		/* for >= */
67 #define RTSubStrategyNumber				24		/* for inet >> */
68 #define RTSubEqualStrategyNumber		25		/* for inet <<= */
69 #define RTSuperStrategyNumber			26		/* for inet << */
70 #define RTSuperEqualStrategyNumber		27		/* for inet >>= */
71 
72 #define RTMaxStrategyNumber				27
73 
74 
75 #endif   /* STRATNUM_H */
76