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

MySQL数据库

开发平台:

Visual C++

  1. /******************************************************
  2. Mini-transaction logging routines
  3. (c) 1995 Innobase Oy
  4. Created 12/7/1995 Heikki Tuuri
  5. *******************************************************/
  6. #ifndef mtr0log_h
  7. #define mtr0log_h
  8. #include "univ.i"
  9. #include "mtr0mtr.h"
  10. /************************************************************
  11. Writes 1 - 4 bytes to a file page buffered in the buffer pool.
  12. Writes the corresponding log record to the mini-transaction log. */
  13. void
  14. mlog_write_ulint(
  15. /*=============*/
  16. byte* ptr, /* in: pointer where to write */
  17. ulint val, /* in: value to write */
  18. byte type, /* in: MLOG_1BYTE, MLOG_2BYTES, MLOG_4BYTES */
  19. mtr_t* mtr); /* in: mini-transaction handle */
  20. /************************************************************
  21. Writes 8 bytes to a file page buffered in the buffer pool.
  22. Writes the corresponding log record to the mini-transaction log. */
  23. void
  24. mlog_write_dulint(
  25. /*==============*/
  26. byte* ptr, /* in: pointer where to write */
  27. dulint val, /* in: value to write */
  28. byte type, /* in: MLOG_8BYTES */
  29. mtr_t* mtr); /* in: mini-transaction handle */
  30. /************************************************************
  31. Writes a string to a file page buffered in the buffer pool. Writes the
  32. corresponding log record to the mini-transaction log. */
  33. void
  34. mlog_write_string(
  35. /*==============*/
  36. byte* ptr, /* in: pointer where to write */
  37. byte* str, /* in: string to write */
  38. ulint len, /* in: string length */
  39. mtr_t* mtr); /* in: mini-transaction handle */
  40. /************************************************************
  41. Writes initial part of a log record consisting of one-byte item
  42. type and four-byte space and page numbers. */
  43. void
  44. mlog_write_initial_log_record(
  45. /*==========================*/
  46. byte* ptr, /* in: pointer to (inside) a buffer frame
  47. holding the file page where modification
  48. is made */
  49. byte type, /* in: log item type: MLOG_1BYTE, ... */
  50. mtr_t* mtr); /* in: mini-transaction handle */
  51. /************************************************************
  52. Catenates 1 - 4 bytes to the mtr log. */
  53. UNIV_INLINE
  54. void
  55. mlog_catenate_ulint(
  56. /*================*/
  57. mtr_t* mtr, /* in: mtr */
  58. ulint val, /* in: value to write */
  59. ulint type); /* in: MLOG_1BYTE, MLOG_2BYTES, MLOG_4BYTES */
  60. /************************************************************
  61. Catenates n bytes to the mtr log. */
  62. void
  63. mlog_catenate_string(
  64. /*=================*/
  65. mtr_t* mtr, /* in: mtr */
  66. byte* str, /* in: string to write */
  67. ulint len); /* in: string length */
  68. /************************************************************
  69. Catenates a compressed ulint to mlog. */
  70. UNIV_INLINE
  71. void
  72. mlog_catenate_ulint_compressed(
  73. /*===========================*/
  74. mtr_t* mtr, /* in: mtr */
  75. ulint val); /* in: value to write */
  76. /************************************************************
  77. Catenates a compressed dulint to mlog. */
  78. UNIV_INLINE
  79. void
  80. mlog_catenate_dulint_compressed(
  81. /*============================*/
  82. mtr_t* mtr, /* in: mtr */
  83. dulint val); /* in: value to write */
  84. /************************************************************
  85. Opens a buffer to mlog. It must be closed with mlog_close. */
  86. UNIV_INLINE
  87. byte*
  88. mlog_open(
  89. /*======*/
  90. /* out: buffer, NULL if log mode MTR_LOG_NONE */
  91. mtr_t* mtr, /* in: mtr */
  92. ulint size); /* in: buffer size in bytes */
  93. /************************************************************
  94. Closes a buffer opened to mlog. */
  95. UNIV_INLINE
  96. void
  97. mlog_close(
  98. /*=======*/
  99. mtr_t* mtr, /* in: mtr */
  100. byte* ptr); /* in: buffer space from ptr up was not used */
  101. /************************************************************
  102. Writes the initial part of a log record. */
  103. UNIV_INLINE
  104. byte*
  105. mlog_write_initial_log_record_fast(
  106. /*===============================*/
  107. /* out: new value of log_ptr */
  108. byte* ptr, /* in: pointer to (inside) a buffer frame holding the
  109. file page where modification is made */
  110. byte type, /* in: log item type: MLOG_1BYTE, ... */
  111. byte* log_ptr,/* in: pointer to mtr log which has been opened */
  112. mtr_t* mtr); /* in: mtr */
  113. /****************************************************************
  114. Writes the contents of a mini-transaction log, if any, to the database log. */
  115. dulint
  116. mlog_write(
  117. /*=======*/
  118. dyn_array_t* mlog, /* in: mlog */
  119. ibool* modifications); /* out: TRUE if there were 
  120. log items to write */
  121. /************************************************************
  122. Parses an initial log record written by mlog_write_initial_log_record. */
  123. byte*
  124. mlog_parse_initial_log_record(
  125. /*==========================*/
  126. /* out: parsed record end, NULL if not a complete
  127. record */
  128. byte* ptr, /* in: buffer */
  129. byte* end_ptr,/* in: buffer end */
  130. byte* type, /* out: log record type: MLOG_1BYTE, ... */
  131. ulint* space, /* out: space id */
  132. ulint* page_no);/* out: page number */
  133. /************************************************************
  134. Parses a log record written by mlog_write_ulint or mlog_write_dulint. */
  135. byte*
  136. mlog_parse_nbytes(
  137. /*==============*/
  138. /* out: parsed record end, NULL if not a complete
  139. record */
  140. ulint type, /* in: log record type: MLOG_1BYTE, ... */
  141. byte* ptr, /* in: buffer */
  142. byte* end_ptr,/* in: buffer end */
  143. byte* page); /* in: page where to apply the log record, or NULL */
  144. /************************************************************
  145. Parses a log record written by mlog_write_string. */
  146. byte*
  147. mlog_parse_string(
  148. /*==============*/
  149. /* out: parsed record end, NULL if not a complete
  150. record */
  151. byte* ptr, /* in: buffer */
  152. byte* end_ptr,/* in: buffer end */
  153. byte* page); /* in: page where to apply the log record, or NULL */
  154. /* Insert, update, and maybe other functions may use this value to define an
  155. extra mlog buffer size for variable size data */
  156. #define MLOG_BUF_MARGIN 256
  157. #ifndef UNIV_NONINL
  158. #include "mtr0log.ic"
  159. #endif
  160. #endif