Skip to content

Commit 394795f

Browse files
author
Artur Zakirov
committed
Fix rumCheckPlaceToDataPageLeaf()
1 parent f4fa796 commit 394795f

File tree

3 files changed

+16
-33
lines changed

3 files changed

+16
-33
lines changed

rum.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -503,8 +503,7 @@ extern int compareRumKey(RumState *state, const RumKey *a, const RumKey *b);
503503
extern Pointer rumPlaceToDataPageLeaf(Pointer ptr, OffsetNumber attnum,
504504
RumKey *item, ItemPointer prev, RumState *rumstate);
505505
extern Size rumCheckPlaceToDataPageLeaf(OffsetNumber attnum,
506-
ItemPointer iptr, Datum addInfo, bool addInfoIsNull, ItemPointer prev,
507-
RumState *rumstate, Size size);
506+
RumKey *item, ItemPointer prev, RumState *rumstate, Size size);
508507
extern uint32 rumMergeItemPointers(RumState *rumstate, RumKey *dst,
509508
RumKey *a, uint32 na, RumKey *b, uint32 nb);
510509
extern void RumDataPageAddItem(Page page, void *data, OffsetNumber offset);

rumdatapage.c

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -263,17 +263,16 @@ rumDataPageLeafGetItemPointerSize(ItemPointer iptr, ItemPointer prev)
263263
*/
264264
Size
265265
rumCheckPlaceToDataPageLeaf(OffsetNumber attnum,
266-
ItemPointer iptr, Datum addInfo, bool addInfoIsNull, ItemPointer prev,
267-
RumState *rumstate, Size size)
266+
RumKey *item, ItemPointer prev, RumState *rumstate, Size size)
268267
{
269268
Form_pg_attribute attr;
270269

271-
size += rumDataPageLeafGetItemPointerSize(iptr, prev);
270+
size += rumDataPageLeafGetItemPointerSize(&item->iptr, prev);
272271

273-
if (!addInfoIsNull)
272+
if (!item->addInfoIsNull)
274273
{
275274
attr = rumstate->addAttrs[attnum - 1];
276-
size = rumComputeDatumSize(size, addInfo, attr->attbyval,
275+
size = rumComputeDatumSize(size, item->addInfo, attr->attbyval,
277276
attr->attalign, attr->attlen, attr->attstorage);
278277
}
279278

@@ -722,8 +721,7 @@ dataIsEnoughSpace(RumBtree btree, Buffer buf, OffsetNumber off)
722721
for (j = btree->curitem; j < btree->nitem; j++)
723722
{
724723
size = rumCheckPlaceToDataPageLeaf(btree->entryAttnum,
725-
&btree->items[j].iptr, btree->items[j].addInfo,
726-
btree->items[j].addInfoIsNull,
724+
&btree->items[j],
727725
(j == btree->curitem) ? (&iptr) : &btree->items[j - 1].iptr,
728726
btree->rumstate, size);
729727
}
@@ -732,8 +730,7 @@ dataIsEnoughSpace(RumBtree btree, Buffer buf, OffsetNumber off)
732730
{
733731
j = btree->curitem;
734732
size = rumCheckPlaceToDataPageLeaf(btree->entryAttnum,
735-
&btree->items[j].iptr, btree->items[j].addInfo,
736-
btree->items[j].addInfoIsNull, &iptr, btree->rumstate, size);
733+
&btree->items[j], &iptr, btree->rumstate, size);
737734
}
738735
size += MAXIMUM_ALIGNOF;
739736

@@ -827,9 +824,7 @@ dataPlaceToPage(RumBtree btree, Page page, OffsetNumber off)
827824
Pointer ptr2;
828825

829826
ptr2 = page + rumCheckPlaceToDataPageLeaf(btree->entryAttnum,
830-
&btree->items[j].iptr, btree->items[j].addInfo,
831-
btree->items[j].addInfoIsNull,
832-
&iptr, btree->rumstate, ptr - page);
827+
&btree->items[j], &iptr, btree->rumstate, ptr - page);
833828

