aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/pl/tcl/pltcl.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/pl/tcl/pltcl.c b/src/pl/tcl/pltcl.c
index 94a67ef0433..f37b31a30dd 100644
--- a/src/pl/tcl/pltcl.c
+++ b/src/pl/tcl/pltcl.c
@@ -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);