Changeset: 23c953f8e7ba for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=23c953f8e7ba
Modified Files:
sql/server/rel_select.c
sql/test/analytics/Tests/analytics09.sql
sql/test/analytics/Tests/analytics09.stable.err
sql/test/analytics/Tests/analytics09.stable.out
Branch: default
Log Message:
Merge with Nov2019
diffs (295 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
@@ -4510,7 +4510,7 @@ rel_rankop(sql_query *query, sql_rel **r
return NULL;
} else if (is_sql_aggr(f)) {
char *uaname = GDKmalloc(strlen(aname) + 1);
- (void) sql_error(sql, 02, SQLSTATE(42000) "%s: window functions
not allowed inside aggregates",
+ (void) sql_error(sql, 02, SQLSTATE(42000) "%s: window functions
not allowed inside aggregation functions",
uaname ? toUpperCopy(uaname,
aname) : aname);
if (uaname)
GDKfree(uaname);
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
@@ -3,7 +3,7 @@ insert into analytics values (15, 3), (3
select cast(sum(1) over () as bigint), rank() over (), nth_value(1, 1) over ();
-select avg(sum(aa) over ()) from analytics;
+select avg(sum(aa) over ()) from analytics; --error, window functions not
allowed inside aggregates
select cast(sum(1) * count(*) over () as bigint);
@@ -115,6 +115,6 @@ select 1 from analytics order by sum(sum
select 1 from analytics having sum(aa) over (); --error, window function not
allowed in having clause
-select sum(avg(aa) over ()) over () from analytics; --error, window functions
inside aggregate
+select sum(avg(aa) over ()) from analytics; --error, window functions not
allowed inside aggregates
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
@@ -28,7 +28,11 @@ stderr of test 'analytics09` in director
# 13:13:17 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-1389" "--port=37694"
# 13:13:17 >
-MAPI = (monetdb) /var/tmp/mtest-17924/.s.monetdb.36475
+MAPI = (monetdb) /var/tmp/mtest-155309/.s.monetdb.35365
+QUERY = select avg(sum(aa) over ()) from analytics; --error, window functions
not allowed inside aggregates
+ERROR = !SUM: window functions not allowed inside aggregation functions
+CODE = 42000
+MAPI = (monetdb) /var/tmp/mtest-155309/.s.monetdb.35365
QUERY = select cast(sum(aa) * 100 / sum(sum(aa)) over (partition by bb) as
bigint) from analytics; --error, nesting aggregation functions
ERROR = !SELECT: cannot use non GROUP BY column 'bb' in query results without
an aggregate function
CODE = 42000
@@ -68,6 +72,10 @@ MAPI = (monetdb) /var/tmp/mtest-4073/.s
QUERY = select 1 from analytics having sum(aa) over (); --error, window
function not allowed in having clause
ERROR = !SUM: window function 'sum' not allowed in HAVING clause
CODE = 42000
+MAPI = (monetdb) /var/tmp/mtest-155309/.s.monetdb.35365
+QUERY = select sum(avg(aa) over ()) from analytics; --error, window functions
not allowed inside aggregates
+ERROR = !AVG: window functions not allowed inside aggregation functions
+CODE = 42000
# 13:13:17 >
# 13:13:17 > "Done."
diff --git a/sql/test/analytics/Tests/analytics09.stable.out
b/sql/test/analytics/Tests/analytics09.stable.out
--- a/sql/test/analytics/Tests/analytics09.stable.out
+++ b/sql/test/analytics/Tests/analytics09.stable.out
@@ -27,31 +27,25 @@ stdout of test 'analytics09` in director
#insert into analytics values (15, 3), (3, 1), (2, 1), (5, 3), (NULL, 2), (3,
2), (4, 1), (6, 3), (8, 2), (NULL, 4);
[ 10 ]
#select cast(sum(1) over () as bigint), rank() over (), nth_value(1, 1) over
();
-% .%1, .%3, .%4 # table_name
-% %1, %3, %4 # name
+% ., ., . # table_name
+% %1, %2, %3 # name
% bigint, int, tinyint # type
% 1, 1, 1 # length
[ 1, 1, 1 ]
-#select avg(sum(aa) over ()) from analytics;
-% sys.%1 # table_name
-% %1 # name
-% double # type
-% 24 # length
-[ 46 ]
#select cast(sum(1) * count(*) over () as bigint);
-% .%3 # table_name
+% . # table_name
% %3 # name
% bigint # type
% 1 # length
[ 1 ]
#select cast(sum(aa) * count(*) over () as bigint) from analytics;
-% sys.%3 # table_name
+% sys. # table_name
% %3 # name
% bigint # type
% 2 # length
[ 46 ]
#select cast(aa * count(1) over () as bigint) from analytics;
-% sys.%1 # table_name
+% sys. # table_name
% %1 # name
% bigint # type
% 3 # length
@@ -66,26 +60,26 @@ stdout of test 'analytics09` in director
[ 80 ]
[ NULL ]
#select cast(sum(aa) * count(1) over () as bigint) from analytics;
-% sys.%2 # table_name
+% sys. # table_name
% %2 # name
% bigint # type
% 2 # length
[ 46 ]
#select cast(sum(aa) * count(1 + aa) / avg(1) over () as bigint) from
analytics;
-% sys.%3 # table_name
-% %3 # name
+% sys. # table_name
+% %5 # name
% bigint # type
% 3 # length
[ 368 ]
#select avg(sum(aa)) over () from analytics;
-% sys.%2 # table_name
+% sys. # table_name
% %2 # name
% double # type
% 24 # length
[ 46 ]
#select sum(cast(aa as double)) over (rows unbounded preceding) from analytics;
-% sys.%2 # table_name
-% %2 # name
+% sys. # table_name
+% %3 # name
% double # type
% 24 # length
[ 15 ]
@@ -99,8 +93,8 @@ stdout of test 'analytics09` in director
[ 46 ]
[ 46 ]
#select sum(cast(aa as double)) over (range unbounded preceding) from
analytics;
-% sys.%2 # table_name
-% %2 # name
+% sys. # table_name
+% %3 # name
% double # type
% 24 # length
[ 46 ]
@@ -114,31 +108,31 @@ stdout of test 'analytics09` in director
[ 46 ]
[ 46 ]
#select avg(avg(aa)) over (rows unbounded preceding) from analytics;
-% sys.%2 # table_name
+% sys. # table_name
% %2 # name
% double # type
% 24 # length
[ 5.75 ]
#select avg(avg(aa)) over (range unbounded preceding) from analytics;
-% sys.%2 # table_name
+% sys. # table_name
% %2 # name
% double # type
% 24 # length
[ 5.75 ]
#select avg(sum(aa)) over (rows unbounded preceding) from analytics;
-% sys.%2 # table_name
+% sys. # table_name
% %2 # name
% double # type
% 24 # length
[ 46 ]
#select avg(sum(aa)) over (range unbounded preceding) from analytics;
-% sys.%2 # table_name
+% sys. # table_name
% %2 # name
% double # type
% 24 # length
[ 46 ]
#select avg(sum(aa)) over (), avg(avg(aa)) over () from analytics;
-% sys.%3, sys.%4 # table_name
+% sys., sys. # table_name
% %3, %4 # name
% double, double # type
% 24, 24 # length
@@ -147,13 +141,13 @@ stdout of test 'analytics09` in director
# cast(sum(aa) * count(case when bb < 2 then bb - 1 else bb + 1 end) /
avg(1) over (rows between current row and current row) as bigint),
# avg(sum(aa)) over (rows unbounded preceding),
# avg(sum(aa)) over (range unbounded preceding) from analytics;
-% sys.%10, sys.%4, sys.%12, sys.%13 # table_name
-% %10, %4, %12, %13 # name
+% sys., sys., sys., sys. # table_name
+% %7, %10, %11, %12 # name
% double, bigint, double, double # type
% 24, 3, 24, 24 # length
[ 46, 460, 46, 46 ]
#select avg(sum(aa)) over () from analytics group by aa;
-% sys.%2 # table_name
+% sys. # table_name
% %2 # name
% double # type
% 24 # length
@@ -166,7 +160,7 @@ stdout of test 'analytics09` in director
[ 6.571428571 ]
[ 6.571428571 ]
#select cast(sum(aa) * count(aa) / avg(aa) over (rows between current row and
unbounded following) as bigint) from analytics group by aa;
-% sys.%3 # table_name
+% sys. # table_name
% %3 # name
% bigint # type
% 1 # length
@@ -182,8 +176,8 @@ stdout of test 'analytics09` in director
# avg(sum(aa)) over (rows unbounded preceding),
# cast(sum(aa) * count(aa) / avg(aa) over (rows between current row and
unbounded following) as bigint),
# avg(sum(aa)) over (range unbounded preceding) from analytics group by
aa;
-% sys.%7, sys.%10, sys.%5, sys.%12 # table_name
-% %7, %10, %5, %12 # name
+% sys., sys., sys., sys. # table_name
+% %6, %7, %10, %11 # name
% double, double, bigint, double # type
% 24, 24, 1, 24 # length
[ 6.571428571, 15, 2, 6.571428571 ]
@@ -196,7 +190,7 @@ stdout of test 'analytics09` in director
[ 6.571428571, 6.571428571, 1, 6.571428571 ]
#select cast(sum(aa) * count(aa) over () as bigint),
# cast(sum(aa) over () as bigint) from analytics group by aa;
-% sys.%2, sys.%3 # table_name
+% sys., sys. # table_name
% %2, %3 # name
% bigint, bigint # type
% 3, 2 # length
@@ -210,8 +204,8 @@ stdout of test 'analytics09` in director
[ 56, 43 ]
#select cast(sum(sum(aa)) over () as bigint),
# cast(sum(aa) * count(count(aa)) over () as bigint) from analytics
group by aa;
-% sys.%2, sys.%5 # table_name
-% %2, %5 # name
+% sys., sys. # table_name
+% %4, %5 # name
% bigint, bigint # type
% 2, 3 # length
[ 46, 120 ]
@@ -224,7 +218,7 @@ stdout of test 'analytics09` in director
[ 46, 64 ]
#select count(aa) over (),
# avg(aa) over () * count(aa) from analytics group by aa;
-% sys.%2, sys.%3 # table_name
+% sys., sys. # table_name
% %2, %3 # name
% bigint, double # type
% 1, 24 # length
@@ -239,8 +233,8 @@ stdout of test 'analytics09` in director
#select cast(sum(aa) over () as bigint),
# cast(sum(aa) over () as bigint),
# cast(sum(aa) * count(aa) over () as bigint) from analytics group by aa;
-% sys.%1, sys.%2, sys.%4 # table_name
-% %1, %2, %4 # name
+% sys., sys., sys. # table_name
+% %2, %3, %4 # name
% bigint, bigint, bigint # type
% 2, 2, 3 # length
[ 43, 43, 105 ]
@@ -254,8 +248,8 @@ stdout of test 'analytics09` in director
#select 21 - avg(sum(aa)) over (),
# avg(45 * count(aa) + sum(aa)) over (),
# cast(sum(aa) * count(aa) over () as bigint) from analytics group by aa;
-% .%6, sys.%7, sys.%5 # table_name
-% %6, %7, %5 # name
+% ., sys., sys. # table_name
+% %10, %11, %12 # name
% double, double, bigint # type
% 24, 24, 3 # length
[ 14.42857143, 58, 105 ]
@@ -276,14 +270,14 @@ stdout of test 'analytics09` in director
[ 26 ]
[ NULL ]
#select cast(sum(aa) * 100 / sum(sum(aa)) over () as bigint) from analytics;
-% sys.%3 # table_name
+% sys. # table_name
% %3 # name
% bigint # type
% 3 # length
[ 100 ]
#select cast(sum(aa) * 100 / sum(sum(aa)) over (partition by bb) as bigint)
from analytics group by bb;
-% sys.%3 # table_name
-% %3 # name
+% sys. # table_name
+% %6 # name
% bigint # type
% 3 # length
[ 100 ]
@@ -384,7 +378,7 @@ stdout of test 'analytics09` in director
[ 1 ]
#select avg(sum(aa)) over (rows unbounded preceding),
# rank() over (partition by sum(aa)) from analytics;
-% sys.%7, sys.%6 # table_name
+% sys., sys.%6 # table_name
% %7, %6 # name
% double, int # type
% 24, 1 # length
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list