*** src/backend/optimizer/path/indxpath.c.orig	Sun Aug 28 18:47:20 2005
--- src/backend/optimizer/path/indxpath.c	Thu Sep 22 19:17:41 2005
***************
*** 955,969 ****
  	/*
  	 * Examine each joinclause in the joininfo list to see if it matches any
  	 * key of any index.  If so, add the clause's other rels to the result.
- 	 * (Note: we consider only actual participants, not extraneous rels
- 	 * possibly mentioned in required_relids.)
  	 */
  	foreach(l, rel->joininfo)
  	{
  		RestrictInfo *joininfo = (RestrictInfo *) lfirst(l);
  		Relids	other_rels;
  
! 		other_rels = bms_difference(joininfo->clause_relids, rel->relids);
  		if (matches_any_index(joininfo, rel, other_rels))
  			outer_relids = bms_join(outer_relids, other_rels);
  		else
--- 955,967 ----
  	/*
  	 * Examine each joinclause in the joininfo list to see if it matches any
  	 * key of any index.  If so, add the clause's other rels to the result.
  	 */
  	foreach(l, rel->joininfo)
  	{
  		RestrictInfo *joininfo = (RestrictInfo *) lfirst(l);
  		Relids	other_rels;
  
! 		other_rels = bms_difference(joininfo->required_relids, rel->relids);
  		if (matches_any_index(joininfo, rel, other_rels))
  			outer_relids = bms_join(outer_relids, other_rels);
  		else
