]> granicus.if.org Git - postgresql/commitdiff
Remove regression in function.
authorBruce Momjian <bruce@momjian.us>
Tue, 23 Dec 1997 03:27:23 +0000 (03:27 +0000)
committerBruce Momjian <bruce@momjian.us>
Tue, 23 Dec 1997 03:27:23 +0000 (03:27 +0000)
src/backend/optimizer/path/prune.c

index 26bd559696360fdb0154976b82ea609941e2c072..f7ff4e206c08ad381b155ab408a4f949a665542d 100644 (file)
@@ -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;               
 }