PostgreSQL如何在页面内找一个free slot

本文介绍向业内插入一条记录时,如何找一个空闲的空间进行插入。

PageAddItemExtended

1、计算出pd_linp数组的最大值后新增一个后的个数:

limit=[pg_lower-sizeof(PageHeader)]/Sizeof(ItemIdData)+1

2、如果页头中pd_flags & PD_HAS_FREE_LINES为TRUE,即该数组中有free slot,那么首先从这个数组中找一个可用的ItemIdData,从pd_linp[0]开始一个一个的进行判断,一旦(itemId)->lp_flags == LP_UNUSED && (itemId)->lp_len != 0,表明这个slot可用,那么取这个offsetNumber返回

3、如果该页中没有free slot,则在pd_linp[limit-1]当前最后一个ItemIdData后面添加一个ItemIdData,设置该ItemIdData的值将其lp_off指向pd_upper位置并调整其lp_len=tuple->t_len,lp_flags = LP_NORMAL

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值