[postgis-commits] svn - r2919 - trunk/lwgeom

postgis-commits at postgis.refractions.net postgis-commits at postgis.refractions.net
Thu Aug 21 03:56:11 PDT 2008


Author: mcayland
Date: 2008-08-21 03:56:10 -0700 (Thu, 21 Aug 2008)
New Revision: 2919

Modified:
   trunk/lwgeom/lwgeom_gist.c
   trunk/lwgeom/lwpostgis.sql.in.c
Log:
Update PostGIS SVN trunk to use the new 8.4 GiST API (where RECHECK is now specified within the consistent function, rather than being supplied as part of the operator class definition). This allows PostGIS to compile and pass regression tests on the latest PostgreSQL 8.4 CVS HEAD.



Modified: trunk/lwgeom/lwgeom_gist.c
===================================================================
--- trunk/lwgeom/lwgeom_gist.c	2008-08-21 08:45:07 UTC (rev 2918)
+++ trunk/lwgeom/lwgeom_gist.c	2008-08-21 10:56:10 UTC (rev 2919)
@@ -546,6 +546,16 @@
 	bool result;
 	BOX2DFLOAT4  box;
 
+#if POSTGIS_PGSQL_VERSION >= 84
+	/* PostgreSQL 8.4 and later require the RECHECK flag to be set here,
+	   rather than being supplied as part of the operator class definition */
+	bool *recheck = (bool *) PG_GETARG_POINTER(4);
+
+	/* Since the index is lossy from conversion from float8 to float4, we must
+	   recheck */
+	*recheck = true;
+#endif
+
 	POSTGIS_DEBUG(2, "GIST: LWGEOM_gist_consistent called");
 
 	if ( ((Pointer *) PG_GETARG_DATUM(1)) == NULL )

Modified: trunk/lwgeom/lwpostgis.sql.in.c
===================================================================
--- trunk/lwgeom/lwpostgis.sql.in.c	2008-08-21 08:45:07 UTC (rev 2918)
+++ trunk/lwgeom/lwpostgis.sql.in.c	2008-08-21 10:56:10 UTC (rev 2919)
@@ -991,8 +991,10 @@
 -- GIST opclass index binding entries.
 -------------------------------------------
 
+#if POSTGIS_PGSQL_VERSION < 84
+
 --
--- Create opclass index bindings for PG>=73
+-- Create opclass index bindings for PG>=73 and PG<=83
 --
 
 CREATE OPERATOR CLASS gist_geometry_ops
@@ -1018,8 +1020,38 @@
         FUNCTION        6        LWGEOM_gist_picksplit (internal, internal),
         FUNCTION        7        LWGEOM_gist_same (box2d, box2d, internal);
 
--- TODO: add btree binding...
+#else
 
+--
+-- Create opclass index bindings for PG>83 
+-- (No RECHECK since this is now handled as part of the GiST Access methods)
+--
+
+CREATE OPERATOR CLASS gist_geometry_ops
+        DEFAULT FOR TYPE geometry USING gist AS
+	STORAGE 	box2d,
+        OPERATOR        1        <<,
+        OPERATOR        2        &<,
+        OPERATOR        3        &&,
+        OPERATOR        4        &>,
+        OPERATOR        5        >>,
+        OPERATOR        6        ~=,
+        OPERATOR        7        ~,
+        OPERATOR        8        @,
+	OPERATOR	9	 &<|,
+	OPERATOR	10	 <<|,
+	OPERATOR	11	 |>>,
+	OPERATOR	12	 |&>,
+	FUNCTION        1        LWGEOM_gist_consistent (internal, geometry, int4),
+        FUNCTION        2        LWGEOM_gist_union (bytea, internal),
+        FUNCTION        3        LWGEOM_gist_compress (internal),
+        FUNCTION        4        LWGEOM_gist_decompress (internal),
+        FUNCTION        5        LWGEOM_gist_penalty (internal, internal, internal),
+        FUNCTION        6        LWGEOM_gist_picksplit (internal, internal),
+        FUNCTION        7        LWGEOM_gist_same (box2d, box2d, internal);
+
+#endif
+
 	
 -------------------------------------------
 -- other lwgeom functions



More information about the postgis-commits mailing list