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