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

Commit9f273cd

Browse files
author
Artur Zakirov
committed
Remove addInfo, addInfoIsNull from RumBtreeData struct
1 parent80b864b commit9f273cd

File tree

3 files changed

+36
-47
lines changed

3 files changed

+36
-47
lines changed

‎rum.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -454,9 +454,7 @@ typedef struct RumBtreeData
454454
boolisDelete;
455455

456456
/* Data (posting tree) options */
457-
ItemPointerData*items;
458-
Datum*addInfo;
459-
bool*addInfoIsNull;
457+
RumKey*items;
460458

461459
uint32nitem;
462460
uint32curitem;

‎rumbtree.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ rumReFindLeafPage(RumBtree btree, RumBtreeStack *stack)
9292

9393
if (rumCompareItemPointers(
9494
&(((PostingItem*)RumDataPageGetItem(page,maxoff-1))->key),
95-
btree->items+btree->curitem) >=0)
95+
&btree->items[btree->curitem].iptr) >=0)
9696
{
9797
break;
9898
}

‎rumdatapage.c

Lines changed: 34 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ dataIsMoveRight(RumBtree btree, Page page)
399399
if (RumPageRightMost(page))
400400
return FALSE;
401401

402-
return (rumCompareItemPointers(btree->items+btree->curitem,iptr)>0) ? TRUE : FALSE;
402+
return (rumCompareItemPointers(&btree->items[btree->curitem].iptr,iptr)>0) ? TRUE : FALSE;
403403
}
404404

