Index: src/backend/utils/adt/int.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/utils/adt/int.c,v
retrieving revision 1.86
diff -c -r1.86 int.c
*** src/backend/utils/adt/int.c	4 Sep 2009 11:20:22 -0000	1.86
--- src/backend/utils/adt/int.c	2 Dec 2009 02:23:09 -0000
***************
*** 150,164 ****
  			break;
  		while (*intString && isspace((unsigned char) *intString))
  			intString++;
! 		while (*intString && !isspace((unsigned char) *intString))
  			intString++;
  	}
  	while (*intString && isspace((unsigned char) *intString))
  		intString++;
! 	if (*intString)
  		ereport(ERROR,
  				(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
  				 errmsg("int2vector has too many elements")));
  
  	SET_VARSIZE(result, Int2VectorSize(n));
  	result->ndim = 1;
--- 150,175 ----
  			break;
  		while (*intString && isspace((unsigned char) *intString))
  			intString++;
! 		while (*intString && isdigit((unsigned char) *intString))
  			intString++;
  	}
  	while (*intString && isspace((unsigned char) *intString))
  		intString++;
! 
! 	/* 
! 	 * If there is anything left over then we either ran out of space, or the
! 	 * input contained something other than digits and spaces.  Either way we
! 	 * generate an error.
! 	 */
! 	if (isdigit((unsigned char) *intString))
  		ereport(ERROR,
  				(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
  				 errmsg("int2vector has too many elements")));
+ 	else if (*intString)
+ 		ereport(ERROR,
+ 				(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ 				 errmsg("invalid input for int2vector: \"%s\"",
+ 						PG_GETARG_CSTRING(0))));
  
  	SET_VARSIZE(result, Int2VectorSize(n));
  	result->ndim = 1;
