trx0rec.ic
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /******************************************************
  2. Transaction undo log record
  3. (c) 1996 Innobase Oy
  4. Created 3/26/1996 Heikki Tuuri
  5. *******************************************************/
  6. /**************************************************************************
  7. Reads from an undo log record the record type. */
  8. UNIV_INLINE
  9. ulint
  10. trx_undo_rec_get_type(
  11. /*==================*/
  12. /* out: record type */
  13. trx_undo_rec_t* undo_rec) /* in: undo log record */
  14. {
  15. return(mach_read_from_1(undo_rec + 2) & (TRX_UNDO_CMPL_INFO_MULT - 1));
  16. }
  17. /**************************************************************************
  18. Reads from an undo log record the record compiler info. */
  19. UNIV_INLINE
  20. ulint
  21. trx_undo_rec_get_cmpl_info(
  22. /*=======================*/
  23. /* out: compiler info */
  24. trx_undo_rec_t* undo_rec) /* in: undo log record */
  25. {
  26. return(mach_read_from_1(undo_rec + 2) / TRX_UNDO_CMPL_INFO_MULT);
  27. }
  28. /**************************************************************************
  29. Returns TRUE if an undo log record contains an extern storage field. */
  30. UNIV_INLINE
  31. ibool
  32. trx_undo_rec_get_extern_storage(
  33. /*============================*/
  34. /* out: TRUE if extern */
  35. trx_undo_rec_t* undo_rec) /* in: undo log record */
  36. {
  37. if (mach_read_from_1(undo_rec + 2) & TRX_UNDO_UPD_EXTERN) {
  38. return(TRUE);
  39. }
  40. return(FALSE);
  41. }
  42. /**************************************************************************
  43. Reads the undo log record number. */
  44. UNIV_INLINE
  45. dulint
  46. trx_undo_rec_get_undo_no(
  47. /*=====================*/
  48. /* out: undo no */
  49. trx_undo_rec_t* undo_rec) /* in: undo log record */
  50. {
  51. byte* ptr;
  52. ptr = undo_rec + 3;
  53. return(mach_dulint_read_much_compressed(ptr));
  54. }
  55. /***************************************************************************
  56. Copies the undo record to the heap. */
  57. UNIV_INLINE
  58. trx_undo_rec_t*
  59. trx_undo_rec_copy(
  60. /*==============*/
  61. /* out, own: copy of undo log record */
  62. trx_undo_rec_t* undo_rec, /* in: undo log record */
  63. mem_heap_t* heap) /* in: heap where copied */
  64. {
  65. ulint len;
  66. trx_undo_rec_t* rec_copy;
  67. len = mach_read_from_2(undo_rec) + buf_frame_align(undo_rec)
  68. - undo_rec;
  69. rec_copy = mem_heap_alloc(heap, len);
  70. ut_memcpy(rec_copy, undo_rec, len);
  71. return(rec_copy);
  72. }