GiST Indices

La informaci�n sobre GIST est� en http://GiST.CS.Berkeley.EDU:8000/gist/ con m�s sobre diferentes esquemas de ordenaci�n e indexado en http://s2k-ftp.CS.Berkeley.EDU:8000/personal/jmh/ Tambi�n existe m�s lectura interesante en el sitio de la base de datos de Berkely en http://epoch.cs.berkeley.edu:8000/.

NotaAutor
 

Esta extracci�n de un e-mail enviado por Eugene Selkov Jr. contiene buena informaci�n sobre GiST. Seguramente aprenderemos m�s en el futuro y actualizaremos esta informaci�n. - thomas 1998-03-01

Bueno, no puedo decir que entienda lo que est� pasando, pero por lo menos (casi) he logrado portar los ejemplos GiST a linux. El m�todo de acceso GiST ya est� en el �rbol de postfres (src/backend/access/gist).

Examples at Berkeley vienen con una introducci�n de los m�todos y demuestran mecanismos de �ndices espaciales para cajas 2D, pol�gonos, intervalos enteros y testo come with an overview of the methods and demonstrate spatial index mechanisms for 2D boxes, polygons, integer intervals and text (v�ase tambi�n GiST at Berkeley). En el ejemplo de la caja, se supone que veremos un aumento en el rendimiento al utilizar el �ndice GiST; a m� me funcion�, pero yo no tengo una colecci�n razonablemente grande de cajas para comprobar. Otros ejemplos tambi�n funcionaron, excepto pol�gonos: obtuve un error al hacer

test=> create index pix on polytmp
test-> using gist (p:box gist_poly_ops) with (islossy);
ERROR:  cannot open pix

(PostgreSQL 6.3               Sun Feb  1 14:57:30 EST 1998)

No entiendo el sentido de este mensage de error; parece ser algo que deber�amos preguntar a los desarrolladores (mira tambi�n la Nota 4 m�s abajo). Lo que sugerir�a aqu� es que alguien de vosotros, gur�s de Linux (linux==gcc?), tomeis las fuentes originales citadas arriba y apliqueis mi parche (v�ase el adjunto) y nos dijeseis que pensais sobre esto. Me parece muy bien a mi, pero no me gustar�a mantenerlo mientras que hay tanta gente competente disponible.

Unas pocas notas en los fuentes:

1. No fui capaz de utilizar el Makefile original (HPUX) y reordenarlo con el viejo tutorial de postgres95 para hacerlo funcionar. Intent� mantenerlo gen�rico, pero no soy un escritor de makefiles muy pobre --simplemente lo hizo funcionar alg�n mono. Lo siento, pero creo que ahora es un poco m�s portable que el makefile original.

2. Compil� las fuentes de ejemplo inmediatamente debajo de pgsql/src (simplemente extraje el archivo tar all�). El Makefile previamente mencionado supone que est� un nivel por debajo de pgsql/src (en nuestro caso, en pgsql/src/pggist).

3. Los cambios que hice a los ficheros *.c fueron todos sobre #includes's, prototipos de funciones y typecasting. Fuera de eso, solamente desech� una ristra de variables no utilizadas y a�ad� un par de parentesis para contentar a gcc. Espero que esto no haya enredado las cosas mucho :)

4. Hay un commentario en polyproc.sql:

-- -- there's a memory leak in rtree poly_ops!!
-- -- create index pix2 on polytmp using rtree (p poly_ops);
(-- -- existe una fuga de memoria en el rtree poly_ops!!)
(-- -- crea un �ndice pix2 en polytmp utilizando rtree (p poly_ops)
Pens� que podr�a estar relacionado con un n�mero de versi�n de Postgres anterior e intent� la consulta. Mi sistema se volvi� loco y tuve que tirar el postmaster en unos diez minutos.

Voy a contunuar mirando dentro de GiST un rato, pero tambi�n agradecer�a m�s ejemplos en la utilizaci�n de los R-tree.