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