405405
/*
@@ -449,7 +449,8 @@ dataLocateItem(RumBtree btree, RumBtreeStack *stack)
449449
else
450450
{
451451
pitem= (PostingItem*)RumDataPageGetItem(page,mid);
452-
result=rumCompareItemPointers(btree->items+btree->curitem,&(pitem->key));
452+
result=rumCompareItemPointers(&btree->items[btree->curitem].iptr,
453+
&(pitem->key));
453454
}
454455

455456
if (result==0)
@@ -500,7 +501,8 @@ findInLeafPage(RumBtree btree, Page page, OffsetNumber *offset,
500501
if (index->offsetNumer==InvalidOffsetNumber)
501502
break;
502503

503-
cmp=rumCompareItemPointers(&index->iptr,btree->items+btree->curitem);
504+
cmp=rumCompareItemPointers(&index->iptr,
505+
&btree->items[btree->curitem].iptr);
504506
if (cmp<0)
505507
{
506508
ptr=RumDataPageGetData(page)+index->pageOffset;
@@ -522,7 +524,8 @@ findInLeafPage(RumBtree btree, Page page, OffsetNumber *offset,
522524
ptr=rumDataPageLeafRead(ptr,btree->entryAttnum,&item,
523525
btree->rumstate, false);
524526

525-
cmp=rumCompareItemPointers(btree->items+btree->curitem,&item.iptr);
527+
cmp=rumCompareItemPointers(&btree->items[btree->curitem].iptr,
528+
&item.iptr);
526529
if (cmp==0)
527530
{
528531
*offset=i;
@@ -719,17 +722,18 @@ dataIsEnoughSpace(RumBtree btree, Buffer buf, OffsetNumber off)
719722
for (j=btree->curitem;j<btree->nitem;j++)
720723
{
721724
size=rumCheckPlaceToDataPageLeaf(btree->entryAttnum,
722-
&btree->items[j],btree->addInfo[j],btree->addInfoIsNull[j],
723-
(j==btree->curitem) ? (&iptr) :&btree->items[j-1],
725+
&btree->items[j].iptr,btree->items[j].addInfo,
726+
btree->items[j].addInfoIsNull,
727+
(j==btree->curitem) ? (&iptr) :&btree->items[j-1].iptr,
724728
btree->rumstate,size);
725729
}
726730
}
727731
else
728732
{
729733
j=btree->curitem;
730734
size=rumCheckPlaceToDataPageLeaf(btree->entryAttnum,
731-
&btree->items[j],btree->addInfo[j],btree->addInfoIsNull[j],
732-
&iptr,btree->rumstate,size);
735+
&btree->items[j].iptr,btree->items[j].addInfo,
736+
btree->items[j].addInfoIsNull,&iptr,btree->rumstate,size);
733737
}
734738
size+=MAXIMUM_ALIGNOF;
735739

@@ -823,20 +827,22 @@ dataPlaceToPage(RumBtree btree, Page page, OffsetNumber off)
823827
Pointerptr2;
824828

825829
ptr2=page+rumCheckPlaceToDataPageLeaf(btree->entryAttnum,
826-
&btree->items[j],btree->addInfo[j],btree->addInfoIsNull[j],
830+
&btree->items[j].iptr,btree->items[j].addInfo,
831+
btree->items[j].addInfoIsNull,
827832
&iptr,btree->rumstate,ptr-page);
828833

829834
freespace=RumDataPageFreeSpacePre(page,ptr2);
830835
if (freespace<0)
831836
break;
832837

833838
ptr=rumPlaceToDataPageLeaf(ptr,btree->entryAttnum,
834-
&btree->items[j],btree->addInfo[j],btree->addInfoIsNull[j],
839+
&btree->items[j].iptr,btree->items[j].addInfo,
840+
btree->items[j].addInfoIsNull,
835841
&iptr,btree->rumstate);
836842
freespace=RumDataPageFreeSpacePre(page,ptr);
837843
Assert(freespace >=0);
838844

839-
iptr=btree->items[j];
845+
iptr=btree->items[j].iptr;
840846
btree->curitem++;
841847
i++;
842848
}
@@ -948,12 +954,11 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
948954
if (i==off)
949955
{
950956
prevIptr=item.iptr;
951-
item.iptr=btree->items[maxItemIndex];
957+
item=btree->items[maxItemIndex];
952958

953959
prevTotalsize=totalsize;
954960
totalsize=rumCheckPlaceToDataPageLeaf(btree->entryAttnum,
955-
&item.iptr,btree->addInfo[maxItemIndex],
956-
btree->addInfoIsNull[maxItemIndex],
961+
&item.iptr,item.addInfo,item.addInfoIsNull,
957962
&prevIptr,btree->rumstate,totalsize);
958963

959964
maxItemIndex++;
@@ -977,7 +982,7 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
977982
if (off==maxoff+1)
978983
{
979984
prevIptr=item.iptr;
980-
item.iptr=btree->items[maxItemIndex];
985+
item=btree->items[maxItemIndex];
981986
if (RumPageRightMost(newlPage))
982987
{
983988
SizenewTotalsize;
@@ -988,8 +993,7 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
988993
*/
989994
while (maxItemIndex<btree->nitem&&
990995
(newTotalsize=rumCheckPlaceToDataPageLeaf(btree->entryAttnum,
991-
&item.iptr,btree->addInfo[maxItemIndex],
992-
btree->addInfoIsNull[maxItemIndex],
996+
&item.iptr,item.addInfo,item.addInfoIsNull,
993997
&prevIptr,btree->rumstate,totalsize))<
994998
2*RumDataPageSize-2*maxItemSize-2*MAXIMUM_ALIGNOF
995999
)
@@ -1001,15 +1005,14 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
10011005

