【0426】insert into 内核实现之 找到 buffe, 插入 tuple (2)
上一篇:
【0425】insert into 内核实现之 填充 tuple header, 必要时处理 toast(1)
1. 查找 buffer
上一篇文章完成了(HeapTuple heaptup) tuple header 中 t_data 里相关字段成员的初始化填充。接下来则需要为该 tuple 寻找 buffer, 找到 buffer 以插入此元组。如果该页全部可见,这也会锁定所需的可见性映射(visibility map)页。
在这里,需要有这样的一个函数,它返回目标关系表中空闲空间(free space) >= 指定长度(len)的页面缓冲区(page buffer),该缓冲区将被固定(pinned)且排他锁定(exclusive-locked)。
该函数是 RelationGetBufferForTuple() ,其函数原型:
Buffer
RelationGetBufferForTuple(