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
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to