Changeset: eb43c9ee9ed5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/eb43c9ee9ed5
Modified Files:
sql/server/rel_optimize_proj.c
sql/server/rel_optimize_sel.c
sql/test/BugTracker-2026/Tests/7975-cleanup-join-exps.test
Branch: default
Log Message:
improved cleanup of project's
fixed try_duplicate_select, it shouldn't match on nid == 0
diffs (36 lines):
diff --git a/sql/server/rel_optimize_proj.c b/sql/server/rel_optimize_proj.c
--- a/sql/server/rel_optimize_proj.c
+++ b/sql/server/rel_optimize_proj.c
@@ -85,7 +85,8 @@ rel_push_project_down_(visitor *v, sql_r
return rel;
} else if (list_check_prop_all(rel->exps,
(prop_check_func)&exp_is_useless_rename)) {
if ((is_project(l->op) && list_length(l->exps) ==
list_length(rel->exps)) ||
- ((v->parent && is_project(v->parent->op)) &&
+ (/* cannot do this iff v->parent is op_table
(func), the it expects the proper set of columns */
+ (!v->parent || v->parent->op != op_table) &&
(is_mset(l->op) || is_set(l->op) ||
is_select(l->op) || is_join(l->op) || is_semi(l->op) || is_topn(l->op) ||
is_sample(l->op)))) {
rel->l = NULL;
rel_destroy(v->sql, rel);
diff --git a/sql/server/rel_optimize_sel.c b/sql/server/rel_optimize_sel.c
--- a/sql/server/rel_optimize_sel.c
+++ b/sql/server/rel_optimize_sel.c
@@ -4855,7 +4855,7 @@ try_duplicate_select(visitor *v, sql_rel
if (!e || !r || e->type != e_cmp || e->flag != cmp_equal || is_anti(e)
|| list_empty(r->exps) || rel_is_ref(r))
return;
sql_exp *el = e->l, *er = e->r;
- if (!exp_is_atom(er))
+ if (!exp_is_atom(er) || !el->nid)
return;
for (node *n = r->exps->h; n; n = n->next) {
sql_exp *je = n->data;
diff --git a/sql/test/BugTracker-2026/Tests/7975-cleanup-join-exps.test
b/sql/test/BugTracker-2026/Tests/7975-cleanup-join-exps.test
--- a/sql/test/BugTracker-2026/Tests/7975-cleanup-join-exps.test
+++ b/sql/test/BugTracker-2026/Tests/7975-cleanup-join-exps.test
@@ -37,7 +37,6 @@ WHERE a.id = b.id
AND a.k BETWEEN 4000 AND 4999
----
push_project_down 1
-push_project_up 1
optimize_select_and_joins_bottomup 4
query I
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]