trx0rec.ic
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小: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. Reads the undo log record number. */
  30. UNIV_INLINE
  31. dulint
  32. trx_undo_rec_get_undo_no(
  33. /*=====================*/
  34. /* out: undo no */
  35. trx_undo_rec_t* undo_rec) /* in: undo log record */
  36. {
  37. byte* ptr;
  38. ptr = undo_rec + 3;
  39. return(mach_dulint_read_much_compressed(ptr));
  40. }
  41. /***************************************************************************
  42. Copies the undo record to the heap. */
  43. UNIV_INLINE
  44. trx_undo_rec_t*
  45. trx_undo_rec_copy(
  46. /*==============*/
  47. /* out, own: copy of undo log record */
  48. trx_undo_rec_t* undo_rec, /* in: undo log record */
  49. mem_heap_t* heap) /* in: heap where copied */
  50. {
  51. ulint len;
  52. trx_undo_rec_t* rec_copy;
  53. len = mach_read_from_2(undo_rec) + buf_frame_align(undo_rec)
  54. - undo_rec;
  55. rec_copy = mem_heap_alloc(heap, len);
  56. ut_memcpy(rec_copy, undo_rec, len);
  57. return(rec_copy);
  58. }