PG_FREE_IF_COPY(geom1, 0);
PG_FREE_IF_COPY(geom2, 1);
- if ( empty1 != empty2 )
+ if ( empty1 || empty2 )
{
- PG_RETURN_BOOL(FALSE);
+ if ( empty1 && empty2 )
+ {
+ PG_RETURN_INT32(1);
+ }
+ else if ( empty1 )
+ {
+ PG_RETURN_INT32(-1);
+ }
+ else
+ {
+ PG_RETURN_INT32(1);
+ }
}
if ( ! FPeq(box1.xmin , box2.xmin) )
SELECT 'POINT EMPTY'::geometry
) foo
GROUP BY geom ORDER BY 2;
-
+SELECT '#3777.1', ST_AsText(geom), count(*) FROM (
+SELECT 'POINT(0 0)'::geometry geom UNION ALL
+SELECT 'POINT(0 0)'::geometry UNION ALL
+SELECT 'POINT EMPTY'::geometry UNION ALL
+SELECT 'POINT(0 0)'::geometry UNION ALL
+SELECT 'POINT(0 1)'::geometry UNION ALL
+SELECT 'LINESTRING(0 0,0 1)'::geometry UNION ALL
+SELECT 'GEOMETRYCOLLECTION EMPTY'::geometry geom
+) foo
+GROUP BY geom ORDER BY 2;
#3777|LINESTRING(0 0,0 1)|1
#3777|POINT(0 0)|3
#3777|POINT(0 1)|1
+#3777.1|GEOMETRYCOLLECTION EMPTY|2
+#3777.1|LINESTRING(0 0,0 1)|1
+#3777.1|POINT(0 0)|3
+#3777.1|POINT(0 1)|1