Re: Re: round - timestamp bug - Mailing list pgsql-bugs

From Tom Lane
Subject Re: Re: round - timestamp bug
Date
Msg-id 28480.981562253@sss.pgh.pa.us
Whole thread Raw
In response to Re: round - timestamp bug  (Thomas Lockhart <lockhart@alumni.caltech.edu>)
List pgsql-bugs
Thomas Lockhart <lockhart@alumni.caltech.edu> writes:
> The original report did not give complete platform details, but in
> my recollection the *only* recent cases of this display problem come
> from Mandrake systems which are built with overly aggressive compiler
> optimization options.

No, the behavior is not platform-specific.  I'm on HP-PA:

regression=# select 'Tue 23 Jan 21:38:59.997 2001'::timestamp;
         ?column?
---------------------------
 2001-01-23 21:38:60.00-05
(1 row)

The problem is that we round the fractional seconds part to two digits
only after we've separated seconds from the other fields.  (I imagine
the code is not even doing that explicitly, but leaving it to sprintf
to do so.)  It would work better if we rounded the entire floating
timestamp value to two fractional digits before we break it down,
eg with

    tstamp = rint(tstamp * 100.0) / 100.0;

            regards, tom lane

pgsql-bugs by date:

Previous
From: Thomas Lockhart
Date:
Subject: Re: round - timestamp bug
Next
From: Tom Lane
Date:
Subject: Re: byteain() doesn't parse correctly