Changeset: 0ec736caefb6 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0ec736caefb6 Modified Files: geom/monetdb5/geom.c geom/monetdb5/geom.mal geom/sql/40_geom.sql geom/sql/Tests/All geom/sql/Tests/T22.stable.err geom/sql/Tests/T22.stable.out Branch: geo Log Message:
NumPoints implemented diffs (184 lines): diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c --- a/geom/monetdb5/geom.c +++ b/geom/monetdb5/geom.c @@ -112,6 +112,7 @@ geom_export str wkbBuffer(wkb **out, wkb geom_export str wkbCentroid(wkb **out, wkb **geom); geom_export str wkbStartPoint(wkb **out, wkb **geom); geom_export str wkbEndPoint(wkb **out, wkb **geom); +geom_export str wkbNumPoints(int *out, wkb **geom); bat * geom_prelude(void) @@ -1268,3 +1269,25 @@ wkbEndPoint(wkb **out, wkb **geom) return MAL_SUCCEED; } + +str +wkbNumPoints(int *out, wkb **geom) +{ + str ret = MAL_SUCCEED; + GEOSGeom ga = wkb2geos(*geom); + + if (!ga) { + *out = dbl_nil; + return ret; + } + + *out = GEOSGeomGetNumPoints(ga); + if (*out == -1) + ret = "GEOSGeomGetNumPoints failed"; + + GEOSGeom_destroy(ga); + + if (ret != MAL_SUCCEED) + throw(MAL, "geom.NumPoints", "%s", ret); + return ret; +} diff --git a/geom/monetdb5/geom.mal b/geom/monetdb5/geom.mal --- a/geom/monetdb5/geom.mal +++ b/geom/monetdb5/geom.mal @@ -245,11 +245,15 @@ comment "Returns the centroid of this Ge command StartPoint(w:wkb) :wkb address wkbStartPoint -comment "Returns the start point of this Geometry."; +comment "Returns the start point of this Geometry where should be Linestring (?)."; command EndPoint(w:wkb) :wkb address wkbEndPoint -comment "Returns the end point of this Geometry."; +comment "Returns the end point of this Geometry where should be Linestring (?)."; + +command NumPoints(w:wkb) :int +address wkbNumPoints +comment "The number of points in the Geometry where should be Linestring (?)."; command prelude():void address geom_prelude; diff --git a/geom/sql/40_geom.sql b/geom/sql/40_geom.sql --- a/geom/sql/40_geom.sql +++ b/geom/sql/40_geom.sql @@ -101,3 +101,4 @@ CREATE FUNCTION SymDifference(a Geometry CREATE FUNCTION Centroid(g Geometry) RETURNS Geometry external name geom."Centroid"; CREATE FUNCTION StartPoint(g Geometry) RETURNS Geometry external name geom."StartPoint"; CREATE FUNCTION EndPoint(g Geometry) RETURNS Geometry external name geom."EndPoint"; +CREATE FUNCTION NumPoints(g Geometry) RETURNS integer external name geom."NumPoints"; diff --git a/geom/sql/Tests/All b/geom/sql/Tests/All --- a/geom/sql/Tests/All +++ b/geom/sql/Tests/All @@ -39,7 +39,7 @@ T18 # T19 no such unary operator 'asbinary(geometry)' # T20 no such unary operator 'asbinary(geometry)' T21 -# T22 no such unary operator 'numpoints(linestring)' +T22 # T23 no such binary operator 'pointn(linestring,tinyint)' T24 # T25 no such unary operator 'pointonsurface(polygon)' diff --git a/geom/sql/Tests/T22.stable.err b/geom/sql/Tests/T22.stable.err --- a/geom/sql/Tests/T22.stable.err +++ b/geom/sql/Tests/T22.stable.err @@ -1,11 +1,11 @@ stderr of test 'T22` in directory 'geom/sql` itself: -# 14:29:09 > -# 14:29:09 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=38941" "--set" "mapi_usock=/var/tmp/mtest-20126/.s.monetdb.38941" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/ufs/sjoerd/Monet-devel/var/MonetDB/mTests_geom_sql" "--set" "mal_listing=0" -# 14:29:09 > +# 16:37:27 > +# 16:37:27 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=31363" "--set" "mapi_usock=/var/tmp/mtest-25225/.s.monetdb.31363" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/ufs/gast730/INSTALL/var/MonetDB/mTests_geom_sql" "--set" "mal_listing=0" +# 16:37:27 > -# builtin opt gdk_dbpath = /ufs/sjoerd/Monet-devel/var/monetdb5/dbfarm/demo +# builtin opt gdk_dbpath = /ufs/gast730/INSTALL/var/monetdb5/dbfarm/demo # builtin opt gdk_debug = 0 # builtin opt gdk_vmtrim = no # builtin opt monet_prompt = > @@ -17,20 +17,20 @@ stderr of test 'T22` in directory 'geom/ # builtin opt sql_debug = 0 # cmdline opt gdk_nr_threads = 0 # cmdline opt mapi_open = true -# cmdline opt mapi_port = 38941 -# cmdline opt mapi_usock = /var/tmp/mtest-20126/.s.monetdb.38941 +# cmdline opt mapi_port = 31363 +# cmdline opt mapi_usock = /var/tmp/mtest-25225/.s.monetdb.31363 # cmdline opt monet_prompt = # cmdline opt mal_listing = 2 -# cmdline opt gdk_dbpath = /ufs/sjoerd/Monet-devel/var/MonetDB/mTests_geom_sql +# cmdline opt gdk_dbpath = /ufs/gast730/INSTALL/var/MonetDB/mTests_geom_sql # cmdline opt mal_listing = 0 # cmdline opt gdk_debug = 536870922 -# 14:29:09 > -# 14:29:09 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-20126" "--port=38941" -# 14:29:09 > +# 16:37:29 > +# 16:37:29 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-25225" "--port=31363" +# 16:37:29 > -# 14:29:09 > -# 14:29:09 > "Done." -# 14:29:09 > +# 16:37:30 > +# 16:37:30 > "Done." +# 16:37:30 > diff --git a/geom/sql/Tests/T22.stable.out b/geom/sql/Tests/T22.stable.out --- a/geom/sql/Tests/T22.stable.out +++ b/geom/sql/Tests/T22.stable.out @@ -1,38 +1,39 @@ -stdout of test 'TT22` in directory 'geom/sql` itself: +stdout of test 'T22` in directory 'geom/sql` itself: -# 07:38:48 > -# 07:38:48 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=37052" "--set" "mapi_usock=/var/tmp/mtest-3079/.s.monetdb.37052" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/export/scratch1/mk/current//Linux/var/MonetDB/mTests_geom_sql" "--set" "mal_listing=0" -# 07:38:48 > +# 16:37:27 > +# 16:37:27 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=31363" "--set" "mapi_usock=/var/tmp/mtest-25225/.s.monetdb.31363" "--set" "monet_prompt=" "--forcemito" "--set" "mal_listing=2" "--dbpath=/ufs/gast730/INSTALL/var/MonetDB/mTests_geom_sql" "--set" "mal_listing=0" +# 16:37:27 > # MonetDB 5 server v11.18.0 # This is an unreleased version # Serving database 'mTests_geom_sql', using 8 threads -# Compiled for x8T22_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically linked +# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically linked # Found 15.591 GiB available main-memory. # Copyright (c) 1993-July 2008 CWI. # Copyright (c) August 2008-2014 MonetDB B.V., all rights reserved # Visit http://www.monetdb.org/ for further information -# Listening for connection requests on mapi:monetdb://vienna.ins.cwi.nl:37052/ -# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-3079/.s.monetdb.37052 +# Listening for connection requests on mapi:monetdb://athens.ins.cwi.nl:31363/ +# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-25225/.s.monetdb.31363 # MonetDB/GIS module loaded # MonetDB/JAQL module loaded # MonetDB/SQL module loaded Ready. +#WARNING To speedup geom.NumPoints a bulk operator implementation is needed -# 07:38:48 > -# 07:38:48 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-3079" "--port=37052" -# 07:38:48 > +# 16:37:29 > +# 16:37:29 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-25225" "--port=31363" +# 16:37:29 > #SELECT NumPoints(centerline) FROM road_segments WHERE fid = 102; % sys.L # table_name -% dimension_shore # name +% numpoints_centerline # name % int # type % 1 # length [ 5 ] -# 07:38:48 > -# 07:38:48 > "Done." -# 07:38:48 > +# 16:37:30 > +# 16:37:30 > "Done." +# 16:37:30 > _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list