summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian1997-12-23 03:27:23 +0000
committerBruce Momjian1997-12-23 03:27:23 +0000
commite4bd9127cb3e4f0eb8aa1b4fe5f4838011b4f2e5 (patch)
tree9605f70fa7ebda0e62d762ea6e12c4a941a85c31
parent3827555869f4072aeac261f63a676377e5b2d630 (diff)
Remove regression in function.
-rw-r--r--src/backend/optimizer/path/prune.c38
1 files changed, 23 insertions, 15 deletions
diff --git a/src/backend/optimizer/path/prune.c b/src/backend/optimizer/path/prune.c
index 26bd5596963..f7ff4e206c0 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;
}