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
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to