2
0

stratnum.h 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*-------------------------------------------------------------------------
  2. *
  3. * stratnum.h
  4. * POSTGRES strategy number definitions.
  5. *
  6. *
  7. * Portions Copyright (c) 1996-2022, 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. * Strategy numbers identify the semantics that particular operators have
  18. * with respect to particular operator classes. In some cases a strategy
  19. * subtype (an OID) is used as further information.
  20. */
  21. typedef uint16 StrategyNumber;
  22. #define InvalidStrategy ((StrategyNumber) 0)
  23. /*
  24. * Strategy numbers for B-tree indexes.
  25. */
  26. #define BTLessStrategyNumber 1
  27. #define BTLessEqualStrategyNumber 2
  28. #define BTEqualStrategyNumber 3
  29. #define BTGreaterEqualStrategyNumber 4
  30. #define BTGreaterStrategyNumber 5
  31. #define BTMaxStrategyNumber 5
  32. /*
  33. * Strategy numbers for hash indexes. There's only one valid strategy for
  34. * hashing: equality.
  35. */
  36. #define HTEqualStrategyNumber 1
  37. #define HTMaxStrategyNumber 1
  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. #define RTPrefixStrategyNumber 28 /* for text ^@ */
  72. #define RTOldBelowStrategyNumber 29 /* for old spelling of <<| */
  73. #define RTOldAboveStrategyNumber 30 /* for old spelling of |>> */
  74. #define RTMaxStrategyNumber 30
  75. #endif /* STRATNUM_H */