mirror of
https://github.com/postgres/postgres.git
synced 2025-04-24 10:47:04 +03:00
Fix mark-and-restore-skipping test case to not be a self-join.
There isn't any good reason for this test to be a self-join rather than a join between separate tables, except that it saved a couple of SQL commands for setup. A proposed patch to optimize away self-joins breaks the test, so adjust it to avoid that happening. Discussion: https://postgr.es/m/64486b0b-0404-e39e-322d-0801154901f3@postgrespro.ru
This commit is contained in:
parent
0c7d537930
commit
24d08f3c0a
@ -5932,22 +5932,26 @@ left join j2 on j1.id1 = j2.id1 where j1.id2 = 1;
|
||||
set enable_nestloop to 0;
|
||||
set enable_hashjoin to 0;
|
||||
set enable_sort to 0;
|
||||
-- create an index that will be preferred over the PK to perform the join
|
||||
-- create indexes that will be preferred over the PKs to perform the join
|
||||
create index j1_id1_idx on j1 (id1) where id1 % 1000 = 1;
|
||||
explain (costs off) select * from j1 j1
|
||||
inner join j1 j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2
|
||||
create index j2_id1_idx on j2 (id1) where id1 % 1000 = 1;
|
||||
-- need an additional row in j2, if we want j2_id1_idx to be preferred
|
||||
insert into j2 values(1,2);
|
||||
analyze j2;
|
||||
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;
|
||||
QUERY PLAN
|
||||
--------------------------------------------
|
||||
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 j1_id1_idx on j1 j2
|
||||
-> Index Scan using j2_id1_idx on j2
|
||||
(5 rows)
|
||||
|
||||
select * from j1 j1
|
||||
inner join j1 j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2
|
||||
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;
|
||||
id1 | id2 | id1 | id2
|
||||
-----+-----+-----+-----
|
||||
|
@ -2014,15 +2014,20 @@ set enable_nestloop to 0;
|
||||
set enable_hashjoin to 0;
|
||||
set enable_sort to 0;
|
||||
|
||||
-- create an index that will be preferred over the PK to perform the join
|
||||
-- create indexes that will be preferred over the PKs to perform the join
|
||||
create index j1_id1_idx on j1 (id1) where id1 % 1000 = 1;
|
||||
create index j2_id1_idx on j2 (id1) where id1 % 1000 = 1;
|
||||
|
||||
explain (costs off) select * from j1 j1
|
||||
inner join j1 j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2
|
||||
-- need an additional row in j2, if we want j2_id1_idx to be preferred
|
||||
insert into j2 values(1,2);
|
||||
analyze j2;
|
||||
|
||||
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;
|
||||
|
||||
select * from j1 j1
|
||||
inner join j1 j2 on j1.id1 = j2.id1 and j1.id2 = j2.id2
|
||||
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;
|
||||
|
||||
reset enable_nestloop;
|
||||
|
Loading…
x
Reference in New Issue
Block a user