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

Skip to content

Commit 09fe92a

Browse files
committed
more tests
1 parent d7d1a26 commit 09fe92a

File tree

3 files changed

+271
-0
lines changed

3 files changed

+271
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ include
1212
lib
1313
pip-selfcheck.json
1414
rum--*.sql
15+
regression*

expected/array.out

+224
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
set enable_seqscan=off;
2+
/*
3+
* Complete checks for int2[].
4+
*/
25
CREATE TABLE test_array (
36
i int2[]
47
);
@@ -288,3 +291,224 @@ SELECT * FROM test_array WHERE i <@ '{100}';
288291
{}
289292
(1 row)
290293

294+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i % '{}';
295+
QUERY PLAN
296+
------------------------------------------
297+
Index Scan using idx_array on test_array
298+
Index Cond: (i % '{}'::smallint[])
299+
(2 rows)
300+
301+
SELECT * FROM test_array WHERE i % '{}';
302+
i
303+
---
304+
(0 rows)
305+
306+
SELECT * FROM test_array WHERE i % '{1}';
307+
i
308+
-----------
309+
{1,2,3,4}
310+
{1,2,3}
311+
{1,2}
312+
{1}
313+
(4 rows)
314+
315+
SELECT * FROM test_array WHERE i % '{2}';
316+
i
317+
-----------
318+
{1,2,3,4}
319+
{1,2,3}
320+
{1,2}
321+
(3 rows)
322+
323+
SELECT * FROM test_array WHERE i % '{1,2}';
324+
i
325+
-----------
326+
{1,2,3,4}
327+
{1,2,3}
328+
{1,2}
329+
{1}
330+
(4 rows)
331+
332+
SELECT * FROM test_array WHERE i % '{1,2,4}';
333+
i
334+
-----------
335+
{1,2,3,4}
336+
{1,2,3}
337+
{1,2}
338+
{1}
339+
(4 rows)
340+
341+
SELECT * FROM test_array WHERE i % '{1,2,3,4}';
342+
i
343+
-----------
344+
{1,2,3,4}
345+
{1,2,3}
346+
{1,2}
347+
{1}
348+
(4 rows)
349+
350+
SELECT * FROM test_array WHERE i % '{4,3,2,1}';
351+
i
352+
-----------
353+
{1,2,3,4}
354+
{1,2,3}
355+
{1,2}
356+
{1}
357+
(4 rows)
358+
359+
SELECT * FROM test_array WHERE i % '{1,2,3,4,5}';
360+
i
361+
-----------
362+
{1,2,3,4}
363+
{1,2,3}
364+
{1,2}
365+
(3 rows)
366+
367+
SELECT * FROM test_array WHERE i % '{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}';
368+
i
369+
-----------
370+
{1,2,3,4}
371+
(1 row)
372+
373+
SELECT * FROM test_array WHERE i % '{1,10,20,30,40,50}';
374+
i
375+
---
376+
(0 rows)
377+
378+
SELECT * FROM test_array WHERE i % '{1,10,20,30}';
379+
i
380+
-----
381+
{1}
382+
(1 row)
383+
384+
SELECT * FROM test_array WHERE i % '{1,1,1,1,1}';
385+
i
386+
-----------
387+
{1,2,3,4}
388+
{1,2,3}
389+
{1,2}
390+
{1}
391+
(4 rows)
392+
393+
SELECT * FROM test_array WHERE i % '{0,0}';
394+
i
395+
-----
396+
{0}
397+
(1 row)
398+
399+
SELECT * FROM test_array WHERE i % '{100}';
400+
i
401+
---
402+
(0 rows)
403+
404+
/*
405+
* Sanity checks for popular array types.
406+
*/
407+
ALTER TABLE test_array ALTER COLUMN i TYPE int4[];
408+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i = '{}';
409+
QUERY PLAN
410+
------------------------------------------
411+
Index Scan using idx_array on test_array
412+
Index Cond: (i = '{}'::integer[])
413+
(2 rows)
414+
415+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i && '{}';
416+
QUERY PLAN
417+
------------------------------------------
418+
Index Scan using idx_array on test_array
419+
Index Cond: (i && '{}'::integer[])
420+
(2 rows)
421+
422+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i @> '{}';
423+
QUERY PLAN
424+
------------------------------------------
425+
Index Scan using idx_array on test_array
426+
Index Cond: (i @> '{}'::integer[])
427+
(2 rows)
428+
429+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i <@ '{}';
430+
QUERY PLAN
431+
------------------------------------------
432+
Index Scan using idx_array on test_array
433+
Index Cond: (i <@ '{}'::integer[])
434+
(2 rows)
435+
436+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i % '{}';
437+
QUERY PLAN
438+
------------------------------------------
439+
Index Scan using idx_array on test_array
440+
Index Cond: (i % '{}'::integer[])
441+
(2 rows)
442+
443+
ALTER TABLE test_array ALTER COLUMN i TYPE int8[];
444+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i = '{}';
445+
QUERY PLAN
446+
------------------------------------------
447+
Index Scan using idx_array on test_array
448+
Index Cond: (i = '{}'::bigint[])
449+
(2 rows)
450+
451+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i && '{}';
452+
QUERY PLAN
453+
------------------------------------------
454+
Index Scan using idx_array on test_array
455+
Index Cond: (i && '{}'::bigint[])
456+
(2 rows)
457+
458+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i @> '{}';
459+
QUERY PLAN
460+
------------------------------------------
461+
Index Scan using idx_array on test_array
462+
Index Cond: (i @> '{}'::bigint[])
463+
(2 rows)
464+
465+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i <@ '{}';
466+
QUERY PLAN
467+
------------------------------------------
468+
Index Scan using idx_array on test_array
469+
Index Cond: (i <@ '{}'::bigint[])
470+
(2 rows)
471+
472+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i % '{}';
473+
QUERY PLAN
474+
------------------------------------------
475+
Index Scan using idx_array on test_array
476+
Index Cond: (i % '{}'::bigint[])
477+
(2 rows)
478+
479+
ALTER TABLE test_array ALTER COLUMN i TYPE text[];
480+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i = '{}';
481+
QUERY PLAN
482+
------------------------------------------
483+
Index Scan using idx_array on test_array
484+
Index Cond: (i = '{}'::text[])
485+
(2 rows)
486+
487+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i && '{}';
488+
QUERY PLAN
489+
------------------------------------------
490+
Index Scan using idx_array on test_array
491+
Index Cond: (i && '{}'::text[])
492+
(2 rows)
493+
494+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i @> '{}';
495+
QUERY PLAN
496+
------------------------------------------
497+
Index Scan using idx_array on test_array
498+
Index Cond: (i @> '{}'::text[])
499+
(2 rows)
500+
501+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i <@ '{}';
502+
QUERY PLAN
503+
------------------------------------------
504+
Index Scan using idx_array on test_array
505+
Index Cond: (i <@ '{}'::text[])
506+
(2 rows)
507+
508+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i % '{}';
509+
QUERY PLAN
510+
------------------------------------------
511+
Index Scan using idx_array on test_array
512+
Index Cond: (i % '{}'::text[])
513+
(2 rows)
514+

