Changeset: 11ceaa15fc71 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=11ceaa15fc71
Modified Files:
        clients/Tests/exports.stable.out
        gdk/ChangeLog
        gdk/gdk.h
        gdk/gdk_join.c
Branch: default
Log Message:

Removed BATsubprojection.  It was not used.
Note, this function was incorrectly renamed from BATsubleftfetchjoin
in changeset b72574174eb9.


diffs (truncated from 405 to 300 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -172,7 +172,6 @@ BAT *BATsubdiff(BAT *l, BAT *r, BAT *sl,
 gdk_return BATsubjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, 
int nil_matches, BUN estimate);
 gdk_return BATsubleftjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT 
*sr, int nil_matches, BUN estimate);
 gdk_return BATsubouterjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT 
*sr, int nil_matches, BUN estimate);
-gdk_return BATsubprojection(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT 
*sr, int nil_matches, BUN estimate);
 gdk_return BATsubrangejoin(BAT **r1p, BAT **r2p, BAT *l, BAT *rl, BAT *rh, BAT 
*sl, BAT *sr, int li, int hi, BUN estimate);
 BAT *BATsubselect(BAT *b, BAT *s, const void *tl, const void *th, int li, int 
hi, int anti);
 gdk_return BATsubsemijoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT 
*sr, int nil_matches, BUN estimate);
diff --git a/gdk/ChangeLog b/gdk/ChangeLog
--- a/gdk/ChangeLog
+++ b/gdk/ChangeLog
@@ -2,6 +2,7 @@
 # This file is updated with Maddlog
 
 * Thu Dec  3 2015 Sjoerd Mullender <[email protected]>
+- Removed BATsubleftfetchjoin: it was not used.
 - Removed BATcross1.  Use BATsubcross instead.
 
 * Thu Oct  8 2015 Sjoerd Mullender <[email protected]>
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -3037,7 +3037,6 @@ gdk_export gdk_return BATsubthetajoin(BA
 gdk_export gdk_return BATsubsemijoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT 
*sl, BAT *sr, int nil_matches, BUN estimate);
 gdk_export BAT *BATsubdiff(BAT *l, BAT *r, BAT *sl, BAT *sr, int nil_matches, 
BUN estimate);
 gdk_export gdk_return BATsubjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT 
*sl, BAT *sr, int nil_matches, BUN estimate);
-gdk_export gdk_return BATsubprojection(BAT **r1p, BAT **r2p, BAT *l, BAT *r, 
BAT *sl, BAT *sr, int nil_matches, BUN estimate);
 gdk_export gdk_return BATsubbandjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT 
*sl, BAT *sr, const void *c1, const void *c2, int li, int hi, BUN estimate);
 gdk_export gdk_return BATsubrangejoin(BAT **r1p, BAT **r2p, BAT *l, BAT *rl, 
BAT *rh, BAT *sl, BAT *sr, int li, int hi, BUN estimate);
 gdk_export BAT *BATproject(BAT *l, BAT *r);
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -36,10 +36,6 @@
  *     normal equi-join
  * BATsubleftjoin
  *     normal equi-join, but the left output is sorted
- * BATsubprojection
- *     normal equi-join, but the left output is sorted, and all
- *     values in the left input must match at least one value in the
- *     right input
  * BATsubouterjoin
  *     equi-join, but the left output is sorted, and if there is no
  *     match for a value in the left input, there is still an output
