Changeset: 1d8b0b6b33e4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1d8b0b6b33e4
Modified Files:
        geom/monetdb5/geom.c
        geom/monetdb5/geom.mal
        geom/sql/40_geom.sql
        geom/sql/Tests/All
        geom/sql/Tests/T17.stable.err
        geom/sql/Tests/T17.stable.out
        geom/sql/Tests/T18.stable.err
        geom/sql/Tests/T18.stable.out
Branch: geo
Log Message:

startPoint and endPoint done


diffs (truncated from 303 to 300 lines):

diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -110,6 +110,8 @@ 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);
 
 bat *
 geom_prelude(void)
@@ -1226,3 +1228,43 @@ wkbCentroid(wkb **out, wkb **geom)
        return MAL_SUCCEED;
 
 }
+
+str
+wkbStartPoint(wkb **out, wkb **geom)
+{
+       GEOSGeom geosGeometry = wkb2geos(*geom);
+
+       if (!geosGeometry) {
+               *out = geos2wkb(NULL);
+               return MAL_SUCCEED;
+       }
+
+       *out = geos2wkb(GEOSGeomGetStartPoint(geosGeometry));
+
+       GEOSGeom_destroy(geosGeometry);
+
+       if (GDKerrbuf && GDKerrbuf[0])
+               throw(MAL, "geom.StartPoint", "GEOSGeomGetStartPoint failed");
+       return MAL_SUCCEED;
+
+}
+
+str
+wkbEndPoint(wkb **out, wkb **geom)
+{
+       GEOSGeom geosGeometry = wkb2geos(*geom);
+
+       if (!geosGeometry) {
+               *out = geos2wkb(NULL);
+               return MAL_SUCCEED;
+       }
+
+       *out = geos2wkb(GEOSGeomGetEndPoint(geosGeometry));
+
+       GEOSGeom_destroy(geosGeometry);
+
+       if (GDKerrbuf && GDKerrbuf[0])
+               throw(MAL, "geom.EndPoint", "GEOSGeomGetEndPoint failed");
+       return MAL_SUCCEED;
+
+}
diff --git a/geom/monetdb5/geom.mal b/geom/monetdb5/geom.mal
--- a/geom/monetdb5/geom.mal
+++ b/geom/monetdb5/geom.mal
@@ -243,6 +243,14 @@ command Centroid(w:wkb) :wkb
 address wkbCentroid
 comment "Returns the centroid of this Geometry.";
 
+command StartPoint(w:wkb) :wkb
+address wkbStartPoint
+comment "Returns the start point of this Geometry.";
+
+command EndPoint(w:wkb) :wkb
+address wkbEndPoint
+comment "Returns the end point of this Geometry.";
+
 
 command prelude():void address geom_prelude;
 command epilogue():void address geom_epilogue;
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
@@ -99,3 +99,5 @@ 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";
diff --git a/geom/sql/Tests/All b/geom/sql/Tests/All
--- a/geom/sql/Tests/All
+++ b/geom/sql/Tests/All
@@ -34,8 +34,8 @@ T13
 T14
 T15
 T16
-# T17  no such unary operator 'startpoint(linestring)'
-# T18  no such unary operator 'endpoint(linestring)'
+T17
+T18
 # T19  no such unary operator 'asbinary(geometry)'
 # T20  no such unary operator 'asbinary(geometry)'
 T21
diff --git a/geom/sql/Tests/T17.stable.err b/geom/sql/Tests/T17.stable.err
--- a/geom/sql/Tests/T17.stable.err
+++ b/geom/sql/Tests/T17.stable.err
@@ -1,11 +1,11 @@
 stderr of test 'T17` 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:02:10 >  
+# 16:02:10 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=35156" "--set" 
"mapi_usock=/var/tmp/mtest-9436/.s.monetdb.35156" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/ufs/gast730/INSTALL/var/MonetDB/mTests_geom_sql" "--set" 
"mal_listing=0"
+# 16:02:10 >  
 
-# 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 'T17` 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 = 35156
+# cmdline opt  mapi_usock = /var/tmp/mtest-9436/.s.monetdb.35156
 # 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:02:14 >  
+# 16:02:14 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-9436" "--port=35156"
+# 16:02:14 >  
 
 
-# 14:29:09 >  
-# 14:29:09 >  "Done."
-# 14:29:09 >  
+# 16:02:14 >  
+# 16:02:14 >  "Done."
+# 16:02:14 >  
 
