should be it
This commit is contained in:
133
external/duckdb/test/sql/window/test_invalid_window.test
vendored
Normal file
133
external/duckdb/test/sql/window/test_invalid_window.test
vendored
Normal file
@@ -0,0 +1,133 @@
|
||||
# name: test/sql/window/test_invalid_window.test
|
||||
# description: Illegal window function
|
||||
# group: [window]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE empsalary (depname varchar, empno bigint, salary int, enroll_date date)
|
||||
|
||||
statement ok
|
||||
INSERT INTO empsalary VALUES ('develop', 10, 5200, '2007-08-01'), ('sales', 1, 5000, '2006-10-01'), ('personnel', 5, 3500, '2007-12-10'), ('sales', 4, 4800, '2007-08-08'), ('personnel', 2, 3900, '2006-12-23'), ('develop', 7, 4200, '2008-01-01'), ('develop', 9, 4500, '2008-01-01'), ('sales', 3, 4800, '2007-08-01'), ('develop', 8, 6000, '2006-10-01'), ('develop', 11, 5200, '2007-08-15')
|
||||
|
||||
# GROUP BY window function is not allowed
|
||||
statement error
|
||||
SELECT depname, min(salary) OVER (PARTITION BY depname ORDER BY salary, empno) m1 FROM empsalary GROUP BY m1 ORDER BY depname, empno
|
||||
----
|
||||
|
||||
statement error
|
||||
select row_number() over (range between unbounded following and unbounded preceding);
|
||||
----
|
||||
|
||||
statement error
|
||||
select row_number() over (range between unbounded preceding and unbounded preceding);
|
||||
----
|
||||
|
||||
# ORDER BY is now implemented for window functions!
|
||||
query I
|
||||
select LIST(salary ORDER BY enroll_date, salary) OVER (PARTITION BY depname) FROM empsalary
|
||||
ORDER BY ALL DESC
|
||||
----
|
||||
[6000, 5200, 5200, 4200, 4500]
|
||||
[6000, 5200, 5200, 4200, 4500]
|
||||
[6000, 5200, 5200, 4200, 4500]
|
||||
[6000, 5200, 5200, 4200, 4500]
|
||||
[6000, 5200, 5200, 4200, 4500]
|
||||
[5000, 4800, 4800]
|
||||
[5000, 4800, 4800]
|
||||
[5000, 4800, 4800]
|
||||
[3900, 3500]
|
||||
[3900, 3500]
|
||||
|
||||
# GROUPS frame spec is now implemented for window functions!
|
||||
query I
|
||||
SELECT sum(i) OVER (ORDER BY i GROUPS 1 PRECEDING)
|
||||
FROM generate_series(1,10) AS _(i)
|
||||
ORDER BY i
|
||||
----
|
||||
1
|
||||
3
|
||||
5
|
||||
7
|
||||
9
|
||||
11
|
||||
13
|
||||
15
|
||||
17
|
||||
19
|
||||
|
||||
# Invalid window names
|
||||
foreach invalid PARTITION RANGE ROWS GROUPS
|
||||
|
||||
statement error
|
||||
SELECT array_agg(i) OVER (${invalid} ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
|
||||
FROM generate_series(1,5) AS _(i)
|
||||
WINDOW ${invalid} AS (ORDER BY i);
|
||||
----
|
||||
syntax error at or near
|
||||
|
||||
endloop
|
||||
|
||||
# Framed non-aggregate functions can't handle EXCLUDE
|
||||
foreach func lead lag ntile
|
||||
|
||||
statement error
|
||||
SELECT
|
||||
i,
|
||||
${func}(i ORDER BY i // 2, i) OVER (
|
||||
ORDER BY i // 2
|
||||
ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING
|
||||
EXCLUDE TIES
|
||||
) AS f,
|
||||
FROM range(10) tbl(i)
|
||||
ORDER BY i;
|
||||
----
|
||||
EXCLUDE is not supported for the window function
|
||||
|
||||
statement error
|
||||
SELECT
|
||||
i,
|
||||
lead(i ORDER BY i // 2, i) OVER w AS f,
|
||||
FROM range(10) tbl(i)
|
||||
WINDOW w AS (
|
||||
ORDER BY i // 2
|
||||
ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING
|
||||
EXCLUDE TIES
|
||||
)
|
||||
ORDER BY i;
|
||||
----
|
||||
EXCLUDE is not supported for the window function
|
||||
|
||||
endloop
|
||||
|
||||
foreach func row_number rank cume_dist
|
||||
|
||||
statement error
|
||||
SELECT
|
||||
i,
|
||||
${func}(ORDER BY i // 2, i) OVER (
|
||||
ORDER BY i // 2
|
||||
ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING
|
||||
EXCLUDE TIES
|
||||
) AS f,
|
||||
FROM range(10) tbl(i)
|
||||
ORDER BY i;
|
||||
----
|
||||
EXCLUDE is not supported for the window function
|
||||
|
||||
statement error
|
||||
SELECT
|
||||
i,
|
||||
${func}(ORDER BY i // 2, i) OVER w AS f,
|
||||
FROM range(10) tbl(i)
|
||||
WINDOW w AS (
|
||||
ORDER BY i // 2
|
||||
ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING
|
||||
EXCLUDE TIES
|
||||
)
|
||||
ORDER BY i;
|
||||
----
|
||||
EXCLUDE is not supported for the window function
|
||||
|
||||
endloop
|
||||
Reference in New Issue
Block a user