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

Reply via email to