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

Commitba30d78

Browse files
author
Artur Zakirov
committed
Working on RumKey
1 parentd0aa83e commitba30d78

File tree

8 files changed

+271
-325
lines changed

8 files changed

+271
-325
lines changed

‎rum.h

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -405,9 +405,7 @@ extern bool ruminsert(Relation index, Datum *values, bool *isnull,
405405
IndexUniqueCheckcheckUnique);
406406
externvoidrumEntryInsert(RumState*rumstate,
407407
OffsetNumberattnum,Datumkey,RumNullCategorycategory,
408-
ItemPointerData*items,Datum*addInfo,
409-
bool*addInfoIsNull,uint32nitem,
410-
GinStatsData*buildStats);
408+
RumKey*items,uint32nitem,GinStatsData*buildStats);
411409

412410
/* rumbtree.c */
413411

@@ -483,7 +481,9 @@ extern void rumEntryFillRoot(RumBtree btree, Buffer root, Buffer lbuf, Buffer rb
483481
Pagepage,Pagelpage,Pagerpage);
484482
externIndexTuplerumPageGetLinkItup(Bufferbuf,Pagepage);
485483
externvoidrumReadTuple(RumState*rumstate,OffsetNumberattnum,
486-
IndexTupleitup,ItemPointerData*ipd,Datum*addInfo,bool*addInfoIsNull);
484+
IndexTupleitup,RumKey*items);
485+
externvoidrumReadTuplePointers(RumState*rumstate,OffsetNumberattnum,
486+
IndexTupleitup,ItemPointerData*ipd);
487487
externItemPointerDataupdateItemIndexes(Pagepage,OffsetNumberattnum,RumState*rumstate);
488488
externvoidcheckLeafDataPage(RumState*rumstate,AttrNumberattrnum,Pagepage);
489489

@@ -496,10 +496,8 @@ extern Pointer rumPlaceToDataPageLeaf(Pointer ptr, OffsetNumber attnum,
496496
externSizerumCheckPlaceToDataPageLeaf(OffsetNumberattnum,
497497
ItemPointeriptr,DatumaddInfo,booladdInfoIsNull,ItemPointerprev,
498498
RumState*rumstate,Sizesize);
499-
externuint32rumMergeItemPointers(RumState*rumstate,
500-
ItemPointerData*dst,Datum*dst2,bool*dst3,
501-
ItemPointerData*a,Datum*a2,bool*a3,uint32na,
502-
ItemPointerData*b,Datum*b2,bool*b3,uint32nb);
499+
externuint32rumMergeItemPointers(RumState*rumstate,RumKey*dst,
500+
RumKey*a,uint32na,RumKey*b,uint32nb);
503501
externvoidRumDataPageAddItem(Pagepage,void*data,OffsetNumberoffset);
504502
externvoidRumPageDeletePostingItem(Pagepage,OffsetNumberoffset);
505503

@@ -514,10 +512,7 @@ extern RumPostingTreeScan *rumPrepareScanPostingTree(Relation index,
514512
externvoidrumInsertItemPointers(RumState*rumstate,
515513
OffsetNumberattnum,
516514
RumPostingTreeScan*gdi,
517-
ItemPointerData*items,
518-
Datum*addInfo,
519-
bool*addInfoIsNull,
520-
uint32nitem,
515+
RumKey*items,uint32nitem,
521516
GinStatsData*buildStats);
522517
externBufferrumScanBeginPostingTree(RumPostingTreeScan*gdi);
523518
externvoidrumDataFillRoot(RumBtreebtree,Bufferroot,Bufferlbuf,Bufferrbuf,
@@ -834,18 +829,18 @@ rumDataPageLeafReadItemPointer(char *ptr, ItemPointer iptr, bool *addInfoIsNull)
834829
* passed in order to read the first item pointer.
835830
*/
836831
staticinlinePointer
837-
rumDataPageLeafRead(Pointerptr,OffsetNumberattnum,ItemPointeriptr,
838-
Datum*addInfo,bool*addInfoIsNull,RumState*rumstate)
832+
rumDataPageLeafRead(Pointerptr,OffsetNumberattnum,RumKey*item,
833+
RumState*rumstate,boolreadAddInfo)
839834
{
840835
Form_pg_attributeattr;
841836
boolisNull;
842837

843-
ptr=rumDataPageLeafReadItemPointer(ptr,iptr,&isNull);
838+
ptr=rumDataPageLeafReadItemPointer(ptr,&item->iptr,&isNull);
844839

845-
Assert(iptr->ip_posid!=InvalidOffsetNumber);
840+
Assert(item->iptr.ip_posid!=InvalidOffsetNumber);
846841

847-
if (addInfoIsNull)
848-
*addInfoIsNull=isNull;
842+
if (readAddInfo)
843+
item->addInfoIsNull=isNull;
849844

850845
if (!isNull)
851846
{
@@ -854,7 +849,7 @@ rumDataPageLeafRead(Pointer ptr, OffsetNumber attnum, ItemPointer iptr,
854849
if (attr->attbyval)
855850
{
856851
/* do not use aligment for pass-by-value types */
857-
if (addInfo)
852+
if (readAddInfo)
858853
{
859854
union {
860855
int16i16;
@@ -864,19 +859,19 @@ rumDataPageLeafRead(Pointer ptr, OffsetNumber attnum, ItemPointer iptr,
864859
switch(attr->attlen)
865860
{
866861
casesizeof(char):
867-
*addInfo=Int8GetDatum(*ptr);
862+
item->addInfo=Int8GetDatum(*ptr);
868863
break;
869864
casesizeof(int16):
870865
memcpy(&u.i16,ptr,sizeof(int16));
871-
*addInfo=Int16GetDatum(u.i16);
866+
item->addInfo=Int16GetDatum(u.i16);
872867
break;
873868
casesizeof(int32):
874869
memcpy(&u.i32,ptr,sizeof(int32));
875-
*addInfo=Int32GetDatum(u.i32);
870+
item->addInfo=Int32GetDatum(u.i32);
876871
break;
877872
#ifSIZEOF_DATUM==8
878873
casesizeof(Datum):
879-
memcpy(addInfo,ptr,sizeof(Datum));
874+
memcpy(&item->addInfo,ptr,sizeof(Datum));
880875
break;
881876
#endif
882877
default:
@@ -888,8 +883,8 @@ rumDataPageLeafRead(Pointer ptr, OffsetNumber attnum, ItemPointer iptr,
888883
else
889884
{
890885
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);
893888
}
894889

895890
ptr= (Pointer)att_addlength_pointer(ptr,attr->attlen,ptr);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp