Re: MonetDB: default - Use normal join code for thetajoin with == op...
On Fri, May 17, 2013 at 11:33:39AM +0200, Sjoerd Mullender wrote:
Changeset: f2c52e636835 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f2c52e636835 Modified Files: gdk/gdk_join.c Branch: default Log Message:
Use normal join code for thetajoin with == operator.
diffs (22 lines):
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c --- a/gdk/gdk_join.c +++ b/gdk/gdk_join.c @@ -1720,11 +1720,17 @@ BATsubthetajoin(BAT **r1p, BAT **r2p, BA { BAT *r1, *r2;
+ if (op[0] == '=' && ((op[1] == '=' && op[2] == 0) || op[2] == 0)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~ Sjoerd,
given the last predicate ("~"), the second ("^") seems obsolete to me. Should the last one rather read "op[1] == 0", i.e., both op == "==" and op == "=" indicate an equality predicate? Or should the last predicate be opmitted completely to accept only op = "==" as euality predicate? Stefan
+ return BATsubjoin(r1p, r2p, l, r, sl, sr, estimate); + *r1p = NULL; *r2p = NULL; if (joinparamcheck(l, r, sl, sr, "BATsubthetajoin") == GDK_FAIL) return GDK_FAIL; - if (joininitresults(&r1, &r2, estimate != BUN_NONE ? estimate : sl ? BATcount(sl) : BATcount(l), "BATsubthetajoin") == GDK_FAIL) + if (joininitresults(&r1, &r2, + estimate != BUN_NONE ? estimate : + (sl ? BATcount(sl) : BATcount(l)) * (sr ? BATcount(sr) : BATcount(r)), + "BATsubthetajoin") == GDK_FAIL) return GDK_FAIL; *r1p = r1; *r2p = r2; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list
-- | Stefan.Manegold@CWI.nl | DB Architectures (DA) | | www.CWI.nl/~manegold | Science Park 123 (L321) | | +31 (0)20 592-4212 | 1098 XG Amsterdam (NL) |
See changeset c1a95b2d9a1f. On 2013-05-21 17:01, Stefan Manegold wrote:
On Fri, May 17, 2013 at 11:33:39AM +0200, Sjoerd Mullender wrote:
Changeset: f2c52e636835 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f2c52e636835 Modified Files: gdk/gdk_join.c Branch: default Log Message:
Use normal join code for thetajoin with == operator.
diffs (22 lines):
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c --- a/gdk/gdk_join.c +++ b/gdk/gdk_join.c @@ -1720,11 +1720,17 @@ BATsubthetajoin(BAT **r1p, BAT **r2p, BA { BAT *r1, *r2;
+ if (op[0] == '=' && ((op[1] == '=' && op[2] == 0) || op[2] == 0)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ~~~~~~~~~~ Sjoerd,
given the last predicate ("~"), the second ("^") seems obsolete to me.
Should the last one rather read "op[1] == 0", i.e., both op == "==" and op == "=" indicate an equality predicate?
Or should the last predicate be opmitted completely to accept only op = "==" as euality predicate?
Stefan
+ return BATsubjoin(r1p, r2p, l, r, sl, sr, estimate); + *r1p = NULL; *r2p = NULL; if (joinparamcheck(l, r, sl, sr, "BATsubthetajoin") == GDK_FAIL) return GDK_FAIL; - if (joininitresults(&r1, &r2, estimate != BUN_NONE ? estimate : sl ? BATcount(sl) : BATcount(l), "BATsubthetajoin") == GDK_FAIL) + if (joininitresults(&r1, &r2, + estimate != BUN_NONE ? estimate : + (sl ? BATcount(sl) : BATcount(l)) * (sr ? BATcount(sr) : BATcount(r)), + "BATsubthetajoin") == GDK_FAIL) return GDK_FAIL; *r1p = r1; *r2p = r2; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list
-- Sjoerd Mullender
participants (2)
-
Sjoerd Mullender
-
Stefan Manegold