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);