Re: oh dear ...

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-hackers(at)postgreSQL(dot)org
Subject: Re: oh dear ...
Date: 2003-11-15 00:32:12
Message-ID: 7824.1068856332@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

I said:
> This worked in 7.3:
> regression=# select '1999-jan-08'::date;
> ERROR: date/time field value out of range: "1999-jan-08"
> HINT: Perhaps you need a different "datestyle" setting.

> Setting DateStyle to YMD doesn't help, and in any case I'd think that
> this ought to be considered an unambiguous input format.

This appears to be an oversight in the portions of the datetime code
that we recently changed to enforce DateStyle more tightly.
Specifically, DecodeNumber was rewritten without realizing that it was
invoked in a special way when a textual month name appears in the input.
DecodeDate actually makes two passes over the input, noting the textual
month name in the first pass, and then calling DecodeNumber on only the
numeric fields in the second pass. This means that when DecodeNumber is
called for the first time, the MONTH flag may already be set. The
rewrite mistakenly assumed that in this case we must be at the second
field of an MM-DD-YY-order input.

I propose the attached patch to fix the problem. It doesn't break any
regression tests, and it appears to fix the cases noted in its comment.

Opinions on whether to apply this to 7.4?

regards, tom lane

Attachment Content-Type Size
unknown_filename text/plain 1.1 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Marc G. Fournier 2003-11-15 00:44:33 Re: [CORE] 7.4RC2 regression failur and not running stats
Previous Message Tom Lane 2003-11-14 23:15:20 oh dear ...