]> granicus.if.org Git - postgresql/commitdiff
Improve error message for erroneous use of 'opaque' as pltcl argument
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 8 Dec 2000 00:09:07 +0000 (00:09 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 8 Dec 2000 00:09:07 +0000 (00:09 +0000)
or return type.

src/pl/tcl/pltcl.c

index 94a67ef043303dfbac4c1df6622ed1583c026e58..f37b31a30dd772ed0ee967330046142ab1eb7729 100644 (file)
@@ -31,7 +31,7 @@
  *       ENHANCEMENTS, OR MODIFICATIONS.
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.30 2000/11/20 20:36:52 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.31 2000/12/08 00:09:07 tgl Exp $
  *
  **********************************************************************/
 
@@ -489,8 +489,12 @@ pltcl_func_handler(PG_FUNCTION_ARGS)
                {
                        free(prodesc->proname);
                        free(prodesc);
-                       elog(ERROR, "pltcl: cache lookup for return type %u failed",
-                                procStruct->prorettype);
+                       if (!OidIsValid(procStruct->prorettype))
+                               elog(ERROR, "pltcl functions cannot return type \"opaque\""
+                                        "\n\texcept when used as triggers");
+                       else
+                               elog(ERROR, "pltcl: cache lookup for return type %u failed",
+                                        procStruct->prorettype);
                }
                typeStruct = (Form_pg_type) GETSTRUCT(typeTup);
 
@@ -521,8 +525,11 @@ pltcl_func_handler(PG_FUNCTION_ARGS)
                        {
                                free(prodesc->proname);
                                free(prodesc);
-                               elog(ERROR, "pltcl: cache lookup for argument type %u failed",
-                                        procStruct->proargtypes[i]);
+                               if (!OidIsValid(procStruct->proargtypes[i]))
+                                       elog(ERROR, "pltcl functions cannot take type \"opaque\"");
+                               else
+                                       elog(ERROR, "pltcl: cache lookup for argument type %u failed",
+                                                procStruct->proargtypes[i]);
                        }
                        typeStruct = (Form_pg_type) GETSTRUCT(typeTup);