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

Reply via email to