diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c index 2d920c6908c465bef20ddffa172c689e31bea876..fbcafe4842e5e69709cb27dae50eb0c522d73f79 100644 --- a/src/pl/plperl/plperl.c +++ b/src/pl/plperl/plperl.c @@ -33,7 +33,7 @@ * ENHANCEMENTS, OR MODIFICATIONS. * * IDENTIFICATION - * $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.87 2005/08/12 20:48:03 momjian Exp $ + * $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.88 2005/08/12 21:09:34 momjian Exp $ * **********************************************************************/ @@ -909,7 +909,7 @@ plperl_func_handler(PG_FUNCTION_ARGS) SV *perlret; Datum retval; ReturnSetInfo *rsi; - SV* array_ret = NULL; + SV* array_ret = NULL; if (SPI_connect() != SPI_OK_CONNECT) elog(ERROR, "could not connect to SPI manager"); @@ -921,6 +921,8 @@ plperl_func_handler(PG_FUNCTION_ARGS) plperl_current_tuple_store = 0; plperl_current_tuple_desc = 0; + rsi = (ReturnSetInfo *)fcinfo->resultinfo; + if (!rsi || !IsA(rsi, ReturnSetInfo) || (rsi->allowedModes & SFRM_Materialize) == 0 || rsi->expectedDesc == NULL) @@ -942,8 +944,6 @@ plperl_func_handler(PG_FUNCTION_ARGS) if (SPI_finish() != SPI_OK_FINISH) elog(ERROR, "SPI_finish() failed"); - rsi = (ReturnSetInfo *)fcinfo->resultinfo; - if (prodesc->fn_retisset) { /* If the Perl function returned an arrayref, we pretend that it