Index: plperl.c
===================================================================
RCS file: /cvsroot/pgsql/src/pl/plperl/plperl.c,v
retrieving revision 1.150
diff -c -r1.150 plperl.c
*** plperl.c	11 Jun 2009 14:49:14 -0000	1.150
--- plperl.c	12 Sep 2009 16:46:40 -0000
***************
*** 1992,2001 ****
  	{
  		Datum		ret;
  		bool		isNull;
  
  		if (SvOK(sv))
  		{
! 			char	   *val = SvPV(sv, PL_na);
  
  			ret = InputFunctionCall(&prodesc->result_in_func, val,
  									prodesc->result_typioparam, -1);
--- 1992,2011 ----
  	{
  		Datum		ret;
  		bool		isNull;
+ 		SV		   *array_ret = NULL;
  
  		if (SvOK(sv))
  		{
! 			char	   *val;
! 
! 			if (prodesc->fn_retisarray && SvROK(sv) &&
! 				SvTYPE(SvRV(sv)) == SVt_PVAV)
! 			{
! 				array_ret = plperl_convert_to_pg_array(sv);
! 				sv = array_ret;
! 			}
! 
! 			val = SvPV(sv, PL_na);
  
  			ret = InputFunctionCall(&prodesc->result_in_func, val,
  									prodesc->result_typioparam, -1);
