diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c
index 5d63ebf161652bc1ae2a254aa1452efb2d4f8b56..1e594bfe25c2e1f5495bc170f0e69126eef3351f 100644
--- a/src/backend/catalog/pg_proc.c
+++ b/src/backend/catalog/pg_proc.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.51 2000/11/20 20:36:47 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.52 2000/12/07 19:40:56 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -339,6 +339,15 @@ checkretval(Oid rettype, List *queryTreeList)
 	int			relnatts;
 	int			i;
 
+	/* guard against empty function body; OK only if no return type */
+	if (queryTreeList == NIL)
+	{
+		if (rettype != InvalidOid)
+			elog(ERROR, "function declared to return %s, but no SELECT provided",
+				 typeidTypeName(rettype));
+		return;
+	}
+
 	/* find the final query */
 	parse = (Query *) nth(length(queryTreeList) - 1, queryTreeList);