Changeset: e8ea5102a673 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e8ea5102a673 Modified Files: gdk/gdk.h gdk/gdk_bbp.c Branch: Oct2020 Log Message:
Merge with Jun2020 branch. diffs (154 lines): diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -1070,6 +1070,9 @@ gdk_export restrict_t BATgetaccess(BAT * (b)->batDirtydesc || \ (b)->theap.dirty || \ ((b)->tvheap != NULL && (b)->tvheap->dirty)) +#define BATdirtydata(b) (!(b)->batCopiedtodisk || \ + (b)->theap.dirty || \ + ((b)->tvheap != NULL && (b)->tvheap->dirty)) #define BATcapacity(b) (b)->batCapacity /* @@ -1191,8 +1194,9 @@ static inline void BATsettrivprop(BAT *b) { assert(!is_oid_nil(b->hseqbase)); - b->batDirtydesc = true; /* likely already set */ assert(is_oid_nil(b->tseqbase) || ATOMtype(b->ttype) == TYPE_oid); + if (!b->batDirtydesc) + return; if (b->ttype == TYPE_void) { if (is_oid_nil(b->tseqbase)) { b->tnonil = b->batCount == 0; diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c --- a/gdk/gdk_align.c +++ b/gdk/gdk_align.c @@ -435,6 +435,7 @@ VIEWdestroy(BAT *b) HASHdestroy(b); IMPSdestroy(b); OIDXdestroy(b); + PROPdestroy(b); VIEWunlink(b); if (b->ttype && !b->theap.parentid) { diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c --- a/gdk/gdk_bat.c +++ b/gdk/gdk_bat.c @@ -550,7 +550,6 @@ BATfree(BAT *b) if (b->tident && !default_ident(b->tident)) GDKfree(b->tident); b->tident = BATstring_t; - PROPdestroy(b); HASHfree(b); IMPSfree(b); OIDXfree(b); diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -1412,6 +1412,7 @@ BBPexit(void) } VIEWdestroy(b); } else { + PROPdestroy(b); BATfree(b); } } @@ -1714,15 +1715,14 @@ BBPdump(void) if (b == NULL) continue; fprintf(stderr, - "# %d[%s]: nme='%s' refs=%d lrefs=%d " - "status=%u count=" BUNFMT, + "# %d: " ALGOBATFMT " " + "refs=%d lrefs=%d " + "status=%u", i, - ATOMname(b->ttype), - BBP_logical(i) ? BBP_logical(i) : "<NULL>", + ALGOBATPAR(b), BBP_refs(i), BBP_lrefs(i), - BBP_status(i), - b->batCount); + BBP_status(i)); if (b->batSharecnt > 0) fprintf(stderr, " shares=%d", b->batSharecnt); if (b->batDirtydesc) @@ -1731,9 +1731,10 @@ BBPdump(void) fprintf(stderr, " Theap -> %d", b->theap.parentid); } else { fprintf(stderr, - " Theap=[%zu,%zu]%s", + " Theap=[%zu,%zu,f=%d]%s", HEAPmemsize(&b->theap), HEAPvmsize(&b->theap), + b->theap.farmid, b->theap.dirty ? "(Dirty)" : ""); if (BBP_logical(i) && BBP_logical(i)[0] == '.') { cmem += HEAPmemsize(&b->theap); @@ -1752,9 +1753,10 @@ BBPdump(void) b->tvheap->parentid); } else { fprintf(stderr, - " Tvheap=[%zu,%zu]%s", + " Tvheap=[%zu,%zu,f=%d]%s", HEAPmemsize(b->tvheap), HEAPvmsize(b->tvheap), + b->tvheap->farmid, b->tvheap->dirty ? "(Dirty)" : ""); if (BBP_logical(i) && BBP_logical(i)[0] == '.') { cmem += HEAPmemsize(b->tvheap); @@ -1768,7 +1770,9 @@ BBPdump(void) if (b->thash && b->thash != (Hash *) 1) { size_t m = HEAPmemsize(&b->thash->heaplink) + HEAPmemsize(&b->thash->heapbckt); size_t v = HEAPvmsize(&b->thash->heaplink) + HEAPvmsize(&b->thash->heapbckt); - fprintf(stderr, " Thash=[%zu,%zu]", m, v); + fprintf(stderr, " Thash=[%zu,%zu,f=%d/%d]", m, v, + b->thash->heaplink.farmid, + b->thash->heapbckt.farmid); if (BBP_logical(i) && BBP_logical(i)[0] == '.') { cmem += m; cvm += v; @@ -1777,9 +1781,8 @@ BBPdump(void) vm += v; } } - fprintf(stderr, " role: %s, persistence: %s\n", - b->batRole == PERSISTENT ? "persistent" : "transient", - b->batTransient ? "transient" : "persistent"); + fprintf(stderr, " role: %s\n", + b->batRole == PERSISTENT ? "persistent" : "transient"); } fprintf(stderr, "# %d bats: mem=%zu, vm=%zu %d cached bats: mem=%zu, vm=%zu\n", @@ -2444,7 +2447,7 @@ decref(bat i, bool logical, bool release * if they have been made cold or are not dirty */ if (BBP_refs(i) > 0 || (BBP_lrefs(i) > 0 && - (b == NULL || BATdirty(b) || !(BBP_status(i) & BBPPERSISTENT) || GDKinmemory()))) { + (b == NULL || BATdirtydata(b) || !(BBP_status(i) & BBPPERSISTENT) || GDKinmemory()))) { /* bat cannot be swapped out */ } else if (b ? b->batSharecnt == 0 : (BBP_status(i) & BBPTMP)) { /* bat will be unloaded now. set the UNLOADING bit @@ -2634,7 +2637,7 @@ BBPsave(BAT *b) bat bid = b->batCacheid; gdk_return ret = GDK_SUCCEED; - if (BBP_lrefs(bid) == 0 || isVIEW(b) || !BATdirty(b)) { + if (BBP_lrefs(bid) == 0 || isVIEW(b) || !BATdirtydata(b)) { /* do nothing */ if (b->thash && b->thash != (Hash *) 1 && (b->thash->heaplink.dirty || b->thash->heapbckt.dirty)) diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c --- a/gdk/gdk_storage.c +++ b/gdk/gdk_storage.c @@ -901,6 +901,7 @@ BATdelete(BAT *b) HASHdestroy(b); IMPSdestroy(b); OIDXdestroy(b); + PROPdestroy(b); if (b->batCopiedtodisk || (b->theap.storage != STORE_MEM)) { if (b->ttype != TYPE_void && HEAPdelete(&b->theap, o, "tail") != GDK_SUCCEED && _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list