OffsetNumber, picksplit, and GiST - Mailing list pgsql-sql

From Itai Zukerman
Subject OffsetNumber, picksplit, and GiST
Date
Msg-id 87bs0z1zzs.fsf@matt.w80.math-hat.com
Whole thread Raw
Responses Re: OffsetNumber, picksplit, and GiST  (Itai Zukerman <zukerman@math-hat.com>)
List pgsql-sql
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/>


pgsql-sql by date:

Previous
From: "James Cooper"
Date:
Subject: performance
Next
From: Itai Zukerman
Date:
Subject: Re: Polymorphic?