@@ -317,9 +317,10 @@ rumCompareItemPointers(const ItemPointerData *a, const ItemPointerData *b)
317
317
}
318
318
319
319
int
320
- compareRumKey (RumState * state , const RumKey * a , const RumKey * b )
320
+ compareRumKey (RumState * state , const AttrNumber attno ,
321
+ const RumKey * a , const RumKey * b )
321
322
{
322
- if (state -> useAlternativeOrder )
323
+ if (state -> useAlternativeOrder && attno == state -> attrnAddToColumn )
323
324
{
324
325
/* assume NULL is less than any real value */
325
326
if (a -> addInfoIsNull == false && b -> addInfoIsNull == false)
@@ -357,7 +358,7 @@ compareRumKey(RumState * state, const RumKey * a, const RumKey * b)
357
358
* Caller is responsible that there is enough space at *dst.
358
359
*/
359
360
uint32
360
- rumMergeItemPointers (RumState * rumstate , RumKey * dst ,
361
+ rumMergeItemPointers (RumState * rumstate , AttrNumber attno , RumKey * dst ,
361
362
RumKey * a , uint32 na , RumKey * b , uint32 nb )
362
363
{
363
364
RumKey * dptr = dst ;
@@ -368,7 +369,7 @@ rumMergeItemPointers(RumState * rumstate, RumKey * dst,
368
369
{
369
370
int cmp ;
370
371
371
- cmp = compareRumKey (rumstate , aptr , bptr );
372
+ cmp = compareRumKey (rumstate , attno , aptr , bptr );
372
373
373
374
if (cmp > 0 )
374
375
{
@@ -412,6 +413,7 @@ dataIsMoveRight(RumBtree btree, Page page)
412
413
return false;
413
414
414
415
res = compareRumKey (btree -> rumstate ,
416
+ btree -> entryAttnum ,
415
417
& btree -> items [btree -> curitem ],
416
418
RumDataPageGetRightBound (page ));
417
419
@@ -465,6 +467,7 @@ dataLocateItem(RumBtree btree, RumBtreeStack * stack)
465
467
else
466
468
{
467
469
result = compareRumKey (btree -> rumstate ,
470
+ btree -> entryAttnum ,
468
471
& btree -> items [btree -> curitem ],
469
472
& pitem -> key );
470
473
}
@@ -545,7 +548,8 @@ findInLeafPage(RumBtree btree, Page page, OffsetNumber *offset,
545
548
RumKey k ;
546
549
547
550
convertIndexToKey (index , & k );
548
- cmp = compareRumKey (btree -> rumstate , & k ,
551
+ cmp = compareRumKey (btree -> rumstate ,
552
+ btree -> entryAttnum , & k ,
549
553
& btree -> items [btree -> curitem ]);
550
554
551
555
}
@@ -577,7 +581,7 @@ findInLeafPage(RumBtree btree, Page page, OffsetNumber *offset,
577
581
ptr = rumDataPageLeafRead (ptr , btree -> entryAttnum , & item ,
578
582
btree -> rumstate );
579
583
580
- cmp = compareRumKey (btree -> rumstate ,
584
+ cmp = compareRumKey (btree -> rumstate , btree -> entryAttnum ,
581
585
& btree -> items [btree -> curitem ], & item );
582
586
583
587
if (cmp == 0 )
@@ -888,8 +892,7 @@ dataPlaceToPage(RumBtree btree, Page page, OffsetNumber off)
888
892
889
893
ptr = rumPlaceToDataPageLeaf (ptr , btree -> entryAttnum ,
890
894
& btree -> items [j ], & iptr , btree -> rumstate );
891
- freespace = RumDataPageFreeSpacePre (page , ptr );
892
- Assert (freespace >= 0 );
895
+ Assert (RumDataPageFreeSpacePre (page , ptr ) >= 0 );
893
896
894
897
iptr = btree -> items [j ].iptr ;
895
898
btree -> curitem ++ ;
@@ -906,8 +909,7 @@ dataPlaceToPage(RumBtree btree, Page page, OffsetNumber off)
906
909
ptr = rumPlaceToDataPageLeaf (ptr , btree -> entryAttnum , & copy_item ,
907
910
& iptr , btree -> rumstate );
908
911
909
- freespace = RumDataPageFreeSpacePre (page , ptr );
910
- Assert (freespace >= 0 );
912
+ Assert (RumDataPageFreeSpacePre (page , ptr ) >= 0 );
911
913
912
914
iptr = copy_item .iptr ;
913
915
}
@@ -976,8 +978,6 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
976
978
RumKey item ;
977
979
int totalCount = 0 ;
978
980
int maxItemIndex = btree -> curitem ;
979
- int freespace ;
980
-
981
981
static char lpageCopy [BLCKSZ ];
982
982
983
983
dataPrepareData (btree , newlPage , off );
@@ -1084,8 +1084,7 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
1084
1084
ptr = rumPlaceToDataPageLeaf (ptr , btree -> entryAttnum ,
1085
1085
& btree -> items [btree -> curitem ],
1086
1086
& prevIptr , btree -> rumstate );
1087
- freespace = RumDataPageFreeSpacePre (page , ptr );
1088
- Assert (freespace >= 0 );
1087
+ Assert (RumDataPageFreeSpacePre (page , ptr ) >= 0 );
1089
1088
1090
1089
prevIptr = btree -> items [btree -> curitem ].iptr ;
1091
1090
btree -> curitem ++ ;
@@ -1100,8 +1099,7 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
1100
1099
curIptr = item ;
1101
1100
ptr = rumPlaceToDataPageLeaf (ptr , btree -> entryAttnum , & item ,
1102
1101
& prevIptr , btree -> rumstate );
1103
- freespace = RumDataPageFreeSpacePre (page , ptr );
1104
- Assert (freespace >= 0 );
1102
+ Assert (RumDataPageFreeSpacePre (page , ptr ) >= 0 );
1105
1103
1106
1104
prevIptr = item .iptr ;
1107
1105
@@ -1115,8 +1113,7 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
1115
1113
curIptr = btree -> items [btree -> curitem ];
1116
1114
ptr = rumPlaceToDataPageLeaf (ptr , btree -> entryAttnum ,
1117
1115
& btree -> items [btree -> curitem ], & prevIptr , btree -> rumstate );
1118
- freespace = RumDataPageFreeSpacePre (page , ptr );
1119
- Assert (freespace >= 0 );
1116
+ Assert (RumDataPageFreeSpacePre (page , ptr ) >= 0 );
1120
1117
1121
1118
prevIptr = btree -> items [btree -> curitem ].iptr ;
1122
1119
btree -> curitem ++ ;
0 commit comments