Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d7d1a26

Browse files
committed
add basic tests for arrays
1 parent 0428d56 commit d7d1a26

File tree

3 files changed

+348
-1
lines changed

3 files changed

+348
-1
lines changed

Makefile

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ REGRESS = rum rum_hash ruminv timestamp orderby orderby_hash altorder \
2020
int2 int4 int8 float4 float8 money oid \
2121
time timetz date interval \
2222
macaddr inet cidr text varchar char bytea bit varbit \
23-
numeric
23+
numeric \
24+
array
2425

2526
LDFLAGS_SL += $(filter -lm, $(LIBS))
2627

expected/array.out

+290
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,290 @@
1+
set enable_seqscan=off;
2+
CREATE TABLE test_array (
3+
i int2[]
4+
);
5+
INSERT INTO test_array VALUES ('{}'), ('{0}'), ('{1,2,3,4}'), ('{1,2,3}'), ('{1,2}'), ('{1}');
6+
CREATE INDEX idx_array ON test_array USING rum (i);
7+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i = '{}';
8+
QUERY PLAN
9+
------------------------------------------
10+
Index Scan using idx_array on test_array
11+
Index Cond: (i = '{}'::smallint[])
12+
(2 rows)
13+
14+
SELECT * FROM test_array WHERE i = '{}';
15+
i
16+
----
17+
{}
18+
(1 row)
19+
20+
SELECT * FROM test_array WHERE i = '{0}';
21+
i
22+
-----
23+
{0}
24+
(1 row)
25+
26+
SELECT * FROM test_array WHERE i = '{1}';
27+
i
28+
-----
29+
{1}
30+
(1 row)
31+
32+
SELECT * FROM test_array WHERE i = '{1,2}';
33+
i
34+
-------
35+
{1,2}
36+
(1 row)
37+
38+
SELECT * FROM test_array WHERE i = '{2,1}';
39+
i
40+
---
41+
(0 rows)
42+
43+
SELECT * FROM test_array WHERE i = '{1,2,3,3}';
44+
i
45+
---
46+
(0 rows)
47+
48+
SELECT * FROM test_array WHERE i = '{0,0}';
49+
i
50+
---
51+
(0 rows)
52+
53+
SELECT * FROM test_array WHERE i = '{100}';
54+
i
55+
---
56+
(0 rows)
57+
58+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i && '{}';
59+
QUERY PLAN
60+
------------------------------------------
61+
Index Scan using idx_array on test_array
62+
Index Cond: (i && '{}'::smallint[])
63+
(2 rows)
64+
65+
SELECT * FROM test_array WHERE i && '{}';
66+
i
67+
---
68+
(0 rows)
69+
70+
SELECT * FROM test_array WHERE i && '{1}';
71+
i
72+
-----------
73+
{1,2,3,4}
74+
{1,2,3}
75+
{1,2}
76+
{1}
77+
(4 rows)
78+
79+
SELECT * FROM test_array WHERE i && '{2}';
80+
i
81+
-----------
82+
{1,2,3,4}
83+
{1,2,3}
84+
{1,2}
85+
(3 rows)
86+
87+
SELECT * FROM test_array WHERE i && '{3}';
88+
i
89+
-----------
90+
{1,2,3,4}
91+
{1,2,3}
92+
(2 rows)
93+
94+
SELECT * FROM test_array WHERE i && '{4}';
95+
i
96+
-----------
97+
{1,2,3,4}
98+
(1 row)
99+
100+
SELECT * FROM test_array WHERE i && '{1,2}';
101+
i
102+
-----------
103+
{1,2,3,4}
104+
{1,2,3}
105+
{1,2}
106+
{1}
107+
(4 rows)
108+
109+
SELECT * FROM test_array WHERE i && '{1,2,3}';
110+
i
111+
-----------
112+
{1,2,3,4}
113+
{1,2,3}
114+
{1,2}
115+
{1}
116+
(4 rows)
117+
118+
SELECT * FROM test_array WHERE i && '{1,2,3,4}';
119+
i
120+
-----------
121+
{1,2,3,4}
122+
{1,2,3}
123+
{1,2}
124+
{1}
125+
(4 rows)
126+
127+
SELECT * FROM test_array WHERE i && '{4,3,2,1}';
128+
i
129+
-----------
130+
{1,2,3,4}
131+
{1,2,3}
132+
{1,2}
133+
{1}
134+
(4 rows)
135+
136+
SELECT * FROM test_array WHERE i && '{0,0}';
137+
i
138+
-----
139+
{0}
140+
(1 row)
141+
142+
SELECT * FROM test_array WHERE i && '{100}';
143+
i
144+
---
145+
(0 rows)
146+
147+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i @> '{}';
148+
QUERY PLAN
149+
------------------------------------------
150+
Index Scan using idx_array on test_array
151+
Index Cond: (i @> '{}'::smallint[])
152+
(2 rows)
153+
154+
SELECT * FROM test_array WHERE i @> '{}';
155+
i
156+
-----------
157+
{}
158+
{0}
159+
{1,2,3,4}
160+
{1,2,3}
161+
{1,2}
162+
{1}
163+
(6 rows)
164+
165+
SELECT * FROM test_array WHERE i @> '{1}';
166+
i
167+
-----------
168+
{1,2,3,4}
169+
{1,2,3}
170+
{1,2}
171+
{1}
172+
(4 rows)
173+
174+
SELECT * FROM test_array WHERE i @> '{2}';
175+
i
176+
-----------
177+
{1,2,3,4}
178+
{1,2,3}
179+
{1,2}
180+
(3 rows)
181+
182+
SELECT * FROM test_array WHERE i @> '{3}';
183+
i
184+
-----------
185+
{1,2,3,4}
186+
{1,2,3}
187+
(2 rows)
188+
189+
SELECT * FROM test_array WHERE i @> '{4}';
190+
i
191+
-----------
192+
{1,2,3,4}
193+
(1 row)
194+
195+
SELECT * FROM test_array WHERE i @> '{1,2,4}';
196+
i
197+
-----------
198+
{1,2,3,4}
199+
(1 row)
200+
201+
SELECT * FROM test_array WHERE i @> '{1,2,3,4}';
202+
i
203+
-----------
204+
{1,2,3,4}
205+
(1 row)
206+
207+
SELECT * FROM test_array WHERE i @> '{4,3,2,1}';
208+
i
209+
-----------
210+
{1,2,3,4}
211+
(1 row)
212+
213+
SELECT * FROM test_array WHERE i @> '{0,0}';
214+
i
215+
-----
216+
{0}
217+
(1 row)
218+
219+
SELECT * FROM test_array WHERE i @> '{100}';
220+
i
221+
---
222+
(0 rows)
223+
224+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i <@ '{}';
225+
QUERY PLAN
226+
------------------------------------------
227+
Index Scan using idx_array on test_array
228+
Index Cond: (i <@ '{}'::smallint[])
229+
(2 rows)
230+
231+
SELECT * FROM test_array WHERE i <@ '{}';
232+
i
233+
----
234+
{}
235+
(1 row)
236+
237+
SELECT * FROM test_array WHERE i <@ '{1}';
238+
i
239+
-----
240+
{}
241+
{1}
242+
(2 rows)
243+
244+
SELECT * FROM test_array WHERE i <@ '{2}';
245+
i
246+
----
247+
{}
248+
(1 row)
249+
250+
SELECT * FROM test_array WHERE i <@ '{1,2,4}';
251+
i
252+
-------
253+
{}
254+
{1,2}
255+
{1}
256+
(3 rows)
257+
258+
SELECT * FROM test_array WHERE i <@ '{1,2,3,4}';
259+
i
260+
-----------
261+
{}
262+
{1,2,3,4}
263+
{1,2,3}
264+
{1,2}
265+
{1}
266+
(5 rows)
267+
268+
SELECT * FROM test_array WHERE i <@ '{4,3,2,1}';
269+
i
270+
-----------
271+
{}
272+
{1,2,3,4}
273+
{1,2,3}
274+
{1,2}
275+
{1}
276+
(5 rows)
277+
278+
SELECT * FROM test_array WHERE i <@ '{0,0}';
279+
i
280+
-----
281+
{}
282+
{0}
283+
(2 rows)
284+
285+
SELECT * FROM test_array WHERE i <@ '{100}';
286+
i
287+
----
288+
{}
289+
(1 row)
290+

