Changeset: c57a7d481da1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c57a7d481da1
Modified Files:
sql/server/rel_optimizer.c
sql/server/rel_select.c
Branch: window-tunning
Log Message:
A copy is still needed, leave for the optimizer to remove duplicate call
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
@@ -3261,7 +3261,7 @@ rel_push_down_bounds(visitor *v, sql_rel
for (n = exps->h; n ; n = n->next) {
sql_exp *e = n->data;
int cnt, fcnt, is_value, i = 0;
- sql_exp *b1, *b2;
+ sql_exp *b1, *b2, *last, *found;
sql_subfunc *f;
list *l;
@@ -3316,6 +3316,9 @@ rel_push_down_bounds(visitor *v, sql_rel
n->data =
exp_ref(v->sql, b1);
}
}
+ last = l->t->data; /* find duplicate
diff call for partition finding and reference the original one */
+ if (last->type == e_func &&
!strcmp(((sql_subfunc*) last->f)->func->base.name, "diff") && (found =
exps_any_match(((sql_rel*)rel->l)->exps, last)))
+ l->t->data = exp_ref(v->sql,
found);
}
}
}
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -4918,7 +4918,7 @@ rel_rankop(sql_query *query, sql_rel **r
} else if (frame_type == FRAME_UNBOUNDED_TILL_CURRENT_ROW ||
frame_type == FRAME_CURRENT_ROW_TILL_UNBOUNDED)
list_append(args, oe);
if (gbe && !is_value)
- list_append(args, start && eend ? exp_ref(sql, pe) :
pe);
+ list_append(args, start && eend ? exp_copy(sql, pe) :
pe);
}
call = exp_rank_op(sql->sa, list_empty(args) ? NULL : args, gbe, obe,
wf);
if (call && !exp_name(call))
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list