rem0cmp.h
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:5k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /***********************************************************************
  2. Comparison services for records
  3. (c) 1994-1996 Innobase Oy
  4. Created 7/1/1994 Heikki Tuuri
  5. ************************************************************************/
  6. #ifndef rem0cmp_h
  7. #define rem0cmp_h
  8. #include "univ.i"
  9. #include "data0data.h"
  10. #include "data0type.h"
  11. #include "dict0dict.h"
  12. #include "rem0rec.h"
  13. /*****************************************************************
  14. This function is used to compare two dfields where at least the first
  15. has its data type field set. */
  16. UNIV_INLINE
  17. int
  18. cmp_dfield_dfield(
  19. /*==============*/
  20. /* out: 1, 0, -1, if dfield1 is greater, equal, 
  21. less than dfield2, respectively */
  22. dfield_t* dfield1,/* in: data field; must have type field set */
  23. dfield_t* dfield2);/* in: data field */
  24. /*****************************************************************
  25. This function is used to compare a data tuple to a physical record.
  26. Only dtuple->n_fields_cmp first fields are taken into account for
  27. the the data tuple! If we denote by n = n_fields_cmp, then rec must
  28. have either m >= n fields, or it must differ from dtuple in some of
  29. the m fields rec has. */
  30. int
  31. cmp_dtuple_rec_with_match(
  32. /*======================*/
  33. /* out: 1, 0, -1, if dtuple is greater, equal, 
  34. less than rec, respectively, when only the 
  35. common first fields are compared */
  36. dtuple_t* dtuple, /* in: data tuple */
  37. rec_t* rec, /* in: physical record which differs from
  38. dtuple in some of the common fields, or which
  39. has an equal number or more fields than
  40. dtuple */
  41. ulint*   matched_fields, /* in/out: number of already completely 
  42. matched fields; when function returns,
  43. contains the value for current comparison */
  44. ulint*    matched_bytes); /* in/out: number of already matched 
  45. bytes within the first field not completely
  46. matched; when function returns, contains the
  47. value for current comparison */
  48. /******************************************************************
  49. Compares a data tuple to a physical record. */
  50. int
  51. cmp_dtuple_rec(
  52. /*===========*/
  53. /* out: 1, 0, -1, if dtuple is greater, equal, 
  54. less than rec, respectively; see the comments
  55. for cmp_dtuple_rec_with_match */
  56. dtuple_t*  dtuple, /* in: data tuple */
  57. rec_t*    rec); /* in: physical record */
  58. /******************************************************************
  59. Checks if a dtuple is a prefix of a record. The last field in dtuple
  60. is allowed to be a prefix of the corresponding field in the record. */
  61. ibool
  62. cmp_dtuple_is_prefix_of_rec(
  63. /*========================*/
  64. /* out: TRUE if prefix */
  65. dtuple_t*  dtuple, /* in: data tuple */
  66. rec_t*    rec); /* in: physical record */
  67. /******************************************************************
  68. Compares a prefix of a data tuple to a prefix of a physical record for
  69. equality. If there are less fields in rec than parameter n_fields, FALSE
  70. is returned. NOTE that n_fields_cmp of dtuple does not affect this
  71. comparison. */
  72. ibool
  73. cmp_dtuple_rec_prefix_equal(
  74. /*========================*/
  75. /* out: TRUE if equal */
  76. dtuple_t* dtuple, /* in: data tuple */
  77. rec_t* rec, /* in: physical record */
  78. ulint n_fields); /* in: number of fields which should be 
  79. compared; must not exceed the number of 
  80. fields in dtuple */
  81. /*****************************************************************
  82. This function is used to compare two physical records. Only the common
  83. first fields are compared. */
  84. int
  85. cmp_rec_rec_with_match(
  86. /*===================*/
  87. /* out: 1, 0 , -1 if rec1 is greater, equal,
  88. less, respectively, than rec2; only the common
  89. first fields are compared */
  90. rec_t* rec1, /* in: physical record */
  91. rec_t* rec2, /* in: physical record */
  92. dict_index_t* index, /* in: data dictionary index */
  93. ulint*   matched_fields, /* in/out: number of already completely 
  94. matched fields; when the function returns,
  95. contains the value the for current
  96. comparison */
  97. ulint*    matched_bytes);/* in/out: number of already matched 
  98. bytes within the first field not completely
  99. matched; when the function returns, contains
  100. the value for the current comparison */
  101. /*****************************************************************
  102. This function is used to compare two physical records. Only the common
  103. first fields are compared. */
  104. UNIV_INLINE
  105. int
  106. cmp_rec_rec(
  107. /*========*/
  108. /* out: 1, 0 , -1 if rec1 is greater, equal,
  109. less, respectively, than rec2; only the common
  110. first fields are compared */
  111. rec_t* rec1, /* in: physical record */
  112. rec_t* rec2, /* in: physical record */
  113. dict_index_t* index); /* in: data dictionary index */
  114. #ifndef UNIV_NONINL
  115. #include "rem0cmp.ic"
  116. #endif
  117. #endif