Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4ed6fc7

Browse files
author
Artur Zakirov
committed
Fix adjust pd_lower
1 parent3b411a5 commit4ed6fc7

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

‎rumdatapage.c

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -613,8 +613,13 @@ RumPageDeletePostingItem(Page page, OffsetNumber offset)
613613
Assert(offset >=FirstOffsetNumber&&offset <=maxoff);
614614

615615
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+
}
618623

619624
RumPageGetOpaque(page)->maxoff--;
620625
}
@@ -1090,11 +1095,21 @@ dataSplitPageInternal(RumBtree btree, Buffer lbuf, Buffer rbuf,
10901095
RumInitPage(rPage,RumPageGetOpaque(newlPage)->flags,pageSize);
10911096
RumInitPage(newlPage,RumPageGetOpaque(rPage)->flags,pageSize);
10921097

1093-
memcpy(RumDataPageGetItem(newlPage,FirstOffsetNumber),vector,separator*sizeofitem);
1098+
ptr=RumDataPageGetItem(newlPage,FirstOffsetNumber);
1099+
memcpy(ptr,vector,separator*sizeofitem);
10941100
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);
10971108
RumPageGetOpaque(rPage)->maxoff=maxoff-separator;
1109+
/* Adjust pd_lower */
1110+
((PageHeader)rPage)->pd_lower= (ptr+
1111+
(maxoff-separator)*sizeofitem+1)-
1112+
rPage;
10981113

10991114
PostingItemSetBlockNumber(&(btree->pitem),BufferGetBlockNumber(lbuf));
11001115
if (RumPageIsLeaf(newlPage))

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp