diff --git a/src/backend/optimizer/path/prune.c b/src/backend/optimizer/path/prune.c
index 26bd559696360fdb0154976b82ea609941e2c072..f7ff4e206c08ad381b155ab408a4f949a665542d 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.7 1997/12/21 05:18:21 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/optimizer/path/Attic/prune.c,v 1.8 1997/12/23 03:27:23 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -210,22 +210,30 @@ prune_oldrels(List *old_rels)
 {
 	Rel		   *rel;
 	List	   *joininfo_list,
-			   *xjoininfo;
+			   *xjoininfo,
+			   *i,
+			   *temp_list = NIL;
 
-	if (old_rels == NIL)
-		return (NIL);
-
-	rel = (Rel *) lfirst(old_rels);
-	joininfo_list = rel->joininfo;
-	if (joininfo_list == NIL)
-		return (lcons(rel, prune_oldrels(lnext(old_rels))));
-
-	foreach(xjoininfo, joininfo_list)
+	foreach(i, old_rels)
 	{
-		JInfo	   *joininfo = (JInfo *) lfirst(xjoininfo);
+		rel = (Rel *) lfirst(i);
+		joininfo_list = rel->joininfo;
 
-		if (!joininfo->inactive)
-			return (lcons(rel, prune_oldrels(lnext(old_rels))));
+		if (joininfo_list == NIL)
+			temp_list = lcons(rel, temp_list);
+		else
+		{
+			foreach(xjoininfo, joininfo_list)
+			{
+				JInfo	   *joininfo = (JInfo *) lfirst(xjoininfo);
+	
+				if (!joininfo->inactive)
+				{
+					temp_list = lcons(rel, temp_list);
+					break;
+				}
+			}
+		}
 	}
-	return (prune_oldrels(lnext(old_rels)));
+	return temp_list;		
 }