Index: lwgeom_geos.c
===================================================================
--- lwgeom_geos.c	(revision 3371)
+++ lwgeom_geos.c	(working copy)
@@ -1020,14 +1020,55 @@
 /*---------------------------------------------*/
 
 
-
+/* 
+ * 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);
+	
+	// Define the hint string include the first 80 characters of the problematic geometry.
+	char hintbuffer[80];
+	
+	LWGEOM_UNPARSER_RESULT lwg_unparser_result;
+	int result;
+	
+	hintbuffer[0] = '\0';
 
-	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);
+		if (strlen(lwg_unparser_result.wkoutput) < 80) {
+			strcpy(hintbuffer, lwg_unparser_result.wkoutput);
+		}
+		else {
+			strncat(hintbuffer, lwg_unparser_result.wkoutput, 76);
+			strcat(hintbuffer, "...");
+		}
+			
+		ereport(ERROR,
+			(errmsg("Relate Operation called with a LWGEOMCOLLECTION type.  This is unsupported."),
+			 errhint("Change argument 1: '%s'", hintbuffer))
+		);	
+	}
+	else if (t2 == COLLECTIONTYPE) {
+		result = serialized_lwgeom_to_ewkt(&lwg_unparser_result, SERIALIZED_FORM(g2), PARSER_CHECK_NONE);
+		if (strlen(lwg_unparser_result.wkoutput) < 80) {
+			strcpy(hintbuffer, lwg_unparser_result.wkoutput);
+		}
+		else {
+			strncat(hintbuffer, lwg_unparser_result.wkoutput, 76);
+			strcat(hintbuffer, "...");
+		}
+		
+		ereport(ERROR,
+			(errmsg("Relate Operation called with a LWGEOMCOLLECTION type.  This is unsupported."),
+			 errhint("Change argument 2: '%s'", hintbuffer))
+		);	
+	}
 }
 
 PG_FUNCTION_INFO_V1(isvalid);
