I wrote: > Interesting. We seem to recognize the fact that the extra clause is > redundant in nearly all places ... but not in indexscan plan generation.
> I tried this simplified test case: > create table t_wert(werttypid int); > create table t_werttyp(id int); > create index idx_wert_werttypid on t_wert(werttypid); > explain select * from > t_wert JOIN t_werttyp ON (t_werttyp.id = t_wert.werttypid) > where t_werttyp.id = t_wert.werttypid; > explain select * from > t_wert JOIN t_werttyp ON (t_werttyp.id = t_wert.werttypid); FYI, I have committed changes that seem to fix this problem in CVS tip. regression=# set enable_mergejoin to 0; SET regression=# set enable_hashjoin to 0; SET regression=# explain select * from regression-# t_wert JOIN t_werttyp ON (t_werttyp.id = t_wert.werttypid) regression-# where t_werttyp.id = t_wert.werttypid; QUERY PLAN ---------------------------------------------------------------------------------------- Nested Loop (cost=0.00..17150.00 rows=5000 width=8) -> Seq Scan on t_werttyp (cost=0.00..20.00 rows=1000 width=4) -> Index Scan using idx_wert_werttypid on t_wert (cost=0.00..17.07 rows=5 width=4) Index Cond: ("outer".id = t_wert.werttypid) (4 rows) regression=# explain select * from regression-# t_wert JOIN t_werttyp ON (t_werttyp.id = t_wert.werttypid); QUERY PLAN ---------------------------------------------------------------------------------------- Nested Loop (cost=0.00..17150.00 rows=5000 width=8) -> Seq Scan on t_werttyp (cost=0.00..20.00 rows=1000 width=4) -> Index Scan using idx_wert_werttypid on t_wert (cost=0.00..17.07 rows=5 width=4) Index Cond: ("outer".id = t_wert.werttypid) (4 rows) regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])