[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