Changeset: cd32f04bbe25 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cd32f04bbe25
Modified Files:
        gdk/gdk_align.c
        gdk/gdk_bat.c
        gdk/gdk_batop.c
        gdk/gdk_private.h
        gdk/gdk_search.c
        gdk/gdk_storage.c
Branch: leftmart
Log Message:

Destroy orderindex when the time comes.


diffs (127 lines):

diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c
--- a/gdk/gdk_align.c
+++ b/gdk/gdk_align.c
@@ -442,6 +442,7 @@ BATmaterializet(BAT *b)
        /* cleanup possible ACC's */
        HASHdestroy(b);
        IMPSdestroy(b);
+       OIDXdestroy(b);
 
        b->T->heap.filename = NULL;
        if (HEAPalloc(&b->T->heap, cnt, sizeof(oid)) != GDK_SUCCEED) {
@@ -782,6 +783,7 @@ VIEWdestroy(BAT *b)
        if (b->T->hash)
                HASHremove(b);
        IMPSdestroy(b);
+       OIDXdestroy(b);
        VIEWunlink(b);
 
        if (b->htype && !b->H->heap.parentid) {
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -454,6 +454,7 @@ BATextend(BAT *b, BUN newcap)
                return GDK_FAIL;
        HASHdestroy(b);
        IMPSdestroy(b);
+       OIDXdestroy(b);
        return GDK_SUCCEED;
 }
 
@@ -497,6 +498,7 @@ BATclear(BAT *b, int force)
        /* kill all search accelerators */
        HASHdestroy(b);
        IMPSdestroy(b);
+       OIDXdestroy(b);
 
        /* we must dispose of all inserted atoms */
        if ((b->batDeleted == b->batInserted || force) &&
@@ -597,6 +599,7 @@ BATfree(BAT *b)
        b->T->props = NULL;
        HASHdestroy(b);
        IMPSdestroy(b);
+       OIDXdestroy(b);
        if (b->htype)
                HEAPfree(&b->H->heap, 0);
        else
@@ -1187,6 +1190,7 @@ BUNins(BAT *b, const void *h, const void
                }
        }
        IMPSdestroy(b); /* no support for inserts in imprints yet */
+       OIDXdestroy(b);
        return GDK_SUCCEED;
       bunins_failed:
        return GDK_FAIL;
@@ -1279,6 +1283,7 @@ BUNappend(BAT *b, const void *t, bit for
 
 
        IMPSdestroy(b); /* no support for inserts in imprints yet */
+       OIDXdestroy(b);
 
        /* first adapt the hashes; then the user-defined accelerators.
         * REASON: some accelerator updates (qsignature) use the hashes!
@@ -1457,6 +1462,7 @@ BUNdelete_(BAT *b, BUN p, bit force)
        b->batCount--;
        b->batDirty = 1;        /* bat is dirty */
        IMPSdestroy(b); /* no support for inserts in imprints yet */
+       OIDXdestroy(b);
        return p;
 }
 
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -690,6 +690,7 @@ BATappend(BAT *b, BAT *n, bit force)
        }
 
        IMPSdestroy(b);         /* imprints do not support updates yet */
+       OIDXdestroy(b);
        /* a hash is useless for void bats */
        if (b->H->hash)
                HASHremove(BATmirror(b));
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -184,6 +184,8 @@ void BBPdump(void);         /* never called: fo
        __attribute__((__visibility__("hidden")));
 __hidden int MT_msync(void *p, size_t len)
        __attribute__((__visibility__("hidden")));
+__hidden void OIDXdestroy(BAT *b)
+       __attribute__((__visibility__("hidden")));
 __hidden int OIDdirty(void)
        __attribute__((__visibility__("hidden")));
 __hidden int OIDinit(void)
diff --git a/gdk/gdk_search.c b/gdk/gdk_search.c
--- a/gdk/gdk_search.c
+++ b/gdk/gdk_search.c
@@ -1217,3 +1217,19 @@ bailout:
        MT_lock_unset(&GDKhashLock(abs(b->batCacheid)), "GDKmergeidx");
        return GDK_SUCCEED;
 }
+
+void
+OIDXdestroy(BAT *b)
+{
+       if (b) {
+               Heap *hp;
+
+               MT_lock_set(&GDKhashLock(abs(b->batCacheid)), "OIDXdestroy");
+               if ((hp = b->torderidx) != NULL) {
+                       b->torderidx = NULL;
+                       HEAPdelete(hp, BBP_physical(b->batCacheid), 
"torderidx");
+                       GDKfree(hp);
+               }
+               MT_lock_unset(&GDKhashLock(abs(b->batCacheid)), "OIDXdestroy");
+       }
+}
diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -975,6 +975,7 @@ BATdelete(BAT *b)
                b = loaded;
                HASHdestroy(b);
                IMPSdestroy(b);
+               OIDXdestroy(b);
        }
        assert(!b->H->heap.base || !b->T->heap.base || b->H->heap.base != 
b->T->heap.base);
        if (b->batCopiedtodisk || (b->H->heap.storage != STORE_MEM)) {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to