Skip to content

Commit acff257

Browse files
author
Vladlen Popolitov
committed
RUM Tests added for all opclasses
1 parent 1362992 commit acff257

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+4884
-35
lines changed

anyarray--1.2.sql

Lines changed: 434 additions & 34 deletions
Large diffs are not rendered by default.

expected/bit.out

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,3 +340,162 @@ SELECT t, v FROM test_bit WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}'::int4[]::bit(10)
340340
(17 rows)
341341

342342
RESET anyarray.similarity_threshold;
343+
DROP INDEX idx_test_bit;
344+
CREATE INDEX idx_test_bit ON test_bit USING rum (v _bit_aa_ops);
345+
SET enable_seqscan=off;
346+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_bit WHERE v && '{43,50}'::int4[]::bit(10)[] ORDER BY t;
347+
QUERY PLAN
348+
-----------------------------------------------------------------------
349+
Sort
350+
Sort Key: t
351+
-> Bitmap Heap Scan on test_bit
352+
Recheck Cond: (v && '{0000101011,0000110010}'::bit(10)[])
353+
-> Bitmap Index Scan on idx_test_bit
354+
Index Cond: (v && '{0000101011,0000110010}'::bit(10)[])
355+
(6 rows)
356+
357+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_bit WHERE v @> '{43,50}'::int4[]::bit(10)[] ORDER BY t;
358+
QUERY PLAN
359+
-----------------------------------------------------------------
360+
Sort
361+
Sort Key: t
362+
-> Index Scan using idx_test_bit on test_bit
363+
Index Cond: (v @> '{0000101011,0000110010}'::bit(10)[])
364+
(4 rows)
365+
366+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_bit WHERE v <@ '{0,1,2,3,4,5,6,7,8,9,10}'::int4[]::bit(10)[] ORDER BY t;
367+
QUERY PLAN
368+
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
369+
Sort
370+
Sort Key: t
371+
-> Index Scan using idx_test_bit on test_bit
372+
Index Cond: (v <@ '{0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010}'::bit(10)[])
373+
(4 rows)
374+
375+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_bit WHERE v = '{0,1,2,3,4,5,6,7,8,9,10}'::int4[]::bit(10)[] ORDER BY t;
376+
QUERY PLAN
377+
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
378+
Sort
379+
Sort Key: t
380+
-> Index Scan using idx_test_bit on test_bit
381+
Index Cond: (v = '{0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010}'::bit(10)[])
382+
(4 rows)
383+
384+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_bit WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}'::int4[]::bit(10)[] ORDER BY t;
385+
QUERY PLAN
386+
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
387+
Sort
388+
Sort Key: t
389+
-> Index Scan using idx_test_bit on test_bit
390+
Index Cond: (v % '{0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010}'::bit(10)[])
391+
(4 rows)
392+
393+
SELECT t, v FROM test_bit WHERE v && '{43,50}'::int4[]::bit(10)[] ORDER BY t;
394+
t | v
395+
----+----------------------------------------------------------------------------------------------------------------------------
396+
43 | {0000100001,0000100010,0000100011,0000100100,0000100101,0000100110,0000100111,0000101000,0000101001,0000101010,0000101011}
397+
44 | {0000100010,0000100011,0000100100,0000100101,0000100110,0000100111,0000101000,0000101001,0000101010,0000101011,0000101100}
398+
45 | {0000100011,0000100100,0000100101,0000100110,0000100111,0000101000,0000101001,0000101010,0000101011,0000101100,0000101101}
399+
46 | {0000100100,0000100101,0000100110,0000100111,0000101000,0000101001,0000101010,0000101011,0000101100,0000101101,0000101110}
400+
47 | {0000100101,0000100110,0000100111,0000101000,0000101001,0000101010,0000101011,0000101100,0000101101,0000101110,0000101111}
401+
48 | {0000100110,0000100111,0000101000,0000101001,0000101010,0000101011,0000101100,0000101101,0000101110,0000101111,0000110000}
402+
49 | {0000100111,0000101000,0000101001,0000101010,0000101011,0000101100,0000101101,0000101110,0000101111,0000110000,0000110001}
403+
50 | {0000101000,0000101001,0000101010,0000101011,0000101100,0000101101,0000101110,0000101111,0000110000,0000110001,0000110010}
404+
51 | {0000101001,0000101010,0000101011,0000101100,0000101101,0000101110,0000101111,0000110000,0000110001,0000110010,0000110011}
405+
52 | {0000101010,0000101011,0000101100,0000101101,0000101110,0000101111,0000110000,0000110001,0000110010,0000110011,0000110100}
406+
53 | {0000101011,0000101100,0000101101,0000101110,0000101111,0000110000,0000110001,0000110010,0000110011,0000110100,0000110101}
407+
54 | {0000101100,0000101101,0000101110,0000101111,0000110000,0000110001,0000110010,0000110011,0000110100,0000110101,0000110110}
408+
55 | {0000101101,0000101110,0000101111,0000110000,0000110001,0000110010,0000110011,0000110100,0000110101,0000110110,0000110111}
409+
56 | {0000101110,0000101111,0000110000,0000110001,0000110010,0000110011,0000110100,0000110101,0000110110,0000110111,0000111000}
410+
57 | {0000101111,0000110000,0000110001,0000110010,0000110011,0000110100,0000110101,0000110110,0000110111,0000111000,0000111001}
411+
58 | {0000110000,0000110001,0000110010,0000110011,0000110100,0000110101,0000110110,0000110111,0000111000,0000111001,0000111010}
412+
59 | {0000110001,0000110010,0000110011,0000110100,0000110101,0000110110,0000110111,0000111000,0000111001,0000111010,0000111011}
413+
60 | {0000110010,0000110011,0000110100,0000110101,0000110110,0000110111,0000111000,0000111001,0000111010,0000111011,0000111100}
414+
(18 rows)
415+
416+
SELECT t, v FROM test_bit WHERE v @> '{43,50}'::int4[]::bit(10)[] ORDER BY t;
417+
t | v
418+
----+----------------------------------------------------------------------------------------------------------------------------
419+
50 | {0000101000,0000101001,0000101010,0000101011,0000101100,0000101101,0000101110,0000101111,0000110000,0000110001,0000110010}
420+
51 | {0000101001,0000101010,0000101011,0000101100,0000101101,0000101110,0000101111,0000110000,0000110001,0000110010,0000110011}
421+
52 | {0000101010,0000101011,0000101100,0000101101,0000101110,0000101111,0000110000,0000110001,0000110010,0000110011,0000110100}
422+
53 | {0000101011,0000101100,0000101101,0000101110,0000101111,0000110000,0000110001,0000110010,0000110011,0000110100,0000110101}
423+
(4 rows)
424+
425+
SELECT t, v FROM test_bit WHERE v <@ '{0,1,2,3,4,5,6,7,8,9,10}'::int4[]::bit(10)[] ORDER BY t;
426+
t | v
427+
----+----------------------------------------------------------------------------------------------------------------------------
428+
1 | {0000000000,0000000001}
429+
2 | {0000000000,0000000001,0000000010}
430+
3 | {0000000000,0000000001,0000000010,0000000011}
431+
4 | {0000000000,0000000001,0000000010,0000000011,0000000100}
432+
5 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101}
433+
6 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110}
434+
7 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111}
435+
8 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000}
436+
9 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001}
437+
10 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010}
438+
(10 rows)
439+
440+
SELECT t, v FROM test_bit WHERE v = '{0,1,2,3,4,5,6,7,8,9,10}'::int4[]::bit(10)[] ORDER BY t;
441+
t | v
442+
----+----------------------------------------------------------------------------------------------------------------------------
443+
10 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010}
444+
(1 row)
445+
446+
SET anyarray.similarity_type=cosine;
447+
SELECT t, v FROM test_bit WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}'::int4[]::bit(10)[] ORDER BY t;
448+
t | v
449+
----+----------------------------------------------------------------------------------------------------------------------------
450+
3 | {0000000000,0000000001,0000000010,0000000011}
451+
4 | {0000000000,0000000001,0000000010,0000000011,0000000100}
452+
5 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101}
453+
6 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110}
454+
7 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111}
455+
8 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000}
456+
9 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001}
457+
10 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010}
458+
11 | {0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010,0000001011}
459+
12 | {0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010,0000001011,0000001100}
460+
13 | {0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010,0000001011,0000001100,0000001101}
461+
14 | {0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010,0000001011,0000001100,0000001101,0000001110}
462+
(12 rows)
463+
464+
SET anyarray.similarity_type=jaccard;
465+
SELECT t, v FROM test_bit WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}'::int4[]::bit(10)[] ORDER BY t;
466+
t | v
467+
----+----------------------------------------------------------------------------------------------------------------------------
468+
6 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110}
469+
7 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111}
470+
8 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000}
471+
9 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001}
472+
10 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010}
473+
11 | {0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010,0000001011}
474+
12 | {0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010,0000001011,0000001100}
475+
(7 rows)
476+
477+
SET anyarray.similarity_type=overlap;
478+
SET anyarray.similarity_threshold = 3;
479+
SELECT t, v FROM test_bit WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}'::int4[]::bit(10)[] ORDER BY t;
480+
t | v
481+
----+----------------------------------------------------------------------------------------------------------------------------
482+
2 | {0000000000,0000000001,0000000010}
483+
3 | {0000000000,0000000001,0000000010,0000000011}
484+
4 | {0000000000,0000000001,0000000010,0000000011,0000000100}
485+
5 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101}
486+
6 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110}
487+
7 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111}
488+
8 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000}
489+
9 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001}
490+
10 | {0000000000,0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010}
491+
11 | {0000000001,0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010,0000001011}
492+
12 | {0000000010,0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010,0000001011,0000001100}
493+
13 | {0000000011,0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010,0000001011,0000001100,0000001101}
494+
14 | {0000000100,0000000101,0000000110,0000000111,0000001000,0000001001,0000001010,0000001011,0000001100,0000001101,0000001110}
495+
15 | {0000000101,0000000110,0000000111,0000001000,0000001001,0000001010,0000001011,0000001100,0000001101,0000001110,0000001111}
496+
16 | {0000000110,0000000111,0000001000,0000001001,0000001010,0000001011,0000001100,0000001101,0000001110,0000001111,0000010000}
497+
17 | {0000000111,0000001000,0000001001,0000001010,0000001011,0000001100,0000001101,0000001110,0000001111,0000010000,0000010001}
498+
18 | {0000001000,0000001001,0000001010,0000001011,0000001100,0000001101,0000001110,0000001111,0000010000,0000010001,0000010010}
499+
(17 rows)
500+
501+
RESET anyarray.similarity_threshold;

