File: test_empty_frames.test

package info (click to toggle)
duckdb 1.5.1-2
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 299,196 kB
  • sloc: cpp: 865,414; ansic: 57,292; python: 18,871; sql: 12,663; lisp: 11,751; yacc: 7,412; lex: 1,682; sh: 747; makefile: 558
file content (172 lines) | stat: -rw-r--r-- 3,062 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
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