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 -- [email protected]
To unsubscribe send an email to [email protected]