OSDN Git Service

Make 0x007f -> (unsigned)0x7f to make pgindent happy.
[pg-rex/syncrep.git] / src / include / access / strat.h
1 /*-------------------------------------------------------------------------
2  *
3  * strat.h
4  *        index strategy type definitions
5  *        (separated out from original istrat.h to avoid circular refs)
6  *
7  *
8  * Copyright (c) 1994, Regents of the University of California
9  *
10  * $Id: strat.h,v 1.14 1999/05/25 22:04:56 momjian Exp $
11  *
12  *-------------------------------------------------------------------------
13  */
14 #ifndef STRAT_H
15 #define STRAT_H
16
17 #include <access/skey.h>
18
19 typedef uint16 StrategyNumber;
20
21 #define InvalidStrategy 0
22
23 typedef struct StrategyTransformMapData
24 {
25         StrategyNumber strategy[1]; /* VARIABLE LENGTH ARRAY */
26 } StrategyTransformMapData;             /* VARIABLE LENGTH
27
28                                                                  *
29                                                                  *
30                                                                  *
31                                                                  *
32                                                                  *
33                                                                  *
34                                                                  *
35                                                                  *
36                                                                  * STRUCTURE */
37
38 typedef StrategyTransformMapData *StrategyTransformMap;
39
40 typedef struct StrategyOperatorData
41 {
42         StrategyNumber strategy;
43         bits16          flags;                  /* scan qualification flags h/skey.h */
44 } StrategyOperatorData;
45
46 typedef StrategyOperatorData *StrategyOperator;
47
48 typedef struct StrategyTermData
49 {                                                               /* conjunctive term */
50         uint16          degree;
51         StrategyOperatorData operatorData[1];           /* VARIABLE LENGTH */
52 } StrategyTermData;                             /* VARIABLE LENGTH STRUCTURE */
53
54 typedef StrategyTermData *StrategyTerm;
55
56 typedef struct StrategyExpressionData
57 {                                                               /* disjunctive normal form */
58         StrategyTerm term[1];           /* VARIABLE LENGTH ARRAY */
59 } StrategyExpressionData;               /* VARIABLE LENGTH STRUCTURE */
60
61 typedef StrategyExpressionData *StrategyExpression;
62
63 typedef struct StrategyEvaluationData
64 {
65         StrategyNumber maxStrategy;
66         StrategyTransformMap negateTransform;
67         StrategyTransformMap commuteTransform;
68         StrategyTransformMap negateCommuteTransform;
69         StrategyExpression expression[12];      /* XXX VARIABLE LENGTH */
70 } StrategyEvaluationData;               /* VARIABLE LENGTH STRUCTURE */
71
72 typedef StrategyEvaluationData *StrategyEvaluation;
73
74 /*
75  * StrategyTransformMapIsValid
76  *              Returns true iff strategy transformation map is valid.
77  */
78 #define StrategyTransformMapIsValid(transform) PointerIsValid(transform)
79
80
81 #define AMStrategies(foo)               (foo)
82
83 typedef struct StrategyMapData
84 {
85         ScanKeyData entry[1];           /* VARIABLE LENGTH ARRAY */
86 } StrategyMapData;                              /* VARIABLE LENGTH STRUCTURE */
87
88 typedef StrategyMapData *StrategyMap;
89
90 typedef struct IndexStrategyData
91 {
92         StrategyMapData strategyMapData[1]; /* VARIABLE LENGTH ARRAY */
93 } IndexStrategyData;                    /* VARIABLE LENGTH STRUCTURE */
94
95 typedef IndexStrategyData *IndexStrategy;
96
97 #endif   /* STRAT_H */