Author: This extraction from an email sent by
Eugene Selkov, Jr. (<selkovjr@mcs.anl.gov>)
contains good information on GiST. Hopefully we will learn
more in the future and update this information. - thomas
1998-03-01

Well, I can't say I quite understand what's going on, but at
least I (almost) succeeded in porting GiST examples to linux. The
GiST access method is already in the postgres tree (src/backend/access/gist).

Examples at Berkeley come with an overview of
the methods and demonstrate spatial index mechanisms for 2D
boxes, polygons, integer intervals and text (see also GiST at
Berkeley). In the box example, we are supposed to see a
performance gain when using the GiST index; it did work for me
but I do not have a reasonably large collection of boxes to check
that. Other examples also worked, except polygons: I got an error
doing

I could not get sense of this error message; it appears to be
something we'd rather ask the developers about (see also Note 4
below). What I would suggest here is that someone of you linux
guys (linux==gcc?) fetch the original sources quoted above and
apply my patch (see attachment) and tell us what you feel about
it. Looks cool to me, but I would not like to hold it up while
there are so many competent people around.

A few notes on the sources:

1. I failed to make use of the original (HP-UX) Makefile and
rearranged the Makefile from the ancient postgres95 tutorial to
do the job. I tried to keep it generic, but I am a very poor
makefile writer -- just did some monkey work. Sorry about that,
but I guess it is now a little more portable that the original
makefile.

2. I built the example sources right under pgsql/src (just
extracted the tar file there). The aforementioned Makefile
assumes it is one level below pgsql/src (in our case, in
pgsql/src/pggist).

3. The changes I made to the *.c files were all about
#include's, function prototypes and typecasting. Other than that,
I just threw away a bunch of unused vars and added a couple
parentheses to please gcc. I hope I did not screw up too much
:)