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