|
|
|
@ -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;
|
|
|
|
|
} |
|
|
|
|