Changeset: a6d63810d0c4 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a6d63810d0c4
Modified Files:
        geom/monetdb5/geom.c
        geom/sql/Tests/All
        geom/sql/Tests/T34.stable.err
        geom/sql/Tests/T34.stable.out
Branch: geo
Log Message:

wkbBorderPoint for End and Start points


diffs (186 lines):

diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -1132,7 +1132,7 @@ wkbDistance(dbl *out, wkb **a, wkb **b)
 }
 
 static str
-wkbanalysis(wkb **out, wkb **a, wkb **b,
+ wkbanalysis(wkb **out, wkb **a, wkb **b,
            GEOSGeometry *(*func)(const GEOSGeometry *, const GEOSGeometry *))
 {
        GEOSGeom ga = wkb2geos(*a);
@@ -1230,10 +1230,30 @@ wkbCentroid(wkb **out, wkb **geom)
 
 }
 
+static str
+wkbBorderPoint(wkb **out, wkb **geom, GEOSGeometry* (*func)(const GEOSGeometry 
*), const char *name)
+{
+       GEOSGeom geosGeometry = wkb2geos(*geom);
+
+       if (!geosGeometry || GEOSGeomTypeId(geosGeometry) != GEOS_LINESTRING) {
+               *out = geos2wkb(NULL);
+               return MAL_SUCCEED;
+       }
+
+       *out = geos2wkb((*func)(geosGeometry));
+
+       GEOSGeom_destroy(geosGeometry);
+
+       if (GDKerrbuf && GDKerrbuf[0])
+               throw(MAL, name, "GEOSGeomGet%s failed", name + 5);
+       return MAL_SUCCEED;
+}
+
 str
 wkbStartPoint(wkb **out, wkb **geom)
 {
-       GEOSGeom geosGeometry = wkb2geos(*geom);
+       return wkbBorderPoint(out, geom, GEOSGeomGetStartPoint, 
"geom.StartPoint");
+       /*GEOSGeom geosGeometry = wkb2geos(*geom);
 
        if (!geosGeometry || GEOSGeomTypeId(geosGeometry) != GEOS_LINESTRING) {
                *out = geos2wkb(NULL);
@@ -1246,14 +1266,15 @@ wkbStartPoint(wkb **out, wkb **geom)
 
        if (GDKerrbuf && GDKerrbuf[0])
                throw(MAL, "geom.StartPoint", "GEOSGeomGetStartPoint failed");
-       return MAL_SUCCEED;
+       return MAL_SUCCEED;*/
 
 }
 
 str
 wkbEndPoint(wkb **out, wkb **geom)
 {
-       GEOSGeom geosGeometry = wkb2geos(*geom);
+       return wkbBorderPoint(out, geom, GEOSGeomGetEndPoint, "geom.EndPoint");
+       /*GEOSGeom geosGeometry = wkb2geos(*geom);
 
        if (!geosGeometry) {
                *out = geos2wkb(NULL);
@@ -1266,7 +1287,7 @@ wkbEndPoint(wkb **out, wkb **geom)
 
        if (GDKerrbuf && GDKerrbuf[0])
                throw(MAL, "geom.EndPoint", "GEOSGeomGetEndPoint failed");
-       return MAL_SUCCEED;
+       return MAL_SUCCEED;*/
 
 }
 
diff --git a/geom/sql/Tests/All b/geom/sql/Tests/All
--- a/geom/sql/Tests/All
+++ b/geom/sql/Tests/All
@@ -51,7 +51,7 @@ T26
 # T31  no such binary operator 'geometryn(multilinestring,tinyint)'
 # T32  no such unary operator 'isclosed(multilinestring)'
 T33
-# T34  no such unary operator 'centroid(multipolygon)'
+T34
 # T35  no such unary operator 'pointonsurface(multipolygon)'
 T36
 T37
diff --git a/geom/sql/Tests/T34.stable.err b/geom/sql/Tests/T34.stable.err
--- a/geom/sql/Tests/T34.stable.err
+++ b/geom/sql/Tests/T34.stable.err
@@ -1,11 +1,11 @@
 stderr of test 'T34` 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 >  
+# 10:54:17 >  
+# 10:54:17 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=31886" "--set" 
"mapi_usock=/var/tmp/mtest-23794/.s.monetdb.31886" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/ufs/gast730/INSTALL/var/MonetDB/mTests_geom_sql" "--set" 
"mal_listing=0"
+# 10:54:17 >  
 
-# 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 'T34` 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 = 31886
+# cmdline opt  mapi_usock = /var/tmp/mtest-23794/.s.monetdb.31886
 # 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 >  
+# 10:54:18 >  
+# 10:54:18 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-23794" "--port=31886"
+# 10:54:18 >  
 
 
-# 14:29:09 >  
-# 14:29:09 >  "Done."
-# 14:29:09 >  
+# 10:54:18 >  
+# 10:54:18 >  "Done."
+# 10:54:18 >  
 
diff --git a/geom/sql/Tests/T34.stable.out b/geom/sql/Tests/T34.stable.out
--- a/geom/sql/Tests/T34.stable.out
+++ b/geom/sql/Tests/T34.stable.out
@@ -1,9 +1,9 @@
 stdout of test 'T34` 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 >  
+# 10:54:17 >  
+# 10:54:17 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=31886" "--set" 
"mapi_usock=/var/tmp/mtest-23794/.s.monetdb.31886" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/ufs/gast730/INSTALL/var/MonetDB/mTests_geom_sql" "--set" 
"mal_listing=0"
+# 10:54:17 >  
 
 # MonetDB 5 server v11.18.0
 # This is an unreleased version
@@ -13,26 +13,28 @@ stdout of test 'T34` 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:31886/
+# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-23794/.s.monetdb.31886
 # MonetDB/GIS module loaded
 # MonetDB/JAQL module loaded
 # MonetDB/SQL module loaded
 
 Ready.
+#WARNING To speedup geom.Centroid 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 >  
+# 10:54:18 >  
+# 10:54:18 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-23794" "--port=31886"
+# 10:54:18 >  
 
 #SELECT AsText(Centroid(shores)) FROM ponds WHERE fid = 120;
 % sys.L # table_name
-% intersection_centerline # name
+% astext_centroid_shores # name
 % clob # type
 % 49 # length
 [ "\"POINT (25.0000000000000000 42.0000000000000000)\""        ]
 
-# 07:38:56 >  
-# 07:38:56 >  "Done."
-# 07:38:56 >  
+# 10:54:18 >  
+# 10:54:18 >  "Done."
+# 10:54:18 >  
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to