diff -cprN head/src/backend/utils/adt/date.c work/src/backend/utils/adt/date.c
*** head/src/backend/utils/adt/date.c	2010-01-04 09:10:26.638773000 +0900
--- work/src/backend/utils/adt/date.c	2010-02-18 12:23:36.150736064 +0900
*************** date_recv(PG_FUNCTION_ARGS)
*** 208,215 ****
  	result = (DateADT) pq_getmsgint(buf, sizeof(DateADT));
  
  	/* Limit to the same range that date_in() accepts. */
! 	if (result < -POSTGRES_EPOCH_JDATE ||
! 		result >= JULIAN_MAX - POSTGRES_EPOCH_JDATE)
  		ereport(ERROR,
  				(errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
  				 errmsg("date out of range")));
--- 208,217 ----
  	result = (DateADT) pq_getmsgint(buf, sizeof(DateADT));
  
  	/* Limit to the same range that date_in() accepts. */
! 	if (DATE_NOT_FINITE(result))
! 		 /* ok */ ;
! 	else if (result < -POSTGRES_EPOCH_JDATE ||
! 			 result >= JULIAN_MAX - POSTGRES_EPOCH_JDATE)
  		ereport(ERROR,
  				(errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE),
  				 errmsg("date out of range")));
