]> granicus.if.org Git - postgis/commitdiff
Don't refuse to unparse malformed geometries. Fixes #411. Didn't seem to expose the...
authorSandro Santilli <strk@keybit.net>
Mon, 8 Feb 2010 18:54:47 +0000 (18:54 +0000)
committerSandro Santilli <strk@keybit.net>
Mon, 8 Feb 2010 18:54:47 +0000 (18:54 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@5214 b70326c6-7e19-0410-871a-916f4a2858ee

postgis/lwgeom_inout.c
postgis/lwgeom_ogc.c
regress/tickets.sql
regress/tickets_expected

index 5ea0294dcff154e9ac4048be5e8f1892621779fc..38b37b29d24c030c2a82a87557ef361e74b2e1f0 100644 (file)
@@ -101,7 +101,7 @@ Datum LWGEOM_out(PG_FUNCTION_ARGS)
        int result;
 
        lwgeom = (PG_LWGEOM *)  PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
-       result = serialized_lwgeom_to_hexwkb(&lwg_unparser_result, SERIALIZED_FORM(lwgeom), PARSER_CHECK_ALL, -1);
+       result = serialized_lwgeom_to_hexwkb(&lwg_unparser_result, SERIALIZED_FORM(lwgeom), PARSER_CHECK_NONE, -1);
        if (result)
                PG_UNPARSER_ERROR(lwg_unparser_result);
 
@@ -143,7 +143,7 @@ Datum LWGEOM_asHEXEWKB(PG_FUNCTION_ARGS)
                }
        }
 
-       result = serialized_lwgeom_to_hexwkb(&lwg_unparser_result, SERIALIZED_FORM(lwgeom), PARSER_CHECK_ALL, byteorder);
+       result = serialized_lwgeom_to_hexwkb(&lwg_unparser_result, SERIALIZED_FORM(lwgeom), PARSER_CHECK_NONE, byteorder);
        if (result)
                PG_UNPARSER_ERROR(lwg_unparser_result);
 
@@ -172,7 +172,7 @@ Datum LWGEOM_to_text(PG_FUNCTION_ARGS)
        text *text_result;
 
        lwgeom = (PG_LWGEOM *)  PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
-       result = serialized_lwgeom_to_hexwkb(&lwg_unparser_result, SERIALIZED_FORM(lwgeom), PARSER_CHECK_ALL, -1);
+       result = serialized_lwgeom_to_hexwkb(&lwg_unparser_result, SERIALIZED_FORM(lwgeom), PARSER_CHECK_NONE, -1);
        if (result)
                PG_UNPARSER_ERROR(lwg_unparser_result);
 
index 6ad9c4d13ca1a24979d573cb64e4aad977150ebe..348a3016a6431eca1fa4bd94ba59088452b3faa7 100644 (file)
@@ -1121,7 +1121,7 @@ Datum LWGEOM_asText(PG_FUNCTION_ARGS)
        ogclwgeom = (PG_LWGEOM *)DatumGetPointer(DirectFunctionCall1(
                        LWGEOM_force_2d, PointerGetDatum(lwgeom)));
 
-       result =  serialized_lwgeom_to_ewkt(&lwg_unparser_result, SERIALIZED_FORM(ogclwgeom), PARSER_CHECK_ALL);
+       result =  serialized_lwgeom_to_ewkt(&lwg_unparser_result, SERIALIZED_FORM(ogclwgeom), PARSER_CHECK_NONE);
        if (result)
                PG_UNPARSER_ERROR(lwg_unparser_result);
 
index 4aed2b07e333e36fab8566b00a9128f27d32ee92..92a0a0982c3d8a791a75875f8337fc652c8bc747 100644 (file)
@@ -117,7 +117,7 @@ FROM ( VALUES
 
 
 -- #168 --
-SELECT '#168', ST_NPoints(g), ST_AsText(g)
+SELECT '#168', ST_NPoints(g), ST_AsText(g), ST_isValidReason(g)
 FROM ( VALUES
 ('01060000C00100000001030000C00100000003000000E3D9107E234F5041A3DB66BC97A30F4122ACEF440DAF9440FFFFFFFFFFFFEFFFE3D9107E234F5041A3DB66BC97A30F4122ACEF440DAF9440FFFFFFFFFFFFEFFFE3D9107E234F5041A3DB66BC97A30F4122ACEF440DAF9440FFFFFFFFFFFFEFFF'::geometry)
 ) AS v(g);
index 8d53d54bc73f522a97c10dacfde9b960349867bf..0189c34f0f40ec2d0a957894af579668e9033925 100644 (file)
@@ -31,7 +31,7 @@ ERROR:  geometry contains non-closed rings
 #157|ST_Polygon|POLYGON
 #157|ST_CurvePolygon|CURVEPOLYGON
 #157|ST_CircularString|CIRCULARSTRING
-ERROR:  geometry requires more points
+#168|3|MULTIPOLYGON(((4275341.96977851 259186.966993061,4275341.96977851 259186.966993061,4275341.96977851 259186.966993061)))|IllegalArgumentException: Invalid number of points in LinearRing found 3 - must be 0 or >= 4
 #175|SRID=26915;POINT(482020 4984378)
 #178a|0
 #178b|5