10021006
prevIptr=item.iptr;
10031007
if (maxItemIndex<btree->nitem)
1004-
item.iptr=btree->items[maxItemIndex];
1008+
item=btree->items[maxItemIndex];
10051009
}
10061010
}
10071011
else
10081012
{
10091013
prevTotalsize=totalsize;
10101014
totalsize=rumCheckPlaceToDataPageLeaf(btree->entryAttnum,
1011-
&item.iptr,btree->addInfo[maxItemIndex],
1012-
btree->addInfoIsNull[maxItemIndex],
1015+
&item.iptr,item.addInfo,item.addInfoIsNull,
10131016
&prevIptr,btree->rumstate,totalsize);
10141017
maxItemIndex++;
10151018

@@ -1038,14 +1041,14 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
10381041
while (btree->curitem<maxItemIndex)
10391042
{
10401043
ptr=rumPlaceToDataPageLeaf(ptr,btree->entryAttnum,
1041-
&btree->items[btree->curitem],
1042-
btree->addInfo[btree->curitem],
1043-
btree->addInfoIsNull[btree->curitem],
1044+
&btree->items[btree->curitem].iptr,
1045+
btree->items[btree->curitem].addInfo,
1046+
btree->items[btree->curitem].addInfoIsNull,
10441047
&prevIptr,btree->rumstate);
10451048
freespace=RumDataPageFreeSpacePre(page,ptr);
10461049
Assert(freespace >=0);
10471050

1048-
prevIptr=btree->items[btree->curitem];
1051+
prevIptr=btree->items[btree->curitem].iptr;
10491052
btree->curitem++;
10501053

10511054
CHECK_SWITCH_TO_RPAGE;
@@ -1070,14 +1073,14 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
10701073
while (btree->curitem<maxItemIndex)
10711074
{
10721075
ptr=rumPlaceToDataPageLeaf(ptr,btree->entryAttnum,
1073-
&btree->items[btree->curitem],
1074-
btree->addInfo[btree->curitem],
1075-
btree->addInfoIsNull[btree->curitem],
1076+
&btree->items[btree->curitem].iptr,
1077+
btree->items[btree->curitem].addInfo,
1078+
btree->items[btree->curitem].addInfoIsNull,
10761079
&prevIptr,btree->rumstate);
10771080
freespace=RumDataPageFreeSpacePre(page,ptr);
10781081
Assert(freespace >=0);
10791082

1080-
prevIptr=btree->items[btree->curitem];
1083+
prevIptr=btree->items[btree->curitem].iptr;
10811084
btree->curitem++;
10821085

10831086
CHECK_SWITCH_TO_RPAGE;
@@ -1138,7 +1141,7 @@ dataSplitPageInternal(RumBtree btree, Buffer lbuf, Buffer rbuf,
11381141
maxoff*sizeof(ItemPointerData)<2* (freeSpace-sizeof(ItemPointerData)))
11391142
{
11401143
memcpy(vector+maxoff*sizeof(ItemPointerData),
1141-
btree->items+btree->curitem,
1144+
&btree->items[btree->curitem].iptr,
11421145
sizeof(ItemPointerData));
11431146
maxoff++;
11441147
nCopied++;
@@ -1152,7 +1155,7 @@ dataSplitPageInternal(RumBtree btree, Buffer lbuf, Buffer rbuf,
11521155
memmove(ptr+sizeofitem,ptr, (maxoff-off+1)*sizeofitem);
11531156
if (RumPageIsLeaf(newlPage))
11541157
{
1155-
memcpy(ptr,btree->items+btree->curitem,sizeofitem);
1158+
memcpy(ptr,&btree->items[btree->curitem].iptr,sizeofitem);
11561159
btree->curitem++;
11571160
}
11581161
else
@@ -1396,21 +1399,9 @@ rumInsertItemPointers(RumState *rumstate,
13961399
RumKey*items,uint32nitem,
13971400
GinStatsData*buildStats)
13981401
{
1399-
inti;
1400-
14011402
BlockNumberrootBlkno=gdi->stack->blkno;
14021403

1403-
/* TODO: Fix this terrible code. */
1404-
gdi->btree.items= (ItemPointerData*)palloc(sizeof(ItemPointerData)*nitem);
1405-
gdi->btree.addInfo= (Datum*)palloc(sizeof(Datum)*nitem);
1406-
gdi->btree.addInfoIsNull= (bool*)palloc(sizeof(bool)*nitem);
1407-
for (i=0;i<nitem;i++)
1408-
{
1409-
gdi->btree.items[i]=items[i].iptr;
1410-
gdi->btree.addInfo[i]=items[i].addInfo;
1411-
gdi->btree.addInfoIsNull[i]=items[i].addInfoIsNull;
1412-
}
1413-
1404+
gdi->btree.items=items;
14141405
gdi->btree.nitem=nitem;
14151406
gdi->btree.curitem=0;
14161407

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp