diff --git a/src/backend/nodes/nodes.c b/src/backend/nodes/nodes.c
index 4e694bd09d024013b6b736e73caf3f41287a1357..938cfd91a8cf6ec2996fe1be252ee8f26e1580ed 100644
--- a/src/backend/nodes/nodes.c
+++ b/src/backend/nodes/nodes.c
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/nodes/nodes.c,v 1.16 2002/10/11 04:12:14 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/nodes/nodes.c,v 1.17 2002/10/11 04:16:44 momjian Exp $
  *
  * HISTORY
  *	  Andrew Yu			Oct 20, 1994	file creation
@@ -28,5 +28,15 @@
  *	  macro makeNode. eg. to create a Resdom node, use makeNode(Resdom)
  *
  */
-Node *newNodeMacroHolder;
+Node *
+newNode(Size size, NodeTag tag)
+{
+	Node	   *newNode;
 
+	Assert(size >= sizeof(Node));		/* need the tag, at least */
+
+	newNode = (Node *) palloc(size);
+	MemSet((char *) newNode, 0, size);
+	newNode->type = tag;
+	return newNode;
+}
diff --git a/src/backend/utils/mmgr/mcxt.c b/src/backend/utils/mmgr/mcxt.c
index da666076627ecf5effbbabe880ad9b581421f696..b7dd265863f08f0f654d61e7f6cb5b5e96bc1184 100644
--- a/src/backend/utils/mmgr/mcxt.c
+++ b/src/backend/utils/mmgr/mcxt.c
@@ -14,7 +14,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/mmgr/mcxt.c,v 1.33 2002/10/11 04:12:14 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/mmgr/mcxt.c,v 1.34 2002/10/11 04:16:44 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -452,29 +452,6 @@ MemoryContextAlloc(MemoryContext context, Size size)
 	return (*context->methods->alloc) (context, size);
 }
 
-/*
- * MemoryContextAllocZero
- *		Like MemoryContextAlloc, but clears allocated memory
- *
- *	We could just call MemoryContextAlloc then clear the memory, but this
- *	function is called too many times, so we have a separate version.
- */
-void *
-MemoryContextAllocZero(MemoryContext context, Size size)
-{
-	void *ret;
-
-	AssertArg(MemoryContextIsValid(context));
-
-	if (!AllocSizeIsValid(size))
-		elog(ERROR, "MemoryContextAllocZero: invalid request size %lu",
-			 (unsigned long) size);
-
-	ret = (*context->methods->alloc) (context, size);
-	MemSet(ret, 0, size);
-	return ret;
-}
-
 /*
  * pfree
  *		Release an allocated chunk.
diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h
index 4b6a3c04eb5a1d86da41c13b9e58d7ee16036227..5320c1b10d2b386bf92ceafe82fdebc8675d890a 100644
--- a/src/include/nodes/nodes.h
+++ b/src/include/nodes/nodes.h
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: nodes.h,v 1.119 2002/10/11 04:12:14 momjian Exp $
+ * $Id: nodes.h,v 1.120 2002/10/11 04:16:44 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -261,24 +261,6 @@ typedef struct Node
 
 #define nodeTag(nodeptr)		(((Node*)(nodeptr))->type)
 
-/*
- *	There is no way to dereference the palloc'ed pointer to assign the
- *	tag, and return the pointer itself, so we need a holder variable.
- *	Fortunately, this function isn't recursive so we just define
- *	a global variable for this purpose.
- */
-extern Node *newNodeMacroHolder;
-
-#define newNode(size, tag) \
-( \
-	AssertMacro((size) >= sizeof(Node)),		/* need the tag, at least */ \
-\
-	newNodeMacroHolder = (Node *) palloc0(size), \
-	newNodeMacroHolder->type = (tag), \
-	newNodeMacroHolder \
-)
-
-
 #define makeNode(_type_)		((_type_ *) newNode(sizeof(_type_),T_##_type_))
 #define NodeSetTag(nodeptr,t)	(((Node*)(nodeptr))->type = (t))
 
@@ -300,6 +282,11 @@ extern Node *newNodeMacroHolder;
  * ----------------------------------------------------------------
  */
 
+/*
+ * nodes/nodes.c
+ */
+extern Node *newNode(Size size, NodeTag tag);
+
 /*
  * nodes/{outfuncs.c,print.c}
  */
diff --git a/src/include/utils/palloc.h b/src/include/utils/palloc.h
index c1cb6f69c42bfd596a4aa0bc27dd110cda64cb84..44adc1ed969b50ec942051b279389737216c2ed2 100644
--- a/src/include/utils/palloc.h
+++ b/src/include/utils/palloc.h
@@ -21,7 +21,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: palloc.h,v 1.20 2002/10/11 04:12:14 momjian Exp $
+ * $Id: palloc.h,v 1.21 2002/10/11 04:16:44 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -46,12 +46,9 @@ extern DLLIMPORT MemoryContext CurrentMemoryContext;
  * Fundamental memory-allocation operations (more are in utils/memutils.h)
  */
 extern void *MemoryContextAlloc(MemoryContext context, Size size);
-extern void *MemoryContextAllocZero(MemoryContext context, Size size);
 
 #define palloc(sz)	MemoryContextAlloc(CurrentMemoryContext, (sz))
 
-#define palloc0(sz)	MemoryContextAllocZero(CurrentMemoryContext, (sz))
-
 extern void pfree(void *pointer);
 
 extern void *repalloc(void *pointer, Size size);