postgresql/doc/src/sgml/gist.sgml

110 lines
3.9 KiB
Plaintext
Raw Normal View History

<Chapter Id="gist">
1998-03-01 09:16:16 +01:00
<DocInfo>
<AuthorGroup>
<Author>
<FirstName>Gene</FirstName>
<Surname>Selkov</Surname>
</Author>
</AuthorGroup>
<Date>Transcribed 1998-02-19</Date>
</DocInfo>
<Title>GiST Indexes</Title>
1998-03-01 09:16:16 +01:00
<Para>
The information about GIST is at
<ULink url="http://GiST.CS.Berkeley.EDU:8000/gist/">http://GiST.CS.Berkeley.EDU:8000/gist/</ULink>
with more on different indexing and sorting schemes at
2001-01-24 04:40:33 +01:00
<ULink url="http://s2k-ftp.CS.Berkeley.EDU:8000/personal/jmh/">http://s2k-ftp.CS.Berkeley.EDU:8000/personal/jmh/</ULink>.
2001-01-24 04:40:33 +01:00
And there is more interesting reading at
<ULink url="http://epoch.cs.berkeley.edu:8000/">http://epoch.cs.berkeley.edu:8000/</ULink> and
<ULink url="http://www.sai.msu.su/~megera/postgres/gist/">http://www.sai.msu.su/~megera/postgres/gist/</ULink>.
</para>
1998-03-01 09:16:16 +01:00
<Para>
<Note>
<Title>Author</Title>
1998-03-01 09:16:16 +01:00
<Para>
This extraction from an email sent by
Eugene Selkov, Jr. (<email>selkovjr@mcs.anl.gov</email>)
1998-03-01 09:16:16 +01:00
contains good information
on GiST. Hopefully we will learn more in the future and update this information.
- thomas 1998-03-01
1998-03-01 09:16:16 +01:00
</Para>
</Note>
</para>
1998-03-01 09:16:16 +01:00
<Para>
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 (<FileName>src/backend/access/gist</FileName>).
</para>
1998-03-01 09:16:16 +01:00
<Para>
<ULink url="ftp://s2k-ftp.cs.berkeley.edu/pub/gist/pggist/pggist.tgz">Examples at Berkeley</ULink>
come with an overview of the methods and demonstrate spatial index
mechanisms for 2D boxes, polygons, integer intervals and text
(see also <ULink url="http://gist.cs.berkeley.edu:8000/gist/">GiST at Berkeley</ULink>).
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
<ProgramListing>
2001-10-13 01:32:34 +02:00
test=> CREATE INDEX pix ON polytmp
test-> USING GIST (p:box gist_poly_ops) WITH (ISLOSSY);
1998-03-01 09:16:16 +01:00
ERROR: cannot open pix
(PostgreSQL 6.3 Sun Feb 1 14:57:30 EST 1998)
</ProgramListing>
</para>
1998-03-01 09:16:16 +01:00
<Para>
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.
</para>
1998-03-01 09:16:16 +01:00
<Para>
A few notes on the sources:
</para>
1998-03-01 09:16:16 +01:00
<Para>
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
1998-03-01 09:16:16 +01:00
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.
</para>
1998-03-01 09:16:16 +01:00
<Para>
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).
</para>
1998-03-01 09:16:16 +01:00
<Para>
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 :)
</para>
1998-03-01 09:16:16 +01:00
<Para>
4. There is a comment in polyproc.sql:
<ProgramListing>
-- -- there's a memory leak in rtree poly_ops!!
2001-10-13 01:32:34 +02:00
-- -- CREATE INDEX pix2 ON polytmp USING RTREE (p poly_ops);
1998-03-01 09:16:16 +01:00
</ProgramListing>
Roger that!! I thought it could be related to a number of
<ProductName>PostgreSQL</ProductName> versions
1998-03-01 09:16:16 +01:00
back and tried the query. My system went nuts and I had to shoot down
the postmaster in about ten minutes.
</para>
1998-03-01 09:16:16 +01:00
<Para>
I will continue to look into GiST for a while, but I would also
appreciate
more examples of R-tree usage.
</para>
1998-03-01 09:16:16 +01:00
</Chapter>