@@ -458,20 +454,15 @@ binsearch(const oid *rcand, oid offset,
 static gdk_return
 nomatch(BAT *r1, BAT *r2, BAT *l, BAT *r, BUN lstart, BUN lend,
        const oid *lcand, const oid *lcandend,
-       int nil_on_miss, int only_misses, int must_match, const char *func)
+       int nil_on_miss, int only_misses, const char *func)
 {
        BUN cnt;
 
-       if (lstart == lend || (!must_match && !(nil_on_miss | only_misses))) {
+       if (lstart == lend || !(nil_on_miss | only_misses)) {
                virtualize(r1);
                virtualize(r2);
                return GDK_SUCCEED;
        }
-       if (must_match) {
-               GDKerror("%s(%s,%s) does not hit always => can't use 
fetchjoin.\n",
-                        func, BATgetId(l), BATgetId(r));
-               goto bailout;
-       }
        if (lcand) {
                cnt = (BUN) (lcandend - lcand);
                if (BATextend(r1, cnt) != GDK_SUCCEED)
@@ -531,7 +522,7 @@ nomatch(BAT *r1, BAT *r2, BAT *l, BAT *r
 
 static gdk_return
 mergejoin_void(BAT *r1, BAT *r2, BAT *l, BAT *r, BAT *sl, BAT *sr,
-              int nil_on_miss, int only_misses, int must_match)
+              int nil_on_miss, int only_misses)
 {
        oid lo, hi;
        BUN cnt, i;
@@ -548,7 +539,6 @@ mergejoin_void(BAT *r1, BAT *r2, BAT *l,
        assert(r->tsorted || r->trevsorted);
        assert(sl == NULL || sl->tsorted);
        assert(sr == NULL || sr->tsorted);
-       assert(!nil_on_miss || !must_match); /* can't have both */
        assert(BATcount(l) > 0);
        assert(BATtdense(r));
        assert(BATcount(r) > 0);
@@ -608,12 +598,8 @@ mergejoin_void(BAT *r1, BAT *r2, BAT *l,
                                               seq - l->hseqbase,
                                               seq + cnt - l->hseqbase,
                                               NULL, NULL, nil_on_miss,
-                                              only_misses, must_match,
+                                              only_misses,
                                               "mergejoin_void");
-                       if (must_match && hi - lo < cnt) {
-                               GDKerror("mergejoin_void(%s,%s) does not hit 
always => can't use fetchjoin.\n", BATgetId(l), BATgetId(r));
-                               goto bailout;
-                       }
 
                        /* at this point, the matched values in l and
                         * r (taking candidate lists into account) are
@@ -760,10 +746,6 @@ mergejoin_void(BAT *r1, BAT *r2, BAT *l,
                                }
                        } else {
                                i = binsearch_oid(NULL, 0, lvals, 0, cnt - 1, 
&lo, 1, 0);
-                               if (must_match && i > 0) {
-                                       GDKerror("mergejoin_void(%s,%s) does 
not hit always => can't use fetchjoin.\n", BATgetId(l), BATgetId(r));
-                                       goto bailout;
-                               }
                        }
                        for (; i < cnt && lvals[i] < hi; i++) {
                                APPEND(r1, lvals[i]);
@@ -781,9 +763,6 @@ mergejoin_void(BAT *r1, BAT *r2, BAT *l,
                                        APPEND(r1, lvals[i]);
                                        APPEND(r2, oid_nil);
                                }
-                       } else if (must_match && i < cnt) {
-                               GDKerror("mergejoin_void(%s,%s) does not hit 
always => can't use fetchjoin.\n", BATgetId(l), BATgetId(r));
-                               goto bailout;
                        }
                }
                BATsetcount(r1, BATcount(r1));
@@ -843,9 +822,6 @@ mergejoin_void(BAT *r1, BAT *r2, BAT *l,
                                                        if (r2)
                                                                APPEND(r2, o - 
r->tseqbase + r->hseqbase);
                                                }
-                                       } else if (must_match) {
-                                               GDKerror("mergejoin_void(%s,%s) 
does not hit always => can't use fetchjoin.\n", BATgetId(l), BATgetId(r));
-                                               goto bailout;
                                        } else if (only_misses) {
                                                APPEND(r1, c);
                                        } else if (nil_on_miss) {
@@ -916,9 +892,6 @@ mergejoin_void(BAT *r1, BAT *r2, BAT *l,
                                r1->tdense = 0;
                                r1->tseqbase = oid_nil;
                        }
-               } else if (must_match) {
-                       GDKerror("mergejoin_void(%s,%s) does not hit always => 
can't use fetchjoin.\n", BATgetId(l), BATgetId(r));
-                       goto bailout;
                } else if (only_misses) {
                        APPEND(r1, i + seq);
                } else if (nil_on_miss) {
@@ -1013,7 +986,7 @@ mergejoin_void(BAT *r1, BAT *r2, BAT *l,
 static gdk_return
 mergejoin(BAT *r1, BAT *r2, BAT *l, BAT *r, BAT *sl, BAT *sr,
          int nil_matches, int nil_on_miss, int semi, int only_misses,
-         int must_match, BUN maxsize)
+         BUN maxsize)
 {
        BUN lstart, lend, lcnt;
        const oid *lcand, *lcandend;
@@ -1047,7 +1020,7 @@ mergejoin(BAT *r1, BAT *r2, BAT *l, BAT 
        ALGODEBUG fprintf(stderr, "#mergejoin(l=%s#" BUNFMT "[%s]%s%s,"
                          "r=%s#" BUNFMT "[%s]%s%s,sl=%s#" BUNFMT "%s%s,"
                          "sr=%s#" BUNFMT "%s%s,nil_matches=%d,"
-                         "nil_on_miss=%d,semi=%d,must_match=%d)\n",
+                         "nil_on_miss=%d,semi=%d)\n",
                          BATgetId(l), BATcount(l), ATOMname(l->ttype),
                          l->tsorted ? "-sorted" : "",
                          l->trevsorted ? "-revsorted" : "",
@@ -1060,7 +1033,7 @@ mergejoin(BAT *r1, BAT *r2, BAT *l, BAT 
                          sr ? BATgetId(sr) : "NULL", sr ? BATcount(sr) : 0,
                          sr && sr->tsorted ? "-sorted" : "",
                          sr && sr->trevsorted ? "-revsorted" : "",
-                         nil_matches, nil_on_miss, semi, must_match);
+                         nil_matches, nil_on_miss, semi);
 
        assert(BAThdense(l));
        assert(BAThdense(r));
@@ -1068,7 +1041,6 @@ mergejoin(BAT *r1, BAT *r2, BAT *l, BAT 
        assert(r->tsorted || r->trevsorted);
        assert(sl == NULL || sl->tsorted);
        assert(sr == NULL || sr->tsorted);
-       assert(!nil_on_miss || !must_match); /* can't have both */
 
        CANDINIT(l, sl, lstart, lend, lcnt, lcand, lcandend);
        CANDINIT(r, sr, rstart, rend, rcnt, rcand, rcandend);
@@ -1102,8 +1074,7 @@ mergejoin(BAT *r1, BAT *r2, BAT *l, BAT 
              (l->ttype == TYPE_void && l->tseqbase != oid_nil)))) {
                /* there are no matches */
                return nomatch(r1, r2, l, r, lstart, lend, lcand, lcandend,
-                              nil_on_miss, only_misses, must_match,
-                              "mergejoin");
+                              nil_on_miss, only_misses, "mergejoin");
        }
 
        if (l->tsorted || l->trevsorted) {
@@ -1284,10 +1255,6 @@ mergejoin(BAT *r1, BAT *r2, BAT *l, BAT 
                                }
                        }
                        if (nlx > 0) {
-                               if (must_match) {
-                                       GDKerror("mergejoin(%s,%s) does not hit 
always => can't use fetchjoin.\n", BATgetId(l), BATgetId(r));
-                                       goto bailout;
-                               }
                                if (only_misses) {
                                        if (lcand) {
                                                while (nlx > 0) {
@@ -1707,10 +1674,6 @@ mergejoin(BAT *r1, BAT *r2, BAT *l, BAT 
                }
                if (nr == 0) {
                        /* no entries in r found */
-                       if (must_match) {
-                               GDKerror("mergejoin(%s,%s) does not hit always 
=> can't use fetchjoin.\n", BATgetId(l), BATgetId(r));
-                               goto bailout;
-                       }
                        if (!(nil_on_miss | only_misses)) {
                                if (lscan > 0 &&
                                    (rcand ? rcand == rcandend : rstart == 
rend)) {
@@ -2000,8 +1963,7 @@ binsearchcand(const oid *cand, BUN lo, B
 
 static gdk_return
 hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *r, BAT *sl, BAT *sr, int nil_matches,
-        int nil_on_miss, int semi, int only_misses, int must_match,
-        BUN maxsize)
+        int nil_on_miss, int semi, int only_misses, BUN maxsize)
 {
        BUN lstart, lend, lcnt;
        const oid *lcand = NULL, *lcandend = NULL;
@@ -2025,7 +1987,7 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
        ALGODEBUG fprintf(stderr, "#hashjoin(l=%s#" BUNFMT "[%s]%s%s,"
                          "r=%s#" BUNFMT "[%s]%s%s,sl=%s#" BUNFMT "%s%s,"
                          "sr=%s#" BUNFMT "%s%s,nil_matches=%d,"
-                         "nil_on_miss=%d,semi=%d,must_match=%d)\n",
+                         "nil_on_miss=%d,semi=%d)\n",
                          BATgetId(l), BATcount(l), ATOMname(l->ttype),
                          l->tsorted ? "-sorted" : "",
                          l->trevsorted ? "-revsorted" : "",
@@ -2038,7 +2000,7 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
                          sr ? BATgetId(sr) : "NULL", sr ? BATcount(sr) : 0,
                          sr && sr->tsorted ? "-sorted" : "",
                          sr && sr->trevsorted ? "-revsorted" : "",
-                         nil_matches, nil_on_miss, semi, must_match);
+                         nil_matches, nil_on_miss, semi);
 
        assert(BAThdense(l));
        assert(BAThdense(r));
@@ -2046,7 +2008,6 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
        assert(ATOMtype(l->ttype) == ATOMtype(r->ttype));
        assert(sl == NULL || sl->tsorted);
        assert(sr == NULL || sr->tsorted);
-       assert(!nil_on_miss || !must_match); /* can't have both */
 
        CANDINIT(l, sl, lstart, lend, lcnt, lcand, lcandend);
        CANDINIT(r, sr, rstart, rend, rcnt, rcand, rcandend);
@@ -2084,8 +2045,7 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
 
        if (lstart == lend || rstart == rend)
                return nomatch(r1, r2, l, r, lstart, lend, lcand, lcandend,
-                              nil_on_miss, only_misses, must_match,
-                              "hashjoin");
+                              nil_on_miss, only_misses, "hashjoin");
 
        rl = BUNfirst(r);
 #ifndef DISABLE_PARENT_HASH
@@ -2157,10 +2117,7 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
                                }
                        }
                        if (nr == 0) {
-                               if (must_match) {
-                                       GDKerror("hashjoin(%s,%s) does not hit 
always => can't use fetchjoin.\n", BATgetId(l), BATgetId(r));
-                                       goto bailout;
-                               } else if (only_misses) {
+                               if (only_misses) {
                                        nr = 1;
                                        if (BUNlast(r1) == BATcapacity(r1)) {
                                                newcap = BATgrows(r1);
@@ -2303,10 +2260,7 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
                                }
                        }
                        if (nr == 0) {
-                               if (must_match) {
-                                       GDKerror("hashjoin(%s,%s) does not hit 
always => can't use fetchjoin.\n", BATgetId(l), BATgetId(r));
-                                       goto bailout;
-                               } else if (only_misses) {
+                               if (only_misses) {
                                        nr = 1;
                                        if (BUNlast(r1) == BATcapacity(r1)) {
                                                newcap = BATgrows(r1);
@@ -3055,7 +3009,7 @@ bandjoin(BAT *r1, BAT *r2, BAT *l, BAT *
 static gdk_return
 subleftjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr,
            int nil_matches, int nil_on_miss, int semi, int only_misses,
-           int must_match, BUN estimate, const char *name)
+           BUN estimate, const char *name)
 {
        BAT *r1, *r2 = NULL;
        BUN lcount, rcount, maxsize;
@@ -3089,16 +3043,15 @@ subleftjoin(BAT **r1p, BAT **r2p, BAT *l
        if (BATtdense(r) && (sr == NULL || BATtdense(sr)) && lcount > 0 && 
rcount > 0) {
                /* use special implementation for dense right-hand side */
                return mergejoin_void(r1, r2, l, r, sl, sr,
-                                     nil_on_miss, only_misses, must_match);
+                                     nil_on_miss, only_misses);
        } else if ((r->tsorted || r->trevsorted) &&
                   (BATtdense(r) ||
                    lcount < 1024 ||
                    BATcount(r) * (Tsize(r) + (r->T->vheap ? r->T->vheap->size 
: 0) + 2 * sizeof(BUN)) > GDK_mem_maxsize / (GDKnr_threads ? GDKnr_threads : 
1)))
                return mergejoin(r1, r2, l, r, sl, sr, nil_matches,
-                                nil_on_miss, semi, only_misses, must_match,
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to