834829
freespace = RumDataPageFreeSpacePre(page, ptr2);
835830
if (freespace < 0)
@@ -954,8 +949,7 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
954949

955950
prevTotalsize = totalsize;
956951
totalsize = rumCheckPlaceToDataPageLeaf(btree->entryAttnum,
957-
&item.iptr, item.addInfo, item.addInfoIsNull,
958-
&prevIptr, btree->rumstate, totalsize);
952+
&item, &prevIptr, btree->rumstate, totalsize);
959953

960954
maxItemIndex++;
961955
totalCount++;
@@ -968,8 +962,7 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
968962

969963
prevTotalsize = totalsize;
970964
totalsize = rumCheckPlaceToDataPageLeaf(btree->entryAttnum,
971-
&item.iptr, item.addInfo, item.addInfoIsNull,
972-
&prevIptr, btree->rumstate, totalsize);
965+
&item, &prevIptr, btree->rumstate, totalsize);
973966

974967
totalCount++;
975968
maxItemSize = Max(maxItemSize, totalsize - prevTotalsize);
@@ -989,10 +982,8 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
989982
*/
990983
while (maxItemIndex < btree->nitem &&
991984
(newTotalsize = rumCheckPlaceToDataPageLeaf(btree->entryAttnum,
992-
&item.iptr, item.addInfo, item.addInfoIsNull,
993-
&prevIptr, btree->rumstate, totalsize)) <
994-
2 * RumDataPageSize - 2 * maxItemSize - 2 * MAXIMUM_ALIGNOF
995-
)
985+
&item, &prevIptr, btree->rumstate, totalsize)) <
986+
2 * RumDataPageSize - 2 * maxItemSize - 2 * MAXIMUM_ALIGNOF)
996987
{
997988
maxItemIndex++;
998989
totalCount++;
@@ -1008,8 +999,7 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
1008999
{
10091000
prevTotalsize = totalsize;
10101001
totalsize = rumCheckPlaceToDataPageLeaf(btree->entryAttnum,
1011-
&item.iptr, item.addInfo, item.addInfoIsNull,
1012-
&prevIptr, btree->rumstate, totalsize);
1002+
&item, &prevIptr, btree->rumstate, totalsize);
10131003
maxItemIndex++;
10141004

10151005
totalCount++;

ruminsert.c

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -145,16 +145,12 @@ RumFormTuple(RumState *rumstate,
145145

146146
if (nipd > 0)
147147
{
148-
newsize = rumCheckPlaceToDataPageLeaf(attnum, &items[0].iptr,
149-
items[0].addInfo,
150-
items[0].addInfoIsNull,
148+
newsize = rumCheckPlaceToDataPageLeaf(attnum, &items[0],
151149
&nullItemPointer,
152150
rumstate, newsize);
153151
for (i = 1; i < nipd; i++)
154152
{
155-
newsize = rumCheckPlaceToDataPageLeaf(attnum, &items[i].iptr,
156-
items[i].addInfo,
157-
items[i].addInfoIsNull,
153+
newsize = rumCheckPlaceToDataPageLeaf(attnum, &items[i],
158154
&items[i - 1].iptr,
159155
rumstate, newsize);
160156
}
@@ -330,9 +326,7 @@ buildFreshLeafTuple(RumState *rumstate,
330326

331327
do
332328
{
333-
size = rumCheckPlaceToDataPageLeaf(attnum, &items[itemsCount].iptr,
334-
items[itemsCount].addInfo,
335-
items[itemsCount].addInfoIsNull,
329+
size = rumCheckPlaceToDataPageLeaf(attnum, &items[itemsCount],
336330
&prevIptr, rumstate, size);
337331
prevIptr = items[itemsCount].iptr;
338332
itemsCount++;

0 commit comments

Comments
 (0)