strat.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  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.15.2.1 1999/07/30 18:26:59 scrappy Exp $
  11.  *
  12.  *-------------------------------------------------------------------------
  13.  */
  14. #ifndef STRAT_H
  15. #define STRAT_H
  16. #include "access/skey.h"
  17. typedef uint16 StrategyNumber;
  18. #define InvalidStrategy 0
  19. typedef struct StrategyTransformMapData
  20. {
  21. StrategyNumber strategy[1]; /* VARIABLE LENGTH ARRAY */
  22. } StrategyTransformMapData; /* VARIABLE LENGTH
  23.  *
  24.  *
  25.  *
  26.  *
  27.  *
  28.  *
  29.  *
  30.  *
  31.  *
  32.  * STRUCTURE */
  33. typedef StrategyTransformMapData *StrategyTransformMap;
  34. typedef struct StrategyOperatorData
  35. {
  36. StrategyNumber strategy;
  37. bits16 flags; /* scan qualification flags h/skey.h */
  38. } StrategyOperatorData;
  39. typedef StrategyOperatorData *StrategyOperator;
  40. typedef struct StrategyTermData
  41. { /* conjunctive term */
  42. uint16 degree;
  43. StrategyOperatorData operatorData[1]; /* VARIABLE LENGTH */
  44. } StrategyTermData; /* VARIABLE LENGTH STRUCTURE */
  45. typedef StrategyTermData *StrategyTerm;
  46. typedef struct StrategyExpressionData
  47. { /* disjunctive normal form */
  48. StrategyTerm term[1]; /* VARIABLE LENGTH ARRAY */
  49. } StrategyExpressionData; /* VARIABLE LENGTH STRUCTURE */
  50. typedef StrategyExpressionData *StrategyExpression;
  51. typedef struct StrategyEvaluationData
  52. {
  53. StrategyNumber maxStrategy;
  54. StrategyTransformMap negateTransform;
  55. StrategyTransformMap commuteTransform;
  56. StrategyTransformMap negateCommuteTransform;
  57. StrategyExpression expression[12]; /* XXX VARIABLE LENGTH */
  58. } StrategyEvaluationData; /* VARIABLE LENGTH STRUCTURE */
  59. typedef StrategyEvaluationData *StrategyEvaluation;
  60. /*
  61.  * StrategyTransformMapIsValid
  62.  * Returns true iff strategy transformation map is valid.
  63.  */
  64. #define StrategyTransformMapIsValid(transform) PointerIsValid(transform)
  65. #define AMStrategies(foo) (foo)
  66. typedef struct StrategyMapData
  67. {
  68. ScanKeyData entry[1]; /* VARIABLE LENGTH ARRAY */
  69. } StrategyMapData; /* VARIABLE LENGTH STRUCTURE */
  70. typedef StrategyMapData *StrategyMap;
  71. typedef struct IndexStrategyData
  72. {
  73. StrategyMapData strategyMapData[1]; /* VARIABLE LENGTH ARRAY */
  74. } IndexStrategyData; /* VARIABLE LENGTH STRUCTURE */
  75. typedef IndexStrategyData *IndexStrategy;
  76. #endif  /* STRAT_H */