Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 8d7c085

Browse files
committed
Improve error message for erroneous use of 'opaque' as plperl argument
or return type.
1 parent 6e646c7 commit 8d7c085

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

src/pl/plperl/plperl.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
* ENHANCEMENTS, OR MODIFICATIONS.
3434
*
3535
* IDENTIFICATION
36-
* $Header: /cvsroot/pgsql/src/pl/plperl/plperl.c,v 1.16 2000/11/20 20:36:51 tgl Exp $
36+
* $Header: /cvsroot/pgsql/src/pl/plperl/plperl.c,v 1.17 2000/12/08 00:11:55 tgl Exp $
3737
*
3838
**********************************************************************/
3939

@@ -545,8 +545,12 @@ plperl_func_handler(PG_FUNCTION_ARGS)
545545
{
546546
free(prodesc->proname);
547547
free(prodesc);
548-
elog(ERROR, "plperl: cache lookup for return type %u failed",
549-
procStruct->prorettype);
548+
if (!OidIsValid(procStruct->prorettype))
549+
elog(ERROR, "plperl functions cannot return type \"opaque\""
550+
"\n\texcept when used as triggers");
551+
else
552+
elog(ERROR, "plperl: cache lookup for return type %u failed",
553+
procStruct->prorettype);
550554
}
551555
typeStruct = (Form_pg_type) GETSTRUCT(typeTup);
552556

@@ -577,8 +581,11 @@ plperl_func_handler(PG_FUNCTION_ARGS)
577581
{
578582
free(prodesc->proname);
579583
free(prodesc);
580-
elog(ERROR, "plperl: cache lookup for argument type %u failed",
581-
procStruct->proargtypes[i]);
584+
if (!OidIsValid(procStruct->proargtypes[i]))
585+
elog(ERROR, "plperl functions cannot take type \"opaque\"");
586+
else
587+
elog(ERROR, "plperl: cache lookup for argument type %u failed",
588+
procStruct->proargtypes[i]);
582589
}
583590
typeStruct = (Form_pg_type) GETSTRUCT(typeTup);
584591

0 commit comments

Comments
 (0)