Changeset: d12fbc48277f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d12fbc48277f
Added Files:
geom/sql/Tests/pg_regression/Tests/empty.sql
Modified Files:
geom/sql/Tests/pg_regression/Tests/All
Branch: geo
Log Message:
pg_regress: empty
diffs (215 lines):
diff --git a/geom/sql/Tests/pg_regression/Tests/All
b/geom/sql/Tests/pg_regression/Tests/All
--- a/geom/sql/Tests/pg_regression/Tests/All
+++ b/geom/sql/Tests/pg_regression/Tests/All
@@ -3,9 +3,13 @@
#regression_load4D
#regression_drop
-#binary #Unknown Types: CIRCULARSTRING, COMPOUNDCURVE, CURVEPOLYGON,
MULTICURVE, MULTISURFACE, TRIANGLE, TIN - Unknown Functions: st_force3dz,
st_force3dm, st_force4d, st_orderingequals - It cannot handle EMPTY geometris
in COPY INTO table FROM file commands
+#binary #Unknown Types: CIRCULARSTRING, COMPOUNDCURVE, CURVEPOLYGON,
MULTICURVE, MULTISURFACE, TRIANGLE, TIN
+ #Unknown Functions: st_force3dz, st_force3dm, st_force4d,
st_orderingequals
+ #It cannot handle EMPTY geometris in COPY INTO table FROM file
commands
-#regress #Uknown Types: POINTM, CIRCULARSTRING, COMPOUNDCURVE, CURVEPOLYGON,
TRIANGLE, TIN, MULTISURFACE, MULTICURVE - Unknown Operators: <<, >> - Uknown
Functions: box3d, geometry, postgis_dropbbox, st_m, st_multi, st_force_3dm,
st_force_3dz, st_force_4d, st_force_collection, st_asbinary(geometry,char),
st_collectionextract
+#regress #Uknown Types: POINTM, CIRCULARSTRING, COMPOUNDCURVE, CURVEPOLYGON,
TRIANGLE, TIN, MULTISURFACE, MULTICURVE
+ #Unknown Operators: <<, >>
+ #Uknown Functions: box3d, geometry, postgis_dropbbox, st_m,
st_multi, st_force_3dm, st_force_3dz, st_force_4d, st_force_collection,
st_asbinary(geometry,char), st_collectionextract
#regress_index #gist index is not supported
#
@@ -27,6 +31,10 @@
#affine #Unknown Functions: ST_snapToGrid, st_scale, st_rotate, st_rotatez,
st_rotatey, st_rotatex, st_transscale, box2d
+#empty #ST_DWithin(geometry, empty, tolerance) = true BUT ST_Within(geometry,
empty) = false
+ #ST_Intersection(empty, empty) AND ST_ExteriorRing(empty) =>
TIMEOUT
+ #ST_NumGeometries(empty), ST_NRings(empty),
ST_Geometry(N(empty, 1) => PostGIS:(0,0,empty) - MonetDB(1,1,null) => Both
incosistent (no geometry but then returns and One return but then it does not
return)
+ #MBR(empty) => segmentation fault
removeTmpFiles
diff --git a/geom/sql/Tests/pg_regression/Tests/empty.sql
b/geom/sql/Tests/pg_regression/Tests/empty.sql
new file mode 100644
--- /dev/null
+++ b/geom/sql/Tests/pg_regression/Tests/empty.sql
@@ -0,0 +1,180 @@
+-- ST_SnapToGrid
+SELECT 'T1.1', ST_AsEWKT(ST_SnapToGrid('POINT EMPTY', 1));
+SELECT 'T1.2', ST_AsEWKT(ST_SnapToGrid('LINESTRING EMPTY', 1));
+SELECT 'T1.3', ST_AsEWKT(ST_SnapToGrid(ST_GeomFromText('POLYGON EMPTY', 4326),
1));
+
+-- ST_Buffer
+SELECT 'T2.1', ST_AsEWKT(ST_Buffer(ST_GeomFromText('POINT EMPTY', 4326), 0));
+SELECT 'T2.2', ST_AsEWKT(ST_Buffer(ST_GeomFromText('LINESTRING EMPTY', 4326),
0));
+SELECT 'T2.3', ST_AsEWKT(ST_Buffer(ST_GeomFromText('MULTIPOLYGON EMPTY',
4326), 0));
+WITH b as ( SELECT ST_Buffer(ST_GeomFromText('MULTIPOINT EMPTY', 4326), 1) as
g )
+SELECT 'T2.4', ST_Srid(g), GeometryType(g) from b;
+
+-- ST_AsGML (output may need some tweaking)
+SELECT 'T3.1', ST_AsGML('POINT EMPTY');
+SELECT 'T3.2', ST_AsGML('LINESTRING EMPTY');
+SELECT 'T3.3', ST_AsGML('POLYGON EMPTY');
+SELECT 'T3.4', ST_AsGML('MULTIPOLYGON EMPTY');
+SELECT 'T3.5', ST_AsGML('MULTILINESTRING EMPTY');
+SELECT 'T3.6', ST_AsGML('GEOMETRYCOLLECTION EMPTY');
+SELECT 'T3.7', ST_AsGML(3,'POINT EMPTY');
+SELECT 'T3.8', ST_AsGML(3,'LINESTRING EMPTY');
+SELECT 'T3.9', ST_AsGML(3,'POLYGON EMPTY');
+SELECT 'T3.10', ST_AsGML(3,'MULTIPOLYGON EMPTY');
+SELECT 'T3.11', ST_AsGML(3,'MULTILINESTRING EMPTY');
+SELECT 'T3.12', ST_AsGML(3,'GEOMETRYCOLLECTION EMPTY');
+SELECT 'T3.13', ST_AsGML(3,'POINT EMPTY');
+SELECT 'T3.14', ST_AsGML(3,'LINESTRING EMPTY');
+SELECT 'T3.15', ST_AsGML(3,'POLYGON EMPTY');
+SELECT 'T3.16', ST_AsGML(3,'MULTIPOLYGON EMPTY');
+SELECT 'T3.17', ST_AsGML(3,'MULTILINESTRING EMPTY');
+SELECT 'T3.18', ST_AsGML(3,'GEOMETRYCOLLECTION EMPTY');
+
+
+--The asBinary returns always Hex representation and does not have an option
to represent in ndr (little endian) or xdr (big endian)
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty,
+ 'POLYGON((0 0, 10 0, 5 5, 0 0))' as geometry,
+ 120 as tolerance
+ ) SELECT 'ST_Buffer(empty, tolerance) == empty', ST_AsBinary(ST_Buffer(empty,
tolerance)) FROM inp;
+--PostGIS ) SELECT 'ST_Buffer(empty, tolerance) == empty',
encode(ST_AsBinary(ST_Buffer(empty, tolerance),'ndr'),'hex') FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty,
+ 'POLYGON((0 0, 10 0, 5 5, 0 0))' as geometry
+ ) SELECT 'ST_Union(geometry, empty) == geometry',
ST_AsBinary(ST_Union(geometry, empty)) FROM inp;
+--PostGIS ) SELECT 'ST_Union(geometry, empty) == geometry',
encode(ST_AsBinary(ST_Union(geometry, empty),'ndr'),'hex') FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty
+ ) SELECT 'ST_Union(empty, empty) == empty', ST_AsBinary(ST_Union(empty,
empty)) FROM inp;
+--PostGIS ) SELECT 'ST_Union(empty, empty) == empty',
encode(ST_AsBinary(ST_Union(empty, empty),'ndr'),'hex') FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty,
+ 'POLYGON((0 0, 10 0, 5 5, 0 0))' as geometry
+ ) SELECT 'ST_Intersection(geometry, empty) == empty',
ST_AsBinary(ST_Intersection(geometry, empty)) FROM inp;
+--PostGIS ) SELECT 'ST_Intersection(geometry, empty) == geometry',
encode(ST_AsBinary(ST_Intersection(geometry, empty),'ndr'),'hex') FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty
+ ) SELECT 'ST_Intersection(empty, empty) == empty',
ST_AsBinary(ST_Intersection(empty, empty)) FROM inp;
+--PostGIS ) SELECT 'ST_Intersection(empty, empty) == empty',
encode(ST_AsBinary(ST_Intersection(empty, empty),'ndr'),'hex') FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty,
+ 'POLYGON((0 0, 10 0, 5 5, 0 0))' as geometry
+ ) SELECT 'ST_Difference(geometry, empty) == geometry',
ST_AsBinary(ST_Difference(geometry, empty)) FROM inp;
+--PostGIS ) SELECT 'ST_Difference(geometry, empty) == geometry',
encode(ST_AsBinary(ST_Difference(geometry, empty),'ndr'),'hex') FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty,
+ 'POLYGON((0 0, 10 0, 5 5, 0 0))' as geometry
+ ) SELECT 'ST_Difference(empty, geometry) == empty',
ST_AsBinary(ST_Difference(empty, geometry)) FROM inp;
+--PostGIS ) SELECT 'ST_Difference(empty, geometry) == empty',
encode(ST_AsBinary(ST_Difference(empty, geometry),'ndr'),'hex') FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty,
+ 'POLYGON((0 0, 10 0, 5 5, 0 0))' as geometry
+ ) SELECT 'ST_Distance(geometry, empty) == NULL', ST_Distance(geometry, empty)
FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty,
+ 'POLYGON((0 0, 10 0, 5 5, 0 0))' as geometry,
+ 120 as tolerance
+ ) SELECT 'ST_DWithin(geometry, empty, tolerance) == FALSE',
ST_DWithin(geometry, empty, tolerance) FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty,
+ 'POLYGON((0 0, 10 0, 5 5, 0 0))' as geometry
+ ) SELECT 'ST_Within(geometry, empty) == FALSE', ST_Within(geometry, empty)
FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty,
+ 'POLYGON((0 0, 10 0, 5 5, 0 0))' as geometry
+ ) SELECT 'ST_Contains(empty, geometry) == FALSE', ST_Contains(empty,
geometry) FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty,
+ 'POLYGON((0 0, 10 0, 5 5, 0 0))' as geometry
+ ) SELECT 'ST_Within(empty, geometry) == FALSE', ST_Within(empty, geometry)
FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty
+ ) SELECT 'ST_Contains(empty, empty) == FALSE', ST_Contains(empty, empty) FROM
inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty,
+ 'POLYGON((0 0, 10 0, 5 5, 0 0))' as geometry
+ ) SELECT 'ST_Intersects(geometry, empty) == FALSE', ST_Intersects(geometry,
empty) FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty
+ ) SELECT 'ST_Intersects(empty, empty) == FALSE', ST_Intersects(empty, empty)
FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty,
+ 'POLYGON((0 0, 10 0, 5 5, 0 0))' as geometry
+ ) SELECT 'ST_Disjoint(empty, empty) == TRUE', ST_Disjoint(empty, empty) FROM
inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty,
+ 'POLYGON((0 0, 10 0, 5 5, 0 0))' as geometry
+ ) SELECT 'ST_Disjoint(geometry, empty) == TRUE', ST_Disjoint(geometry, empty)
FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty1,
+ 'POINT Z EMPTY' as empty2
+ ) SELECT 'ST_Equals(empty1, empty2) == TRUE', ST_Equals(empty1, empty2) FROM
inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty
+ ) SELECT 'ST_IsSimple(empty) == TRUE', ST_IsSimple(empty) FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty
+ ) SELECT 'ST_IsValid(empty) == TRUE', ST_IsValid(empty) FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty
+ ) SELECT 'ST_NumGeometries(empty) == 0', ST_NumGeometries(empty) FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty
+ ) SELECT 'ST_NRings(empty) == 0', ST_NRings(empty) FROM inp;
+
+WITH inp AS (SELECT
+ 'LINESTRING EMPTY' as empty
+ ) SELECT 'ST_NumPoints(empty) == 0', ST_NumPoints(empty) FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty
+ ) SELECT 'ST_NPoints(empty) == 0', ST_NPoints(empty) FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty,
+ 1 as n
+ ) SELECT 'ST_GeometryN(empty, n) == empty', ST_GeometryN(empty, n) FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty
+ ) SELECT 'ST_ExteriorRing(empty) == empty', ST_ExteriorRing(empty) FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty,
+ 1 as n
+ ) SELECT 'ST_InteriorRingN(empty, n) == NULL', ST_InteriorRingN(empty, n)
FROM inp;
+
+WITH inp AS (SELECT
+ 'POLYGON EMPTY' as empty
+ ) SELECT 'ST_Area(empty) == 0', ST_Area(empty) FROM inp;
+
+WITH inp AS (SELECT
+ 'LINESTRING EMPTY' as empty
+ ) SELECT 'ST_Length(empty) == 0', ST_Length(empty) FROM inp;
+
+
+-- Operators
+--We do not represent Empty Points (geos cannot represent them)
+SELECT '~=', MBR('LINESTRING EMPTY') ~= MBR('LINESTRING EMPTY');
+--PostGIS: SELECT '~=', MBR('POINT EMPTY') ~= MBR('POINT EMPTY');
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list