From: Tom Lane Date: Sun, 16 Sep 2007 15:56:39 +0000 (+0000) Subject: Fix overflow in extract(epoch from interval) for intervals exceeding 68 years. X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=04f5b33c49889a780a9a7f501d858fdbb40ae1d9;p=users%2Fbernd%2Fpostgres.git Fix overflow in extract(epoch from interval) for intervals exceeding 68 years. Seems to have been introduced in 8.1 by careless SECS_PER_DAY search-and-replace. --- diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index a2bb47f9b3..3c858d5874 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -3979,9 +3979,9 @@ interval_part(PG_FUNCTION_ARGS) #else result = interval->time; #endif - result += (DAYS_PER_YEAR * SECS_PER_DAY) * (interval->month / MONTHS_PER_YEAR); + result += ((double) DAYS_PER_YEAR * SECS_PER_DAY) * (interval->month / MONTHS_PER_YEAR); result += ((double) DAYS_PER_MONTH * SECS_PER_DAY) * (interval->month % MONTHS_PER_YEAR); - result += interval->day * SECS_PER_DAY; + result += ((double) SECS_PER_DAY) * interval->day; } else {