From 7582bd91cb4215a2efaf069630503cee66e2ea4d Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Tue, 13 Feb 2001 14:32:52 +0000 Subject: [PATCH] Please apply the following patch to fix AIX and IRIX timestamp behavior as previously discussed. It makes AIX and IRIX not use DST for dates before 1970. The following expected files need to be removed from the regression tests, they contain wrong results and are not needed any more. src/test/regress/expected/horology-1947-PDT.out src/test/regress/expected/tinterval-1947-PDT.out src/test/regress/expected/abstime-1947-PDT.out Zeugswetter Andreas --- src/backend/utils/adt/nabstime.c | 12 +++++++++++- src/backend/utils/adt/timestamp.c | 10 +++++++++- src/include/port/aix.h | 1 + src/include/port/irix5.h | 1 + src/test/regress/resultmap | 8 ++------ 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/backend/utils/adt/nabstime.c b/src/backend/utils/adt/nabstime.c index 434b5c95a8..31117389b0 100644 --- a/src/backend/utils/adt/nabstime.c +++ b/src/backend/utils/adt/nabstime.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/nabstime.c,v 1.80 2001/01/24 19:43:14 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/nabstime.c,v 1.81 2001/02/13 14:32:52 momjian Exp $ * * NOTES * @@ -205,7 +205,17 @@ abstime2tm(AbsoluteTime _time, int *tzp, struct tm * tm, char *tzn) #if defined(HAVE_TM_ZONE) || defined(HAVE_INT_TIMEZONE) if (tzp != NULL) + { tx = localtime((time_t *) &time); +# ifdef NO_MKTIME_BEFORE_1970 + if (tx->tm_year < 70 && tx->tm_isdst == 1) + { + time -= 3600; + tx = localtime((time_t *) &time); + tx->tm_isdst = 0; + } +# endif + } else { tx = gmtime((time_t *) &time); diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index e3facb7f1e..a01a790124 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.44 2001/01/24 19:43:14 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.45 2001/02/13 14:32:52 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -315,6 +315,14 @@ timestamp2tm(Timestamp dt, int *tzp, struct tm * tm, double *fsec, char **tzn) #if defined(HAVE_TM_ZONE) || defined(HAVE_INT_TIMEZONE) tx = localtime(&utime); +# ifdef NO_MKTIME_BEFORE_1970 + if (tx->tm_year < 70 && tx->tm_isdst == 1) + { + utime -= 3600; + tx = localtime(&utime); + tx->tm_isdst = 0; + } +# endif tm->tm_year = tx->tm_year + 1900; tm->tm_mon = tx->tm_mon + 1; tm->tm_mday = tx->tm_mday; diff --git a/src/include/port/aix.h b/src/include/port/aix.h index 782d84bb91..5e4f70a790 100644 --- a/src/include/port/aix.h +++ b/src/include/port/aix.h @@ -1,6 +1,7 @@ #define CLASS_CONFLICT #define DISABLE_XOPEN_NLS #define HAS_TEST_AND_SET +#define NO_MKTIME_BEFORE_1970 typedef unsigned int slock_t; #include /* ENDIAN definitions for network diff --git a/src/include/port/irix5.h b/src/include/port/irix5.h index 6687960049..ff91fc2922 100644 --- a/src/include/port/irix5.h +++ b/src/include/port/irix5.h @@ -1,2 +1,3 @@ #define HAS_TEST_AND_SET +#define NO_MKTIME_BEFORE_1970 typedef unsigned long slock_t; diff --git a/src/test/regress/resultmap b/src/test/regress/resultmap index c8f0a4302c..417412d37f 100644 --- a/src/test/regress/resultmap +++ b/src/test/regress/resultmap @@ -1,5 +1,3 @@ -abstime/.*-aix4=abstime-1947-PDT -abstime/.*-irix6=abstime-1947-PDT abstime/alpha.*-dec-osf=abstime-solaris-1947 abstime/i.86-pc-solaris=abstime-solaris-1947 abstime/sparc-sun-solaris=abstime-solaris-1947 @@ -31,8 +29,8 @@ geometry/sparc-sun-solaris=geometry-solaris-precision geometry/sparc.*-linux-gnu=geometry-solaris-precision geometry/alpha.*-linux-gnu=geometry-solaris-precision geometry/.*-beos=geometry-intel-beos -horology/.*-aix4=horology-1947-PDT -horology/.*-irix6=horology-1947-PDT +horology/.*-aix4=horology-no-DST-before-1970 +horology/.*-irix6=horology-no-DST-before-1970 horology/alpha.*-dec-osf=horology-solaris-1947 horology/.*-cygwin=horology-no-DST-before-1970 horology/hppa=horology-no-DST-before-1970 @@ -74,8 +72,6 @@ int4/sparc-sun-solaris=int4-too-large int4/.*-sysv5uw=int4-too-large int4/.*-beos=int4-range-error int8/.*-qnx=int8-exp-three-digits -tinterval/.*-aix4=tinterval-1947-PDT -tinterval/.*-irix6=tinterval-1947-PDT tinterval/alpha.*-dec-osf=tinterval-solaris-1947 tinterval/i.86-pc-solaris=tinterval-solaris-1947 tinterval/sparc-sun-solaris=tinterval-solaris-1947 -- GitLab