From: Tom Lane Date: Thu, 9 Feb 2006 03:40:30 +0000 (+0000) Subject: Reject out-of-range dates in date_in(). X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=d18bd6c1eba642be2edfab2cc1dc56f81ec2fda3;p=users%2Fbernd%2Fpostgres.git Reject out-of-range dates in date_in(). Kris Jurka --- diff --git a/doc/src/sgml/datatype.sgml b/doc/src/sgml/datatype.sgml index 76c578a361..b629b3ee64 100644 --- a/doc/src/sgml/datatype.sgml +++ b/doc/src/sgml/datatype.sgml @@ -1360,7 +1360,7 @@ SELECT b, char_length(b) FROM test2; 4 bytes dates only 4713 BC - 32767 AD + 5874897 AD 1 day diff --git a/src/backend/utils/adt/date.c b/src/backend/utils/adt/date.c index de420c7484..68ed433a1f 100644 --- a/src/backend/utils/adt/date.c +++ b/src/backend/utils/adt/date.c @@ -97,6 +97,11 @@ date_in(PG_FUNCTION_ARGS) break; } + if (!IS_VALID_JULIAN(tm->tm_year, tm->tm_mon, tm->tm_mday)) + ereport(ERROR, + (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), + errmsg("date out of range: \"%s\"", str))); + date = date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) - POSTGRES_EPOCH_JDATE; PG_RETURN_DATEADT(date);