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