diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 9ba935f716d02e975d927289de14e1b74d097fda..dceab60c8e0ec5beb11a0defa9b226e999bae557 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.134 2000/06/28 03:31:22 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.135 2000/07/02 04:46:09 tgl Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -166,12 +166,11 @@ heap_create(char *relname,
 {
 	static unsigned int uniqueId = 0;
 
-	int			i;
 	Oid			relid;
 	Relation	rel;
-	int			len;
 	bool		nailme = false;
 	int			natts = tupDesc->natts;
+	int			i;
 	MemoryContext oldcxt;
 
 	/* ----------------
@@ -236,13 +235,13 @@ heap_create(char *relname,
 	 *	allocate a new relation descriptor.
 	 * ----------------
 	 */
-	len = sizeof(RelationData);
-
-	rel = (Relation) palloc(len);
-	MemSet((char *) rel, 0, len);
+	rel = (Relation) palloc(sizeof(RelationData));
+	MemSet((char *) rel, 0, sizeof(RelationData));
 	rel->rd_fd = -1;			/* table is not open */
 	rel->rd_unlinked = true;	/* table is not created yet */
 
+	RelationSetReferenceCount(rel, 1);
+
 	/*
 	 * create a new tuple descriptor from the one passed in
 	 */
@@ -257,14 +256,11 @@ heap_create(char *relname,
 	if (nailme)
 		rel->rd_isnailed = true;
 
-	RelationSetReferenceCount(rel, 1);
-
-	rel->rd_rel = (Form_pg_class) palloc(sizeof *rel->rd_rel);
-
 	/* ----------------
 	 *	initialize the fields of our new relation descriptor
 	 * ----------------
 	 */
+	rel->rd_rel = (Form_pg_class) palloc(sizeof *rel->rd_rel);
 	MemSet((char *) rel->rd_rel, 0, sizeof *rel->rd_rel);
 	strcpy(RelationGetPhysicalRelationName(rel), relname);
 	rel->rd_rel->relkind = RELKIND_UNCATALOGED;
@@ -283,10 +279,14 @@ heap_create(char *relname,
 		rel->rd_rel->reltype = relid;
 	}
 
+	/* ----------------
+	 *	done building relcache entry.
+	 * ----------------
+	 */
+	MemoryContextSwitchTo(oldcxt);
+
 	/* ----------------
 	 *	have the storage manager create the relation.
-	 *
-	 * XXX shouldn't we switch out of CacheMemoryContext for that?
 	 * ----------------
 	 */
 
@@ -296,8 +296,6 @@ heap_create(char *relname,
 
 	RelationRegisterRelation(rel);
 
-	MemoryContextSwitchTo(oldcxt);
-
 	return rel;
 }