@@ -613,8 +613,13 @@ RumPageDeletePostingItem(Page page, OffsetNumber offset)
613
613
Assert (offset >= FirstOffsetNumber && offset <= maxoff );
614
614
615
615
if (offset != maxoff )
616
- memmove (RumDataPageGetItem (page , offset ), RumDataPageGetItem (page , offset + 1 ),
617
- sizeof (PostingItem ) * (maxoff - offset ));
616
+ {
617
+ char * dstptr = RumDataPageGetItem (page , offset ),
618
+ * sourceptr = RumDataPageGetItem (page , offset + 1 );
619
+ memmove (dstptr , sourceptr , sizeof (PostingItem ) * (maxoff - offset ));
620
+ /* Adjust pd_lower */
621
+ ((PageHeader ) page )-> pd_lower = sourceptr - page ;
622
+ }
618
623
619
624
RumPageGetOpaque (page )-> maxoff -- ;
620
625
}
@@ -1090,11 +1095,21 @@ dataSplitPageInternal(RumBtree btree, Buffer lbuf, Buffer rbuf,
1090
1095
RumInitPage (rPage , RumPageGetOpaque (newlPage )-> flags , pageSize );
1091
1096
RumInitPage (newlPage , RumPageGetOpaque (rPage )-> flags , pageSize );
1092
1097
1093
- memcpy (RumDataPageGetItem (newlPage , FirstOffsetNumber ), vector , separator * sizeofitem );
1098
+ ptr = RumDataPageGetItem (newlPage , FirstOffsetNumber );
1099
+ memcpy (ptr , vector , separator * sizeofitem );
1094
1100
RumPageGetOpaque (newlPage )-> maxoff = separator ;
1095
- memcpy (RumDataPageGetItem (rPage , FirstOffsetNumber ),
1096
- vector + separator * sizeofitem , (maxoff - separator ) * sizeofitem );
1101
+ /* Adjust pd_lower */
1102
+ ((PageHeader ) newlPage )-> pd_lower = (ptr + separator * sizeofitem + 1 ) -
1103
+ newlPage ;
1104
+
1105
+ ptr = RumDataPageGetItem (rPage , FirstOffsetNumber );
1106
+ memcpy (ptr , vector + separator * sizeofitem ,
1107
+ (maxoff - separator ) * sizeofitem );
1097
1108
RumPageGetOpaque (rPage )-> maxoff = maxoff - separator ;
1109
+ /* Adjust pd_lower */
1110
+ ((PageHeader ) rPage )-> pd_lower = (ptr +
1111
+ (maxoff - separator ) * sizeofitem + 1 ) -
1112
+ rPage ;
1098
1113
1099
1114
PostingItemSetBlockNumber (& (btree -> pitem ), BufferGetBlockNumber (lbuf ));
1100
1115
if (RumPageIsLeaf (newlPage ))
0 commit comments