From fea3ea1f23fb7f72aad28a55a09a60897a08dd3d Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 30 May 2012 19:58:41 -0400 Subject: Expand the allowed range of timezone offsets to +/-15:59:59 from Greenwich. We used to only allow offsets less than +/-13 hours, then it was +/14, then it was +/-15. That's still not good enough though, as per today's bug report from Patric Bechtel. This time I actually looked through the Olson timezone database to find the largest offsets used anywhere. The winners are Asia/Manila, at -15:56:00 until 1844, and America/Metlakatla, at +15:13:42 until 1867. So we'd better allow offsets less than +/-16 hours. Given the history, we are way overdue to have some greppable #define symbols controlling this, so make some ... and also remove an obsolete comment that didn't get fixed the last time. Back-patch to all supported branches. --- src/include/utils/timestamp.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/include/utils/timestamp.h') diff --git a/src/include/utils/timestamp.h b/src/include/utils/timestamp.h index 9e51b58dde0..e311a8fb44e 100644 --- a/src/include/utils/timestamp.h +++ b/src/include/utils/timestamp.h @@ -100,6 +100,16 @@ typedef struct #define USECS_PER_SEC INT64CONST(1000000) #endif +/* + * We allow numeric timezone offsets up to 15:59:59 either way from Greenwich. + * Currently, the record holders for wackiest offsets in actual use are zones + * Asia/Manila, at -15:56:00 until 1844, and America/Metlakatla, at +15:13:42 + * until 1867. If we were to reject such values we would fail to dump and + * restore old timestamptz values with these zone settings. + */ +#define MAX_TZDISP_HOUR 15 /* maximum allowed hour part */ +#define TZDISP_LIMIT ((MAX_TZDISP_HOUR + 1) * SECS_PER_HOUR) + /* * Macros for fmgr-callable functions. * -- cgit v1.2.3