From cbc5f4f127f37510fa000ddd8a109c8385796176 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Thu, 7 Dec 2000 19:40:56 +0000
Subject: [PATCH] checkretval() failed to cope with an empty SQL function body.

---
 src/backend/catalog/pg_proc.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c
index 5d63ebf1616..1e594bfe25c 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);
 
-- 
GitLab