Changeset: d04d3b23a2f8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d04d3b23a2f8
Modified Files:
        gdk/gdk_rtree.c
        geom/monetdb5/geomBulk.c
Branch: geo-update-dev
Log Message:

Write and read the bsrt rtree files from the BAT farm directory, with the 
appropriate BAT id in the file.


diffs (92 lines):

diff --git a/gdk/gdk_rtree.c b/gdk/gdk_rtree.c
--- a/gdk/gdk_rtree.c
+++ b/gdk/gdk_rtree.c
@@ -3,6 +3,8 @@
 #include "gdk_private.h"
 #include "gdk_rtree.h"
 
+//TODO Why use BBPselectfarm?
+
 // Persist rtree to disk if the conditions are right
 static gdk_return
 persistRtree (BAT *b)
@@ -22,12 +24,10 @@ persistRtree (BAT *b)
                rtree_t *rtree = b->T.rtree;
 
                if (rtree) {
-                       //TODO Change the filename and ext
-                       const char *filename = "rtree";
-                       const char *ext = "new";
+                       const char * filename = BBP_physical(b->batCacheid);
                        int farmid = b->theap->farmid;
 
-                       int fd = GDKfdlocate(farmid, filename, "w", ext);
+                       int fd = GDKfdlocate(farmid, filename, "w", "bsrt");
                        FILE *file_stream = fdopen(fd,"w");
 
                        if (file_stream != NULL) {
@@ -64,14 +64,11 @@ persistRtree (BAT *b)
 
 static gdk_return
 BATcheckrtree(BAT *b) {
-       //TODO When do you load from disk?
-       //TODO Lock
+       const char * filename = BBP_physical(b->batCacheid);
+       int farmid = b->theap->farmid;
+       int fd = GDKfdlocate(farmid, filename, "r", "bsrt");
 
-       //TODO Change the filename and ext
-       const char *filename = "rtree";
-       const char *ext = "new";
-       int farmid = b->theap->farmid;
-       int fd = GDKfdlocate(farmid, filename, "r", ext);
+       //Do we have the rtree on file?
        if (fd == -1)
                return GDK_SUCCEED;
 
@@ -115,7 +112,6 @@ RTREEexists(BAT *b)
 
 }
 
-//MBR bat
 gdk_return
 BATrtree(BAT *wkb, BAT *mbr)
 {
@@ -124,8 +120,6 @@ BATrtree(BAT *wkb, BAT *mbr)
        rtree_t *rtree = NULL;
        struct canditer ci;
 
-       //TODO check for MBR type
-
        //Check for a parent BAT of wkb, load if exists
        if (VIEWtparent(wkb)) {
                pb = BBP_cache(VIEWtparent(wkb));
diff --git a/geom/monetdb5/geomBulk.c b/geom/monetdb5/geomBulk.c
--- a/geom/monetdb5/geomBulk.c
+++ b/geom/monetdb5/geomBulk.c
@@ -51,24 +51,8 @@ filterSelectRTree(bat* outid, const bat 
                throw(MAL, name, SQLSTATE(HY013) MAL_MALLOC_FAIL);
        }
 
-       //TODO First thread that gets here should build the whole tree (using 
the parent BAT array)
-       //TODO The lock on the check should not be released
        if (!RTREEexists(b)) {
-               if (RTREEcreate(b) != GDK_SUCCEED) {
-                       //TODO What to do?
-                       throw(MAL, name, "Failed to initialize RTree");
-               }
-               for (BUN j = 0; j < BATcount(b); j++) {
-                       wkb *inWKB = (wkb *) BUNtvar(b_iter, j + b->hseqbase);
-                       mbr *inMBR = NULL;
-                       wkbMBR(&inMBR, &inWKB);
-
-                       if (RTREEaddmbr(b,(mbr_t*)inMBR,j) != GDK_SUCCEED) {
-                               //TODO Cleanup
-                       }
-                       GDKfree(inMBR);
-                       inMBR = NULL;
-               }
+               //TODO Do we create RTree on the first thread that gets here?
        }
 
        //Calculate the MBR for the constant geometry
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to