Changeset: 57a86a938c04 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/57a86a938c04 Modified Files: gdk/gdk_select.c Branch: default Log Message:
Dense vs non dense candidate list cases on fullscans on any type
diffs (150 lines):
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -550,53 +550,107 @@ fullscan_any(BAT *b, struct canditer *re
if (equi) {
*algo = "select: fullscan equi";
- for (p = 0; p < ci->ncand; p++) {
- o = canditer_next(ci);
- v = BUNtail(bi,(BUN)(o-hseq));
- if ((*cmp)(tl, v) == 0) {
- buninsfix(bn, dst, cnt, o,
- (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1
: p)
- * (dbl) (ci->ncand-p) * 1.1 +
1024),
- maximum, BUN_NONE);
- cnt++;
+ if (ci->tpe == cand_dense) {
+ for (p = 0; p < ci->ncand; p++) {
+ o = canditer_next_dense(ci);
+ v = BUNtail(bi, o-hseq);
+ if ((*cmp)(tl, v) == 0) {
+ buninsfix(bn, dst, cnt, o,
+ (BUN) ((dbl) cnt / (dbl) (p ==
0 ? 1 : p)
+ * (dbl) (ci->ncand-p) *
1.1 + 1024),
+ maximum, BUN_NONE);
+ cnt++;
+ }
+ }
+ } else {
+ for (p = 0; p < ci->ncand; p++) {
+ o = canditer_next(ci);
+ v = BUNtail(bi, o-hseq);
+ if ((*cmp)(tl, v) == 0) {
+ buninsfix(bn, dst, cnt, o,
+ (BUN) ((dbl) cnt / (dbl) (p ==
0 ? 1 : p)
+ * (dbl) (ci->ncand-p) *
1.1 + 1024),
+ maximum, BUN_NONE);
+ cnt++;
+ }
}
}
} else if (anti) {
*algo = "select: fullscan anti";
- for (p = 0; p < ci->ncand; p++) {
- o = canditer_next(ci);
- v = BUNtail(bi,(BUN)(o-hseq));
- if ((nil == NULL || (*cmp)(v, nil) != 0) &&
- ((lval &&
- ((c = (*cmp)(tl, v)) > 0 ||
- (!li && c == 0))) ||
- (hval &&
- ((c = (*cmp)(th, v)) < 0 ||
- (!hi && c == 0))))) {
- buninsfix(bn, dst, cnt, o,
- (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1
: p)
- * (dbl) (ci->ncand-p) * 1.1 +
1024),
- maximum, BUN_NONE);
- cnt++;
+ if (ci->tpe == cand_dense) {
+ for (p = 0; p < ci->ncand; p++) {
+ o = canditer_next_dense(ci);
+ v = BUNtail(bi, o-hseq);
+ if ((nil == NULL || (*cmp)(v, nil) != 0) &&
+ ((lval &&
+ ((c = (*cmp)(tl, v)) > 0 ||
+ (!li && c == 0))) ||
+ (hval &&
+ ((c = (*cmp)(th, v)) < 0 ||
+ (!hi && c == 0))))) {
+ buninsfix(bn, dst, cnt, o,
+ (BUN) ((dbl) cnt / (dbl) (p ==
0 ? 1 : p)
+ * (dbl) (ci->ncand-p) *
1.1 + 1024),
+ maximum, BUN_NONE);
+ cnt++;
+ }
+ }
+ } else {
+ for (p = 0; p < ci->ncand; p++) {
+ o = canditer_next(ci);
+ v = BUNtail(bi, o-hseq);
+ if ((nil == NULL || (*cmp)(v, nil) != 0) &&
+ ((lval &&
+ ((c = (*cmp)(tl, v)) > 0 ||
+ (!li && c == 0))) ||
+ (hval &&
+ ((c = (*cmp)(th, v)) < 0 ||
+ (!hi && c == 0))))) {
+ buninsfix(bn, dst, cnt, o,
+ (BUN) ((dbl) cnt / (dbl) (p ==
0 ? 1 : p)
+ * (dbl) (ci->ncand-p) *
1.1 + 1024),
+ maximum, BUN_NONE);
+ cnt++;
+ }
}
}
} else {
*algo = "select: fullscan range";
- for (p = 0; p < ci->ncand; p++) {
- o = canditer_next(ci);
- v = BUNtail(bi,(BUN)(o-hseq));
- if ((nil == NULL || (*cmp)(v, nil) != 0) &&
- ((!lval ||
- (c = cmp(tl, v)) < 0 ||
- (li && c == 0)) &&
- (!hval ||
- (c = cmp(th, v)) > 0 ||
- (hi && c == 0)))) {
- buninsfix(bn, dst, cnt, o,
- (BUN) ((dbl) cnt / (dbl) (p == 0 ? 1
: p)
- * (dbl) (ci->ncand-p) * 1.1 +
1024),
- maximum, BUN_NONE);
- cnt++;
+ if (ci->tpe == cand_dense) {
+ for (p = 0; p < ci->ncand; p++) {
+ o = canditer_next_dense(ci);
+ v = BUNtail(bi, o-hseq);
+ if ((nil == NULL || (*cmp)(v, nil) != 0) &&
+ ((!lval ||
+ (c = cmp(tl, v)) < 0 ||
+ (li && c == 0)) &&
+ (!hval ||
+ (c = cmp(th, v)) > 0 ||
+ (hi && c == 0)))) {
+ buninsfix(bn, dst, cnt, o,
+ (BUN) ((dbl) cnt / (dbl) (p ==
0 ? 1 : p)
+ * (dbl) (ci->ncand-p) *
1.1 + 1024),
+ maximum, BUN_NONE);
+ cnt++;
+ }
+ }
+ } else {
+ for (p = 0; p < ci->ncand; p++) {
+ o = canditer_next(ci);
+ v = BUNtail(bi, o-hseq);
+ if ((nil == NULL || (*cmp)(v, nil) != 0) &&
+ ((!lval ||
+ (c = cmp(tl, v)) < 0 ||
+ (li && c == 0)) &&
+ (!hval ||
+ (c = cmp(th, v)) > 0 ||
+ (hi && c == 0)))) {
+ buninsfix(bn, dst, cnt, o,
+ (BUN) ((dbl) cnt / (dbl) (p ==
0 ? 1 : p)
+ * (dbl) (ci->ncand-p) *
1.1 + 1024),
+ maximum, BUN_NONE);
+ cnt++;
+ }
}
}
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list
