diff --git a/src/backend/parser/parse_type.c b/src/backend/parser/parse_type.c
index ac4f94ec957bdab72e8473237f304c3e271c9221..69037338428190720347e7181ea66952077bce21 100644
--- a/src/backend/parser/parse_type.c
+++ b/src/backend/parser/parse_type.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_type.c,v 1.30 2000/05/30 04:24:49 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/parser/parse_type.c,v 1.31 2000/06/06 16:50:37 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -48,7 +48,8 @@ typeidTypeName(Oid id)
 		return NULL;
 	}
 	typetuple = (Form_pg_type) GETSTRUCT(tup);
-	return NameStr(typetuple->typname);
+	/* pstrdup here because result may need to outlive the syscache entry */
+	return pstrdup(NameStr(typetuple->typname));
 }
 
 /* return a Type structure, given a type id */
@@ -119,7 +120,8 @@ typeTypeName(Type t)
 	Form_pg_type typ;
 
 	typ = (Form_pg_type) GETSTRUCT(t);
-	return NameStr(typ->typname);
+	/* pstrdup here because result may need to outlive the syscache entry */
+	return pstrdup(NameStr(typ->typname));
 }
 
 /* given a type, return its typetype ('c' for 'c'atalog types) */