trx0rec.ic
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:2k
- /******************************************************
- Transaction undo log record
- (c) 1996 Innobase Oy
- Created 3/26/1996 Heikki Tuuri
- *******************************************************/
- /**************************************************************************
- Reads from an undo log record the record type. */
- UNIV_INLINE
- ulint
- trx_undo_rec_get_type(
- /*==================*/
- /* out: record type */
- trx_undo_rec_t* undo_rec) /* in: undo log record */
- {
- return(mach_read_from_1(undo_rec + 2) & (TRX_UNDO_CMPL_INFO_MULT - 1));
- }
- /**************************************************************************
- Reads from an undo log record the record compiler info. */
- UNIV_INLINE
- ulint
- trx_undo_rec_get_cmpl_info(
- /*=======================*/
- /* out: compiler info */
- trx_undo_rec_t* undo_rec) /* in: undo log record */
- {
- return(mach_read_from_1(undo_rec + 2) / TRX_UNDO_CMPL_INFO_MULT);
- }
- /**************************************************************************
- Returns TRUE if an undo log record contains an extern storage field. */
- UNIV_INLINE
- ibool
- trx_undo_rec_get_extern_storage(
- /*============================*/
- /* out: TRUE if extern */
- trx_undo_rec_t* undo_rec) /* in: undo log record */
- {
- if (mach_read_from_1(undo_rec + 2) & TRX_UNDO_UPD_EXTERN) {
- return(TRUE);
- }
- return(FALSE);
- }
- /**************************************************************************
- Reads the undo log record number. */
- UNIV_INLINE
- dulint
- trx_undo_rec_get_undo_no(
- /*=====================*/
- /* out: undo no */
- trx_undo_rec_t* undo_rec) /* in: undo log record */
- {
- byte* ptr;
- ptr = undo_rec + 3;
- return(mach_dulint_read_much_compressed(ptr));
- }
- /***************************************************************************
- Copies the undo record to the heap. */
- UNIV_INLINE
- trx_undo_rec_t*
- trx_undo_rec_copy(
- /*==============*/
- /* out, own: copy of undo log record */
- trx_undo_rec_t* undo_rec, /* in: undo log record */
- mem_heap_t* heap) /* in: heap where copied */
- {
- ulint len;
- trx_undo_rec_t* rec_copy;
- len = mach_read_from_2(undo_rec) + buf_frame_align(undo_rec)
- - undo_rec;
- rec_copy = mem_heap_alloc(heap, len);
- ut_memcpy(rec_copy, undo_rec, len);
- return(rec_copy);
- }