]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Reject out-of-range dates in date_in().
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 9 Feb 2006 03:40:42 +0000 (03:40 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 9 Feb 2006 03:40:42 +0000 (03:40 +0000)
Kris Jurka

doc/src/sgml/datatype.sgml
src/backend/utils/adt/date.c

index 6ca4e37c00da993c7eb3386417d030928a8a1c5c..78d606bf29421b599fdebff40a68fe7eccfeaba9 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.154.4.1 2005/01/22 23:05:47 momjian Exp $
+$PostgreSQL: pgsql/doc/src/sgml/datatype.sgml,v 1.154.4.2 2006/02/09 03:40:42 tgl Exp $
 -->
 
  <chapter id="datatype">
@@ -1358,7 +1358,7 @@ SELECT b, char_length(b) FROM test2;
         <entry>4 bytes</entry>
         <entry>dates only</entry>
         <entry>4713 BC</entry>
-        <entry>32767 AD</entry>
+        <entry>5874897 AD</entry>
         <entry>1 day</entry>
        </row>
        <row>
index 0e2eb9546564206b410c0104879242d3336786dc..3e8ab71af5455f17efb332e8aeafcc604737e6a0 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.104.4.2 2005/05/26 02:10:02 neilc Exp $
+ *       $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.104.4.3 2006/02/09 03:40:42 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -96,6 +96,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);