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
This commit is contained in:
Mark Cave-Ayland 2008-08-21 10:56:10 +00:00
parent 244c935729
commit 5c15f5f575
2 changed files with 44 additions and 2 deletions

View file

@ -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 )

View file

@ -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
-------------------------------------------