should be it
This commit is contained in:
172
external/duckdb/test/sql/window/test_empty_frames.test
vendored
Normal file
172
external/duckdb/test/sql/window/test_empty_frames.test
vendored
Normal file
@@ -0,0 +1,172 @@
|
||||
# name: test/sql/window/test_empty_frames.test
|
||||
# description: Empty aggregate frames
|
||||
# group: [window]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
statement ok
|
||||
CREATE TABLE t1 (id INTEGER, ch CHAR(1)) ;
|
||||
|
||||
statement ok
|
||||
INSERT INTO t1 VALUES (1, 'A');
|
||||
|
||||
statement ok
|
||||
INSERT INTO t1 VALUES (2, 'B');
|
||||
|
||||
statement ok
|
||||
INSERT INTO t1 VALUES (NULL, 'B');
|
||||
|
||||
#
|
||||
# Original bug report
|
||||
#
|
||||
|
||||
foreach agg count(*) count_star()
|
||||
|
||||
query II
|
||||
SELECT id, ${agg} OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING)
|
||||
FROM t1
|
||||
ORDER BY 1;
|
||||
----
|
||||
1 0
|
||||
2 1
|
||||
NULL 0
|
||||
|
||||
endloop
|
||||
|
||||
#
|
||||
# All zeroes
|
||||
#
|
||||
foreach agg approx_count_distinct count entropy
|
||||
|
||||
query II
|
||||
SELECT id, ${agg}(id) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING)
|
||||
FROM t1
|
||||
ORDER BY 1;
|
||||
----
|
||||
1 0
|
||||
2 0
|
||||
NULL 0
|
||||
|
||||
endloop
|
||||
|
||||
#
|
||||
# All NULLs
|
||||
#
|
||||
foreach agg any_value arbitrary avg bit_and bit_or bit_xor favg first fsum group_concat histogram kahan_sum kurtosis last listagg mad max mean median min mode product sem skewness stddev stddev_pop stddev_samp sum sumkahan var_pop var_samp variance
|
||||
|
||||
query II
|
||||
SELECT id, ${agg}(id) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING)
|
||||
FROM t1
|
||||
ORDER BY 1;
|
||||
----
|
||||
1 NULL
|
||||
2 NULL
|
||||
NULL NULL
|
||||
|
||||
endloop
|
||||
|
||||
#
|
||||
# Custom results
|
||||
#
|
||||
|
||||
# Numeric parameter argument
|
||||
foreach agg approx_quantile quantile quantile_cont quantile_disc reservoir_quantile
|
||||
|
||||
query II
|
||||
SELECT id, ${agg}(id, 0.5) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING)
|
||||
FROM t1
|
||||
ORDER BY 1;
|
||||
----
|
||||
1 NULL
|
||||
2 NULL
|
||||
NULL NULL
|
||||
|
||||
endloop
|
||||
|
||||
# Mixed arguments
|
||||
foreach agg arg_max arg_min argmax argmin max_by min_by
|
||||
|
||||
query II
|
||||
SELECT id, ${agg}(id, ch) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING)
|
||||
FROM t1
|
||||
ORDER BY 1;
|
||||
----
|
||||
1 NULL
|
||||
2 NULL
|
||||
NULL NULL
|
||||
|
||||
endloop
|
||||
|
||||
foreach agg array_agg list
|
||||
|
||||
query II
|
||||
SELECT id, ${agg}(id) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING)
|
||||
FROM t1
|
||||
ORDER BY 1;
|
||||
----
|
||||
1 NULL
|
||||
2 [NULL]
|
||||
NULL NULL
|
||||
|
||||
endloop
|
||||
|
||||
# Boolean argument
|
||||
foreach agg bool_and bool_or
|
||||
|
||||
query II
|
||||
SELECT id, ${agg}(id > 0) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING)
|
||||
FROM t1
|
||||
ORDER BY 1;
|
||||
----
|
||||
1 NULL
|
||||
2 NULL
|
||||
NULL NULL
|
||||
|
||||
endloop
|
||||
|
||||
# Two numeric arguments =>NULL
|
||||
foreach agg corr covar_pop covar_samp regr_avgx regr_avgy regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy
|
||||
|
||||
query II
|
||||
SELECT id, ${agg}(id, id) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING)
|
||||
FROM t1
|
||||
ORDER BY 1;
|
||||
----
|
||||
1 NULL
|
||||
2 NULL
|
||||
NULL NULL
|
||||
|
||||
endloop
|
||||
|
||||
# Two numeric arguments => 0
|
||||
foreach agg regr_count
|
||||
|
||||
query II
|
||||
SELECT id, ${agg}(id, id) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING)
|
||||
FROM t1
|
||||
ORDER BY 1;
|
||||
----
|
||||
1 0
|
||||
2 0
|
||||
NULL 0
|
||||
|
||||
endloop
|
||||
|
||||
query II
|
||||
SELECT id, string_agg(id, ' ') OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING)
|
||||
FROM t1
|
||||
ORDER BY 1;
|
||||
----
|
||||
1 NULL
|
||||
2 NULL
|
||||
NULL NULL
|
||||
|
||||
query II
|
||||
SELECT id, bitstring_agg(id, 1, 3) OVER (PARTITION BY ch ORDER BY id ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING)
|
||||
FROM t1
|
||||
ORDER BY 1;
|
||||
----
|
||||
1 NULL
|
||||
2 NULL
|
||||
NULL NULL
|
||||
Reference in New Issue
Block a user