UNIV_INTERNbytebtr_cur_parse_update_in_place========================== byte ptr ! in buffer byte end_ptr! in buffer end page_t page ! inout page or NULL page_zip_des_t page_zip! inout compressed
该函数是InnoDB存储引擎中的一个用于解析更新记录的函数。它会在给定的缓冲区中解析出更新记录,并将其应用于页面中的记录。
函数首先从缓冲区中读取一个字节的标志位,并将指针向前移动一个字节。然后,它调用row_upd_parse_sys_vals函数解析出系统字段,并将指针向前移动到下一个要读取的位置。如果解析失败或剩余的缓冲区不足以进行解析,函数将返回NULL。
接下来,函数从缓冲区中读取一个2个字节的整数,表示要更新的记录在页面中的偏移量。然后,它调用row_upd_index_parse函数解析出更新记录,并将指针向前移动到下一个要读取的位置。如果解析失败或页面为空,函数将跳转到func_exit标签。
接下来,函数会检查页面是否为压缩页面,并根据需要创建内存堆。然后,它调用rec_get_offsets函数获取记录中字段的偏移量,并根据标志位决定是否应用系统字段更新。最后,函数调用row_upd_rec_in_place函数将更新应用于记录中。
最后,函数释放内存堆并返回指向下一个要读取的位置的指针。
原文地址: https://www.cveoy.top/t/topic/eF4L 著作权归作者所有。请勿转载和采集!