sql/array.sql

+46
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
set enable_seqscan=off;
22

33

4+
/*
5+
* Complete checks for int2[].
6+
*/
7+
48
CREATE TABLE test_array (
59
i int2[]
610
);
@@ -54,3 +58,45 @@ SELECT * FROM test_array WHERE i <@ '{4,3,2,1}';
5458
SELECT * FROM test_array WHERE i <@ '{0,0}';
5559
SELECT * FROM test_array WHERE i <@ '{100}';
5660

61+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i % '{}';
62+
SELECT * FROM test_array WHERE i % '{}';
63+
SELECT * FROM test_array WHERE i % '{1}';
64+
SELECT * FROM test_array WHERE i % '{2}';
65+
SELECT * FROM test_array WHERE i % '{1,2}';
66+
SELECT * FROM test_array WHERE i % '{1,2,4}';
67+
SELECT * FROM test_array WHERE i % '{1,2,3,4}';
68+
SELECT * FROM test_array WHERE i % '{4,3,2,1}';
69+
SELECT * FROM test_array WHERE i % '{1,2,3,4,5}';
70+
SELECT * FROM test_array WHERE i % '{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}';
71+
SELECT * FROM test_array WHERE i % '{1,10,20,30,40,50}';
72+
SELECT * FROM test_array WHERE i % '{1,10,20,30}';
73+
SELECT * FROM test_array WHERE i % '{1,1,1,1,1}';
74+
SELECT * FROM test_array WHERE i % '{0,0}';
75+
SELECT * FROM test_array WHERE i % '{100}';
76+
77+
78+
/*
79+
* Sanity checks for popular array types.
80+
*/
81+
82+
ALTER TABLE test_array ALTER COLUMN i TYPE int4[];
83+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i = '{}';
84+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i && '{}';
85+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i @> '{}';
86+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i <@ '{}';
87+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i % '{}';
88+
89+
ALTER TABLE test_array ALTER COLUMN i TYPE int8[];
90+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i = '{}';
91+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i && '{}';
92+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i @> '{}';
93+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i <@ '{}';
94+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i % '{}';
95+
96+
ALTER TABLE test_array ALTER COLUMN i TYPE text[];
97+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i = '{}';
98+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i && '{}';
99+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i @> '{}';
100+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i <@ '{}';
101+
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i % '{}';
102+

0 commit comments

Comments
 (0)