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

Commite69073e

Browse files
author
Artur Zakirov
committed
Adjust pd_lower in RumDataPageAddItem()
1 parenteab8031 commite69073e

File tree

9 files changed

+69
-93
lines changed

9 files changed

+69
-93
lines changed

‎rumbtree.c

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ rumTraverseLock(Buffer buffer, bool searchMode)
2727
intaccess=RUM_SHARE;
2828

2929
LockBuffer(buffer,RUM_SHARE);
30-
page=BufferGetPage(buffer,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
30+
page=BufferGetPage(buffer);
3131
if (RumPageIsLeaf(page))
3232
{
3333
if (searchMode== FALSE)
@@ -87,7 +87,7 @@ rumReFindLeafPage(RumBtree btree, RumBtreeStack *stack)
8787
stack=stack->parent;
8888
pfree(ptr);
8989

90-
page=BufferGetPage(stack->buffer,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
90+
page=BufferGetPage(stack->buffer);
9191
maxoff=RumPageGetOpaque(page)->maxoff;
9292

9393
if (rumCompareItemPointers(
@@ -123,7 +123,7 @@ rumFindLeafPage(RumBtree btree, RumBtreeStack *stack)
123123

124124
stack->off=InvalidOffsetNumber;
125125

126-
page=BufferGetPage(stack->buffer,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
126+
page=BufferGetPage(stack->buffer);
127127

128128
if (isfirst)
129129
{
@@ -149,8 +149,7 @@ rumFindLeafPage(RumBtree btree, RumBtreeStack *stack)
149149

150150
stack->buffer=rumStepRight(stack->buffer,btree->index,access);
151151
stack->blkno=rightlink;
152-
page=BufferGetPage(stack->buffer,NULL,NULL,
153-
BGP_NO_SNAPSHOT_TEST);
152+
page=BufferGetPage(stack->buffer);
154153
}
155154

156155
if (RumPageIsLeaf(page))/* we found, return locked page */
@@ -201,7 +200,7 @@ Buffer
201200
rumStepRight(Bufferbuffer,Relationindex,intlockmode)
202201
{
203202
Buffernextbuffer;
204-
Pagepage=BufferGetPage(buffer,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
203+
Pagepage=BufferGetPage(buffer);
205204
boolisLeaf=RumPageIsLeaf(page);
206205
boolisData=RumPageIsData(page);
207206
BlockNumberblkno=RumPageGetOpaque(page)->rightlink;
@@ -211,7 +210,7 @@ rumStepRight(Buffer buffer, Relation index, int lockmode)
211210
UnlockReleaseBuffer(buffer);
212211

213212
/* Sanity check that the page we stepped to is of similar kind. */
214-
page=BufferGetPage(nextbuffer,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
213+
page=BufferGetPage(nextbuffer);
215214
if (isLeaf!=RumPageIsLeaf(page)||isData!=RumPageIsData(page))
216215
elog(ERROR,"right sibling of RUM page is of different type");
217216

@@ -285,7 +284,7 @@ rumFindParents(RumBtree btree, RumBtreeStack *stack,
285284
}
286285
root->off=InvalidOffsetNumber;
287286

288-
page=BufferGetPage(root->buffer,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
287+
page=BufferGetPage(root->buffer);
289288
Assert(!RumPageIsLeaf(page));
290289

291290
/* check trivial case */
@@ -303,7 +302,7 @@ rumFindParents(RumBtree btree, RumBtreeStack *stack,
303302
{
304303
buffer=ReadBuffer(btree->index,blkno);
305304
LockBuffer(buffer,RUM_EXCLUSIVE);
306-
page=BufferGetPage(buffer,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
305+
page=BufferGetPage(buffer);
307306
if (RumPageIsLeaf(page))
308307
elog(ERROR,"Lost path");
309308

@@ -318,7 +317,7 @@ rumFindParents(RumBtree btree, RumBtreeStack *stack,
318317
break;
319318
}
320319
buffer=rumStepRight(buffer,btree->index,RUM_EXCLUSIVE);
321-
page=BufferGetPage(buffer,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
320+
page=BufferGetPage(buffer);
322321
}
323322

324323
if (blkno!=InvalidBlockNumber)
@@ -369,14 +368,14 @@ rumInsertValue(Relation index, RumBtree btree, RumBtreeStack *stack,
369368
{
370369
BlockNumbersavedRightLink;
371370

372-
page=BufferGetPage(stack->buffer,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
371+
page=BufferGetPage(stack->buffer);
373372
savedRightLink=RumPageGetOpaque(page)->rightlink;
374373

375374
if (btree->isEnoughSpace(btree,stack->buffer,stack->off))
376375
{
377376
state=GenericXLogStart(index);
378377
page=GenericXLogRegisterBuffer(state,stack->buffer,0);
379-
elog(INFO,"rumInsertValue: %d",stack->buffer);
378+
380379
btree->placeToPage(btree,page,stack->off);
381380
GenericXLogFinish(state);
382381

@@ -414,7 +413,6 @@ rumInsertValue(Relation index, RumBtree btree, RumBtreeStack *stack,
414413
* newlpage is a pointer to memory page, it doesn't associate with
415414
* buffer, stack->buffer should be untouched
416415
*/
417-
elog(INFO,"before split: %d",stack->buffer);
418416
newlpage=btree->splitPage(btree,stack->buffer,rbuffer,
419417
page,rpage,stack->off);
420418

@@ -486,7 +484,7 @@ rumInsertValue(Relation index, RumBtree btree, RumBtreeStack *stack,
486484
LockBuffer(parent->buffer,RUM_EXCLUSIVE);
487485

488486
/* move right if it's needed */
489-
page=BufferGetPage(parent->buffer,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
487+
page=BufferGetPage(parent->buffer);
490488
while ((parent->off=btree->findChildPtr(btree,page,stack->blkno,parent->off))==InvalidOffsetNumber)
491489
{
492490
BlockNumberrightlink=RumPageGetOpaque(page)->rightlink;
@@ -506,8 +504,7 @@ rumInsertValue(Relation index, RumBtree btree, RumBtreeStack *stack,
506504

507505
parent->buffer=rumStepRight(parent->buffer,btree->index,RUM_EXCLUSIVE);
508506
parent->blkno=rightlink;
509-
page=BufferGetPage(parent->buffer,NULL,NULL,
510-
BGP_NO_SNAPSHOT_TEST);
507+
page=BufferGetPage(parent->buffer);
511508
}
512509

513510
UnlockReleaseBuffer(stack->buffer);

‎rumdatapage.c

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -353,8 +353,7 @@ dataLocateItem(RumBtree btree, RumBtreeStack *stack)
353353
maxoff;
354354
PostingItem*pitem=NULL;
355355
intresult;
356-
Pagepage=BufferGetPage(stack->buffer,NULL,NULL,
357-
BGP_NO_SNAPSHOT_TEST);
356+
Pagepage=BufferGetPage(stack->buffer);
358357

359358
Assert(!RumPageIsLeaf(page));
360359
Assert(RumPageIsData(page));
@@ -486,8 +485,7 @@ findInLeafPage(RumBtree btree, Page page, OffsetNumber *offset,
486485
staticbool
487486
dataLocateLeafItem(RumBtreebtree,RumBtreeStack*stack)
488487
{
489-
Pagepage=BufferGetPage(stack->buffer,NULL,NULL,
490-
BGP_NO_SNAPSHOT_TEST);
488+
Pagepage=BufferGetPage(stack->buffer);
491489
ItemPointerDataiptr;
492490
Pointerptr;
493491

@@ -574,27 +572,33 @@ void
574572
RumDataPageAddItem(Pagepage,void*data,OffsetNumberoffset)
575573
{
576574
OffsetNumbermaxoff=RumPageGetOpaque(page)->maxoff;
577-
char*ptr;
578-
size_tsize;
575+
char*ptr,
576+
*nextptr;
577+
size_tsize=RumSizeOfDataPageItem(page);
579578

580579
if (offset==InvalidOffsetNumber)
581580
{
582581
ptr=RumDataPageGetItem(page,maxoff+1);
582+
nextptr=ptr+size+1;
583583
}
584584
else
585585
{
586586
ptr=RumDataPageGetItem(page,offset);
587587
if (maxoff+1-offset!=0)
588-
memmove(ptr+RumSizeOfDataPageItem(page),
588+
{
589+
memmove(ptr+size,
589590
ptr,
590-
(maxoff-offset+1)*RumSizeOfDataPageItem(page));
591+
(maxoff-offset+1)*size);
592+
nextptr=ptr+size+ (maxoff-offset+1)*size+1;
593+
}
594+
else
595+
nextptr=ptr+size+1;
591596
}
592-
size=RumSizeOfDataPageItem(page);
593597
memcpy(ptr,data,size);
594-
((PageHeader)page)->pd_lower= (ptr+size)-page;
595-
elog(INFO,"RumDataPageAddItem: %d, %d", ((PageHeader)page)->pd_lower, ((PageHeader)page)->pd_upper);
596598

597599
RumPageGetOpaque(page)->maxoff++;
600+
/* Adjust pd_lower */
601+
((PageHeader)page)->pd_lower=nextptr-page;
598602
}
599603

600604
/*
@@ -622,7 +626,7 @@ RumPageDeletePostingItem(Page page, OffsetNumber offset)
622626
staticbool
623627
dataIsEnoughSpace(RumBtreebtree,Bufferbuf,OffsetNumberoff)
624628
{
625-
Pagepage=BufferGetPage(buf,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
629+
Pagepage=BufferGetPage(buf);
626630

627631
Assert(RumPageIsData(page));
628632
Assert(!btree->isDelete);
@@ -703,7 +707,7 @@ dataPlaceToPage(RumBtree btree, Page page, OffsetNumber off)
703707
{
704708
Assert(RumPageIsData(page));
705709

706-
//dataPrepareData(btree, page, off);
710+
dataPrepareData(btree,page,off);
707711

708712
if (RumPageIsLeaf(page))
709713
{
@@ -789,7 +793,6 @@ dataPlaceToPage(RumBtree btree, Page page, OffsetNumber off)
789793
}
790794
else
791795
{
792-
elog(INFO,"dataPlaceToPage: %d",PostingItemGetBlockNumber(&(btree->pitem)));
793796
RumDataPageAddItem(page,&(btree->pitem),off);
794797
}
795798
}
@@ -843,7 +846,7 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
843846

844847
staticcharlpageCopy[BLCKSZ];
845848

846-
//dataPrepareData(btree, newlPage, off);
849+
dataPrepareData(btree,newlPage,off);
847850
maxoff=RumPageGetOpaque(newlPage)->maxoff;
848851

849852
/* Copy original data of the page */
@@ -1000,7 +1003,6 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
10001003

10011004
RumPageGetOpaque(rPage)->maxoff=j-1;
10021005

1003-
elog(INFO,"dataSplitPageLeaf: %d, %d",lbuf,BufferGetBlockNumber(lbuf));
10041006
PostingItemSetBlockNumber(&(btree->pitem),BufferGetBlockNumber(lbuf));
10051007
btree->pitem.key=maxLeftIptr;
10061008
btree->rightblkno=BufferGetBlockNumber(rbuf);
@@ -1028,8 +1030,7 @@ dataSplitPageInternal(RumBtree btree, Buffer lbuf, Buffer rbuf,
10281030
char*ptr;
10291031
OffsetNumberseparator;
10301032
ItemPointerbound;
1031-
PagenewlPage=PageGetTempPageCopy(BufferGetPage(lbuf,NULL,NULL,
1032-
BGP_NO_SNAPSHOT_TEST));
1033+
PagenewlPage=PageGetTempPageCopy(BufferGetPage(lbuf));
10331034
ItemPointerDataoldbound=*RumDataPageGetRightBound(newlPage);
10341035
intsizeofitem=RumSizeOfDataPageItem(newlPage);
10351036
OffsetNumbermaxoff=RumPageGetOpaque(newlPage)->maxoff;
@@ -1041,7 +1042,7 @@ dataSplitPageInternal(RumBtree btree, Buffer lbuf, Buffer rbuf,
10411042

10421043
RumInitPage(rPage,RumPageGetOpaque(newlPage)->flags,pageSize);
10431044
freeSpace=RumDataPageGetFreeSpace(rPage);
1044-
//dataPrepareData(btree, newlPage, off);
1045+
dataPrepareData(btree,newlPage,off);
10451046

10461047
memcpy(vector,RumDataPageGetItem(newlPage,FirstOffsetNumber),
10471048
maxoff*sizeofitem);
@@ -1123,7 +1124,7 @@ static Page
11231124
dataSplitPage(RumBtreebtree,Bufferlbuf,Bufferrbuf,
11241125
Pagelpage,Pagerpage,OffsetNumberoff)
11251126
{
1126-
if (RumPageIsLeaf(BufferGetPage(lbuf,NULL,NULL,BGP_NO_SNAPSHOT_TEST)))
1127+
if (RumPageIsLeaf(BufferGetPage(lbuf)))
11271128
returndataSplitPageLeaf(btree,lbuf,rbuf,lpage,rpage,off);
11281129
else
11291130
returndataSplitPageInternal(btree,lbuf,rbuf,lpage,rpage,off);

‎rumentrypage.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,7 @@ entryLocateEntry(RumBtree btree, RumBtreeStack *stack)
132132
maxoff;
133133
IndexTupleitup=NULL;
134134
intresult;
135-
Pagepage=BufferGetPage(stack->buffer,NULL,NULL,
136-
BGP_NO_SNAPSHOT_TEST);
135+
Pagepage=BufferGetPage(stack->buffer);
137136

138137
Assert(!RumPageIsLeaf(page));
139138
Assert(!RumPageIsData(page));
@@ -204,8 +203,7 @@ entryLocateEntry(RumBtree btree, RumBtreeStack *stack)
204203
staticbool
205204
entryLocateLeafEntry(RumBtreebtree,RumBtreeStack*stack)
206205
{
207-
Pagepage=BufferGetPage(stack->buffer,NULL,NULL,
208-
BGP_NO_SNAPSHOT_TEST);
206+
Pagepage=BufferGetPage(stack->buffer);
209207
OffsetNumberlow,
210208
high;
211209

@@ -319,7 +317,7 @@ static bool
319317
entryIsEnoughSpace(RumBtreebtree,Bufferbuf,OffsetNumberoff)
320318
{
321319
Sizeitupsz=0;
322-
Pagepage=BufferGetPage(buf,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
320+
Pagepage=BufferGetPage(buf);
323321

324322
Assert(btree->entry);
325323
Assert(!RumPageIsData(page));
@@ -488,7 +486,7 @@ rumPageGetLinkItup(Buffer buf)
488486
{
489487
IndexTupleitup,
490488
nitup;
491-
Pagepage=BufferGetPage(buf,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
489+
Pagepage=BufferGetPage(buf);
492490

493491
itup=getRightMostTuple(page);
494492
nitup=RumFormInteriorTuple(itup,page,BufferGetBlockNumber(buf));

‎rumfast.c

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,7 @@ rumHeapTupleFastInsert(RumState *rumstate, RumTupleCollector *collector)
203203
else
204204
{
205205
LockBuffer(metabuffer,RUM_EXCLUSIVE);
206-
metadata=RumPageGetMeta(BufferGetPage(metabuffer,NULL,NULL,
207-
BGP_NO_SNAPSHOT_TEST));
206+
metadata=RumPageGetMeta(BufferGetPage(metabuffer));
208207

209208
if (metadata->head==InvalidBlockNumber||
210209
collector->sumsize+collector->ntuples*sizeof(ItemIdData)>metadata->tailFreeSize)
@@ -525,8 +524,7 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
525524
buffers[data.ndeleted]=ReadBuffer(index,blknoToDelete);
526525
LockBuffer(buffers[data.ndeleted],RUM_EXCLUSIVE);
527526

528-
page=BufferGetPage(buffers[data.ndeleted],NULL,NULL,
529-
BGP_NO_SNAPSHOT_TEST);
527+
page=BufferGetPage(buffers[data.ndeleted]);
530528

531529
data.ndeleted++;
532530

@@ -737,7 +735,7 @@ rumInsertCleanup(RumState *rumstate,
737735
metabuffer=ReadBuffer(index,RUM_METAPAGE_BLKNO);
738736
LockBuffer(metabuffer,RUM_SHARE);
739737

740-
metapage=BufferGetPage(metabuffer,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
738+
metapage=BufferGetPage(metabuffer);
741739
metadata=RumPageGetMeta(metapage);
742740

743741
if (metadata->head==InvalidBlockNumber)
@@ -753,7 +751,7 @@ rumInsertCleanup(RumState *rumstate,
753751
blkno=metadata->head;
754752
buffer=ReadBuffer(index,blkno);
755753
LockBuffer(buffer,RUM_SHARE);
756-
page=BufferGetPage(buffer,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
754+
page=BufferGetPage(buffer);
757755

758756
LockBuffer(metabuffer,RUM_UNLOCK);
759757

@@ -939,7 +937,7 @@ rumInsertCleanup(RumState *rumstate,
939937
vacuum_delay_point();
940938
buffer=ReadBuffer(index,blkno);
941939
LockBuffer(buffer,RUM_SHARE);
942-
page=BufferGetPage(buffer,NULL,NULL,BGP_NO_SNAPSHOT_TEST);
940+
page=BufferGetPage(buffer);
943941
}
944942

945943
ReleaseBuffer(metabuffer);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp