Changeset: 40197cae30c1 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=40197cae30c1
Modified Files:
        geom/sql/Tests/All
        geom/sql/Tests/geom-null-tests.sql
        geom/sql/Tests/geom-null-tests.stable.err
        geom/sql/Tests/geom-null-tests.stable.out
Branch: Apr2011
Log Message:

Added test from the attachment to bug 2814.


diffs (truncated from 438 to 300 lines):

diff --git a/geom/sql/Tests/All b/geom/sql/Tests/All
--- a/geom/sql/Tests/All
+++ b/geom/sql/Tests/All
@@ -12,3 +12,4 @@
 example
 
 null-mbr.Bug-2814
+geom-null-tests
diff --git a/geom/sql/Tests/geom-null-tests.sql 
b/geom/sql/Tests/geom-null-tests.sql
new file mode 100644
--- /dev/null
+++ b/geom/sql/Tests/geom-null-tests.sql
@@ -0,0 +1,88 @@
+-- CREATE SCHEMA
+CREATE TABLE geom(id integer, g geometry);
+INSERT INTO geom VALUES(1, point(1,1));
+INSERT INTO geom VALUES(2, point(2,2));
+INSERT INTO geom VALUES(3, NULL);
+
+-- CHECK FUNCTIONS (Each functions is used twice with normal arguments and 
with null arguments)
+SELECT id, Area(g) FROM geom WHERE id < 3; 
+SELECT id, Area(g) FROM geom WHERE id = 3; -- null argument, throws exception
+
+SELECT id, Length(g) FROM geom WHERE id < 3;
+SELECT id, Length(g) FROM geom WHERE id = 3; -- null argument, throws exception
+
+SELECT Distance(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 1 AND g2.id = 
2;
+SELECT Distance(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND g2.id = 
3; -- null argument, throws exception
+
+SELECT id, Buffer(g, 10) FROM geom WHERE id < 3;
+SELECT id, Buffer(g, 10) FROM geom WHERE id = 3; -- null argument, throws 
exception
+
+SELECT id, ConvexHull(g) FROM geom WHERE id < 3;
+SELECT id, ConvexHull(g) FROM geom WHERE id = 3; -- null argument, throws 
exception
+
+SELECT Intersection(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 1 AND 
g2.id = 2;
+SELECT Intersection(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND 
g2.id = 3; -- null argument, throws exception
+
+SELECT "Union"(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 1 AND g2.id = 2;
+SELECT "Union"(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND g2.id = 
3; -- null argument, throws exception
+
+SELECT Difference(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 1 AND g2.id 
= 2;
+SELECT Difference(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND g2.id 
= 3; -- null argument, throws exception
+
+SELECT SymDifference(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 1 AND 
g2.id = 2;
+SELECT SymDifference(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND 
g2.id = 3; -- null argument, throws exception
+
+SELECT id, Dimension(g) FROM geom WHERE id < 3;
+SELECT id, Dimension(g) FROM geom WHERE id = 3; -- null argument, throws 
exception
+
+SELECT id, GeometryTypeId(g) FROM geom WHERE id < 3;
+SELECT id, GeometryTypeId(g) FROM geom WHERE id = 3; -- null argument, throws 
exception
+
+SELECT id, SRID(g) FROM geom WHERE id < 3;
+SELECT id, SRID(g) FROM geom WHERE id = 3; -- null argument, throws exception
+
+SELECT id, Envelope(g) FROM geom WHERE id < 3;
+SELECT id, Envelope(g) FROM geom WHERE id = 3; -- null argument, throws 
exception
+
+SELECT id, IsEmpty(g) FROM geom WHERE id < 3;
+SELECT id, IsEmpty(g) FROM geom WHERE id = 3; -- null argument, throws 
exception
+
+SELECT id, IsSimple(g) FROM geom WHERE id < 3;
+SELECT id, IsSimple(g) FROM geom WHERE id = 3; -- null argument, throws 
exception
+
+SELECT id, Boundary(g) FROM geom WHERE id < 3;
+SELECT id, Boundary(g) FROM geom WHERE id = 3; -- null argument, throws 
exception
+
+SELECT Equals(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 1 AND g2.id = 2;
+SELECT Equals(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND g2.id = 3; 
-- null argument, throws exception
+
+SELECT Disjoint(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 1 AND g2.id = 
2;
+SELECT Disjoint(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND g2.id = 
3; -- null argument, throws exception
+
+SELECT "Intersect"(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 1 AND g2.id 
= 2;
+SELECT "Intersect"(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND g2.id 
= 3; -- null argument, throws exception
+
+SELECT Touches(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 1 AND g2.id = 2;
+SELECT Touches(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND g2.id = 
3; -- null argument, throws exception
+
+SELECT Crosses(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 1 AND g2.id = 2;
+SELECT Crosses(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND g2.id = 
3; -- null argument, throws exception
+
+SELECT Within(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 1 AND g2.id = 2;
+SELECT Within(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND g2.id = 3; 
-- null argument, throws exception
+
+SELECT Contains(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 1 AND g2.id = 
2;
+SELECT Contains(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND g2.id = 
3; -- null argument, throws exception
+
+SELECT Overlaps(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 1 AND g2.id = 
2;
+SELECT Overlaps(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND g2.id = 
3; -- null argument, throws exception
+
+SELECT id, X(g) FROM geom WHERE id < 3;
+SELECT id, X(g) FROM geom WHERE id = 3; -- null argument, throws exception
+
+SELECT id, Y(g) FROM geom WHERE id < 3;
+SELECT id, Y(g) FROM geom WHERE id = 3; -- null argument, throws exception
+
+
+-- DESTROY SCHEMA
+DROP TABLE geom;
diff --git a/geom/sql/Tests/geom-null-tests.stable.err 
b/geom/sql/Tests/geom-null-tests.stable.err
new file mode 100644
--- /dev/null
+++ b/geom/sql/Tests/geom-null-tests.stable.err
@@ -0,0 +1,117 @@
+stderr of test 'geom-null-tests` in directory 'sql` itself:
+
+
+# 15:05:38 >  
+# 15:05:38 >   mserver5  --debug=10 --set gdk_nr_threads=0  --set 
"gdk_dbfarm=/ufs/sjoerd/Monet-stable/var/MonetDB" --set mapi_open=true --set 
mapi_port=32886 --set monet_prompt= --trace --forcemito --set mal_listing=2  
"--dbname=mTests_sql" --set mal_listing=0 ; echo ; echo Over..
+# 15:05:38 >  
+
+# builtin opt  gdk_dbname = demo
+# builtin opt  gdk_dbfarm = /ufs/sjoerd/Monet-stable/var/monetdb5/dbfarm
+# builtin opt  gdk_debug = 0
+# builtin opt  gdk_alloc_map = no
+# builtin opt  gdk_vmtrim = yes
+# builtin opt  monet_prompt = >
+# builtin opt  monet_daemon = no
+# builtin opt  mapi_port = 50000
+# builtin opt  mapi_open = false
+# builtin opt  mapi_autosense = false
+# builtin opt  default_pipe = 
inline,remap,evaluate,costModel,coercions,emptySet,aliases,mitosis,mergetable,deadcode,commonTerms,joinPath,reorder,deadcode,reduce,dataflow,history,multiplex,garbageCollector
+# builtin opt  minimal_pipe = inline,remap,deadcode,multiplex,garbageCollector
+# builtin opt  sql_optimizer = default_pipe
+# builtin opt  sql_debug = 0
+# cmdline opt  gdk_nr_threads = 0
+# cmdline opt  gdk_dbfarm = /ufs/sjoerd/Monet-stable/var/MonetDB
+# cmdline opt  mapi_open = true
+# cmdline opt  mapi_port = 32886
+# cmdline opt  monet_prompt = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbname = mTests_sql
+# cmdline opt  mal_listing = 0
+
+# 15:05:38 >  
+# 15:05:38 >  mclient -lsql -ftest -i -e --host=ottar --port=32886 
+# 15:05:38 >  
+
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT id, Area(g) FROM geom WHERE id = 3; -- null argument, throws 
exception
+ERROR = !MALException:geom.Area:wkb2geos failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT id, Length(g) FROM geom WHERE id = 3; -- null argument, throws 
exception
+ERROR = !MALException:geom.Length:wkb2geos failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT Distance(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND 
g2.id = 3; -- null argument, throws exception
+ERROR = !MALException:geom.Distance:wkb2geos(*b) failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT id, Buffer(g, 10) FROM geom WHERE id = 3; -- null argument, 
throws exception
+ERROR = !MALException:geom.Buffer:wkb2geos failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT id, ConvexHull(g) FROM geom WHERE id = 3; -- null argument, 
throws exception
+ERROR = !MALException:geom.ConvexHull:wkb2geos failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT Intersection(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 
AND g2.id = 3; -- null argument, throws exception
+ERROR = !MALException:geom.Intersection:wkb2geos(*b) failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT "Union"(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND 
g2.id = 3; -- null argument, throws exception
+ERROR = !MALException:geom.Union:wkb2geos(*b) failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT Difference(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 
AND g2.id = 3; -- null argument, throws exception
+ERROR = !MALException:geom.Difference:wkb2geos(*b) failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT SymDifference(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 
AND g2.id = 3; -- null argument, throws exception
+ERROR = !MALException:geom.SymDifference:wkb2geos(*b) failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT id, Dimension(g) FROM geom WHERE id = 3; -- null argument, 
throws exception
+ERROR = !MALException:geom.Dimension:wkb2geos failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT id, GeometryTypeId(g) FROM geom WHERE id = 3; -- null argument, 
throws exception
+ERROR = !MALException:geom.GeometryTypeId:wkb2geos failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT id, SRID(g) FROM geom WHERE id = 3; -- null argument, throws 
exception
+ERROR = !MALException:geom.SRID:wkb2geos failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT id, Envelope(g) FROM geom WHERE id = 3; -- null argument, 
throws exception
+ERROR = !MALException:geom.Envelope:wkb2geos failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT id, IsEmpty(g) FROM geom WHERE id = 3; -- null argument, throws 
exception
+ERROR = !MALException:geom.IsEmpty:wkb2geos failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT id, IsSimple(g) FROM geom WHERE id = 3; -- null argument, 
throws exception
+ERROR = !MALException:geom.IsSimple:wkb2geos failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT id, Boundary(g) FROM geom WHERE id = 3; -- null argument, 
throws exception
+ERROR = !MALException:geom.Boundary:wkb2geos failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT Equals(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND 
g2.id = 3; -- null argument, throws exception
+ERROR = !MALException:geom.Equals:wkb2geos(*b) failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT Disjoint(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND 
g2.id = 3; -- null argument, throws exception
+ERROR = !MALException:geom.Disjoint:wkb2geos(*b) failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT "Intersect"(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 
AND g2.id = 3; -- null argument, throws exception
+ERROR = !MALException:geom.Intersect:wkb2geos(*b) failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT Touches(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND 
g2.id = 3; -- null argument, throws exception
+ERROR = !MALException:geom.Touches:wkb2geos(*b) failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT Crosses(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND 
g2.id = 3; -- null argument, throws exception
+ERROR = !MALException:geom.Crosses:wkb2geos(*b) failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT Within(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND 
g2.id = 3; -- null argument, throws exception
+ERROR = !MALException:geom.Within:wkb2geos(*b) failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT Contains(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND 
g2.id = 3; -- null argument, throws exception
+ERROR = !MALException:geom.Contains:wkb2geos(*b) failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT Overlaps(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 2 AND 
g2.id = 3; -- null argument, throws exception
+ERROR = !MALException:geom.Overlaps:wkb2geos(*b) failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT id, X(g) FROM geom WHERE id = 3; -- null argument, throws 
exception
+ERROR = !MALException:geom.wkbgetcoordX:wkb2geos failed
+MAPI  = monetdb@ottar:32886
+QUERY = SELECT id, Y(g) FROM geom WHERE id = 3; -- null argument, throws 
exception
+ERROR = !MALException:geom.wkbgetcoordY:wkb2geos failed
+
+# 15:05:38 >  
+# 15:05:38 >  Done.
+# 15:05:38 >  
+
diff --git a/geom/sql/Tests/geom-null-tests.stable.out 
b/geom/sql/Tests/geom-null-tests.stable.out
new file mode 100644
--- /dev/null
+++ b/geom/sql/Tests/geom-null-tests.stable.out
@@ -0,0 +1,210 @@
+stdout of test 'geom-null-tests` in directory 'sql` itself:
+
+
+# 15:05:38 >  
+# 15:05:38 >   mserver5  --debug=10 --set gdk_nr_threads=0  --set 
"gdk_dbfarm=/ufs/sjoerd/Monet-stable/var/MonetDB" --set mapi_open=true --set 
mapi_port=32886 --set monet_prompt= --trace --forcemito --set mal_listing=2  
"--dbname=mTests_sql" --set mal_listing=0 ; echo ; echo Over..
+# 15:05:38 >  
+
+# MonetDB 5 server v11.3.4
+# This is an unreleased version
+# Serving database 'mTests_sql', using 4 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
+# Found 7.749 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2011 MonetDB B.V., all rights reserved
+# Visit http://monetdb.cwi.nl/ for further information
+# Listening for connection requests on mapi:monetdb://ottar.ins.cwi.nl:32886/
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+
+Ready.
+# SQL catalog created, loading sql scripts once
+
+Over..
+
+# 15:05:38 >  
+# 15:05:38 >  mclient -lsql -ftest -i -e --host=ottar --port=32886 
+# 15:05:38 >  
+
+#CREATE TABLE geom(id integer, g geometry);
+#INSERT INTO geom VALUES(1, point(1,1));
+[ 1    ]
+#INSERT INTO geom VALUES(2, point(2,2));
+[ 1    ]
+#INSERT INTO geom VALUES(3, NULL);
+[ 1    ]
+#SELECT id, Area(g) FROM geom WHERE id < 3; 
+% sys.geom,    sys. # table_name
+% id,  area_g # name
+% int, double # type
+% 1,   22 # length
+[ 1,   0       ]
+[ 2,   0       ]
+#SELECT id, Length(g) FROM geom WHERE id < 3;
+% sys.geom,    sys. # table_name
+% id,  length_g # name
+% int, double # type
+% 1,   22 # length
+[ 1,   0       ]
+[ 2,   0       ]
+#SELECT Distance(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 1 AND g2.id = 
2;
+% sys. # table_name
+% distance_g # name
+% double # type
+% 22 # length
+[ 1.414213562  ]
+#SELECT id, Buffer(g, 10) FROM geom WHERE id < 3;
+% sys.geom,    sys. # table_name
+% id,  buffer_g # name
+% int, geometry # type
+% 1,   0 # length
+[ 1,   "POLYGON ((11 1, 10.8078528 -0.9509032202, 10.23879533 -2.826834324, 
9.314696123 -4.55570233, 8.071067812 -6.071067812, 6.55570233 -7.314696123, 
4.826834324 -8.238795325, 2.95090322 -8.807852804, 1 -9, -0.9509032202 
-8.807852804, -2.826834324 -8.238795325, -4.55570233 -7.314696123, -6.071067812 
-6.071067812, -7.314696123 -4.55570233, -8.238795325 -2.826834324, -8.807852804 
-0.9509032202, -9 1, -8.807852804 2.95090322, -8.238795325 4.826834324, 
-7.314696123 6.55570233, -6.071067812 8.071067812, -4.55570233 9.314696123, 
-2.826834324 10.23879533, -0.9509032202 10.8078528, 1 11, 2.95090322 
10.8078528, 4.826834324 10.23879533, 6.55570233 9.314696123, 8.071067812 
8.071067812, 9.314696123 6.55570233, 10.23879533 4.826834324, 10.8078528 
2.95090322, 11 1))"  ]
+[ 2,   "POLYGON ((12 2, 11.8078528 0.04909677984, 11.23879533 -1.826834324, 
10.31469612 -3.55570233, 9.071067812 -5.071067812, 7.55570233 -6.314696123, 
5.826834324 -7.238795325, 3.95090322 -7.807852804, 2 -8, 0.04909677984 
-7.807852804, -1.826834324 -7.238795325, -3.55570233 -6.314696123, -5.071067812 
-5.071067812, -6.314696123 -3.55570233, -7.238795325 -1.826834324, -7.807852804 
0.04909677984, -8 2, -7.807852804 3.95090322, -7.238795325 5.826834324, 
-6.314696123 7.55570233, -5.071067812 9.071067812, -3.55570233 10.31469612, 
-1.826834324 11.23879533, 0.04909677984 11.8078528, 2 12, 3.95090322 
11.8078528, 5.826834324 11.23879533, 7.55570233 10.31469612, 9.071067812 
9.071067812, 10.31469612 7.55570233, 11.23879533 5.826834324, 11.8078528 
3.95090322, 12 2))"  ]
+#SELECT id, ConvexHull(g) FROM geom WHERE id < 3;
+% sys.geom,    sys. # table_name
+% id,  convexhull_g # name
+% int, geometry # type
+% 1,   0 # length
+[ 1,   "POINT (1 1)"   ]
+[ 2,   "POINT (2 2)"   ]
+#SELECT Intersection(g1.g, g2.g) FROM geom g1, geom g2 WHERE g1.id = 1 AND 
g2.id = 2;
+% sys. # table_name
+% intersection_g # name
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to