Good news:

   I think we've got GiST working (somewhat anyways), as we found
0, datum, currdatum) in gistutil.c does the trick of comparing two datums.
I swear most of our trouble is just finding our way around the postgres
codebase, but we're getting there little by little.  We've gone back to
revisit hash to see if we can figure it out now that we understand a little
bit about GiST, but we can't find an equivelent function in hash for the
   So two questions really.  The first is if such a function exists for
hash.  The second is that nbtree and Neil Conways work a few years ago ( use the
scan and scankey stuff, but we're having trouble understanding how these
work.  Is there some documentation on using these correctly (outside of just
looking at nbtree code)?  Thanks so much for the help folks!


On 2/13/07, Teodor Sigaev <[EMAIL PROTECTED]> wrote:

> indexes, then it must use operator number so-and-so for equality.  But
> there are lots of GiST opclasses that don't include equality at all; we
> can't break that case.

There is a GiST support function for equality of keys, in btree_gist it's
as gbt_*_same. Equality function has support number 7 and is used for
stored keys.

But the real issue in unique GiST index is unique :). First, the algorithm
insertion doesn't compare indexed keys on leaf page at all. Values on the
page are compared only when page is splitting (picksplit support method).
Second, GiST implementation supports only unordered trees (btree_gist is a
kind of emulation) and it cannot guarantee that equal keys will be close
index. That's related to picksplit and gistpenalty method
and data set.

Teodor Sigaev                                   E-mail: [EMAIL PROTECTED]

Reply via email to