Changeset: bfa9b11e97e1 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bfa9b11e97e1
Modified Files:
        
Branch: default
Log Message:

Merge with Oct2010 branch.


diffs (87 lines):

diff -r 22d2069fb036 -r bfa9b11e97e1 MonetDB/src/gdk/gdk_bbp.mx
--- a/MonetDB/src/gdk/gdk_bbp.mx        Fri Sep 03 13:58:40 2010 +0200
+++ b/MonetDB/src/gdk/gdk_bbp.mx        Fri Sep 03 14:06:29 2010 +0200
@@ -367,20 +367,21 @@
 
        for (BBP_mask = 1; (BBP_mask << 1) <= BBPlimit; BBP_mask <<= 1)
                ;
-       BBP_hash = (bat *) GDKmalloc(BBP_mask * sizeof(bat));
+       BBP_hash = (bat *) GDKzalloc(BBP_mask * sizeof(bat));
        if (BBP_hash == NULL)
                GDKfatal("BBPinithash: cannot allocate memory\n");
-       memset(BBP_hash, 0, BBP_mask * sizeof(bat));
        BBP_mask--;
 
        while (--i > 0) {
                str s = BBP_logical(i);
 
                if (s) {
+                       str sm = BBP_logical(-i);
+
                        if (*s != '.' && BBPtmpcheck(s) == 0) {
                                BBP_insert(i);
                        }
-                       if (BBP_logical(-i)) {
+                       if (sm && *sm != '.' && BBPtmpcheck(sm) == 0) {
                                BBP_insert(-i);
                        }
                } else {
@@ -1657,18 +1658,18 @@
                BBP_delete(i);
                gdk_unset_lock(GDKnameLock, "bbpclear");
        }
-       if (BBP_logical(-i)) {
+       if (BBPtmpcheck(BBP_logical(-i)) == 0) {
                gdk_set_lock(GDKnameLock, "bbpclear");
                BBP_delete(-i);
                gdk_unset_lock(GDKnameLock, "bbpclear");
-               if (BBP_logical(-i) != BBP[ABS(i)].bak[(-i) < 0])
-                       GDKfree(BBP_logical(-i));
-               BBP_logical(-i) = NULL;
        }
        if (BBP_logical(i) != BBP[ABS(i)].bak[(i) < 0])
                GDKfree(BBP_logical(i));
+       if (BBP_logical(-i) != BBP[ABS(i)].bak[(-i) < 0])
+               GDKfree(BBP_logical(-i));
        BBP_status_set(i, 0, "BBPclear");
        BBP_logical(i) = NULL;
+       BBP_logical(-i) = NULL;
        BBP_next(i) = BBP_free(idx);
        BBP_free(idx) = i;
        if (lock)
@@ -3085,7 +3086,10 @@
                bc->elt[bc->last].fifo_next = i;
        bc->last = i;
 
-       *BBP_logical(bid) = '.';        /* make the bat a zombie */
+       /* make the bat a zombie */
+       *BBP_logical(bid) = '.';
+       *BBP_logical(-bid) = '.';
+
        MT_unset_lock(bc->lock, "batcache_put");
 
        return i;
@@ -3130,6 +3134,7 @@
 
                /* revive the bat */
                *BBP_logical(bid) = 't';
+               *BBP_logical(-bid) = 't';
                BBP_refs(bid)++;
 
                BATDEBUG {
@@ -3152,6 +3157,7 @@
        int bin = BATCACHE_BIN(b->htype, b->ttype);
        bat bid = b->batCacheid, hp = VIEWhparent(b), tp = VIEWtparent(b);
        char *s = BBP_logical(bid);
+       char *sm = BBP_logical(-bid);
        BAT *m = BBP_cache(-bid);
 
        /* only cache simple non-saved non-renamed transient bats */
@@ -3162,6 +3168,7 @@
            b->T->heap.storage != STORE_MEM ||
            b->P->lview ||
            BBPtmpcheck(s) == 0 ||
+           BBPtmpcheck(sm) == 0 ||
            (b->htype == TYPE_str && b->H->width > 1) ||
            (b->ttype == TYPE_str && b->T->width > 1) ||
            b->htype > TYPE_str ||
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to