Changeset: 188c793f2e0e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/188c793f2e0e
Modified Files:
sql/server/rel_exp.c
sql/server/rel_rewriter.c
Branch: groupjoin
Log Message:
enable some more expression rewriting on left outer group joins
diffs (23 lines):
diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -1832,6 +1832,7 @@ exp_regular_cmp_exp_is_false(sql_exp* e)
assert(e->type == e_cmp);
if (is_semantics(e) && !is_any(e)) return exp_is_cmp_exp_is_false(e);
+ if (is_any(e)) return false;
if (e -> f) return exp_two_sided_bound_cmp_exp_is_false(e);
else return exp_single_bound_cmp_exp_is_false(e);
}
diff --git a/sql/server/rel_rewriter.c b/sql/server/rel_rewriter.c
--- a/sql/server/rel_rewriter.c
+++ b/sql/server/rel_rewriter.c
@@ -205,7 +205,7 @@ rewrite_simplify(visitor *v, uint8_t cyc
if ((is_select(rel->op) || is_join(rel->op) || is_semi(rel->op)) &&
!list_empty(rel->exps)) {
int changes = v->changes;
- rel->exps = list_empty(rel->attr)?exps_simplify_exp(v,
rel->exps):rel->exps;
+ rel->exps = exps_simplify_exp(v, rel->exps);
/* At a select or inner join relation if the single expression
is false, eliminate the inner relations with a dummy projection */
if (value_based_opt && (v->changes > changes || cycle == 0) &&
(is_select(rel->op) || is_innerjoin(rel->op)) &&
!is_single(rel) && list_length(rel->exps) == 1 &&
(exp_is_false(rel->exps->h->data) || exp_is_null(rel->exps->h->data))) {
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]