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