Fix overflow hazard in timestamp_pl_interval
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
Attachments:
v1-0001-Catch-overflow-when-adding-timestamp-to-interval.patchtext/x-patch; charset=US-ASCII; name=v1-0001-Catch-overflow-when-adding-timestamp-to-interval.patchDownload+15-4
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:
Show quoted text
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
Attachments:
v2-0001-Catch-overflow-when-adding-timestamp-to-interval.patchtext/x-patch; charset=US-ASCII; name=v2-0001-Catch-overflow-when-adding-timestamp-to-interval.patchDownload+29-5
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