Re: Fix for timestamp rouding - Mailing list pgsql-patches

From Tom Lane
Subject Re: Fix for timestamp rouding
Date
Msg-id 4172.1117133191@sss.pgh.pa.us
Whole thread Raw
In response to Fix for timestamp rouding  (Bruce Momjian <pgman@candle.pha.pa.us>)
Responses Re: Fix for timestamp rouding
List pgsql-patches
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> OK, I have a new patch, which simplifies the code by using
> TrimTrailingZeros(), gives more consistent subsecond display, and
> subpresses the rounding problem:

Does anyone have any idea why the existing code is designed to keep the
number of displayed fractional digits even?   It seems a bit silly to
me too, but we probably ought not remove what was clearly an intentional
behavior without understanding why it was intentional.

Also, I will point out once more that the problem is not "we only have
nine digits of precision not ten".  The problem is that the precision
degrades as the interval gets larger.

regression=# select '20 days 15 hours 57 mins 12.1 secs ago'::interval;
           interval
-------------------------------
 -20 days -15:57:12.1000000001
(1 row)

regression=# select '100020 days 15 hours 57 mins 12.1 secs ago'::interval;
             interval
-----------------------------------
 -100020 days -15:57:12.1000003815
(1 row)

regression=# select '100000020 days 15 hours 57 mins 12.1 secs ago'::interval;
              interval
-------------------------------------
 -100000020 days -15:57:12.099609375
(1 row)

regression=#

Without accounting for that fundamental fact, you will not have a
solution, only a kluge.

            regards, tom lane

pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Fix for timestamp rouding
Next
From: Oliver Jowett
Date:
Subject: Re: Implement support for TCP_KEEPCNT, TCP_KEEPIDLE, TCP_KEEPINTVL