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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list