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

Reply via email to