From: Mark Cave-Ayland Date: Thu, 21 Aug 2008 10:56:10 +0000 (+0000) Subject: Update PostGIS SVN trunk to use the new 8.4 GiST API (where RECHECK is now specified... X-Git-Tag: 1.4.0b1~784 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5c15f5f575081e4445c837c125f4f75ff740d4dd;p=postgis 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. git-svn-id: http://svn.osgeo.org/postgis/trunk@2919 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/lwgeom/lwgeom_gist.c b/lwgeom/lwgeom_gist.c index 6879c6061..75906c122 100644 --- a/lwgeom/lwgeom_gist.c +++ b/lwgeom/lwgeom_gist.c @@ -546,6 +546,16 @@ Datum LWGEOM_gist_consistent(PG_FUNCTION_ARGS) 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 ) diff --git a/lwgeom/lwpostgis.sql.in.c b/lwgeom/lwpostgis.sql.in.c index e21c039ca..19e5e3c28 100644 --- a/lwgeom/lwpostgis.sql.in.c +++ b/lwgeom/lwpostgis.sql.in.c @@ -991,8 +991,10 @@ CREATEFUNCTION LWGEOM_gist_decompress(internal) -- 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,7 +1020,37 @@ CREATE OPERATOR CLASS gist_geometry_ops 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 -------------------------------------------