Changeset: cbe0d3799216 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cbe0d3799216
Modified Files:
        sql/server/rel_select.c
        sql/test/analytics/Tests/analytics09.sql
        sql/test/analytics/Tests/analytics09.stable.err
Branch: groupby-expressions
Log Message:

For now, we won't support aggregation functions in partition by clause.


diffs (96 lines):

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
@@ -3566,10 +3566,11 @@ static sql_exp *
                if (uaname)
                        GDKfree(uaname);
                return e;
-       } else if(is_sql_groupby(f)) {
+       } else if(is_sql_groupby(f) || is_sql_partitionby(f)) {
+               const char *clause = is_sql_groupby(f) ? "GROUP BY":"PARTITION 
BY";
                char *uaname = GDKmalloc(strlen(aname) + 1);
-               sql_exp *e = sql_error(sql, 02, SQLSTATE(42000) "%s: aggregate 
function '%s' not allowed in GROUP BY clause",
-                                                          uaname ? 
toUpperCopy(uaname, aname) : aname, aname);
+               sql_exp *e = sql_error(sql, 02, SQLSTATE(42000) "%s: aggregate 
function '%s' not allowed in %s clause",
+                                                          uaname ? 
toUpperCopy(uaname, aname) : aname, aname, clause);
                if (uaname)
                        GDKfree(uaname);
                return e;
diff --git a/sql/test/analytics/Tests/analytics09.sql 
b/sql/test/analytics/Tests/analytics09.sql
--- a/sql/test/analytics/Tests/analytics09.sql
+++ b/sql/test/analytics/Tests/analytics09.sql
@@ -57,4 +57,24 @@ select rank() over (partition by case wh
 
 select rank() over (partition by sum(aa)) from analytics; --TODO we don't 
support expressions in partition by as well group by
 
+select rank() over (partition by 12*sum(aa)) from analytics; --TODO
+
+select rank() over (partition by sum(aa)) from analytics group by aa; --TODO
+
+select rank() over (partition by sum(aa)) from analytics group by bb; --TODO
+
+select rank() over (partition by sum(aa)*sum(bb)) from analytics; --TODO
+
+select rank() over (partition by sum(aa), sum(bb)) from analytics; --TODO
+
+select rank() over (partition by sum(aa), sum(bb)) from analytics group by aa; 
--TODO
+
+select rank() over (partition by sum(aa), bb) from analytics group by aa; 
--TODO should be an error
+
+select min(aa) over (partition by sum(bb)) from analytics; --TODO should be an 
error
+
+select min(aa) over (partition by sum(aa)) from analytics; ---TODO should be 
an error
+
+select rank() over (order by sum(aa)) from analytics; --TODO
+
 drop table analytics;
diff --git a/sql/test/analytics/Tests/analytics09.stable.err 
b/sql/test/analytics/Tests/analytics09.stable.err
--- a/sql/test/analytics/Tests/analytics09.stable.err
+++ b/sql/test/analytics/Tests/analytics09.stable.err
@@ -56,6 +56,46 @@ ERROR = !SELECT: subquery result missing
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-11873/.s.monetdb.31832
 QUERY = select rank() over (partition by sum(aa)) from analytics; --TODO we 
don't support expressions in partition by as well group by
+ERROR = !SUM: aggregate function 'sum' not allowed in PARTITION BY clause
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-10156/.s.monetdb.31763
+QUERY = select rank() over (partition by 12*sum(aa)) from analytics; --TODO
+ERROR = !SUM: aggregate function 'sum' not allowed in PARTITION BY clause
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-10156/.s.monetdb.31763
+QUERY = select rank() over (partition by sum(aa)) from analytics group by aa; 
--TODO
+ERROR = !SUM: aggregate function 'sum' not allowed in PARTITION BY clause
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-10156/.s.monetdb.31763
+QUERY = select rank() over (partition by sum(aa)) from analytics group by bb; 
--TODO
+ERROR = !SUM: aggregate function 'sum' not allowed in PARTITION BY clause
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-10156/.s.monetdb.31763
+QUERY = select rank() over (partition by sum(aa)*sum(bb)) from analytics; 
--TODO
+ERROR = !SUM: aggregate function 'sum' not allowed in PARTITION BY clause
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-10156/.s.monetdb.31763
+QUERY = select rank() over (partition by sum(aa), sum(bb)) from analytics; 
--TODO
+ERROR = !SUM: aggregate function 'sum' not allowed in PARTITION BY clause
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-10156/.s.monetdb.31763
+QUERY = select rank() over (partition by sum(aa), sum(bb)) from analytics 
group by aa; --TODO
+ERROR = !SUM: aggregate function 'sum' not allowed in PARTITION BY clause
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-10156/.s.monetdb.31763
+QUERY = select rank() over (partition by sum(aa), bb) from analytics group by 
aa; --TODO should be an error
+ERROR = !SUM: aggregate function 'sum' not allowed in PARTITION BY clause
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-10156/.s.monetdb.31763
+QUERY = select min(aa) over (partition by sum(bb)) from analytics; --TODO 
should be an error
+ERROR = !SUM: aggregate function 'sum' not allowed in PARTITION BY clause
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-10156/.s.monetdb.31763
+QUERY = select min(aa) over (partition by sum(aa)) from analytics; ---TODO 
should be an error
+ERROR = !SUM: aggregate function 'sum' not allowed in PARTITION BY clause
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-10884/.s.monetdb.34034
+QUERY = select rank() over (order by sum(aa)) from analytics; --TODO
 ERROR = !Cannot use non GROUP BY column 'aa' in query results without an 
aggregate function
 CODE  = 42000
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to