Changeset: 7ef3395a420d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7ef3395a420d
Modified Files:
        sql/server/rel_rewriter.h
        sql/server/rel_unnest.c
Branch: unnest2
Log Message:

when unnesting we don't need to make an already unique table unique.


diffs (32 lines):

diff --git a/sql/server/rel_rewriter.h b/sql/server/rel_rewriter.h
--- a/sql/server/rel_rewriter.h
+++ b/sql/server/rel_rewriter.h
@@ -46,7 +46,6 @@ extern int find_member_pos(list *l, sql_
 extern sql_column *name_find_column(sql_rel *rel, const char *rname, const 
char *name, int pnr, sql_rel **bt);
 
 extern int exp_joins_rels(sql_exp *e, list *rels);
-/* WARNING exps_unique doesn't check for duplicate NULL values */
 extern int kc_column_cmp(sql_kc *kc, sql_column *c);
 extern int exps_unique(mvc *sql, sql_rel *rel, list *exps, bool unique_nulls);
 
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
@@ -1182,7 +1182,6 @@ rewrite_empty_project(visitor *v, sql_re
                list *exps = l->exps;
                sql_exp *e = exps->h->data;
                if (!e->f && exp_is_atom(e) && exp_is_true(e) && 
!exps_uses_exp(rel->exps, e) && !exps_have_rel_exp(rel->exps) && 
exps_are_atoms(rel->exps) && !exps_have_rank(rel->exps)) {
-                       //printf("cleanup \n");
                        rel_destroy(v->sql, l);
                        rel->l = NULL;
                        v->changes++;
@@ -4020,7 +4019,8 @@ rel_djoin_elim(visitor *v, sql_rel *prel
                        d = rel_project(v->sql->sa, rel_dup(d), 
rel_projections(v->sql, d, NULL, 0, 1));
                }
        }
-       rel_distinct(d);
+       if (!exps_unique(v->sql, d->l, d->exps, true))
+               rel_distinct(d);
 
        struct unnesting_info info = { .join = rel, .outer_refs = outer_refs, 
.d = d, .refs = refs };
        struct unnesting unnesting = { .info = &info, .parent = parent };
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to