Just for my own illumination, can someone explain this bit?
+ If a posting list is too large to store in-line in a key entry, a posting tree + is created. A posting tree is a B-tree structure, where the ItemPointer is + used as the key. At the leaf-level, item pointers are stored compressed, in + "varbyte encoding".
I think the first ItemPointer mentioned (the key) refers to a TID pointing to the index, and "item pointers stored compressed" refers to the TIDs pointing to the heap (the data). Is that correct?
No, they both refer to TIDs pointing to the heap.
I'm also interested in the "FIXME explain varbyte encoding" explanation currently missing, if somebody can write it down ...
Alexander's latest version filled in that explanation (haven't read it myself yet)
off-list
What's your plans about GIN now? I tried to rebase packed posting lists with head. But I found that you've changed interface of placeToPage function. That's conflicts with packed posting lists, because dataPlaceToPageLeaf needs not only offset number to describe place to insert item pointer. Do you like to commit rework of handling GIN incomplete splits before?