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

Reply via email to