mtr0log.h
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小: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. mtr_t* mtr); /* in: mini-transaction handle */
  29. /************************************************************
  30. Writes a string to a file page buffered in the buffer pool. Writes the
  31. corresponding log record to the mini-transaction log. */
  32. void
  33. mlog_write_string(
  34. /*==============*/
  35. byte* ptr, /* in: pointer where to write */
  36. byte* str, /* in: string to write */
  37. ulint len, /* in: string length */
  38. mtr_t* mtr); /* in: mini-transaction handle */
  39. /************************************************************
  40. Writes initial part of a log record consisting of one-byte item
  41. type and four-byte space and page numbers. */
  42. void
  43. mlog_write_initial_log_record(
  44. /*==========================*/
  45. byte* ptr, /* in: pointer to (inside) a buffer frame
  46. holding the file page where modification
  47. is made */
  48. byte type, /* in: log item type: MLOG_1BYTE, ... */
  49. mtr_t* mtr); /* in: mini-transaction handle */
  50. /************************************************************
  51. Writes a log record about an .ibd file create/delete/rename. */
  52. UNIV_INLINE
  53. byte*
  54. mlog_write_initial_log_record_for_file_op(
  55. /*======================================*/
  56. /* out: new value of log_ptr */
  57. ulint type, /* in: MLOG_FILE_CREATE, MLOG_FILE_DELETE, or
  58. MLOG_FILE_RENAME */
  59. ulint space_id,/* in: space id, if applicable */
  60. ulint page_no,/* in: page number (not relevant currently) */
  61. byte* log_ptr,/* in: pointer to mtr log which has been opened */
  62. mtr_t* mtr); /* in: mtr */
  63. /************************************************************
  64. Catenates 1 - 4 bytes to the mtr log. */
  65. UNIV_INLINE
  66. void
  67. mlog_catenate_ulint(
  68. /*================*/
  69. mtr_t* mtr, /* in: mtr */
  70. ulint val, /* in: value to write */
  71. ulint type); /* in: MLOG_1BYTE, MLOG_2BYTES, MLOG_4BYTES */
  72. /************************************************************
  73. Catenates n bytes to the mtr log. */
  74. void
  75. mlog_catenate_string(
  76. /*=================*/
  77. mtr_t* mtr, /* in: mtr */
  78. byte* str, /* in: string to write */
  79. ulint len); /* in: string length */
  80. /************************************************************
  81. Catenates a compressed ulint to mlog. */
  82. UNIV_INLINE
  83. void
  84. mlog_catenate_ulint_compressed(
  85. /*===========================*/
  86. mtr_t* mtr, /* in: mtr */
  87. ulint val); /* in: value to write */
  88. /************************************************************
  89. Catenates a compressed dulint to mlog. */
  90. UNIV_INLINE
  91. void
  92. mlog_catenate_dulint_compressed(
  93. /*============================*/
  94. mtr_t* mtr, /* in: mtr */
  95. dulint val); /* in: value to write */
  96. /************************************************************
  97. Opens a buffer to mlog. It must be closed with mlog_close. */
  98. UNIV_INLINE
  99. byte*
  100. mlog_open(
  101. /*======*/
  102. /* out: buffer, NULL if log mode MTR_LOG_NONE */
  103. mtr_t* mtr, /* in: mtr */
  104. ulint size); /* in: buffer size in bytes; MUST be
  105. smaller than DYN_ARRAY_DATA_SIZE! */
  106. /************************************************************
  107. Closes a buffer opened to mlog. */
  108. UNIV_INLINE
  109. void
  110. mlog_close(
  111. /*=======*/
  112. mtr_t* mtr, /* in: mtr */
  113. byte* ptr); /* in: buffer space from ptr up was not used */
  114. /************************************************************
  115. Writes the initial part of a log record (3..11 bytes).
  116. If the implementation of this function is changed, all
  117. size parameters to mlog_open() should be adjusted accordingly! */
  118. UNIV_INLINE
  119. byte*
  120. mlog_write_initial_log_record_fast(
  121. /*===============================*/
  122. /* out: new value of log_ptr */
  123. byte* ptr, /* in: pointer to (inside) a buffer frame holding the
  124. file page where modification is made */
  125. byte type, /* in: log item type: MLOG_1BYTE, ... */
  126. byte* log_ptr,/* in: pointer to mtr log which has been opened */
  127. mtr_t* mtr); /* in: mtr */
  128. /************************************************************
  129. Parses an initial log record written by mlog_write_initial_log_record. */
  130. byte*
  131. mlog_parse_initial_log_record(
  132. /*==========================*/
  133. /* out: parsed record end, NULL if not a complete
  134. record */
  135. byte* ptr, /* in: buffer */
  136. byte* end_ptr,/* in: buffer end */
  137. byte* type, /* out: log record type: MLOG_1BYTE, ... */
  138. ulint* space, /* out: space id */
  139. ulint* page_no);/* out: page number */
  140. /************************************************************
  141. Parses a log record written by mlog_write_ulint or mlog_write_dulint. */
  142. byte*
  143. mlog_parse_nbytes(
  144. /*==============*/
  145. /* out: parsed record end, NULL if not a complete
  146. record */
  147. ulint type, /* in: log record type: MLOG_1BYTE, ... */
  148. byte* ptr, /* in: buffer */
  149. byte* end_ptr,/* in: buffer end */
  150. byte* page); /* in: page where to apply the log record, or NULL */
  151. /************************************************************
  152. Parses a log record written by mlog_write_string. */
  153. byte*
  154. mlog_parse_string(
  155. /*==============*/
  156. /* out: parsed record end, NULL if not a complete
  157. record */
  158. byte* ptr, /* in: buffer */
  159. byte* end_ptr,/* in: buffer end */
  160. byte* page); /* in: page where to apply the log record, or NULL */
  161. /* Insert, update, and maybe other functions may use this value to define an
  162. extra mlog buffer size for variable size data */
  163. #define MLOG_BUF_MARGIN 256
  164. #ifndef UNIV_NONINL
  165. #include "mtr0log.ic"
  166. #endif
  167. #endif