Changeset: b6ef1c3c91a8 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b6ef1c3c91a8
Modified Files:
geom/monetdb5/geom.c
Branch: sfcgal
Log Message:
Make sure you build the WKB in ST_Dwithin
diffs (40 lines):
diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -5884,7 +5884,7 @@ wkbDWithinXYZ(bit *out, wkb **geomWKB_a,
{
double distanceComputed;
str err;
- wkb **geomWKB_b = NULL;
+ wkb *geomWKB_b = NULL;
GEOSGeom geosGeometry_b;
GEOSCoordSeq seq;
@@ -5921,15 +5921,21 @@ wkbDWithinXYZ(bit *out, wkb **geomWKB_a,
if (*srid != int_nil)
GEOSSetSRID(geosGeometry_b, *srid);
-
- if (wkb_isnil(*geomWKB_a) || wkb_isnil(*geomWKB_b) || *distance ==
dbl_nil) {
- *out = bit_nil;
- return MAL_SUCCEED;
- }
- if ((err = wkbDistance(&distanceComputed, geomWKB_a, geomWKB_b)) !=
MAL_SUCCEED) {
+
+ if ((geomWKB_b = geos2wkb(geosGeometry_b)) == NULL) {
+ GEOSGeom_destroy(geosGeometry_b);
+ throw(MAL, "wkbDWithinXYZ", "geos2wkb failed");
+ }
+
+ if (wkb_isnil(*geomWKB_a) || wkb_isnil(geomWKB_b) || *distance ==
dbl_nil) {
+ GEOSGeom_destroy(geosGeometry_b);
+ throw(MAL, "wkbDWithinXYZ", "one of the arguments is NULL");
+ }
+ if ((err = wkbDistance(&distanceComputed, geomWKB_a, &geomWKB_b)) !=
MAL_SUCCEED) {
return err;
}
+ GEOSGeom_destroy(geosGeometry_b);
*out = (distanceComputed <= *distance);
return MAL_SUCCEED;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list