diff --git a/geom/sql/Tests/T17.stable.out b/geom/sql/Tests/T17.stable.out
--- a/geom/sql/Tests/T17.stable.out
+++ b/geom/sql/Tests/T17.stable.out
@@ -1,9 +1,9 @@
 stdout of test 'T17` in directory 'geom/sql` itself:
 
 
-# 07:38:56 >  
-# 07:38:56 >  "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:56 >  
+# 16:02:10 >  
+# 16:02:10 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=35156" "--set" 
"mapi_usock=/var/tmp/mtest-9436/.s.monetdb.35156" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/ufs/gast730/INSTALL/var/MonetDB/mTests_geom_sql" "--set" 
"mal_listing=0"
+# 16:02:10 >  
 
 # MonetDB 5 server v11.18.0
 # This is an unreleased version
@@ -13,26 +13,28 @@ stdout of test 'T17` in directory 'geom/
 # 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:35156/
+# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-9436/.s.monetdb.35156
 # MonetDB/GIS module loaded
 # MonetDB/JAQL module loaded
 # MonetDB/SQL module loaded
 
 Ready.
+#WARNING To speedup geom.StartPoint a bulk operator implementation is needed
+#WARNING To speedup geom.AsText a bulk operator implementation is needed
 
-# 07:38:56 >  
-# 07:38:56 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-3079" "--port=37052"
-# 07:38:56 >  
+# 16:02:14 >  
+# 16:02:14 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-9436" "--port=35156"
+# 16:02:14 >  
 
 #SELECT AsText(StartPoint(centerline)) FROM road_segments WHERE fid = 102;
 % sys.L # table_name
-% intersection_centerline # name
+% startpoint_centerline # name
 % clob # type
 % 48 # length
 [ "\"POINT (0.0000000000000000 18.0000000000000000)\"" ]
 
-# 07:38:56 >  
-# 07:38:56 >  "Done."
-# 07:38:56 >  
+# 16:02:14 >  
+# 16:02:14 >  "Done."
+# 16:02:14 >  
 
diff --git a/geom/sql/Tests/T18.stable.err b/geom/sql/Tests/T18.stable.err
--- a/geom/sql/Tests/T18.stable.err
+++ b/geom/sql/Tests/T18.stable.err
@@ -1,11 +1,11 @@
 stderr of test 'T18` 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:04:25 >  
+# 16:04:25 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=32119" "--set" 
"mapi_usock=/var/tmp/mtest-10183/.s.monetdb.32119" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/ufs/gast730/INSTALL/var/MonetDB/mTests_geom_sql" "--set" 
"mal_listing=0"
+# 16:04:25 >  
 
-# 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 'T18` 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 = 32119
+# cmdline opt  mapi_usock = /var/tmp/mtest-10183/.s.monetdb.32119
 # 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:04:30 >  
+# 16:04:30 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-10183" "--port=32119"
+# 16:04:30 >  
 
 
-# 14:29:09 >  
-# 14:29:09 >  "Done."
-# 14:29:09 >  
+# 16:04:30 >  
+# 16:04:30 >  "Done."
+# 16:04:30 >  
 
diff --git a/geom/sql/Tests/T18.stable.out b/geom/sql/Tests/T18.stable.out
--- a/geom/sql/Tests/T18.stable.out
+++ b/geom/sql/Tests/T18.stable.out
@@ -1,9 +1,9 @@
 stdout of test 'T18` in directory 'geom/sql` itself:
 
 
-# 07:38:56 >  
-# 07:38:56 >  "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:56 >  
+# 16:04:25 >  
+# 16:04:25 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=32119" "--set" 
"mapi_usock=/var/tmp/mtest-10183/.s.monetdb.32119" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/ufs/gast730/INSTALL/var/MonetDB/mTests_geom_sql" "--set" 
"mal_listing=0"
+# 16:04:25 >  
 
 # MonetDB 5 server v11.18.0
 # This is an unreleased version
@@ -13,26 +13,28 @@ stdout of test 'T18` in directory 'geom/
 # 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:32119/
+# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-10183/.s.monetdb.32119
 # MonetDB/GIS module loaded
 # MonetDB/JAQL module loaded
 # MonetDB/SQL module loaded
 
 Ready.
+#WARNING To speedup geom.EndPoint a bulk operator implementation is needed
+#WARNING To speedup geom.AsText a bulk operator implementation is needed
 
-# 07:38:56 >  
-# 07:38:56 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-3079" "--port=37052"
-# 07:38:56 >  
+# 16:04:30 >  
+# 16:04:30 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-10183" "--port=32119"
+# 16:04:30 >  
 
 #SELECT AsText(EndPoint(centerline)) FROM road_segments WHERE fid = 102;
 % sys.L # table_name
-% intersection_centerline # name
+% endpoint_centerline # name
 % clob # type
 % 49 # length
 [ "\"POINT (44.0000000000000000 31.0000000000000000)\""        ]
 
-# 07:38:56 >  
-# 07:38:56 >  "Done."
-# 07:38:56 >  
+# 16:04:30 >  
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to