@@ -405,9 +405,7 @@ extern bool ruminsert(Relation index, Datum *values, bool *isnull,
405
405
IndexUniqueCheck checkUnique );
406
406
extern void rumEntryInsert (RumState * rumstate ,
407
407
OffsetNumber attnum , Datum key , RumNullCategory category ,
408
- ItemPointerData * items , Datum * addInfo ,
409
- bool * addInfoIsNull , uint32 nitem ,
410
- GinStatsData * buildStats );
408
+ RumKey * items , uint32 nitem , GinStatsData * buildStats );
411
409
412
410
/* rumbtree.c */
413
411
@@ -483,7 +481,9 @@ extern void rumEntryFillRoot(RumBtree btree, Buffer root, Buffer lbuf, Buffer rb
483
481
Page page , Page lpage , Page rpage );
484
482
extern IndexTuple rumPageGetLinkItup (Buffer buf , Page page );
485
483
extern void rumReadTuple (RumState * rumstate , OffsetNumber attnum ,
486
- IndexTuple itup , ItemPointerData * ipd , Datum * addInfo , bool * addInfoIsNull );
484
+ IndexTuple itup , RumKey * items );
485
+ extern void rumReadTuplePointers (RumState * rumstate , OffsetNumber attnum ,
486
+ IndexTuple itup , ItemPointerData * ipd );
487
487
extern ItemPointerData updateItemIndexes (Page page , OffsetNumber attnum , RumState * rumstate );
488
488
extern void checkLeafDataPage (RumState * rumstate , AttrNumber attrnum , Page page );
489
489
@@ -496,10 +496,8 @@ extern Pointer rumPlaceToDataPageLeaf(Pointer ptr, OffsetNumber attnum,
496
496
extern Size rumCheckPlaceToDataPageLeaf (OffsetNumber attnum ,
497
497
ItemPointer iptr , Datum addInfo , bool addInfoIsNull , ItemPointer prev ,
498
498
RumState * rumstate , Size size );
499
- extern uint32 rumMergeItemPointers (RumState * rumstate ,
500
- ItemPointerData * dst , Datum * dst2 , bool * dst3 ,
501
- ItemPointerData * a , Datum * a2 , bool * a3 , uint32 na ,
502
- ItemPointerData * b , Datum * b2 , bool * b3 , uint32 nb );
499
+ extern uint32 rumMergeItemPointers (RumState * rumstate , RumKey * dst ,
500
+ RumKey * a , uint32 na , RumKey * b , uint32 nb );
503
501
extern void RumDataPageAddItem (Page page , void * data , OffsetNumber offset );
504
502
extern void RumPageDeletePostingItem (Page page , OffsetNumber offset );
505
503
@@ -514,10 +512,7 @@ extern RumPostingTreeScan *rumPrepareScanPostingTree(Relation index,
514
512
extern void rumInsertItemPointers (RumState * rumstate ,
515
513
OffsetNumber attnum ,
516
514
RumPostingTreeScan * gdi ,
517
- ItemPointerData * items ,
518
- Datum * addInfo ,
519
- bool * addInfoIsNull ,
520
- uint32 nitem ,
515
+ RumKey * items , uint32 nitem ,
521
516
GinStatsData * buildStats );
522
517
extern Buffer rumScanBeginPostingTree (RumPostingTreeScan * gdi );
523
518
extern void rumDataFillRoot (RumBtree btree , Buffer root , Buffer lbuf , Buffer rbuf ,
@@ -834,18 +829,18 @@ rumDataPageLeafReadItemPointer(char *ptr, ItemPointer iptr, bool *addInfoIsNull)
834
829
* passed in order to read the first item pointer.
835
830
*/
836
831
static inline Pointer
837
- rumDataPageLeafRead (Pointer ptr , OffsetNumber attnum , ItemPointer iptr ,
838
- Datum * addInfo , bool * addInfoIsNull , RumState * rumstate )
832
+ rumDataPageLeafRead (Pointer ptr , OffsetNumber attnum , RumKey * item ,
833
+ RumState * rumstate , bool readAddInfo )
839
834
{
840
835
Form_pg_attribute attr ;
841
836
bool isNull ;
842
837
843
- ptr = rumDataPageLeafReadItemPointer (ptr , iptr , & isNull );
838
+ ptr = rumDataPageLeafReadItemPointer (ptr , & item -> iptr , & isNull );
844
839
845
- Assert (iptr -> ip_posid != InvalidOffsetNumber );
840
+ Assert (item -> iptr . ip_posid != InvalidOffsetNumber );
846
841
847
- if (addInfoIsNull )
848
- * addInfoIsNull = isNull ;
842
+ if (readAddInfo )
843
+ item -> addInfoIsNull = isNull ;
849
844
850
845
if (!isNull )
851
846
{
@@ -854,7 +849,7 @@ rumDataPageLeafRead(Pointer ptr, OffsetNumber attnum, ItemPointer iptr,
854
849
if (attr -> attbyval )
855
850
{
856
851
/* do not use aligment for pass-by-value types */
857
- if (addInfo )
852
+ if (readAddInfo )
858
853
{
859
854
union {
860
855
int16 i16 ;
@@ -864,19 +859,19 @@ rumDataPageLeafRead(Pointer ptr, OffsetNumber attnum, ItemPointer iptr,
864
859
switch (attr -> attlen )
865
860
{
866
861
case sizeof (char ):
867
- * addInfo = Int8GetDatum (* ptr );
862
+ item -> addInfo = Int8GetDatum (* ptr );
868
863
break ;
869
864
case sizeof (int16 ):
870
865
memcpy (& u .i16 , ptr , sizeof (int16 ));
871
- * addInfo = Int16GetDatum (u .i16 );
866
+ item -> addInfo = Int16GetDatum (u .i16 );
872
867
break ;
873
868
case sizeof (int32 ):
874
869
memcpy (& u .i32 , ptr , sizeof (int32 ));
875
- * addInfo = Int32GetDatum (u .i32 );
870
+ item -> addInfo = Int32GetDatum (u .i32 );
876
871
break ;
877
872
#if SIZEOF_DATUM == 8
878
873
case sizeof (Datum ):
879
- memcpy (addInfo , ptr , sizeof (Datum ));
874
+ memcpy (& item -> addInfo , ptr , sizeof (Datum ));
880
875
break ;
881
876
#endif
882
877
default :
@@ -888,8 +883,8 @@ rumDataPageLeafRead(Pointer ptr, OffsetNumber attnum, ItemPointer iptr,
888
883
else
889
884
{
890
885
ptr = (Pointer ) att_align_pointer (ptr , attr -> attalign , attr -> attlen , ptr );
891
- if (addInfo )
892
- * addInfo = fetch_att (ptr , attr -> attbyval , attr -> attlen );
886
+ if (readAddInfo )
887
+ item -> addInfo = fetch_att (ptr , attr -> attbyval , attr -> attlen );
893
888
}
894
889
895
890
ptr = (Pointer ) att_addlength_pointer (ptr , attr -> attlen , ptr );
0 commit comments