Re: Interval overflow?

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Michael Glaesemann <grzm(at)seespotcode(dot)net>
Cc: Jeff Davis <pgsql(at)j-davis(dot)com>, pgsql-general(at)postgresql(dot)org
Subject: Re: Interval overflow?
Date: 2007-06-29 21:31:32
Message-ID: 8797.1183152692@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Michael Glaesemann <grzm(at)seespotcode(dot)net> writes:
> On Jun 29, 2007, at 16:07 , Jeff Davis wrote:
>> Is this expected behavior or a bug?

> Bug. In general the range checking in the date time code can
> definitely be improved.

Apparently Jeff's using enable-integer-datetimes; what I see is

regression=# select '2000000000 hours'::interval + '2000000000 hours'::interval;
?column?
------------------
2147483647:00:00
(1 row)

It looks like his case is overflowing the int8 microseconds field of
the interval. On my machine, the seconds field is double so it does not
overflow, but interval_out tries to convert the computed hours value
to int32, and *that* overflows.

The best we can do for Jeff is throw an error in interval addition.
In the float case it could be wished that we could print any result
we can store ...

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Jeff Davis 2007-06-29 21:53:59 Re: Interval overflow?
Previous Message Michael Glaesemann 2007-06-29 21:15:56 Re: Interval overflow?