Changeset: bc7dc70c2343 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/bc7dc70c2343
Modified Files:
        gdk/gdk_bat.c
        gdk/gdk_batop.c
Branch: Jul2021
Log Message:

Require explicit deletion of "oldtail" property.
(For "oldtail", see Sep2022 branch or newer.)


diffs (52 lines):

diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -707,6 +707,14 @@ BATdestroy(BAT *b)
                ATOMIC_DESTROY(&b->tvheap->refs);
                GDKfree(b->tvheap);
        }
+       PROPdestroy_nolock(b);
+       MT_lock_destroy(&b->theaplock);
+       MT_lock_destroy(&b->batIdxLock);
+       MT_rwlock_destroy(&b->thashlock);
+       if (b->theap) {
+               ATOMIC_DESTROY(&b->theap->refs);
+               GDKfree(b->theap);
+       }
        ValPtr p = BATgetprop_nolock(b, (enum prop_t) 21);
        if (p != NULL) {
                Heap *h = p->val.pval;
@@ -714,14 +722,7 @@ BATdestroy(BAT *b)
                /* the bat has not been committed, so we cannot remove
                 * the old tail file */
                HEAPdecref(h, false);
-       }
-       PROPdestroy_nolock(b);
-       MT_lock_destroy(&b->theaplock);
-       MT_lock_destroy(&b->batIdxLock);
-       MT_rwlock_destroy(&b->thashlock);
-       if (b->theap) {
-               ATOMIC_DESTROY(&b->theap->refs);
-               GDKfree(b->theap);
+               BATrmprop_nolock(b, (enum prop_t) 21);
        }
        GDKfree(b);
 }
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -2844,6 +2844,14 @@ PROPdestroy_nolock(BAT *b)
        b->tprops = NULL;
        while (p) {
                n = p->next;
+               if (p->id == (enum prop_t) 21) {
+                       /* keep this special property, it must be
+                        * deleted explicitly using BATrmprop */
+                       p->next = b->tprops;
+                       b->tprops = p;
+                       continue;
+               }
+               assert(p->id != (enum prop_t) 20);
                VALclear(&p->v);
                GDKfree(p);
                p = n;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to