Changeset: 30a19086985a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=30a19086985a
Modified Files:
        sql/server/rel_select.c
Branch: Mar2018
Log Message:

fixes for bug 6587


diffs (32 lines):

diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -2054,7 +2054,7 @@ rel_logical_value_exp(mvc *sql, sql_rel 
                dnode *n = dl->h->next;
                sql_rel *left = NULL, *right = NULL, *outer = *rel;
                sql_exp *l = NULL, *r = NULL;
-               int needproj = 0, vals_only = 1;
+               int needproj = 0, vals_only = 1, is_new = 0;
                list *vals = NULL, *pexps = NULL;
 
                if (outer && f == sql_sel && is_project(outer->op) && 
!is_processed(outer) && !list_empty(outer->exps)) {
@@ -2081,6 +2081,7 @@ rel_logical_value_exp(mvc *sql, sql_rel 
                if (!left || (!left->l && f == sql_sel && 
list_empty(left->exps))) {
                        needproj = (left != NULL);
                        left = rel_project_exp(sql->sa, l);
+                       is_new = 1;
                }
                if (left && is_project(left->op) && list_empty(left->exps))
                        left = left->l;
@@ -2107,6 +2108,11 @@ rel_logical_value_exp(mvc *sql, sql_rel 
                                        sql->errstr[0] = 0;
 
                                        z = left;
+                                       if (is_new) {
+                                               l = exp_label(sql->sa, l, 
++sql->label);
+                                               l = exp_column(sql->sa, 
exp_relname(l), exp_name(l), exp_subtype(l), l->card, has_nil(l), is_intern(l));
+                                               is_new = 0;
+                                       }
                                        r = rel_value_exp(sql, &z, sval, f, 
ek); 
                                        if (z == left && r) {
                                                if (l && r && 
IS_ANY(st->type->eclass)){
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to