expected/bytea.out

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,5 +499,164 @@ SELECT t, v FROM test_bytea WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
499499
18 | {8,9,10,11,12,13,14,15,16,17,18}
500500
(17 rows)
501501

502+
RESET anyarray.similarity_threshold;
503+
DROP INDEX idx_test_bytea;
504+
CREATE INDEX idx_test_bytea ON test_bytea USING rum (v _bytea_aa_ops);
505+
SET enable_seqscan=off;
506+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_bytea WHERE v && '{43,50}' ORDER BY t;
507+
QUERY PLAN
508+
-----------------------------------------------------
509+
Sort
510+
Sort Key: t
511+
-> Bitmap Heap Scan on test_bytea
512+
Recheck Cond: (v && '{43,50}'::bytea[])
513+
-> Bitmap Index Scan on idx_test_bytea
514+
Index Cond: (v && '{43,50}'::bytea[])
515+
(6 rows)
516+
517+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_bytea WHERE v @> '{43,50}' ORDER BY t;
518+
QUERY PLAN
519+
-----------------------------------------------------
520+
Sort
521+
Sort Key: t
522+
-> Index Scan using idx_test_bytea on test_bytea
523+
Index Cond: (v @> '{43,50}'::bytea[])
524+
(4 rows)
525+
526+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_bytea WHERE v <@ '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
527+
QUERY PLAN
528+
----------------------------------------------------------------
529+
Sort
530+
Sort Key: t
531+
-> Index Scan using idx_test_bytea on test_bytea
532+
Index Cond: (v <@ '{0,1,2,3,4,5,6,7,8,9,10}'::bytea[])
533+
(4 rows)
534+
535+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_bytea WHERE v = '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
536+
QUERY PLAN
537+
---------------------------------------------------------------
538+
Sort
539+
Sort Key: t
540+
-> Index Scan using idx_test_bytea on test_bytea
541+
Index Cond: (v = '{0,1,2,3,4,5,6,7,8,9,10}'::bytea[])
542+
(4 rows)
543+
544+
EXPLAIN (COSTS OFF) SELECT t, v FROM test_bytea WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
545+
QUERY PLAN
546+
---------------------------------------------------------------
547+
Sort
548+
Sort Key: t
549+
-> Index Scan using idx_test_bytea on test_bytea
550+
Index Cond: (v % '{0,1,2,3,4,5,6,7,8,9,10}'::bytea[])
551+
(4 rows)
552+
553+
SELECT t, v FROM test_bytea WHERE v && '{43,50}' ORDER BY t;
554+
t | v
555+
----+------------------------------------
556+
43 | {33,34,35,36,37,38,39,40,41,42,43}
557+
44 | {34,35,36,37,38,39,40,41,42,43,44}
558+
45 | {35,36,37,38,39,40,41,42,43,44,45}
559+
46 | {36,37,38,39,40,41,42,43,44,45,46}
560+
47 | {37,38,39,40,41,42,43,44,45,46,47}
561+
48 | {38,39,40,41,42,43,44,45,46,47,48}
562+
49 | {39,40,41,42,43,44,45,46,47,48,49}
563+
50 | {40,41,42,43,44,45,46,47,48,49,50}
564+
51 | {41,42,43,44,45,46,47,48,49,50,51}
565+
52 | {42,43,44,45,46,47,48,49,50,51,52}
566+
53 | {43,44,45,46,47,48,49,50,51,52,53}
567+
54 | {44,45,46,47,48,49,50,51,52,53,54}
568+
55 | {45,46,47,48,49,50,51,52,53,54,55}
569+
56 | {46,47,48,49,50,51,52,53,54,55,56}
570+
57 | {47,48,49,50,51,52,53,54,55,56,57}
571+
58 | {48,49,50,51,52,53,54,55,56,57,58}
572+
59 | {49,50,51,52,53,54,55,56,57,58,59}
573+
60 | {50,51,52,53,54,55,56,57,58,59,60}
574+
(18 rows)
575+
576+
SELECT t, v FROM test_bytea WHERE v @> '{43,50}' ORDER BY t;
577+
t | v
578+
----+------------------------------------
579+
50 | {40,41,42,43,44,45,46,47,48,49,50}
580+
51 | {41,42,43,44,45,46,47,48,49,50,51}
581+
52 | {42,43,44,45,46,47,48,49,50,51,52}
582+
53 | {43,44,45,46,47,48,49,50,51,52,53}
583+
(4 rows)
584+
585+
SELECT t, v FROM test_bytea WHERE v <@ '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
586+
t | v
587+
----+--------------------------
588+
1 | {0,1}
589+
2 | {0,1,2}
590+
3 | {0,1,2,3}
591+
4 | {0,1,2,3,4}
592+
5 | {0,1,2,3,4,5}
593+
6 | {0,1,2,3,4,5,6}
594+
7 | {0,1,2,3,4,5,6,7}
595+
8 | {0,1,2,3,4,5,6,7,8}
596+
9 | {0,1,2,3,4,5,6,7,8,9}
597+
10 | {0,1,2,3,4,5,6,7,8,9,10}
598+
(10 rows)
599+
600+
SELECT t, v FROM test_bytea WHERE v = '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
601+
t | v
602+
----+--------------------------
603+
10 | {0,1,2,3,4,5,6,7,8,9,10}
604+
(1 row)
605+
606+
SET anyarray.similarity_type=cosine;
607+
SELECT t, v FROM test_bytea WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
608+
t | v
609+
----+------------------------------
610+
3 | {0,1,2,3}
611+
4 | {0,1,2,3,4}
612+
5 | {0,1,2,3,4,5}
613+
6 | {0,1,2,3,4,5,6}
614+
7 | {0,1,2,3,4,5,6,7}
615+
8 | {0,1,2,3,4,5,6,7,8}
616+
9 | {0,1,2,3,4,5,6,7,8,9}
617+
10 | {0,1,2,3,4,5,6,7,8,9,10}
618+
11 | {1,2,3,4,5,6,7,8,9,10,11}
619+
12 | {2,3,4,5,6,7,8,9,10,11,12}
620+
13 | {3,4,5,6,7,8,9,10,11,12,13}
621+
14 | {4,5,6,7,8,9,10,11,12,13,14}
622+
(12 rows)
623+
624+
SET anyarray.similarity_type=jaccard;
625+
SELECT t, v FROM test_bytea WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
626+
t | v
627+
----+----------------------------
628+
6 | {0,1,2,3,4,5,6}
629+
7 | {0,1,2,3,4,5,6,7}
630+
8 | {0,1,2,3,4,5,6,7,8}
631+
9 | {0,1,2,3,4,5,6,7,8,9}
632+
10 | {0,1,2,3,4,5,6,7,8,9,10}
633+
11 | {1,2,3,4,5,6,7,8,9,10,11}
634+
12 | {2,3,4,5,6,7,8,9,10,11,12}
635+
(7 rows)
636+
637+
SET anyarray.similarity_type=overlap;
638+
SET anyarray.similarity_threshold = 3;
639+
SELECT t, v FROM test_bytea WHERE v % '{0,1,2,3,4,5,6,7,8,9,10}' ORDER BY t;
640+
t | v
641+
----+----------------------------------
642+
2 | {0,1,2}
643+
3 | {0,1,2,3}
644+
4 | {0,1,2,3,4}
645+
5 | {0,1,2,3,4,5}
646+
6 | {0,1,2,3,4,5,6}
647+
7 | {0,1,2,3,4,5,6,7}
648+
8 | {0,1,2,3,4,5,6,7,8}
649+
9 | {0,1,2,3,4,5,6,7,8,9}
650+
10 | {0,1,2,3,4,5,6,7,8,9,10}
651+
11 | {1,2,3,4,5,6,7,8,9,10,11}
652+
12 | {2,3,4,5,6,7,8,9,10,11,12}
653+
13 | {3,4,5,6,7,8,9,10,11,12,13}
654+
14 | {4,5,6,7,8,9,10,11,12,13,14}
655+
15 | {5,6,7,8,9,10,11,12,13,14,15}
656+
16 | {6,7,8,9,10,11,12,13,14,15,16}
657+
17 | {7,8,9,10,11,12,13,14,15,16,17}
658+
18 | {8,9,10,11,12,13,14,15,16,17,18}
659+
(17 rows)
660+
502661
RESET anyarray.similarity_threshold;
503662
RESET bytea_output;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy