@@ -7,6 +7,12 @@ CREATE TABLE test_array (
7
7
);
8
8
INSERT INTO test_array VALUES ('{}'), ('{0}'), ('{1,2,3,4}'), ('{1,2,3}'), ('{1,2}'), ('{1}');
9
9
CREATE 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
10
16
EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i = '{}';
11
17
QUERY PLAN
12
18
------------------------------------------
@@ -512,3 +518,183 @@ EXPLAIN (COSTS OFF) SELECT * FROM test_array WHERE i % '{}';
512
518
Index Cond: (i % '{}'::text[])
513
519
(2 rows)
514
520
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