0
点赞
收藏
分享

微信扫一扫

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

霸姨 2022-09-14 阅读 27


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

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

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

举报

相关推荐

0 条评论