summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian2001-02-13 14:32:52 +0000
committerBruce Momjian2001-02-13 14:32:52 +0000
commit7582bd91cb4215a2efaf069630503cee66e2ea4d (patch)
tree5090233c242efc6f3ee01ebd4a23c73ac0bea4f0
parent35273825dc71329bca7dfcd2575fbc307de1a181 (diff)
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
-rw-r--r--src/backend/utils/adt/nabstime.c12
-rw-r--r--src/backend/utils/adt/timestamp.c10
-rw-r--r--src/include/port/aix.h1
-rw-r--r--src/include/port/irix5.h1
-rw-r--r--src/test/regress/resultmap8
5 files changed, 24 insertions, 8 deletions
diff --git a/src/backend/utils/adt/nabstime.c b/src/backend/utils/adt/nabstime.c
index 434b5c95a83..31117389b0a 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 e3facb7f1e4..a01a790124f 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 782d84bb913..5e4f70a7900 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 <sys/machine.h> /* ENDIAN definitions for network
diff --git a/src/include/port/irix5.h b/src/include/port/irix5.h
index 66879600496..ff91fc29227 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 c8f0a4302ca..417412d37f5 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