Changeset: 2cca856c1f50 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2cca856c1f50
Modified Files:
sql/server/rel_rewriter.c
Branch: default
Log Message:
Don't simplify single inner joins or selects
diffs (14 lines):
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
@@ -181,8 +181,8 @@ rewrite_simplify(visitor *v, sql_rel *re
int changes = v->changes, level = *(int*)v->data;
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 (v->value_based_opt && (v->changes > changes || level == 0)
&& list_length(rel->exps) == 1 &&
- (is_select(rel->op) || is_innerjoin(rel->op)) &&
(exp_is_false(rel->exps->h->data) || exp_is_null(rel->exps->h->data))) {
+ if (v->value_based_opt && (v->changes > changes || level == 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))) {
list *nexps = sa_list(v->sql->sa), *toconvert =
rel_projections(v->sql, rel->l, NULL, 1, 1);
if (is_innerjoin(rel->op))
toconvert = list_merge(toconvert,
rel_projections(v->sql, rel->r, NULL, 1, 1), NULL);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list