Changeset: 69e9cf5d27da for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/69e9cf5d27da Modified Files: gdk/gdk_imprints.c gdk/gdk_select.c Branch: Aug2024 Log Message:
Some fixes for imprints. diffs (78 lines): diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c --- a/gdk/gdk_imprints.c +++ b/gdk/gdk_imprints.c @@ -140,9 +140,8 @@ #define GETBIN(Z,X,B) \ do { \ - int _i; \ Z = 0; \ - for (_i = 1; _i < B; _i++) \ + for (int _i = 1; _i < B; _i++) \ Z += ((X) >= bins[_i]); \ } while (0) diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c --- a/gdk/gdk_select.c +++ b/gdk/gdk_select.c @@ -348,8 +348,8 @@ quickins(oid *dst, BUN cnt, oid o, BAT * const uint##B##_t *restrict im = (uint##B##_t *) imprints->imps; \ uint##B##_t mask = 0, innermask; \ const int tpe = ATOMbasetype(bi->type); \ - const int lbin = IMPSgetbin(tpe, imprints->bits, imprints->bins, tl); \ - const int hbin = IMPSgetbin(tpe, imprints->bits, imprints->bins, th); \ + const int lbin = IMPSgetbin(tpe, imprints->bits, imprints->bins, &vl); \ + const int hbin = IMPSgetbin(tpe, imprints->bits, imprints->bins, &vh); \ /* note: (1<<n)-1 gives a sequence of n one bits */ \ /* to set bits hbin..lbin inclusive, we would do: */ \ /* mask = ((1 << (hbin + 1)) - 1) - ((1 << lbin) - 1); */ \ @@ -389,9 +389,13 @@ quickins(oid *dst, BUN cnt, oid o, BAT * for (BUN ii = 0; ii < B; ii++) { \ if (is_##TYPE##_nil(imp_min) && imp_cnt[ii]) { \ imp_min = basesrc[imprints->stats[ii]]; \ + break; \ } \ - if (is_##TYPE##_nil(imp_max) && imp_cnt[B-1-ii]) { \ - imp_max = basesrc[imprints->stats[64+B-1-ii]]; \ + } \ + for (BUN ii = B; ii != 0; ii--) { \ + if (is_##TYPE##_nil(imp_max) && imp_cnt[ii-1]) { \ + imp_max = basesrc[imprints->stats[64+ii-1]]; \ + break; \ } \ } \ assert(!is_##TYPE##_nil(imp_min) && \ @@ -2286,16 +2290,12 @@ BATselect(BAT *b, BAT *s, const void *tl imprints = pb->timprints; if (imprints != NULL) IMPSincref(imprints); - else - imprints = NULL; MT_lock_unset(&pb->batIdxLock); } else { MT_lock_set(&b->batIdxLock); imprints = b->timprints; if (imprints != NULL) IMPSincref(imprints); - else - imprints = NULL; MT_lock_unset(&b->batIdxLock); } } @@ -2660,16 +2660,12 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT imprints = tmp->timprints; if (imprints != NULL) IMPSincref(imprints); - else - imprints = NULL; MT_lock_unset(&tmp->batIdxLock); } else { MT_lock_set(&l->batIdxLock); imprints = l->timprints; if (imprints != NULL) IMPSincref(imprints); - else - imprints = NULL; MT_lock_unset(&l->batIdxLock); } /* in the unlikely case that the imprints were removed _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org