diff --git a/src/backend/optimizer/path/prune.c b/src/backend/optimizer/path/prune.c
index 014c72e90605b483ef875e3374309856fcafd46a..250a670fc43eb354fed7ac0c75eff505144f62cf 100644
--- a/src/backend/optimizer/path/prune.c
+++ b/src/backend/optimizer/path/prune.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/prune.c,v 1.12 1998/02/26 04:32:43 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/prune.c,v 1.13 1998/04/02 07:27:15 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -61,39 +61,25 @@ prune_joinrels(List *rel_list)
 static List *
 prune_joinrel(Rel *rel, List *other_rels)
 {
-	List	   *cur = NIL;
-	List	   *return_list = NIL;
+	List	   *i = NIL;
+	List	   *result = NIL;
 
-	/* find first relation that doesn't match */
-	foreach(cur, other_rels)
+	foreach(i, other_rels)
 	{
-		Rel		   *other_rel = (Rel *) lfirst(cur);
-
-		if (!same(rel->relids, other_rel->relids))
-			break;
-	}
-
-	/* we now know cur doesn't match, or is NIL */
-	return_list = cur;
-
-	/*
-	 * remove relations that do match, we use lnext so we can remove
-	 * easily
-	 */
-	while (cur != NIL && lnext(cur) != NIL)
-	{
-		Rel		   *other_rel = (Rel *) lfirst(lnext(cur));
-
+		Rel	   *other_rel = (Rel *) lfirst(i);
+		
 		if (same(rel->relids, other_rel->relids))
 		{
 			rel->pathlist = add_pathlist(rel,
 										 rel->pathlist,
 										 other_rel->pathlist);
-			lnext(cur) = lnext(lnext(cur));		/* delete it */
 		}
-		cur = lnext(cur);
+		else
+		{
+			result = nconc(result, lcons(other_rel, NIL));
+		}
 	}
-	return return_list;
+	return (result);
 }
 
 /*