Changeset: 5a8fc5a70490 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5a8fc5a70490 Modified Files: sql/server/rel_optimizer.c sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.sql sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.stable.out Branch: octbugs Log Message:
Don't create identical groupings diffs (52 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 @@ -6102,10 +6102,12 @@ rel_groupby_distinct(visitor *v, sql_rel list_append(exps, darg); darg = exp_ref(v->sql, darg); arg->h->data = darg; - l = rel->l = rel_groupby(v->sql, rel->l, gbe); - l->exps = exps; - set_processed(l); - rel->r = ngbe; + if (!exp_match_list(ngbe, gbe)) { /* if the grouping columns match don't create an extra grouping */ + l = rel->l = rel_groupby(v->sql, rel->l, gbe); + l->exps = exps; + set_processed(l); + rel->r = ngbe; + } rel->exps = nexps; set_nodistinct(distinct); append(nexps, distinct); diff --git a/sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.sql b/sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.sql --- a/sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.sql +++ b/sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.sql @@ -1,3 +1,4 @@ CREATE TABLE tab0(col0 INTEGER, col1 INTEGER, col2 INTEGER); SELECT - col0 AS col1 FROM tab0 AS cor0 WHERE NOT + col0 IS NOT NULL GROUP BY col1, col0 HAVING NOT - col1 + + AVG ( DISTINCT col0 ) IS NULL; +PLAN SELECT - col0 AS col1 FROM tab0 AS cor0 WHERE NOT + col0 IS NOT NULL GROUP BY col1, col0 HAVING NOT - col1 + + AVG ( DISTINCT col0 ) IS NULL; DROP TABLE tab0; diff --git a/sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.stable.out b/sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.stable.out --- a/sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.stable.out +++ b/sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-having-avg.Bug-6428.stable.out @@ -29,6 +29,20 @@ stdout of test 'sqlitelogictest-aggregat % col1 # name % int # type % 1 # length +#PLAN SELECT - col0 AS col1 FROM tab0 AS cor0 WHERE NOT + col0 IS NOT NULL GROUP BY col1, col0 HAVING NOT - col1 + + AVG ( DISTINCT col0 ) IS NULL; +% .plan # table_name +% rel # name +% clob # type +% 116 # length +project ( +| select ( +| | group by ( +| | | select ( +| | | | table(sys.tab0) [ "tab0"."col0" as "cor0"."col0", "tab0"."col1" as "cor0"."col1" ] COUNT +| | | ) [ "cor0"."col0" * = int "NULL" ] +| | ) [ "cor0"."col1", "cor0"."col0" ] [ "cor0"."col1", "cor0"."col0", sys.avg no nil ("cor0"."col0") as "%1"."%1" ] +| ) [ sys.sql_add(double[sys.sql_neg("cor0"."col1")], "%1"."%1") ! * = double "NULL" ] +) [ sys.sql_neg("cor0"."col0") as "col1" ] #DROP TABLE tab0; # 13:10:16 > _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list