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
