OSDN Git Service

checkretval() failed to cope with an empty SQL function body.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 7 Dec 2000 19:40:56 +0000 (19:40 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 7 Dec 2000 19:40:56 +0000 (19:40 +0000)
src/backend/catalog/pg_proc.c

index 5d63ebf..1e594bf 100644 (file)
@@ -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);