Changeset: 43ecd1bf4fce for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=43ecd1bf4fce
Modified Files:
sql/backends/monet5/rel_bin.c
Branch: Jul2017
Log Message:
handle semi/anti join better with constants (fixes bug 6417)
diffs (29 lines):
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -1962,8 +1962,12 @@ rel2bin_semijoin(backend *be, sql_rel *r
idx = 1;
/* stop on first non equality join */
if (!join) {
- if (en->next && s->type != st_join && s->type
!= st_join2 && s->type != st_joinN)
- break;
+ if (s->type != st_join && s->type != st_join2
&& s->type != st_joinN) {
+ if (!en->next && (s->type == st_uselect
|| s->type == st_uselect2))
+ join = s;
+ else
+ break;
+ }
join = s;
} else if (s->type != st_join && s->type != st_join2 &&
s->type != st_joinN) {
/* handle select expressions */
@@ -2026,6 +2030,10 @@ rel2bin_semijoin(backend *be, sql_rel *r
assert(0);
return NULL;
}
+ if (s->nrcols == 0) {
+ stmt *l = bin_first_column(be, sub);
+ s = stmt_uselect(be, stmt_const(be, l,
stmt_bool(be, 1)), s, cmp_equal, sel, 0);
+ }
sel = s;
}
/* recreate join output */
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list