sql/array.sql

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
set enable_seqscan=off;
2+
3+
4+
CREATE TABLE test_array (
5+
i int2[]
6+
);
7+
8+
INSERT INTO test_array VALUES ('{}'), ('{0}'), ('{1,2,3,4}'), ('{1,2,3}'), ('{1,2}'), ('{1}');
9+
10+
CREATE INDEX idx_array ON test_array USING rum (i);
11+
12+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i = '{}';
13+
SELECT * FROM test_array WHERE i = '{}';
14+
SELECT * FROM test_array WHERE i = '{0}';
15+
SELECT * FROM test_array WHERE i = '{1}';
16+
SELECT * FROM test_array WHERE i = '{1,2}';
17+
SELECT * FROM test_array WHERE i = '{2,1}';
18+
SELECT * FROM test_array WHERE i = '{1,2,3,3}';
19+
SELECT * FROM test_array WHERE i = '{0,0}';
20+
SELECT * FROM test_array WHERE i = '{100}';
21+
22+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i && '{}';
23+
SELECT * FROM test_array WHERE i && '{}';
24+
SELECT * FROM test_array WHERE i && '{1}';
25+
SELECT * FROM test_array WHERE i && '{2}';
26+
SELECT * FROM test_array WHERE i && '{3}';
27+
SELECT * FROM test_array WHERE i && '{4}';
28+
SELECT * FROM test_array WHERE i && '{1,2}';
29+
SELECT * FROM test_array WHERE i && '{1,2,3}';
30+
SELECT * FROM test_array WHERE i && '{1,2,3,4}';
31+
SELECT * FROM test_array WHERE i && '{4,3,2,1}';
32+
SELECT * FROM test_array WHERE i && '{0,0}';
33+
SELECT * FROM test_array WHERE i && '{100}';
34+
35+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i @> '{}';
36+
SELECT * FROM test_array WHERE i @> '{}';
37+
SELECT * FROM test_array WHERE i @> '{1}';
38+
SELECT * FROM test_array WHERE i @> '{2}';
39+
SELECT * FROM test_array WHERE i @> '{3}';
40+
SELECT * FROM test_array WHERE i @> '{4}';
41+
SELECT * FROM test_array WHERE i @> '{1,2,4}';
42+
SELECT * FROM test_array WHERE i @> '{1,2,3,4}';
43+
SELECT * FROM test_array WHERE i @> '{4,3,2,1}';
44+
SELECT * FROM test_array WHERE i @> '{0,0}';
45+
SELECT * FROM test_array WHERE i @> '{100}';
46+
47+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i <@ '{}';
48+
SELECT * FROM test_array WHERE i <@ '{}';
49+
SELECT * FROM test_array WHERE i <@ '{1}';
50+
SELECT * FROM test_array WHERE i <@ '{2}';
51+
SELECT * FROM test_array WHERE i <@ '{1,2,4}';
52+
SELECT * FROM test_array WHERE i <@ '{1,2,3,4}';
53+
SELECT * FROM test_array WHERE i <@ '{4,3,2,1}';
54+
SELECT * FROM test_array WHERE i <@ '{0,0}';
55+
SELECT * FROM test_array WHERE i <@ '{100}';
56+

0 commit comments

Comments
 (0)