Changeset: ed5c55955d7c for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ed5c55955d7c Modified Files: gdk/ChangeLog gdk/gdk.h gdk/gdk_align.c gdk/gdk_bat.c gdk/gdk_batop.c gdk/gdk_delta.c gdk/gdk_join.c gdk/gdk_search.c gdk/gdk_search.h gdk/gdk_select.c gdk/gdk_setop.c monetdb5/extras/rdf/rdf_shredder.c monetdb5/modules/kernel/bat5.c monetdb5/modules/mal/cluster.c monetdb5/modules/mal/tokenizer.c sql/backends/monet5/sql.c Branch: default Log Message:
Changed a bunch of hash-related functions to work on the tail column. The functions that have been changed to work on the tail column are: BAThash, BATprepareHash, HASHgonebad, HASHins, and HASHremove. diffs (truncated from 596 to 300 lines): diff --git a/gdk/ChangeLog b/gdk/ChangeLog --- a/gdk/ChangeLog +++ b/gdk/ChangeLog @@ -1,3 +1,8 @@ # ChangeLog file for MonetDB # This file is updated with Maddlog +* Tue Oct 28 2014 Sjoerd Mullender <[email protected]> +- Changed a bunch of hash-related functions to work on the tail column. + The functions that have been changed to work on the tail column are: + BAThash, BATprepareHash, HASHgonebad, HASHins, and HASHremove. + diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -2171,7 +2171,7 @@ gdk_export BAT *BAThash(BAT *b, BUN mask /* low level functions */ -#define BATprepareHash(X) (((X)->H->hash == NULL) && !BAThash(X, 0)) +#define BATprepareHash(X) (((X)->T->hash == NULL) && !BAThash((X), 0)) /* * @- Column Imprints Functions diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c --- a/gdk/gdk_align.c +++ b/gdk/gdk_align.c @@ -803,9 +803,9 @@ VIEWdestroy(BAT *b) /* remove any leftover private hash structures */ if (b->H->hash) + HASHremove(BATmirror(b)); + if (b->T->hash) HASHremove(b); - if (b->T->hash) - HASHremove(BATmirror(b)); IMPSdestroy(b); VIEWunlink(b); diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c --- a/gdk/gdk_bat.c +++ b/gdk/gdk_bat.c @@ -526,10 +526,10 @@ BATclear(BAT *b, int force) /* kill all search accelerators */ if (b->H->hash) { - HASHremove(b); + HASHremove(bm); } if (b->T->hash) { - HASHremove(bm); + HASHremove(b); } IMPSdestroy(b); @@ -1229,12 +1229,12 @@ BUNins(BAT *b, const void *h, const void } if (b->H->hash) { - HASHins(b, p, h); + HASHins(bm, p, h); if (hsize && hsize != b->H->vheap->size) HEAPwarm(b->H->vheap); } if (b->T->hash) { - HASHins(bm, p, t); + HASHins(b, p, t); if (tsize && tsize != b->T->vheap->size) HEAPwarm(b->T->vheap); @@ -1334,12 +1334,12 @@ BUNappend(BAT *b, const void *t, bit for * REASON: some accelerator updates (qsignature) use the hashes! */ if (b->H->hash && h) { - HASHins(b, i, h); + HASHins(bm, i, h); if (hsize && hsize != b->H->vheap->size) HEAPwarm(b->H->vheap); } if (b->T->hash) { - HASHins(bm, i, t); + HASHins(b, i, t); if (tsize && tsize != b->T->vheap->size) HEAPwarm(b->T->vheap); @@ -1928,9 +1928,9 @@ BUNlocate(BAT *b, const void *x, const v * BUNlocate). Other threads might then crash. */ if (dohash(v->H)) + (void) BATprepareHash(BATmirror(v)); + if (dohash(v->T)) (void) BATprepareHash(v); - if (dohash(v->T)) - (void) BATprepareHash(BATmirror(v)); if (v->H->hash && v->T->hash) { /* we can choose between two hash tables */ BUN hcnt = 0, tcnt = 0; BUN i; @@ -1944,7 +1944,7 @@ BUNlocate(BAT *b, const void *x, const v v = BATmirror(v); } /* remove the least selective hash table */ - HASHremove(BATmirror(v)); + HASHremove(v); } if (v->H->hash == NULL) { usemirror(); diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c --- a/gdk/gdk_batop.c +++ b/gdk/gdk_batop.c @@ -302,13 +302,13 @@ BATins(BAT *b, BAT *n, bit force) (b->batCount > 0 || !n->hkey) && (BATcount(b) || (BATcount(n) && n->htype != TYPE_void && !n->hdense))) { - BAThash(b, BATcount(b) + BATcount(n)); + BAThash(BATmirror(b), BATcount(b) + BATcount(n)); } if (b->T->hash == NULL && b->tkey & BOUND2BTRUE && (b->batCount > 0 || !n->tkey) && (BATcount(b) || (BATcount(n) && n->ttype != TYPE_void && !n->tdense))) { - BAThash(BATmirror(b), BATcount(b) + BATcount(n)); + BAThash(b, BATcount(b) + BATcount(n)); } b->batDirty = 1; if (fastpath) { @@ -525,10 +525,10 @@ BATappend(BAT *b, BAT *n, bit force) IMPSdestroy(b); /* imprints do not support updates yet */ /* a hash is useless for void bats */ if (b->H->hash) - HASHremove(b); + HASHremove(BATmirror(b)); if (b->T->hash && (2 * b->T->hash->mask) < (BATcount(b) + sz)) { - HASHremove(BATmirror(b)); + HASHremove(b); } if (b->T->hash != NULL || (b->tkey & BOUND2BTRUE) != 0 || @@ -639,7 +639,7 @@ BATappend(BAT *b, BAT *n, bit force) if (BUNfnd(bm, t) == BUN_NONE) { bunfastins(b, &h, t); if (b->T->hash) { - HASHins(bm, i, t); + HASHins(b, i, t); } h++; i++; @@ -655,7 +655,7 @@ BATappend(BAT *b, BAT *n, bit force) if (BUNfnd(bm, t) == BUN_NONE) { bunfastins(b, &on, t); if (b->T->hash) { - HASHins(bm, i, t); + HASHins(b, i, t); } i++; } @@ -677,7 +677,7 @@ BATappend(BAT *b, BAT *n, bit force) bunfastins(b, &h, t); if (b->T->hash) { - HASHins(bm, i, t); + HASHins(b, i, t); } i++; h++; @@ -693,7 +693,7 @@ BATappend(BAT *b, BAT *n, bit force) bunfastins(b, &on, t); if (b->T->hash) { - HASHins(bm, i, t); + HASHins(b, i, t); } i++; } @@ -1454,26 +1454,26 @@ BATmark(BAT *b, oid oid_base) } \ } while (0) -#define mark_grp_loop4(BUNhead, BUNtail, init_n) \ - do { \ - oid u = oid_nil; \ - oid n = oid_nil; \ - \ - bn->T->nil = 0; \ - BATloop(b, p, q) { \ - oid v = * (oid *) BUNtail(bi, p); \ - \ - if (v != u) { \ - init_n; \ - u = v; \ - } else if (n != oid_nil) { \ - n++; \ - } \ - if (n == oid_nil) \ - bn->T->nil =1; \ +#define mark_grp_loop4(BUNhead, BUNtail, init_n) \ + do { \ + oid u = oid_nil; \ + oid n = oid_nil; \ + \ + bn->T->nil = 0; \ + BATloop(b, p, q) { \ + oid v = * (oid *) BUNtail(bi, p); \ + \ + if (v != u) { \ + init_n; \ + u = v; \ + } else if (n != oid_nil) { \ + n++; \ + } \ + if (n == oid_nil) \ + bn->T->nil =1; \ bunfastins_nocheck_inc(bn, r, BUNhead(bi, p), &n); \ - } \ - bn->T->nonil = !bn->T->nil; \ + } \ + bn->T->nonil = !bn->T->nil; \ } while (0) #define mark_grp_loop3(BUNhead, BUNtail, BUNfnd) \ diff --git a/gdk/gdk_delta.c b/gdk/gdk_delta.c --- a/gdk/gdk_delta.c +++ b/gdk/gdk_delta.c @@ -206,10 +206,10 @@ BATundo(BAT *b) ptr t = BUNtail(bi, p); if (b->H->hash) { - HASHins(b, i, h); + HASHins(bm, i, h); } if (b->T->hash) { - HASHins(bm, i, t); + HASHins(b, i, t); } } } diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c --- a/gdk/gdk_join.c +++ b/gdk/gdk_join.c @@ -1362,10 +1362,10 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT * return GDK_SUCCEED; } - /* hashes work on HEAD column */ - r = BATmirror(r); if (BATprepareHash(r)) goto bailout; + /* HASHloop works on HEAD column */ + r = BATmirror(r); ri = bat_iterator(r); nrcand = (BUN) (rcandend - rcand); diff --git a/gdk/gdk_search.c b/gdk/gdk_search.c --- a/gdk/gdk_search.c +++ b/gdk/gdk_search.c @@ -191,7 +191,7 @@ HASHnew(Heap *hp, int tpe, BUN size, BUN #define starthash(TYPE) \ do { \ - TYPE *v = (TYPE *) BUNhloc(bi, 0); \ + TYPE *v = (TYPE *) BUNtloc(bi, 0); \ for (; r < p; r++) { \ BUN c = (BUN) hash_##TYPE(h, v+r); \ \ @@ -203,7 +203,7 @@ HASHnew(Heap *hp, int tpe, BUN size, BUN } while (0) #define finishhash(TYPE) \ do { \ - TYPE *v = (TYPE *) BUNhloc(bi, 0); \ + TYPE *v = (TYPE *) BUNtloc(bi, 0); \ for (; p < q; p++) { \ BUN c = (BUN) hash_##TYPE(h, v + p); \ \ @@ -249,8 +249,8 @@ BAThash(BAT *b, BUN masksize) (void) t0; (void) t1; - if (VIEWhparent(b)) { - bat p = VIEWhparent(b); + if (VIEWtparent(b)) { + bat p = -VIEWtparent(b); o = b; b = BATdescriptor(p); assert(b != NULL); @@ -261,8 +261,8 @@ BAThash(BAT *b, BUN masksize) } } MT_lock_set(&GDKhashLock(abs(b->batCacheid)), "BAThash"); - if (b->H->hash == NULL) { - unsigned int tpe = ATOMstorage(b->htype); + if (b->T->hash == NULL) { + unsigned int tpe = ATOMstorage(b->ttype); BUN cnt = BATcount(b); BUN mask; BUN p = BUNfirst(b), q = BUNlast(b), r; @@ -277,8 +277,8 @@ BAThash(BAT *b, BUN masksize) if (!cnt) cnt = BATcapacity(b); - if (b->htype == TYPE_void) { _______________________________________________ checkin-list mailing list [email protected] https://www.monetdb.org/mailman/listinfo/checkin-list
