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