Changeset: 914c545a9817 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/914c545a9817 Modified Files: sql/server/rel_optimize_proj.c sql/test/rel-optimizers/Tests/const-aggr-elim.test Branch: const_aggr_elim Log Message:
Fixed problem which caused mtests fail diffs (58 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 @@ -3031,16 +3031,13 @@ rel_const_aggr_elimination(visitor *v, s { list *exps=g->exps; - if(g->op == op_groupby && !list_empty(exps)) + if(g->op == op_groupby && !list_empty(exps) && !list_empty(g->r)) { for(node *n = exps->h; n; n = n->next) { sql_exp *e = n->data; - // SELECT 1 + avg(3), avg(3) * 10 FROM baz GROUP BY b; - // Check aggr type! exp_aggr_is_count(e) - // only average for now! if(e->type == e_aggr && !((sql_subfunc *)e->f)->func->s && strcmp(((sql_subfunc *)e->f)->func->base.name, "avg") == 0) @@ -3057,6 +3054,11 @@ rel_const_aggr_elimination(visitor *v, s n->data=w; + // Alternative; + //list_append_before(g->exps,n,w); + //m->data=NULL; + //list_remove_node(g->exps,NULL,n); + v->changes++; } } diff --git a/sql/test/rel-optimizers/Tests/const-aggr-elim.test b/sql/test/rel-optimizers/Tests/const-aggr-elim.test --- a/sql/test/rel-optimizers/Tests/const-aggr-elim.test +++ b/sql/test/rel-optimizers/Tests/const-aggr-elim.test @@ -13,6 +13,21 @@ 6 7 query I rowsort +select avg(3) from generate_series(cast(0 as integer), 10, 1); +---- +3 + +query T nosort +PLAN SELECT avg(3) FROM generate_series(cast(0 as integer), 10, 1); +---- +project ( +| group by ( +| | table ("sys"."generate_series"(int(31) "0", int(4) "10", int(1) "1"), +| | ) [ "%1"."value" ] +| ) [ ] [ "sys"."avg" no nil (tinyint(2) "3") UNIQUE as "%2"."%2" ] +) [ "%2"."%2" UNIQUE ] + +query I rowsort SELECT avg(3) FROM baz GROUP BY b ---- 3 _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org