Allow single-point polygons to be converted to circles
authorBruce Momjian <[email protected]>
Mon, 24 Feb 2014 17:24:00 +0000 (12:24 -0500)
committerBruce Momjian <[email protected]>
Mon, 24 Feb 2014 17:24:00 +0000 (12:24 -0500)
This allows finding the center of a single-point polygon and converting
it to a point.

Per report from Josef Grahn

src/backend/utils/adt/geo_ops.c

index f267920649a40f1df8f85d7a227ab38d4238c773..72cb4e991fc6c3277f3b04267f6e88207927b5d4 100644 (file)
@@ -5191,7 +5191,7 @@ poly_circle(PG_FUNCTION_ARGS)
        CIRCLE     *circle;
        int                     i;
 
-       if (poly->npts < 2)
+       if (poly->npts < 1)
                ereport(ERROR,
                                (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                                 errmsg("cannot convert empty polygon to circle")));
@@ -5214,11 +5214,6 @@ poly_circle(PG_FUNCTION_ARGS)
                circle->radius += point_dt(&poly->p[i], &circle->center);
        circle->radius /= poly->npts;
 
-       if (FPzero(circle->radius))
-               ereport(ERROR,
-                               (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
-                                errmsg("cannot convert empty polygon to circle")));
-
        PG_RETURN_CIRCLE_P(circle);
 }