@@ -317,9 +317,10 @@ rumCompareItemPointers(const ItemPointerData *a, const ItemPointerData *b)
317317}
318318
319319int
320- compareRumKey (RumState * state ,const RumKey * a ,const RumKey * b )
320+ compareRumKey (RumState * state ,const AttrNumber attno ,
321+ const RumKey * a ,const RumKey * b )
321322{
322- if (state -> useAlternativeOrder )
323+ if (state -> useAlternativeOrder && attno == state -> attrnAddToColumn )
323324{
324325/* assume NULL is less than any real value */
325326if (a -> addInfoIsNull == false&& b -> addInfoIsNull == false)
@@ -357,7 +358,7 @@ compareRumKey(RumState * state, const RumKey * a, const RumKey * b)
357358 * Caller is responsible that there is enough space at *dst.
358359 */
359360uint32
360- rumMergeItemPointers (RumState * rumstate ,RumKey * dst ,
361+ rumMergeItemPointers (RumState * rumstate ,AttrNumber attno , RumKey * dst ,
361362RumKey * a ,uint32 na ,RumKey * b ,uint32 nb )
362363{
363364RumKey * dptr = dst ;
@@ -368,7 +369,7 @@ rumMergeItemPointers(RumState * rumstate, RumKey * dst,
368369{
369370int cmp ;
370371
371- cmp = compareRumKey (rumstate ,aptr ,bptr );
372+ cmp = compareRumKey (rumstate ,attno , aptr ,bptr );
372373
373374if (cmp > 0 )
374375{
@@ -412,6 +413,7 @@ dataIsMoveRight(RumBtree btree, Page page)
412413return false;
413414
414415res = compareRumKey (btree -> rumstate ,
416+ btree -> entryAttnum ,
415417& btree -> items [btree -> curitem ],
416418RumDataPageGetRightBound (page ));
417419
@@ -465,6 +467,7 @@ dataLocateItem(RumBtree btree, RumBtreeStack * stack)
465467else
466468{
467469result = compareRumKey (btree -> rumstate ,
470+ btree -> entryAttnum ,
468471& btree -> items [btree -> curitem ],
469472& pitem -> key );
470473}
@@ -545,7 +548,8 @@ findInLeafPage(RumBtree btree, Page page, OffsetNumber *offset,
545548RumKey k ;
546549
547550convertIndexToKey (index ,& k );
548- cmp = compareRumKey (btree -> rumstate ,& k ,
551+ cmp = compareRumKey (btree -> rumstate ,
552+ btree -> entryAttnum ,& k ,
549553& btree -> items [btree -> curitem ]);
550554
551555}
@@ -577,7 +581,7 @@ findInLeafPage(RumBtree btree, Page page, OffsetNumber *offset,
577581ptr = rumDataPageLeafRead (ptr ,btree -> entryAttnum ,& item ,
578582btree -> rumstate );
579583
580- cmp = compareRumKey (btree -> rumstate ,
584+ cmp = compareRumKey (btree -> rumstate ,btree -> entryAttnum ,
581585& btree -> items [btree -> curitem ],& item );
582586
583587if (cmp == 0 )
@@ -888,8 +892,7 @@ dataPlaceToPage(RumBtree btree, Page page, OffsetNumber off)
888892
889893ptr = rumPlaceToDataPageLeaf (ptr ,btree -> entryAttnum ,
890894& btree -> items [j ],& iptr ,btree -> rumstate );
891- freespace = RumDataPageFreeSpacePre (page ,ptr );
892- Assert (freespace >=0 );
895+ Assert (RumDataPageFreeSpacePre (page ,ptr ) >=0 );
893896
894897iptr = btree -> items [j ].iptr ;
895898btree -> curitem ++ ;
@@ -906,8 +909,7 @@ dataPlaceToPage(RumBtree btree, Page page, OffsetNumber off)
906909ptr = rumPlaceToDataPageLeaf (ptr ,btree -> entryAttnum ,& copy_item ,
907910& iptr ,btree -> rumstate );
908911
909- freespace = RumDataPageFreeSpacePre (page ,ptr );
910- Assert (freespace >=0 );
912+ Assert (RumDataPageFreeSpacePre (page ,ptr ) >=0 );
911913
912914iptr = copy_item .iptr ;
913915}
@@ -976,8 +978,6 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
976978RumKey item ;
977979int totalCount = 0 ;
978980int maxItemIndex = btree -> curitem ;
979- int freespace ;
980-
981981static char lpageCopy [BLCKSZ ];
982982
983983dataPrepareData (btree ,newlPage ,off );
@@ -1084,8 +1084,7 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
10841084ptr = rumPlaceToDataPageLeaf (ptr ,btree -> entryAttnum ,
10851085& btree -> items [btree -> curitem ],
10861086& prevIptr ,btree -> rumstate );
1087- freespace = RumDataPageFreeSpacePre (page ,ptr );
1088- Assert (freespace >=0 );
1087+ Assert (RumDataPageFreeSpacePre (page ,ptr ) >=0 );
10891088
10901089prevIptr = btree -> items [btree -> curitem ].iptr ;
10911090btree -> curitem ++ ;
@@ -1100,8 +1099,7 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
11001099curIptr = item ;
11011100ptr = rumPlaceToDataPageLeaf (ptr ,btree -> entryAttnum ,& item ,
11021101& prevIptr ,btree -> rumstate );
1103- freespace = RumDataPageFreeSpacePre (page ,ptr );
1104- Assert (freespace >=0 );
1102+ Assert (RumDataPageFreeSpacePre (page ,ptr ) >=0 );
11051103
11061104prevIptr = item .iptr ;
11071105
@@ -1115,8 +1113,7 @@ dataSplitPageLeaf(RumBtree btree, Buffer lbuf, Buffer rbuf,
11151113curIptr = btree -> items [btree -> curitem ];
11161114ptr = rumPlaceToDataPageLeaf (ptr ,btree -> entryAttnum ,
11171115& btree -> items [btree -> curitem ],& prevIptr ,btree -> rumstate );
1118- freespace = RumDataPageFreeSpacePre (page ,ptr );
1119- Assert (freespace >=0 );
1116+ Assert (RumDataPageFreeSpacePre (page ,ptr ) >=0 );
11201117
11211118prevIptr = btree -> items [btree -> curitem ].iptr ;
11221119btree -> curitem ++ ;