@@ -645,7 +645,7 @@ SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C";
645
645
SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1
646
646
(2 rows)
647
647
648
- -- Multiple CoerceViaIO wrapping a constant. Will not squash
648
+ -- Multiple CoerceViaIO are squashed
649
649
SELECT pg_stat_statements_reset() IS NOT NULL AS t;
650
650
t
651
651
---
@@ -661,10 +661,10 @@ SELECT WHERE 1 = ANY(ARRAY[1::text::int::text::int, 1::text::int::text::int]);
661
661
(1 row)
662
662
663
663
SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C";
664
- query | calls
665
- ------------------------------------------------------------------------- +-------
666
- SELECT WHERE $1 IN ($2::text::int::text::int, $3::text::int::text::int) | 2
667
- SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1
664
+ query | calls
665
+ ----------------------------------------------------+-------
666
+ SELECT WHERE $1 IN ($2 /*, ... */) | 2
667
+ SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1
668
668
(2 rows)
669
669
670
670
--
@@ -676,7 +676,7 @@ SELECT pg_stat_statements_reset() IS NOT NULL AS t;
676
676
t
677
677
(1 row)
678
678
679
- -- if there is only one level of RelabelType, the list will be squashable
679
+ -- However many layers of RelabelType there are , the list will be squashable.
680
680
SELECT * FROM test_squash WHERE id IN
681
681
(1::oid, 2::oid, 3::oid, 4::oid, 5::oid, 6::oid, 7::oid, 8::oid, 9::oid);
682
682
id | data
@@ -689,8 +689,6 @@ SELECT ARRAY[1::oid, 2::oid, 3::oid, 4::oid, 5::oid, 6::oid, 7::oid, 8::oid, 9::
689
689
{1,2,3,4,5,6,7,8,9}
690
690
(1 row)
691
691
692
- -- if there is at least one element with multiple levels of RelabelType,
693
- -- the list will not be squashable
694
692
SELECT * FROM test_squash WHERE id IN (1::oid, 2::oid::int::oid);
695
693
id | data
696
694
----+------
@@ -701,15 +699,25 @@ SELECT * FROM test_squash WHERE id = ANY(ARRAY[1::oid, 2::oid::int::oid]);
701
699
----+------
702
700
(0 rows)
703
701
702
+ -- RelabelType together with CoerceViaIO is also squashable
703
+ SELECT * FROM test_squash WHERE id = ANY(ARRAY[1::oid::text::int::oid, 2::oid::int::oid]);
704
+ id | data
705
+ ----+------
706
+ (0 rows)
707
+
708
+ SELECT * FROM test_squash WHERE id = ANY(ARRAY[1::text::int::oid, 2::oid::int::oid]);
709
+ id | data
710
+ ----+------
711
+ (0 rows)
712
+
704
713
SELECT query, calls FROM pg_stat_statements ORDER BY query COLLATE "C";
705
- query | calls
706
- --------------------------------------------------------------------+-------
707
- SELECT * FROM test_squash WHERE id IN +| 1
708
- ($1 /*, ... */) |
709
- SELECT * FROM test_squash WHERE id IN ($1::oid, $2::oid::int::oid) | 2
710
- SELECT ARRAY[$1 /*, ... */] | 1
711
- SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1
712
- (4 rows)
714
+ query | calls
715
+ ----------------------------------------------------+-------
716
+ SELECT * FROM test_squash WHERE id IN +| 5
717
+ ($1 /*, ... */) |
718
+ SELECT ARRAY[$1 /*, ... */] | 1
719
+ SELECT pg_stat_statements_reset() IS NOT NULL AS t | 1
720
+ (3 rows)
713
721
714
722
--
715
723
-- edge cases
0 commit comments