Changeset: 0a258a97c2c0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0a258a97c2c0
Modified Files:
sql/backends/monet5/rel_bin.c
Branch: Oct2020
Log Message:
Merged with Jun2020
diffs (40 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
@@ -2524,13 +2524,16 @@ rel2bin_semijoin(backend *be, sql_rel *r
list *l, *sexps = NULL;
node *en = NULL, *n;
stmt *left = NULL, *right = NULL, *join = NULL, *jl, *jr, *c, *lcand =
NULL;
- int semijoin_only = 0;
+ int semijoin_only = 0, l_is_base = 0;
if (rel->op == op_anti && !list_empty(rel->exps) &&
list_length(rel->exps) == 1 && ((sql_exp*)rel->exps->h->data)->flag ==
mark_notin)
return rel2bin_antijoin(be, rel, refs);
- if (rel->l) /* first construct the left sub relation */
- left = subrel_bin(be, rel->l, refs);
+ if (rel->l) { /* first construct the left sub relation */
+ sql_rel *l = rel->l;
+ l_is_base = is_basetable(l->op);
+ left = subrel_bin(be, l, refs);
+ }
if (rel->r) /* first construct the right sub relation */
right = subrel_bin(be, rel->r, refs);
if (!left || !right)
@@ -2730,10 +2733,14 @@ rel2bin_semijoin(backend *be, sql_rel *r
/* project all the left columns */
for( n = left->op4.lval->h; n; n = n->next ) {
- stmt *c = n->data;
+ stmt *c = n->data, *s;
const char *rnme = table_name(sql->sa, c);
const char *nme = column_name(sql->sa, c);
- stmt *s = stmt_project(be, join, column(be, c));
+
+ if (l_is_base && nme[0] == '%' && strcmp(nme, TID) == 0)
+ s = join;
+ else
+ s = stmt_project(be, join, column(be, c));
s = stmt_alias(be, s, rnme, nme);
list_append(l, s);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list