Thread: GIST_LEAF vs. leaf_key; gist?entryinit

GIST_LEAF vs. leaf_key; gist?entryinit

From
Itai Zukerman
Date:
In the examples I've seen, in the consistent method we have:
 if (GIST_LEAF(entry)) [...]

but in compress we have:
 if (entry->leafkey) [...]

I can see what the latter's doing, but I'm not sure what GIST_LEAF
does, or why you'd want to use it.

Also, I noticed this in src/backend/access/gist:
 static void gistcentryinit(GISTSTATE *giststate, int nkey,                            GISTENTRY *e, Datum k,
                Relation r, Page pg,                            OffsetNumber o, int b, bool l, bool isNull);
 

and later (in gistPageAddItem):
gistcentryinit(giststate, 0, &tmpcentry, dentry->key, r, page,               offsetNumber, dentry->bytes, FALSE);

Isn't the call missing the "isNull" parameter?

-- 
Itai Zukerman  <http://www.math-hat.com/~zukerman/>


Re: GIST_LEAF vs. leaf_key; gist?entryinit

From
Tom Lane
Date:
Itai Zukerman <zukerman@math-hat.com> writes:
> and later (in gistPageAddItem):
>     gistcentryinit(giststate, 0, &tmpcentry, dentry->key, r, page,
>                    offsetNumber, dentry->bytes, FALSE);
> Isn't the call missing the "isNull" parameter?

I was just wondering whether GIST_PAGEADDITEM is defined or not.
Evidently not, because that code wouldn't get past gcc.

Anyone know when that #define symbol was introduced?  Has the
GIST_PAGEADDITEM code *ever* worked?
        regards, tom lane


Re: GIST_LEAF vs. leaf_key; gist?entryinit

From
Teodor Sigaev
Date:
gistPageAddItem doesn't used. Look at mail archive, it was a discussion about
keep thes or not. Shortly: gistPageAddItem suppose to recompress entry, but we 
can't
find any reason to do it.  One more - gistPageAddItem works only with
single-key indexes.

Itai Zukerman wrote:
> In the examples I've seen, in the consistent method we have:
> 
>   if (GIST_LEAF(entry)) [...]
> 
> but in compress we have:
> 
>   if (entry->leafkey) [...]
> 
> I can see what the latter's doing, but I'm not sure what GIST_LEAF
> does, or why you'd want to use it.
> 
> Also, I noticed this in src/backend/access/gist:
> 
>   static void gistcentryinit(GISTSTATE *giststate, int nkey,
>                              GISTENTRY *e, Datum k,
>                              Relation r, Page pg,
>                              OffsetNumber o, int b, bool l, bool isNull);
> 
> and later (in gistPageAddItem):
> 
>     gistcentryinit(giststate, 0, &tmpcentry, dentry->key, r, page,
>                    offsetNumber, dentry->bytes, FALSE);
> 
> Isn't the call missing the "isNull" parameter?
> 

-- 
Teodor Sigaev
teodor@stack.net