[postgis-commits] svn - r3107 - trunk/lwgeom
postgis-commits at postgis.refractions.net
postgis-commits at postgis.refractions.net
Tue Oct 14 13:11:07 PDT 2008
Author: pramsey
Date: 2008-10-14 13:11:07 -0700 (Tue, 14 Oct 2008)
New Revision: 3107
Modified:
trunk/lwgeom/lwgeom_gist.c
Log:
Remove sliced test code and return to original state.
Modified: trunk/lwgeom/lwgeom_gist.c
===================================================================
--- trunk/lwgeom/lwgeom_gist.c 2008-10-14 19:51:24 UTC (rev 3106)
+++ trunk/lwgeom/lwgeom_gist.c 2008-10-14 20:11:07 UTC (rev 3107)
@@ -88,68 +88,28 @@
PG_FUNCTION_INFO_V1(LWGEOM_overlap);
Datum LWGEOM_overlap(PG_FUNCTION_ARGS)
{
- /*
PG_LWGEOM *lwgeom1 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
PG_LWGEOM *lwgeom2 = (PG_LWGEOM *)PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
- */
-
- PG_LWGEOM *lwgeom1 = (PG_LWGEOM*)PG_DETOAST_DATUM_SLICE(PG_GETARG_DATUM(0), 0, VARHDRSZ + 1 + sizeof(BOX2DFLOAT4) );
- PG_LWGEOM *lwgeom2 = (PG_LWGEOM*)PG_DETOAST_DATUM_SLICE(PG_GETARG_DATUM(1), 0, VARHDRSZ + 1 + sizeof(BOX2DFLOAT4) );
bool result;
BOX2DFLOAT4 box1;
BOX2DFLOAT4 box2;
- uchar *ser1;
- uchar *ser2;
- ser1 = SERIALIZED_FORM(lwgeom1);
- ser2 = SERIALIZED_FORM(lwgeom2);
- if ( lwgeom_hasBBOX(ser1[0]) )
+ if ( pglwgeom_getSRID(lwgeom1) != pglwgeom_getSRID(lwgeom2) )
{
- memcpy(&box1, ser1 + 1, sizeof(BOX2DFLOAT4));
+ PG_FREE_IF_COPY(lwgeom1, 0);
+ PG_FREE_IF_COPY(lwgeom2, 1);
+ elog(ERROR, "Operation on two geometries with different SRIDs");
+ PG_RETURN_NULL();
}
- else
+
+ if ( ! (getbox2d_p(SERIALIZED_FORM(lwgeom1), &box1) && getbox2d_p(SERIALIZED_FORM(lwgeom2), &box2)) )
{
- lwgeom1 = (PG_LWGEOM*)PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
- if ( ! getbox2d_p(SERIALIZED_FORM(lwgeom1), &box1) )
- {
- PG_FREE_IF_COPY(lwgeom1, 0);
- PG_RETURN_BOOL(FALSE);
- }
+ PG_FREE_IF_COPY(lwgeom1, 0);
+ PG_FREE_IF_COPY(lwgeom2, 1);
+ /* One or both are empty geoms */
+ PG_RETURN_BOOL(FALSE);
}
- if ( lwgeom_hasBBOX(ser2[0]) )
- {
- memcpy(&box2, ser2 + 1, sizeof(BOX2DFLOAT4));
- }
- else
- {
- lwgeom2 = (PG_LWGEOM*)PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
- if ( ! getbox2d_p(SERIALIZED_FORM(lwgeom2), &box2) )
- {
- PG_FREE_IF_COPY(lwgeom2, 0);
- PG_RETURN_BOOL(FALSE);
- }
- }
- POSTGIS_DEBUG(2, "GIST: LWGEOM_overlap --entry");
- /*
- if ( pglwgeom_getSRID(lwgeom1) != pglwgeom_getSRID(lwgeom2) )
- {
- PG_FREE_IF_COPY(lwgeom1, 0);
- PG_FREE_IF_COPY(lwgeom2, 1);
- elog(ERROR, "Operation on two geometries with different SRIDs");
- PG_RETURN_NULL();
- }
-
-
- if ( ! (getbox2d_p(SERIALIZED_FORM(lwgeom1), &box1) && getbox2d_p(SERIALIZED_FORM(lwgeom2), &box2)) )
- {
- PG_FREE_IF_COPY(lwgeom1, 0);
- PG_FREE_IF_COPY(lwgeom2, 1);
- /* One or both are empty geoms */
- /* PG_RETURN_BOOL(FALSE);
- }
- */
-
result = DatumGetBool(DirectFunctionCall2(BOX2D_overlap,
PointerGetDatum(&box1), PointerGetDatum(&box2)));
More information about the postgis-commits
mailing list