Is the GiST examples I've looked through, in the picksplit functions,
I see code that looks roughly like this:
bytea *entryvec = (bytea *) PG_GETARG_POINTER(0); OffsetNumber i, maxoff;
maxoff = ((VARSIZE(entryvec) - VARHDRSZ) / sizeof(GISTENTRY)) - 1;
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i)) { ... DatumGetPointer((((GISTENTRY *)
(VARDATA(entryvec)))[i].key))... }
I'm wondering, since FirstOffsetNumber is 1, what about the 0'th index
in entryvec? Is it just not set?
Also, is there some rationalle for using OffsetNumber in
GIST_SPLITVEC? I see in off.h:
/* * OffsetNumber: * * this is a 1-based index into the linp (ItemIdData) array in the * header of each disk page.
*/
and I don't get the connection with what picksplit is doing (keeping
in mind that I don't know what "linp", "ItemIdData" or "disk page"
mean).
I have a very tenuous understanding of all this, so please bear with me.
--
Itai Zukerman <http://www.math-hat.com/~zukerman/>