diff --git a/src/backend/nodes/list.c b/src/backend/nodes/list.c
index 4ac40a1c1da82f8f4209ba53b6dc887cb4ee9c7d..6ab1c1910b766098fa86f23eaf5a1180084d9b7a 100644
--- a/src/backend/nodes/list.c
+++ b/src/backend/nodes/list.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/nodes/list.c,v 1.18 1999/02/22 05:26:18 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/nodes/list.c,v 1.19 1999/02/22 06:08:47 momjian Exp $
  *
  * NOTES
  *	  XXX a few of the following functions are duplicated to handle
@@ -29,6 +29,11 @@
 #include "utils/elog.h"
 #include "utils/palloc.h"
 
+/*
+ *	makeList
+ *
+ *	Take varargs, terminated by -1, and make a List
+ */
 List *
 makeList(void *elem,...)
 {
@@ -57,6 +62,11 @@ makeList(void *elem,...)
 	return retval;
 }
 
+/*
+ *	lcons
+ *
+ *	Add obj to the front of list, or make a new list if 'list' is NIL
+ */
 List *
 lcons(void *obj, List *list)
 {
@@ -67,6 +77,11 @@ lcons(void *obj, List *list)
 	return l;
 }
 
+/*
+ *	lconsi
+ *
+ *	Same as lcons, but for integer data
+ */
 List *
 lconsi(int datum, List *list)
 {
@@ -77,18 +92,35 @@ lconsi(int datum, List *list)
 	return l;
 }
 
+/*
+ *	lappend
+ *
+ *	Add obj to the end of list, or make a new list if 'list' is NIL
+ *	
+ * MORE EXPENSIVE THAN lcons
+ */
 List *
 lappend(List *list, void *obj)
 {
 	return nconc(list, lcons(obj, NIL));
 }
 
+/*
+ *	lappendi
+ *
+ *	Same as lappend, but for integers
+ */
 List *
 lappendi(List *list, int datum)
 {
 	return nconc(list, lconsi(datum, NIL));
 }
 
+/*
+ *	nconc
+ *
+ *	Concat l2 on to the end of l1
+ */
 List *
 nconc(List *l1, List *l2)
 {
@@ -131,6 +163,9 @@ nreverse(List *list)
 }
 #endif
 
+/*
+ *	makeInteger
+ */
 Value *
 makeInteger(long i)
 {
@@ -141,6 +176,9 @@ makeInteger(long i)
 	return v;
 }
 
+/*
+ *	makeFloat
+ */
 Value *
 makeFloat(double d)
 {
@@ -151,6 +189,9 @@ makeFloat(double d)
 	return v;
 }
 
+/*
+ *	makeString
+ */
 Value *
 makeString(char *str)
 {
@@ -161,7 +202,11 @@ makeString(char *str)
 	return v;
 }
 
-/* n starts with 0 */
+/*
+ *	nth
+ *
+ *	Get the n'th element of the list.  First element is 0th.
+ */
 void *
 nth(int n, List *l)
 {
@@ -174,6 +219,11 @@ nth(int n, List *l)
 	return lfirst(l);
 }
 
+/*
+ *	nthi
+ *
+ *	Same as nthi, but for integers
+ */
 int
 nthi(int n, List *l)
 {
@@ -200,6 +250,11 @@ set_nth(List *l, int n, void *elem)
 	return;
 }
 
+/*
+ *	length
+ *
+ *	Get the length of l
+ */
 int
 length(List *l)
 {
@@ -213,6 +268,11 @@ length(List *l)
 	return i;
 }
 
+/*
+ *	freeList
+ *
+ *	Free the List nodes of a list
+ */
 void
 freeList(List *list)
 {
@@ -415,6 +475,9 @@ lremove(void *elem, List *list)
 	return result;
 }
 
+/*
+ *	LispRemove
+ */
 List *
 LispRemove(void *elem, List *list)
 {
@@ -466,6 +529,11 @@ intLispRemove(int elem, List *list)
 
 #endif
 
+/*
+ *	set_difference
+ *
+ *	Return l1 without the elements in l2.
+ */
 List *
 set_difference(List *l1, List *l2)
 {
@@ -483,6 +551,11 @@ set_difference(List *l1, List *l2)
 	return result;
 }
 
+/*
+ *	set_differencei
+ *
+ *	Same as set_difference, but for integers
+ */
 List *
 set_differencei(List *l1, List *l2)
 {
diff --git a/src/backend/optimizer/path/joinrels.c b/src/backend/optimizer/path/joinrels.c
index 208aacb20561b1af617a03af0cfb68cf9dac76ba..a4e08ca649ffe9ea39573ec6bc478acc51201a02 100644
--- a/src/backend/optimizer/path/joinrels.c
+++ b/src/backend/optimizer/path/joinrels.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinrels.c,v 1.31 1999/02/22 05:26:20 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/optimizer/path/joinrels.c,v 1.32 1999/02/22 06:08:48 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -61,7 +61,7 @@ make_rels_by_joins(Query *root, List *old_rels)
 			 */
 			joined_rels = make_rels_by_clauseless_joins(old_rel,
 														root->base_rel_list);
-			joined_rels = append(joined_rels,
+			joined_rels = nconc(joined_rels,
 								make_rels_by_clauseless_joins(old_rel,
 															   old_rels));
 		}
@@ -236,10 +236,10 @@ make_join_rel(RelOptInfo *outer_rel, RelOptInfo *inner_rel, JoinInfo *joininfo)
 		joinrel->restrictinfo = joininfo->jinfo_restrictinfo;
 
 	joinrel_joininfo_list = new_joininfo_list(
-										append(outer_rel->joininfo,
-											   inner_rel->joininfo),
+										nconc(copyObject(outer_rel->joininfo),
+											  copyObject(inner_rel->joininfo)),
 										nconc(listCopy(outer_rel->relids),
-								  			   listCopy(inner_rel->relids)));
+								  			  listCopy(inner_rel->relids)));
 
 	joinrel->joininfo = joinrel_joininfo_list;