Changeset: 91ba8d01c125 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/91ba8d01c125
Modified Files:
        sql/server/rel_unnest.c
Branch: Jul2021
Log Message:

Don't use TID column to union 'or' expressions with subqueries, the identity 
function is enough


diffs (31 lines):

diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -2129,12 +2129,12 @@ rewrite_or_exp(visitor *v, sql_rel *rel)
                                                rel = l;
                                        }
                                        rel = rel_add_identity(v->sql, rel, 
&id); /* identity function needed */
-                                       (void) id;
                                        assert(id);
 
                                        sql_rel *l = rel;
                                        sql_rel *r = rel_dup(rel);
-                                       list *exps = rel_projections(v->sql, 
rel, NULL, 1, 1);
+                                       list *exps = rel_projections(v->sql, 
rel, NULL, 1, 0); /* TID column must not be included */
+                                       list_append(exps, exp_ref(v->sql, id)); 
/* but identity must */
 
                                        l = rel_select(v->sql->sa, l, NULL);
                                        l->exps = e->l;
@@ -2145,8 +2145,10 @@ rewrite_or_exp(visitor *v, sql_rel *rel)
                                        if (!(r = rewrite_or_exp(v, r)))
                                                return NULL;
 
-                                       list *ls = rel_projections(v->sql, rel, 
NULL, 1, 1);
-                                       list *rs = rel_projections(v->sql, rel, 
NULL, 1, 1);
+                                       list *ls = rel_projections(v->sql, rel, 
NULL, 1, 0);
+                                       list_append(ls, exp_ref(v->sql, id));
+                                       list *rs = rel_projections(v->sql, rel, 
NULL, 1, 0);
+                                       list_append(rs, exp_ref(v->sql, id));
                                        if (!(rel = 
rel_setop_check_types(v->sql, l, r, ls, rs, op_union)))
                                                return NULL;
                                        rel_setop_set_exps(v->sql, rel, exps);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to