Index: src/pl/plperl/plperl.c
===================================================================
RCS file: /cvsroot/pgsql/src/pl/plperl/plperl.c,v
retrieving revision 1.86
diff -c -c -r1.86 plperl.c
*** src/pl/plperl/plperl.c	12 Jul 2005 20:35:42 -0000	1.86
--- src/pl/plperl/plperl.c	12 Aug 2005 20:45:56 -0000
***************
*** 921,926 ****
--- 921,936 ----
  	plperl_current_tuple_store = 0;
  	plperl_current_tuple_desc = 0;
  
+ 	if (!rsi || !IsA(rsi, ReturnSetInfo) ||
+ 		(rsi->allowedModes & SFRM_Materialize) == 0 ||
+ 		rsi->expectedDesc == NULL)
+ 	{
+ 		ereport(ERROR,
+ 				(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ 				 errmsg("set-valued function called in context that "
+ 						"cannot accept a set")));
+ 	}
+ 
  	perlret = plperl_call_perl_func(prodesc, fcinfo);
  
  	/************************************************************
***************
*** 936,951 ****
  
  	if (prodesc->fn_retisset) 
  	{
- 		if (!rsi || !IsA(rsi, ReturnSetInfo) ||
- 			(rsi->allowedModes & SFRM_Materialize) == 0 ||
- 			rsi->expectedDesc == NULL)
- 		{
- 			ereport(ERROR,
- 					(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- 					 errmsg("set-valued function called in context that "
- 							"cannot accept a set")));
- 		}
- 
  		/* If the Perl function returned an arrayref, we pretend that it
  		 * called return_next() for each element of the array, to handle
  		 * old SRFs that didn't know about return_next(). Any other sort
--- 946,951 ----
