@@ -7,6 +7,12 @@ CREATE TABLE test_array (
77);
88INSERT INTO test_array VALUES ('{}'), ('{0}'), ('{1,2,3,4}'), ('{1,2,3}'), ('{1,2}'), ('{1}');
99CREATE INDEX idx_array ON test_array USING rum (i);
10+ SELECT * FROM test_array WHERE i = '{NULL}';
11+ ERROR: array must not contain nulls
12+ SELECT * FROM test_array WHERE i = '{1,2,3,NULL}';
13+ ERROR: array must not contain nulls
14+ SELECT * FROM test_array WHERE i = '{{1,2},{3,4}}';
15+ ERROR: array must have 1 dimension
1016EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i = '{}';
1117 QUERY PLAN
1218------------------------------------------
@@ -512,3 +518,183 @@ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i % '{}';
512518 Index Cond: (i % '{}'::text[])
513519(2 rows)
514520
521+ ALTER TABLE test_array ALTER COLUMN i TYPE varchar[];
522+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i = '{}';
523+ QUERY PLAN
524+ -----------------------------------------------
525+ Index Scan using idx_array on test_array
526+ Index Cond: (i = '{}'::character varying[])
527+ (2 rows)
528+
529+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i && '{}';
530+ QUERY PLAN
531+ ------------------------------------------------
532+ Index Scan using idx_array on test_array
533+ Index Cond: (i && '{}'::character varying[])
534+ (2 rows)
535+
536+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i @> '{}';
537+ QUERY PLAN
538+ ------------------------------------------------
539+ Index Scan using idx_array on test_array
540+ Index Cond: (i @> '{}'::character varying[])
541+ (2 rows)
542+
543+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i <@ '{}';
544+ QUERY PLAN
545+ ------------------------------------------------
546+ Index Scan using idx_array on test_array
547+ Index Cond: (i <@ '{}'::character varying[])
548+ (2 rows)
549+
550+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i % '{}';
551+ QUERY PLAN
552+ -----------------------------------------------
553+ Index Scan using idx_array on test_array
554+ Index Cond: (i % '{}'::character varying[])
555+ (2 rows)
556+
557+ ALTER TABLE test_array ALTER COLUMN i TYPE char[];
558+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i = '{}';
559+ QUERY PLAN
560+ ------------------------------------------
561+ Index Scan using idx_array on test_array
562+ Index Cond: (i = '{}'::bpchar[])
563+ (2 rows)
564+
565+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i && '{}';
566+ QUERY PLAN
567+ ------------------------------------------
568+ Index Scan using idx_array on test_array
569+ Index Cond: (i && '{}'::bpchar[])
570+ (2 rows)
571+
572+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i @> '{}';
573+ QUERY PLAN
574+ ------------------------------------------
575+ Index Scan using idx_array on test_array
576+ Index Cond: (i @> '{}'::bpchar[])
577+ (2 rows)
578+
579+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i <@ '{}';
580+ QUERY PLAN
581+ ------------------------------------------
582+ Index Scan using idx_array on test_array
583+ Index Cond: (i <@ '{}'::bpchar[])
584+ (2 rows)
585+
586+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i % '{}';
587+ QUERY PLAN
588+ ------------------------------------------
589+ Index Scan using idx_array on test_array
590+ Index Cond: (i % '{}'::bpchar[])
591+ (2 rows)
592+
593+ ALTER TABLE test_array ALTER COLUMN i TYPE numeric[] USING i::numeric[];
594+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i = '{}';
595+ QUERY PLAN
596+ ------------------------------------------
597+ Index Scan using idx_array on test_array
598+ Index Cond: (i = '{}'::numeric[])
599+ (2 rows)
600+
601+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i && '{}';
602+ QUERY PLAN
603+ ------------------------------------------
604+ Index Scan using idx_array on test_array
605+ Index Cond: (i && '{}'::numeric[])
606+ (2 rows)
607+
608+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i @> '{}';
609+ QUERY PLAN
610+ ------------------------------------------
611+ Index Scan using idx_array on test_array
612+ Index Cond: (i @> '{}'::numeric[])
613+ (2 rows)
614+
615+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i <@ '{}';
616+ QUERY PLAN
617+ ------------------------------------------
618+ Index Scan using idx_array on test_array
619+ Index Cond: (i <@ '{}'::numeric[])
620+ (2 rows)
621+
622+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i % '{}';
623+ QUERY PLAN
624+ ------------------------------------------
625+ Index Scan using idx_array on test_array
626+ Index Cond: (i % '{}'::numeric[])
627+ (2 rows)
628+
629+ ALTER TABLE test_array ALTER COLUMN i TYPE float4[] USING i::float4[];
630+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i = '{}';
631+ QUERY PLAN
632+ ------------------------------------------
633+ Index Scan using idx_array on test_array
634+ Index Cond: (i = '{}'::real[])
635+ (2 rows)
636+
637+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i && '{}';
638+ QUERY PLAN
639+ ------------------------------------------
640+ Index Scan using idx_array on test_array
641+ Index Cond: (i && '{}'::real[])
642+ (2 rows)
643+
644+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i @> '{}';
645+ QUERY PLAN
646+ ------------------------------------------
647+ Index Scan using idx_array on test_array
648+ Index Cond: (i @> '{}'::real[])
649+ (2 rows)
650+
651+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i <@ '{}';
652+ QUERY PLAN
653+ ------------------------------------------
654+ Index Scan using idx_array on test_array
655+ Index Cond: (i <@ '{}'::real[])
656+ (2 rows)
657+
658+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i % '{}';
659+ QUERY PLAN
660+ ------------------------------------------
661+ Index Scan using idx_array on test_array
662+ Index Cond: (i % '{}'::real[])
663+ (2 rows)
664+
665+ ALTER TABLE test_array ALTER COLUMN i TYPE float8[] USING i::float8[];
666+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i = '{}';
667+ QUERY PLAN
668+ ----------------------------------------------
669+ Index Scan using idx_array on test_array
670+ Index Cond: (i = '{}'::double precision[])
671+ (2 rows)
672+
673+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i && '{}';
674+ QUERY PLAN
675+ -----------------------------------------------
676+ Index Scan using idx_array on test_array
677+ Index Cond: (i && '{}'::double precision[])
678+ (2 rows)
679+
680+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i @> '{}';
681+ QUERY PLAN
682+ -----------------------------------------------
683+ Index Scan using idx_array on test_array
684+ Index Cond: (i @> '{}'::double precision[])
685+ (2 rows)
686+
687+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i <@ '{}';
688+ QUERY PLAN
689+ -----------------------------------------------
690+ Index Scan using idx_array on test_array
691+ Index Cond: (i <@ '{}'::double precision[])
692+ (2 rows)
693+
694+ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i % '{}';
695+ QUERY PLAN
696+ ----------------------------------------------
697+ Index Scan using idx_array on test_array
698+ Index Cond: (i % '{}'::double precision[])
699+ (2 rows)
700+
0 commit comments