*** a/src/backend/utils/adt/datetime.c --- b/src/backend/utils/adt/datetime.c *************** *** 2987,2993 **** DecodeInterval(char **field, int *ftype, int nf, int range, case DTK_MILLISEC: #ifdef HAVE_INT64_TIMESTAMP ! *fsec += rint((val + fval) * 1000); #else *fsec += (val + fval) * 1e-3; #endif --- 2987,3001 ---- case DTK_MILLISEC: #ifdef HAVE_INT64_TIMESTAMP ! /* ! * fval is unused or re-initialized if it is ! * needed again */ ! fval = rint((val + fval) * 1000); ! ! if (fval < INT_MIN || fval > INT_MAX) ! return DTERR_FIELD_OVERFLOW; ! ! *fsec += fval; #else *fsec += (val + fval) * 1e-3; #endif