DF

text/plain

Filename: DF
Type: text/plain
Part: 0
Message: Re: [HACKERS] Reminder: Indices are not used
*** prune.c.orig	Thu Apr  2 14:56:54 1998
--- prune.c	Thu Apr  2 15:16:17 1998
***************
*** 61,99 ****
  static List *
  prune_joinrel(Rel *rel, List *other_rels)
  {
! 	List	   *cur = NIL;
! 	List	   *return_list = NIL;
  
! 	/* find first relation that doesn't match */
! 	foreach(cur, 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));
! 
  		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);
  	}
! 	return return_list;
  }
  
  /*
--- 61,85 ----
  static List *
  prune_joinrel(Rel *rel, List *other_rels)
  {
! 	List	   *i = NIL;
! 	List	   *result = NIL;
  
! 	foreach(i, other_rels)
  	{
! 		Rel	   *other_rel = (Rel *) lfirst(i);
! 		
  		if (same(rel->relids, other_rel->relids))
  		{
  			rel->pathlist = add_pathlist(rel,
  										 rel->pathlist,
  										 other_rel->pathlist);
  		}
! 		else
! 		{
! 			result = nconc(result, lcons(other_rel, NIL));
! 		}
  	}
! 	return (result);
  }
  
  /*