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]

Reply via email to