mirror of
https://github.com/postgres/postgres.git
synced 2025-06-03 00:02:26 -04:00
Add nbtree ScalarArrayOpExpr tests.
Add test coverage for the nbtutils.c routines concerned with IndexScans that have native ScalarArrayOpExpr quals. The ScalarArrayOpExpr specialized mark and restore routines, and the "find extreme element" routine now have some test coverage. These functions are probably infrequently exercised by real world queries, so having some coverage seems like a good idea. The mark and restore routines were originally added by a bugfix that came several weeks after the first stable release of Postgres 9.2 (see commit 70bc5833195).
This commit is contained in:
parent
dd1f645cc8
commit
d9c501da70
@ -6176,6 +6176,53 @@ where j1.id1 % 1000 = 1 and j2.id1 % 1000 = 1;
|
||||
1 | 2 | 1 | 2
|
||||
(2 rows)
|
||||
|
||||
-- Exercise array keys mark/restore B-Tree code
|
||||
explain (costs off) select * from j1
|
||||
inner join j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2
|
||||
where j1.id1 % 1000 = 1 and j2.id1 % 1000 = 1 and j2.id1 = any (array[1]);
|
||||
QUERY PLAN
|
||||
----------------------------------------------------
|
||||
Merge Join
|
||||
Merge Cond: (j1.id1 = j2.id1)
|
||||
Join Filter: (j1.id2 = j2.id2)
|
||||
-> Index Scan using j1_id1_idx on j1
|
||||
-> Index Scan using j2_id1_idx on j2
|
||||
Index Cond: (id1 = ANY ('{1}'::integer[]))
|
||||
(6 rows)
|
||||
|
||||
select * from j1
|
||||
inner join j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2
|
||||
where j1.id1 % 1000 = 1 and j2.id1 % 1000 = 1 and j2.id1 = any (array[1]);
|
||||
id1 | id2 | id1 | id2
|
||||
-----+-----+-----+-----
|
||||
1 | 1 | 1 | 1
|
||||
1 | 2 | 1 | 2
|
||||
(2 rows)
|
||||
|
||||
-- Exercise array keys "find extreme element" B-Tree code
|
||||
explain (costs off) select * from j1
|
||||
inner join j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2
|
||||
where j1.id1 % 1000 = 1 and j2.id1 % 1000 = 1 and j2.id1 >= any (array[1,5]);
|
||||
QUERY PLAN
|
||||
-------------------------------------------------------
|
||||
Merge Join
|
||||
Merge Cond: (j1.id1 = j2.id1)
|
||||
Join Filter: (j1.id2 = j2.id2)
|
||||
-> Index Scan using j1_id1_idx on j1
|
||||
-> Index Only Scan using j2_pkey on j2
|
||||
Index Cond: (id1 >= ANY ('{1,5}'::integer[]))
|
||||
Filter: ((id1 % 1000) = 1)
|
||||
(7 rows)
|
||||
|
||||
select * from j1
|
||||
inner join j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2
|
||||
where j1.id1 % 1000 = 1 and j2.id1 % 1000 = 1 and j2.id1 >= any (array[1,5]);
|
||||
id1 | id2 | id1 | id2
|
||||
-----+-----+-----+-----
|
||||
1 | 1 | 1 | 1
|
||||
1 | 2 | 1 | 2
|
||||
(2 rows)
|
||||
|
||||
reset enable_nestloop;
|
||||
reset enable_hashjoin;
|
||||
reset enable_sort;
|
||||
|
@ -2124,6 +2124,24 @@ select * from j1
|
||||
inner join j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2
|
||||
where j1.id1 % 1000 = 1 and j2.id1 % 1000 = 1;
|
||||
|
||||
-- Exercise array keys mark/restore B-Tree code
|
||||
explain (costs off) select * from j1
|
||||
inner join j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2
|
||||
where j1.id1 % 1000 = 1 and j2.id1 % 1000 = 1 and j2.id1 = any (array[1]);
|
||||
|
||||
select * from j1
|
||||
inner join j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2
|
||||
where j1.id1 % 1000 = 1 and j2.id1 % 1000 = 1 and j2.id1 = any (array[1]);
|
||||
|
||||
-- Exercise array keys "find extreme element" B-Tree code
|
||||
explain (costs off) select * from j1
|
||||
inner join j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2
|
||||
where j1.id1 % 1000 = 1 and j2.id1 % 1000 = 1 and j2.id1 >= any (array[1,5]);
|
||||
|
||||
select * from j1
|
||||
inner join j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2
|
||||
where j1.id1 % 1000 = 1 and j2.id1 % 1000 = 1 and j2.id1 >= any (array[1,5]);
|
||||
|
||||
reset enable_nestloop;
|
||||
reset enable_hashjoin;
|
||||
reset enable_sort;
|
||||
|
Loading…
x
Reference in New Issue
Block a user