small bug on 3-digit years in 9.2-dev

Lists: pgsql-hackers
From: Marc Cousin <cousinmarc(at)gmail(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Subject: small bug on 3-digit years in 9.2-dev
Date: 2012-07-02 09:32:50
Message-ID: 201207021132.50285.cousinmarc@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Hi,

While working on the "What's new in 9.2", I think I found a small bug:

SELECT to_date('519-07-02','YYY-MM-DD');
to_date
------------
0519-07-02
(1 row)

It comes, I think, from the year 519 case not being handled in the following
code. Patch attached

+ if (year < 70)
+ return year + 2000;
+ /* Force 70-99 into the 1900's */
+ else if (year >= 70 && year < 100)
+ return year + 1900;
+ /* Force 100-519 into the 2000's */
+ else if (year >= 100 && year < 519)
+ return year + 2000;
+ /* Force 520-999 into the 1000's */
+ else if (year >= 520 && year < 1000)
+ return year + 1000;
+ else
+ return year;

Regards

Attachment Content-Type Size
correct_dates.patch text/x-patch 532 bytes

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Marc Cousin <cousinmarc(at)gmail(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: small bug on 3-digit years in 9.2-dev
Date: 2012-07-02 15:17:19
Message-ID: 17058.1341242239@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Marc Cousin <cousinmarc(at)gmail(dot)com> writes:
> While working on the "What's new in 9.2", I think I found a small bug:

Yeah, that code certainly looks wrong, thanks for the report!

> /* Force 100-519 into the 2000's */
> - else if (year >= 100 && year < 519)
> + else if (year >= 100 && year <= 519)

I think "< 520" would be more in keeping with the adjacent coding.

regards, tom lane