Changeset: 2e5cbbf2f689 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2e5cbbf2f689
Modified Files:
        sql/server/rel_unnest.c
Branch: Jun2020
Log Message:

After unnesting is done, the 'freevar' flag becomes meaningless, so remove it 
at the end of rel_unnest. At the same time we don't expect empty relations or 
expressions on the visitor functions


diffs (28 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
@@ -1640,13 +1640,14 @@ rewrite_empty_project(mvc *sql, sql_rel 
 }
 
 static sql_exp *
-exp_reset_card(mvc *sql, sql_rel *rel, sql_exp *e, int depth, int *changes)
+exp_reset_card_and_freevar(mvc *sql, sql_rel *rel, sql_exp *e, int depth, int 
*changes)
 {
        (void)sql;
        (void)depth;
        (void)changes;
 
-       if (!e || !rel || !rel->l)
+       reset_freevar(e); /* unnesting is done, we can remove the freevar flag 
*/
+       if (!rel->l)
                return e;
        if (is_groupby(rel->op)) {
                switch(e->type) {
@@ -3162,6 +3163,6 @@ rel_unnest(mvc *sql, sql_rel *rel)
        rel = rel_visitor_bottomup(sql, rel, &rewrite_groupings, &changes);     
/* transform group combinations into union of group relations */
        rel = rel_visitor_bottomup(sql, rel, &rewrite_empty_project, &changes);
        // needed again! 
-       rel = rel_exp_visitor_bottomup(sql, rel, &exp_reset_card, &changes);
+       rel = rel_exp_visitor_bottomup(sql, rel, &exp_reset_card_and_freevar, 
&changes);
        return rel;
 }
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to