Changeset: 0f46f975b395 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0f46f975b395
Modified Files:
        geom/monetdb5/geom.c
        geom/monetdb5/geom.h
        geom/monetdb5/geom.mal
Branch: geo
Log Message:

fixed converting string to mbr + mbrFromWKB returns null when wkb is null


diffs (71 lines):

diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -4160,6 +4160,12 @@ str wkbMBR(mbr **geomMBR, wkb **geomWKB)
        str ret = MAL_SUCCEED;
        bit empty;
 
+       //check if the geometry is nill
+       if(wkb_isnil(*geomWKB)) {
+               *geomMBR = mbr_nil;
+               return MAL_SUCCEED;
+       }
+
        //check if the geometry is empty
        if((ret = wkbIsEmpty(&empty, geomWKB)) != MAL_SUCCEED) {
                str msg = createException(MAL, "geom.wkbMBR", "%s", ret);
@@ -4738,7 +4744,7 @@ str wkbCoordinateFromWKB(dbl* coordinate
        return ret;
 }
 
-/*str
+str
 mbrFromString(mbr **w, str *src)
 {
        size_t len = *w ? sizeof(mbr) : 0;
@@ -4761,7 +4767,7 @@ mbrFromString(mbr **w, str *src)
                GDKerrbuf[0] = '\0';
 
        return ex;
-}*/
+}
 
 str
 wkbIsnil(bit *r, wkb **v)
@@ -5057,10 +5063,10 @@ size_t mbrFROMSTR(char *src, size_t *len
        if (strcmp(src, str_nil) == 0)
                nil = 1;
 
-       if (!nil && strstr(src,"BOX") ==  src && (c = strstr(src,"(")) != NULL) 
{
+       if (!nil && (strstr(src,"mbr") ==  src || strstr(src,"MBR") == src) && 
(c = strstr(src,"(")) != NULL) {
                /* Parse the mbr */
                if ((c - src) != 3 && (c - src) != 4) {
-                       GDKerror("ParseException: Expected a string like 'BOX(0 
0,1 1)' or 'BOX (0 0,1 1)'\n");
+                       GDKerror("ParseException: Expected a string like 'MBR(0 
0,1 1)' or 'MBR (0 0,1 1)'\n");
                        return 0;
                }
 
diff --git a/geom/monetdb5/geom.h b/geom/monetdb5/geom.h
--- a/geom/monetdb5/geom.h
+++ b/geom/monetdb5/geom.h
@@ -86,7 +86,7 @@ geom_export int wkbaLENGTH(wkba *p);
 geom_export void wkbHEAP(Heap *heap, size_t capacity);
 geom_export void wkbaHEAP(Heap *heap, size_t capacity);
 
-//geom_export str mbrFromString(mbr **w, str *src);
+geom_export str mbrFromString(mbr **w, str *src);
 geom_export str wkbIsnil(bit *r, wkb **v);
 
 /* functions that are used when a column is added to an existing table */
diff --git a/geom/monetdb5/geom.mal b/geom/monetdb5/geom.mal
--- a/geom/monetdb5/geom.mal
+++ b/geom/monetdb5/geom.mal
@@ -755,7 +755,7 @@ end YMaxFromMBR;
 
 module calc;
 
-#command mbr{unsafe}(v:str) :mbr address mbrFromString;
+command mbr(v:str) :mbr address mbrFromString;
 #It is needed to add a new mbr colum to an existing table
 command mbr(v:mbr) :mbr address mbrFromMBR;
 #command wkb{unsafe}(v:str) :wkb address wkbFromString;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to