Changeset: b86fc77e194d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b86fc77e194d
Modified Files:
sql/server/rel_unnest.c
Branch: unnest2
Log Message:
add recusive cte v1
diffs (25 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
@@ -5561,6 +5561,21 @@ unnest(visitor *v, sql_rel *parent, sql_
or->r = add_outers(v, or->r, info, true);
}
rel->grouped = 1;
+ } else if (is_munion(rel->op) && is_recursive(rel)) {
+ list *rels = rel->l;
+ assert(list_length(rels) == 2);
+ sql_rel *base = rels->h->data;
+ sql_rel *iter = rels->h->next->data;
+ //list *base_acc = accessing(v, base, acc);
+ struct unnesting base_unnest = { .info = info->info };
+ list *base_acc = list_dup(acc, NULL);
+ unnest(v, rel, base, &base_unnest, base_acc);
+ //struct unnesting iter_unnest = { .info = info->info };
+ list *iter_acc = accessing(v, iter, acc);
+ //unnest(v, rel, iter, &iter_unnest, iter_acc);
+ unnest(v, rel, iter, info, iter_acc);
+ rel->exps = add_outers(v, rel->exps, info, false);
+ rel->exps = rewrite_columns(v, rel->exps, info);
} else if (is_munion(rel->op)) {
list *rels = rel->l;
for (node *n = rels->h; n; n = n->next) {
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]