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 -- [email protected]
To unsubscribe send an email to [email protected]