Changeset: 1600ec0069b4 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1600ec0069b4 Modified Files: gdk/gdk_imprints.c Branch: bloomfilters Log Message:
Do not use bunfastins diffs (69 lines): diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c --- a/gdk/gdk_imprints.c +++ b/gdk/gdk_imprints.c @@ -852,7 +852,8 @@ do { \ BAT * BLOOMselect(BAT *b, BAT *s, BAT *bf) { BAT *bn; - BUN start, end, cnt, mn; + oid *dst; + BUN start, end, cnt, mn, dcnt; const oid *cand = NULL, *candend = NULL; const bit *bloom; @@ -896,15 +897,17 @@ BLOOMselect(BAT *b, BAT *s, BAT *bf) { return bn; } - bn = BATnew(TYPE_void, TYPE_oid, 1024, TRANSIENT); + bn = BATnew(TYPE_void, TYPE_oid, cnt, TRANSIENT); if (bn == NULL) { return NULL; } + dst = (oid *) Tloc(bn, BUNfirst(bn)); + dcnt = 0; #define TEST_BLOOM(TYPE) \ do { \ oid key,hv,x,y,z; /* for hashing */ \ - oid i, o; \ + oid i; \ TYPE *ob = (TYPE *)Tloc(b, BUNfirst(b)); \ for (;;) { \ if (cand) { \ @@ -926,8 +929,8 @@ do { \ if (bloom[hash_mod(hv,mn)]) { \ next_hash(hv, x,y,z); \ if (bloom[hash_mod(hv,mn)]) { \ - o = i + b->hseqbase; \ - bunfastapp(bn, &o); \ + assert((dcnt) < BATcapacity(bn));\ + dst[dcnt++] = i + b->hseqbase;\ } \ } \ } \ @@ -958,14 +961,20 @@ do { \ assert(0); } + BATsetcount(bn, dcnt); bn->tsorted = 1; bn->trevsorted = BATcount(bn) <= 1; bn->tkey = 1; + bn->tdense = (bn->batCount <= 1 || bn->batCount == b->batCount); + if (bn->batCount == 1 || bn->batCount == b->batCount) + bn->tseqbase = b->hseqbase; bn->T->nil = 0; bn->T->nonil = 1; + bn->hsorted = 1; + bn->hdense = 1; + bn->hseqbase = 0; + bn->hkey = 1; + bn->hrevsorted = bn->batCount <= 1; + return bn; - -bunins_failed: - BBPreclaim(bn); - return NULL; } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list