Обсуждение: Fix overflow hazard in timestamp_pl_interval

Поиск
Список
Период
Сортировка

Fix overflow hazard in timestamp_pl_interval

От
Joseph Koshakow
Дата:
Hi all,

Attached is a patch that fixes some overflow/underflow hazards in
`timestamp_pl_interval`. The microseconds overflow could produce
incorrect result. The month overflow would generally still result in an
error from the timestamp month field being too low, but it's still
better to catch it early.

I couldn't find any existing timestamp plus interval tests so I stuck
a new tests in `timestamp.sql`. If there's a better place, then
please let me know.

Thanks,
Joe Koshakow
Вложения

Re: Fix overflow hazard in timestamp_pl_interval

От
Joseph Koshakow
Дата:
Hi all,

Immediately after sending this I realized that timestamptz suffers
from the same problem. Attached is an updated patch that fixes
timestamptz too.

Thanks,
Joe Koshakow

On Sat, Apr 27, 2024 at 10:59 PM Joseph Koshakow <koshy44@gmail.com> wrote:
Hi all,

Attached is a patch that fixes some overflow/underflow hazards in
`timestamp_pl_interval`. The microseconds overflow could produce
incorrect result. The month overflow would generally still result in an
error from the timestamp month field being too low, but it's still
better to catch it early.

I couldn't find any existing timestamp plus interval tests so I stuck
a new tests in `timestamp.sql`. If there's a better place, then
please let me know.

Thanks,
Joe Koshakow
Вложения

Re: Fix overflow hazard in timestamp_pl_interval

От
Tom Lane
Дата:
Joseph Koshakow <koshy44@gmail.com> writes:
>> Attached is a patch that fixes some overflow/underflow hazards in
>> `timestamp_pl_interval`. The microseconds overflow could produce
>> incorrect result. The month overflow would generally still result in an
>> error from the timestamp month field being too low, but it's still
>> better to catch it early.

Yeah.  I had earlier concluded that we couldn't overflow here without
triggering the range checks in tm2timestamp, but clearly that was
too optimistic.

>> I couldn't find any existing timestamp plus interval tests so I stuck
>> a new tests in `timestamp.sql`. If there's a better place, then
>> please let me know.

They're in horology.sql, so I moved the tests there and pushed it.
Thanks for the report!

            regards, tom lane