diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2000-12-08 00:11:55 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2000-12-08 00:11:55 +0000 |
commit | 8d7c0851a3d6a69030a29cadea74b5eeeaf3b8a6 (patch) | |
tree | ca768ffe52b282ad106acd3fe98356c54b89344b | |
parent | 6e646c73130c16570c72b704d73a59ffcff0b6cd (diff) | |
download | postgresql-8d7c0851a3d6a69030a29cadea74b5eeeaf3b8a6.tar.gz postgresql-8d7c0851a3d6a69030a29cadea74b5eeeaf3b8a6.zip |
Improve error message for erroneous use of 'opaque' as plperl argument
or return type.
-rw-r--r-- | src/pl/plperl/plperl.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c index 0b2d7d4e425..505f77c95bc 100644 --- a/src/pl/plperl/plperl.c +++ b/src/pl/plperl/plperl.c @@ -33,7 +33,7 @@ * ENHANCEMENTS, OR MODIFICATIONS. * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/plperl/plperl.c,v 1.16 2000/11/20 20:36:51 tgl Exp $ + * $Header: /cvsroot/pgsql/src/pl/plperl/plperl.c,v 1.17 2000/12/08 00:11:55 tgl Exp $ * **********************************************************************/ @@ -545,8 +545,12 @@ plperl_func_handler(PG_FUNCTION_ARGS) { free(prodesc->proname); free(prodesc); - elog(ERROR, "plperl: cache lookup for return type %u failed", - procStruct->prorettype); + if (!OidIsValid(procStruct->prorettype)) + elog(ERROR, "plperl functions cannot return type \"opaque\"" + "\n\texcept when used as triggers"); + else + elog(ERROR, "plperl: cache lookup for return type %u failed", + procStruct->prorettype); } typeStruct = (Form_pg_type) GETSTRUCT(typeTup); @@ -577,8 +581,11 @@ plperl_func_handler(PG_FUNCTION_ARGS) { free(prodesc->proname); free(prodesc); - elog(ERROR, "plperl: cache lookup for argument type %u failed", - procStruct->proargtypes[i]); + if (!OidIsValid(procStruct->proargtypes[i])) + elog(ERROR, "plperl functions cannot take type \"opaque\""); + else + elog(ERROR, "plperl: cache lookup for argument type %u failed", + procStruct->proargtypes[i]); } typeStruct = (Form_pg_type) GETSTRUCT(typeTup); |