Hackers, I've just found a little bug: extracting "epoch" from the last 30 years before Postgres' "+Infinity" leads an integer overflow:
postgres=# SELECT x::timestamptz, extract(epoch FROM x::timestamptz) postgres-# FROM postgres-# (VALUES postgres(# ('294247-01-10 04:00:54.775805'), postgres(# ('294247-01-10 04:00:55.775806'), postgres(# ('294277-01-09 04:00:54.775806'), -- the last value before 'Inf' postgres(# ('294277-01-09 04:00:54.775807') -- we've discussed, it should be fixed postgres(# ) as t(x); x | date_part ---------------------------------+------------------- 294247-01-10 04:00:54.775805+00 | 9223372036854.78 294247-01-10 04:00:55.775806+00 | -9223372036853.78 294277-01-09 04:00:54.775806+00 | -9222425352054.78 infinity | Infinity (4 rows) With the attached patch it becomes positive: x | date_part ---------------------------------+------------------ 294247-01-10 04:00:54.775805+00 | 9223372036854.78 294247-01-10 04:00:55.775806+00 | 9223372036855.78 294277-01-09 04:00:54.775806+00 | 9224318721654.78 infinity | Infinity (4 rows) -- Best regards, Vitaly Burovoy
fix_extract_overflow_v1.patch
Description: Binary data
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers