diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index 139db3b5e36dcccb03d2c70650f1feab15fbd5a2..45899d15d83c4bde02bb5f7a923206410f5c7833 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.32 1998/08/19 02:01:05 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.33 1998/08/20 22:07:30 momjian Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -1274,10 +1274,10 @@ heap_delete(Relation relation, ItemPointer tid)
  * ----------------
  */
 int
-heap_replace(Relation relation, ItemPointer otid, HeapTuple tup)
+heap_replace(Relation relation, ItemPointer otid, HeapTuple replace_tuple)
 {
 	ItemId		lp;
-	HeapTuple	tp;
+	HeapTuple	old_tuple;
 	Page		dp;
 	Buffer		buffer;
 	HeapTuple	tuple;
@@ -1319,8 +1319,8 @@ heap_replace(Relation relation, ItemPointer otid, HeapTuple tup)
 	 * ----------------
 	 */
 
-	tp = (HeapTuple) PageGetItem(dp, lp);
-	Assert(HeapTupleIsValid(tp));
+	old_tuple = (HeapTuple) PageGetItem(dp, lp);
+	Assert(HeapTupleIsValid(old_tuple));
 
 	/* -----------------
 	 *	the following test should be able to catch all non-functional
@@ -1333,7 +1333,7 @@ heap_replace(Relation relation, ItemPointer otid, HeapTuple tup)
 	 * -----------------
 	 */
 
-	if (TupleUpdatedByCurXactAndCmd(tp))
+	if (TupleUpdatedByCurXactAndCmd(old_tuple))
 	{
 		elog(NOTICE, "Non-functional update, only first update is performed");
 		if (IsSystemRelationName(RelationGetRelationName(relation)->data))
@@ -1367,19 +1367,19 @@ heap_replace(Relation relation, ItemPointer otid, HeapTuple tup)
 	}
 
 	/* XXX order problems if not atomic assignment ??? */
-	tup->t_oid = tp->t_oid;
-	TransactionIdStore(GetCurrentTransactionId(), &(tup->t_xmin));
-	tup->t_cmin = GetCurrentCommandId();
-	StoreInvalidTransactionId(&(tup->t_xmax));
-	tup->t_infomask &= ~(HEAP_XACT_MASK);
-	tup->t_infomask |= HEAP_XMAX_INVALID;
+	replace_tuple->t_oid = old_tuple->t_oid;
+	TransactionIdStore(GetCurrentTransactionId(), &(replace_tuple->t_xmin));
+	replace_tuple->t_cmin = GetCurrentCommandId();
+	StoreInvalidTransactionId(&(replace_tuple->t_xmax));
+	replace_tuple->t_infomask &= ~(HEAP_XACT_MASK);
+	replace_tuple->t_infomask |= HEAP_XMAX_INVALID;
 
 	/* ----------------
 	 *	insert new item
 	 * ----------------
 	 */
-	if ((unsigned) DOUBLEALIGN(tup->t_len) <= PageGetFreeSpace((Page) dp))
-		RelationPutHeapTuple(relation, BufferGetBlockNumber(buffer), tup);
+	if ((unsigned) DOUBLEALIGN(replace_tuple->t_len) <= PageGetFreeSpace((Page) dp))
+		RelationPutHeapTuple(relation, BufferGetBlockNumber(buffer), replace_tuple);
 	else
 	{
 		/* ----------------
@@ -1387,23 +1387,23 @@ heap_replace(Relation relation, ItemPointer otid, HeapTuple tup)
 		 *	for a new place to put it.
 		 * ----------------
 		 */
-		doinsert(relation, tup);
+		doinsert(relation, replace_tuple);
 	}
 
 	/* ----------------
 	 *	new item in place, now record transaction information
 	 * ----------------
 	 */
-	TransactionIdStore(GetCurrentTransactionId(), &(tp->t_xmax));
-	tp->t_cmax = GetCurrentCommandId();
-	tp->t_infomask &= ~(HEAP_XMAX_COMMITTED | HEAP_XMAX_INVALID);
+	TransactionIdStore(GetCurrentTransactionId(), &(old_tuple->t_xmax));
+	old_tuple->t_cmax = GetCurrentCommandId();
+	old_tuple->t_infomask &= ~(HEAP_XMAX_COMMITTED | HEAP_XMAX_INVALID);
 
 	/* ----------------
 	 *	invalidate caches
 	 * ----------------
 	 */
 	SetRefreshWhenInvalidate(ImmediateInvalidation);
-	RelationInvalidateHeapTuple(relation, tp);
+	RelationInvalidateHeapTuple(relation, old_tuple);
 	SetRefreshWhenInvalidate((bool) !ImmediateInvalidation);
 
 	WriteBuffer(buffer);
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 7d70b7a453d17809b5a44c3b6a500a03a2c7a7f4..84f6849357f9df88f776b8975f04581c95ce087e 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.58 1998/08/19 02:01:30 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.59 1998/08/20 22:07:32 momjian Exp $
  *
  * INTERFACE ROUTINES
  *		heap_create()			- Create an uncataloged heap relation
@@ -1051,18 +1051,20 @@ DeletePgAttributeTuples(Relation rel)
 	 */
 	RelationSetLockForWrite(pg_attribute_desc);
 
-	attnum = FirstLowInvalidHeapAttributeNumber + 1; /* cmax */
-
-	while (HeapTupleIsValid(tup = SearchSysCacheTupleCopy(ATTNUM,
-									ObjectIdGetDatum(rel->rd_att->attrs[0]->attrelid),
-									Int16GetDatum(attnum),
-									0, 0)))
+	for (attnum = FirstLowInvalidHeapAttributeNumber + 1;
+			attnum <= rel->rd_att->natts;
+			attnum++)
 	{
-		heap_delete(pg_attribute_desc, &tup->t_ctid);
-		pfree(tup);
-		attnum++;
+		if (HeapTupleIsValid(tup = SearchSysCacheTupleCopy(ATTNUM,
+										ObjectIdGetDatum(RelationGetRelid(rel)),
+										Int16GetDatum(attnum),
+										0, 0)))
+		{
+			heap_delete(pg_attribute_desc, &tup->t_ctid);
+			pfree(tup);
+		}
 	}
-
+	
 	/* ----------------
 	 * Release the write lock
 	 * ----------------
@@ -1104,8 +1106,10 @@ DeletePgTypeTuple(Relation rel)
 	 *	to this relation.
 	 * ----------------
 	 */
-	ScanKeyEntryInitialize(&key, 0, Anum_pg_type_typrelid, F_INT4EQ,
-						   rel->rd_att->attrs[0]->attrelid);
+	ScanKeyEntryInitialize(&key, 0,
+							Anum_pg_type_typrelid,
+							F_OIDEQ,
+							ObjectIdGetDatum(RelationGetRelid(rel)));
 
 	pg_type_scan = heap_beginscan(pg_type_desc,
 								  0,
@@ -1140,7 +1144,9 @@ DeletePgTypeTuple(Relation rel)
 	pg_attribute_desc = heap_openr(AttributeRelationName);
 
 	ScanKeyEntryInitialize(&attkey,
-						   0, Anum_pg_attribute_atttypid, F_INT4EQ,
+						   0,
+						   Anum_pg_attribute_atttypid,
+						   F_OIDEQ,
 						   typoid);
 
 	pg_attribute_scan = heap_beginscan(pg_attribute_desc,
@@ -1151,13 +1157,13 @@ DeletePgTypeTuple(Relation rel)
 
 	/* ----------------
 	 *	try and get a pg_attribute tuple.  if we succeed it means
-	 *	we cant delete the relation because something depends on
+	 *	we can't delete the relation because something depends on
 	 *	the schema.
 	 * ----------------
 	 */
 	atttup = heap_getnext(pg_attribute_scan, 0);
 
-	if (PointerIsValid(atttup))
+	if (HeapTupleIsValid(atttup))
 	{
 		Oid			relid = ((AttributeTupleForm) GETSTRUCT(atttup))->attrelid;
 
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 48a2cada29a306755e0148adc72fc6f42f805817..95442918f69eb14316f2225da32ac07691b18459 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.49 1998/08/20 15:16:54 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.50 1998/08/20 22:07:34 momjian Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -1173,6 +1173,7 @@ index_destroy(Oid indexId)
 {
 	Relation	indexRelation;
 	Relation	catalogRelation;
+	Relation	attributeRelation;
 	HeapTuple	tuple;
 	int16		attnum;
 	
@@ -1200,7 +1201,7 @@ index_destroy(Oid indexId)
 	 * fix ATTRIBUTE relation
 	 * ----------------
 	 */
-	catalogRelation = heap_openr(AttributeRelationName);
+	attributeRelation = heap_openr(AttributeRelationName);
 
 	attnum = 1; /* indexes start at 1 */
 
@@ -1209,29 +1210,28 @@ index_destroy(Oid indexId)
 									Int16GetDatum(attnum),
 									0, 0)))
 	{
-		heap_delete(catalogRelation, &tuple->t_ctid);
+		heap_delete(attributeRelation, &tuple->t_ctid);
 		pfree(tuple);
 		attnum++;
 	}
-
-	heap_close(catalogRelation);
+	heap_close(attributeRelation);
 
 	/* ----------------
 	 * fix INDEX relation
 	 * ----------------
 	 */
 	tuple = SearchSysCacheTupleCopy(INDEXRELID,
-								  ObjectIdGetDatum(indexId),
-								  0, 0, 0);
+									  ObjectIdGetDatum(indexId),
+									  0, 0, 0);
 
 	if (!HeapTupleIsValid(tuple))
-	{
 		elog(NOTICE, "IndexRelationDestroy: %s's INDEX tuple missing",
 			 RelationGetRelationName(indexRelation));
-	}
-	heap_delete(catalogRelation, &tuple->t_ctid);
+
+	Assert(ItemPointerIsValid(&tuple->t_ctid));
+			         
+	heap_delete(indexRelation, &tuple->t_ctid);
 	pfree(tuple);
-	heap_close(catalogRelation);
 
 	/*
 	 * flush cache and physically remove the file
diff --git a/src/backend/catalog/indexing.c b/src/backend/catalog/indexing.c
index 8b50cee327c1e384933ea71a8275ea238cdc5b60..e13200c96b2c180c186c58a1d39846f7d9813564 100644
--- a/src/backend/catalog/indexing.c
+++ b/src/backend/catalog/indexing.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.21 1998/08/20 15:16:55 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.22 1998/08/20 22:07:36 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -125,7 +125,7 @@ CatalogIndexInsert(Relation *idescs,
 		InsertIndexResult indexRes;
 
 		indexDescriptor = RelationGetTupleDescriptor(idescs[i]);
-		pgIndexTup = SearchSysCacheTuple(INDEXRELID,
+		pgIndexTup = SearchSysCacheTupleCopy(INDEXRELID,
 										 ObjectIdGetDatum(idescs[i]->rd_id),
 										 0, 0, 0);
 		Assert(pgIndexTup);
@@ -163,6 +163,7 @@ CatalogIndexInsert(Relation *idescs,
 								&heapTuple->t_ctid, heapRelation);
 		if (indexRes)
 			pfree(indexRes);
+		pfree(pgIndexTup);
 	}
 }
 
diff --git a/src/backend/catalog/pg_type.c b/src/backend/catalog/pg_type.c
index a23e73893f825dc1aab9ae3fd0a2a17c85250a28..999a398db6c21d9f9ef898eaa54bd228a8301a5a 100644
--- a/src/backend/catalog/pg_type.c
+++ b/src/backend/catalog/pg_type.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.27 1998/08/19 02:01:38 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.28 1998/08/20 22:07:37 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -384,12 +384,12 @@ TypeCreate(char *typeName,
 	values[i++] = (Datum) GetUserId();	/* 2 */
 	values[i++] = (Datum) internalSize; /* 3 */
 	values[i++] = (Datum) externalSize; /* 4 */
-	values[i++] = (Datum) passedByValue;		/* 5 */
+	values[i++] = (Datum) passedByValue;/* 5 */
 	values[i++] = (Datum) typeType;		/* 6 */
 	values[i++] = (Datum) (bool) 1;		/* 7 */
 	values[i++] = (Datum) typDelim;		/* 8 */
 	values[i++] = (Datum) (typeType == 'c' ? relationOid : InvalidOid); /* 9 */
-	values[i++] = (Datum) elementObjectId;		/* 10 */
+	values[i++] = (Datum) elementObjectId;/* 10 */
 
 	/*
 	 * arguments to type input and output functions must be 0
@@ -431,7 +431,7 @@ TypeCreate(char *typeName,
 				func_error("TypeCreate", procname, 1, argList, NULL);
 		}
 
-		values[i++] = (Datum) tup->t_oid;		/* 11 - 14 */
+		values[i++] = (Datum) tup->t_oid;	/* 11 - 14 */
 	}
 
 	/* ----------------
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c
index 6448d2e830c21237e58076668f1653530d838bb6..bd92c1368eff50b28f9226b13cdf761b1e846a27 100644
--- a/src/backend/commands/vacuum.c
+++ b/src/backend/commands/vacuum.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.75 1998/08/20 15:16:57 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.76 1998/08/20 22:07:39 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -2217,7 +2217,7 @@ vc_mkindesc(Relation onerel, int nindices, Relation *Irel, IndDesc **Idesc)
 		cachetuple = SearchSysCacheTupleCopy(INDEXRELID,
 										ObjectIdGetDatum(RelationGetRelid(Irel[i])),
 										0, 0, 0);
-		Assert(tuple);
+		Assert(cachetuple);
 
 		/* get the buffer cache tuple */
 		tuple = heap_fetch(onerel, SnapshotNow, &cachetuple->t_ctid, &buffer);
diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c
index 489fc9096a8bb822473b156f6d9dbad7a03b25d1..bbc8e2d94085f8ddf63d3b1a8aad7cfab4997da6 100644
--- a/src/backend/executor/execUtils.c
+++ b/src/backend/executor/execUtils.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.35 1998/08/19 02:02:01 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.36 1998/08/20 22:07:41 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -690,7 +690,7 @@ ExecGetIndexKeyInfo(IndexTupleForm indexTuple,
  *		the IndexCatalogInformation function in plancat.c
  *		because IndexCatalogInformation is poorly written.
  *
- *		It would be much better the functionality provided
+ *		It would be much better if the functionality provided
  *		by this function and IndexCatalogInformation was
  *		in the form of a small set of orthogonal routines..
  *		If you are trying to understand this, I suggest you
diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c
index 9fc911a99bcc5b935ca21babc9082379087057dd..cd327632a870ee791dd40d04aae7cd015e77a334 100644
--- a/src/backend/utils/cache/inval.c
+++ b/src/backend/utils/cache/inval.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/cache/inval.c,v 1.13 1998/08/19 14:51:29 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/cache/inval.c,v 1.14 1998/08/20 22:07:43 momjian Exp $
  *
  * Note - this code is real crufty...
  *
@@ -643,6 +643,7 @@ RelationInvalidateHeapTuple(Relation relation, HeapTuple tuple)
 									RelationIdRegisterLocalInvalid);
 
 	if (RefreshWhenInvalidate)
+		/* what does this do?  bjm 1998/08/20 */
 		RelationInvalidateCatalogCacheTuple(relation,
 											tuple,
 											(void (*) ()) NULL);
diff --git a/src/bin/initdb/initdb.sh b/src/bin/initdb/initdb.sh
index 02077511aa87b1c2271fa77f4e3292c430b43861..8a5c665b939da0b82597ac11f542ec8cddad6459 100644
--- a/src/bin/initdb/initdb.sh
+++ b/src/bin/initdb/initdb.sh
@@ -26,7 +26,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.49 1998/08/20 15:16:59 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.50 1998/08/20 22:07:46 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -404,13 +404,13 @@ echo
 PGSQL_OPT="-o /dev/null -F -Q -D$PGDATA"
 
 # If the COPY is first, the VACUUM generates an error, so we vacuum first
-echo "vacuuming template1"
+echo "Vacuuming template1"
 echo "vacuum" | postgres $PGSQL_OPT template1 > /dev/null
 
 echo "COPY pg_shadow TO '$PGDATA/pg_pwd' USING DELIMITERS '\\t'" | \
 	postgres $PGSQL_OPT template1 > /dev/null
 
-echo "creating public pg_user view"
+echo "Creating public pg_user view"
 echo "CREATE TABLE xpg_user (		\
 	    usename	name,		\
 	    usesysid	int4,		\
@@ -436,7 +436,7 @@ echo "CREATE RULE _RETpg_user AS ON SELECT TO pg_user DO INSTEAD	\
 echo "REVOKE ALL on pg_shadow FROM public" | \
 	postgres $PGSQL_OPT template1 > /dev/null
 
-echo "loading pg_description"
+echo "Loading pg_description"
 echo "copy pg_description from '$TEMPLATE_DESCR'" | \
 	postgres $PGSQL_OPT template1 > /dev/null
 echo "copy pg_description from '$GLOBAL_DESCR'" | \