From: | Teodor Sigaev <teodor(at)stack(dot)net> |
---|---|
To: | Itai Zukerman <zukerman(at)math-hat(dot)com> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: [SQL] OffsetNumber, picksplit, and GiST |
Date: | 2003-03-03 09:46:00 |
Message-ID: | 3E632458.7000100@stack.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Just historical reasons...
Itai Zukerman wrote:
> I didn't get any responses on pgsql-sql, so I'm re-posting here...
>
>
>>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?
>
>
> In backend/access/gist/gist.c I see how entryvec is built:
>
> storage = palloc(MAXALIGN(VARHDRSZ) + (*len + 1) * sizeof(GISTENTRY));
> entryvec = (bytea *) (storage + MAXALIGN(VARHDRSZ) - VARHDRSZ);
> decompvec = (bool *) palloc((*len + 1) * sizeof(bool));
> VARATT_SIZEP(entryvec) = (*len + 1) * sizeof(GISTENTRY) + VARHDRSZ;
> for (i = 1; i <= *len; i++)
> {
> [...] gistdentryinit(giststate, 0, &((GISTENTRY *) VARDATA(entryvec))[i], [...]
> }
>
> So it looks like the 0'th entry indeed is empty. Why?
>
> Also, in gist.c the index "i" has type "int". No mention of
> OffsetNumber anywhere. Any reason for that?
>
>
>
> ------------------------------------------------------------------------
>
>
>
> ------------------------------------------------------------------------
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org
--
Teodor Sigaev
teodor(at)stack(dot)net
From | Date | Subject | |
---|---|---|---|
Next Message | Teodor Sigaev | 2003-03-03 09:51:12 | Re: GIST_LEAF vs. leaf_key; gist?entryinit |
Previous Message | Teodor Sigaev | 2003-03-03 09:43:03 | Re: btree_gist, gint4_union |