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