postgrespro / rum

RUM access method - inverted index with additional information in posting lists
Other
715 stars 52 forks source link

i change the pg code, can you give me some advice how to adjust the rum code? #83

Open miaojianxin opened 4 years ago

miaojianxin commented 4 years ago

for some application, our pg code changed like this: the structuer ItemIdData changed, like this,

the lp_off,lp_len changed from 16 to 31. in one page, the item number of tuples and the length of the tuple changed.

typedef struct ItemIdData { uint64 lp_off:31, / offset to tuple (from start of page) / lp_flags:2, / state of item pointer, see below / lp_len:31; / byte length of tuple / } ItemIdData;

the OffsetNumber changed from 16 to 32. typedef uint32 OffsetNumber;

and we did some change for pg source in the other places , it has worked well.

when I use the rum code to pg, it core dump. i did some change in rum code, may be the modify i did is imcomplete, the rum with pg still core。 can you give me some advice how to modify the rum code for my change in pg ? thank you

miaojianxin commented 4 years ago

I have done some modify for rum, but it is imcomplete。 I modified like this: //mjx modify start //16-->32bit

define ItemPointerSetMax(p) \

ItemPointerSet((p), InvalidBlockNumber, (OffsetNumber)0xfffffffe)

define ItemPointerIsMax(p) \

(RumItemPointerGetOffsetNumber(p) == (OffsetNumber)0xfffffffe && \
 RumItemPointerGetBlockNumber(p) == InvalidBlockNumber)

define ItemPointerSetLossyPage(p, b) \

ItemPointerSet((p), (b), (OffsetNumber)0xffffffff)

define ItemPointerIsLossyPage(p) \

(RumItemPointerGetOffsetNumber(p) == (OffsetNumber)0xffffffff && \
 RumItemPointerGetBlockNumber(p) != InvalidBlockNumber)

//mjx modify end

/mjx modify start //16-->32bit

define RUM_TREE_POSTING ((OffsetNumber)0xffffffff)

//mjx modify end //mjx modify 16-->32 //#define ALT_ADD_INFO_NULL_FLAG (0x8000)

define ALT_ADD_INFO_NULL_FLAG (0x80000000)