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]