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

postgis-commits at postgis.refractions.net postgis-commits at postgis.refractions.net
Thu Dec 11 09:18:20 PST 2008


Author: kneufeld
Date: 2008-12-11 09:18:19 -0800 (Thu, 11 Dec 2008)
New Revision: 3379

Modified:
   trunk/lwgeom/lwgeom_geos.c
Log:
added a HINT to the ERROR message in errorIfGeometryCollection indicating the geometry that is in error.

Modified: trunk/lwgeom/lwgeom_geos.c
===================================================================
--- trunk/lwgeom/lwgeom_geos.c	2008-12-11 16:56:53 UTC (rev 3378)
+++ trunk/lwgeom/lwgeom_geos.c	2008-12-11 17:18:19 UTC (rev 3379)
@@ -1020,14 +1020,39 @@
 /*---------------------------------------------*/
 
 
-
+/* 
+ * Throws an ereport ERROR if either geometry is a COLLECTIONTYPE.  Additionally
+ * displays a HINT of the first 80 characters of the WKT representation of the
+ * problematic geometry so a user knows which parameter and which geometry
+ * is causing the problem.
+ */
 void errorIfGeometryCollection(PG_LWGEOM *g1, PG_LWGEOM *g2)
 {
 	int t1 = lwgeom_getType(g1->type);
 	int t2 = lwgeom_getType(g2->type);
+	
+	LWGEOM_UNPARSER_RESULT lwg_unparser_result;
+	int result;
+	char* hintmsg;
 
-	if (  (t1 == COLLECTIONTYPE) || (t2 == COLLECTIONTYPE) )
-		elog(ERROR,"Relate Operation called with a LWGEOMCOLLECTION type.  This is unsupported");
+	if ( t1 == COLLECTIONTYPE) {
+		result = serialized_lwgeom_to_ewkt(&lwg_unparser_result, SERIALIZED_FORM(g1), PARSER_CHECK_NONE);
+		hintmsg = lwmessage_truncate(lwg_unparser_result.wkoutput, 0, strlen(lwg_unparser_result.wkoutput), 80, 1);
+		ereport(ERROR,
+			(errmsg("Relate Operation called with a LWGEOMCOLLECTION type.  This is unsupported."),
+			 errhint("Change argument 1: '%s'", hintmsg))
+		);	
+		pfree(hintmsg);
+	}
+	else if (t2 == COLLECTIONTYPE) {
+		result = serialized_lwgeom_to_ewkt(&lwg_unparser_result, SERIALIZED_FORM(g2), PARSER_CHECK_NONE);
+		hintmsg = lwmessage_truncate(lwg_unparser_result.wkoutput, 0, strlen(lwg_unparser_result.wkoutput), 80, 1);
+		ereport(ERROR,
+			(errmsg("Relate Operation called with a LWGEOMCOLLECTION type.  This is unsupported."),
+			 errhint("Change argument 2: '%s'", hintmsg))
+		);	
+		pfree(hintmsg);
+	}
 }
 
 PG_FUNCTION_INFO_V1(isvalid);



More information about the postgis-commits mailing list