Changeset: b221d6cc6ac6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b221d6cc6ac6
Modified Files:
sql/server/rel_optimizer.c
Branch: Jun2020
Log Message:
Don't use existing changes on the relational plan into the optimizer's changes
counter. It will give false positives possibly
diffs (34 lines):
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -1648,8 +1648,13 @@ rel_push_func_down(visitor *v, sql_rel *
rel->r = r = rel_project(v->sql->sa, r,
rel_projections(v->sql, r, NULL, 1, 1));
}
nrel = rel_project(v->sql->sa, rel,
rel_projections(v->sql, rel, NULL, 1, 1));
- if (!(exps = exps_push_single_func_down(v, rel, l, r,
exps)))
+
+ int old_changes = v->changes;
+ v->changes = 0;
+ if (!(exps = exps_push_single_func_down(v, rel, l, r,
exps))) {
+ v->changes = old_changes;
return NULL;
+ }
if (v->changes) {
rel = nrel;
} else {
@@ -1658,6 +1663,7 @@ rel_push_func_down(visitor *v, sql_rel *
if (is_joinop(rel->op) && r != or)
rel->r = or;
}
+ v->changes += old_changes;
}
}
if (rel->op == op_project && rel->l && rel->exps) {
@@ -9523,6 +9529,7 @@ rel_optimizer(mvc *sql, sql_rel *rel, in
rel = rel_keep_renames(sql, rel);
for( ;rel && level < 20 && changes; level++)
rel = optimize_rel(sql, rel, &changes, level, value_based_opt);
+ assert(level < 20);
sql->Topt += GDKusec() - Tbegin;
return rel;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list