Commit 7582bd91 authored by Bruce Momjian's avatar Bruce Momjian

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
parent 35273825
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
* *
* *
* IDENTIFICATION * 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 * NOTES
* *
...@@ -205,7 +205,17 @@ abstime2tm(AbsoluteTime _time, int *tzp, struct tm * tm, char *tzn) ...@@ -205,7 +205,17 @@ abstime2tm(AbsoluteTime _time, int *tzp, struct tm * tm, char *tzn)
#if defined(HAVE_TM_ZONE) || defined(HAVE_INT_TIMEZONE) #if defined(HAVE_TM_ZONE) || defined(HAVE_INT_TIMEZONE)
if (tzp != NULL) 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 = localtime((time_t *) &time);
tx->tm_isdst = 0;
}
# endif
}
else else
{ {
tx = gmtime((time_t *) &time); tx = gmtime((time_t *) &time);
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * 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) ...@@ -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) #if defined(HAVE_TM_ZONE) || defined(HAVE_INT_TIMEZONE)
tx = localtime(&utime); 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_year = tx->tm_year + 1900;
tm->tm_mon = tx->tm_mon + 1; tm->tm_mon = tx->tm_mon + 1;
tm->tm_mday = tx->tm_mday; tm->tm_mday = tx->tm_mday;
......
#define CLASS_CONFLICT #define CLASS_CONFLICT
#define DISABLE_XOPEN_NLS #define DISABLE_XOPEN_NLS
#define HAS_TEST_AND_SET #define HAS_TEST_AND_SET
#define NO_MKTIME_BEFORE_1970
typedef unsigned int slock_t; typedef unsigned int slock_t;
#include <sys/machine.h> /* ENDIAN definitions for network #include <sys/machine.h> /* ENDIAN definitions for network
......
#define HAS_TEST_AND_SET #define HAS_TEST_AND_SET
#define NO_MKTIME_BEFORE_1970
typedef unsigned long slock_t; typedef unsigned long slock_t;
abstime/.*-aix4=abstime-1947-PDT
abstime/.*-irix6=abstime-1947-PDT
abstime/alpha.*-dec-osf=abstime-solaris-1947 abstime/alpha.*-dec-osf=abstime-solaris-1947
abstime/i.86-pc-solaris=abstime-solaris-1947 abstime/i.86-pc-solaris=abstime-solaris-1947
abstime/sparc-sun-solaris=abstime-solaris-1947 abstime/sparc-sun-solaris=abstime-solaris-1947
...@@ -31,8 +29,8 @@ geometry/sparc-sun-solaris=geometry-solaris-precision ...@@ -31,8 +29,8 @@ geometry/sparc-sun-solaris=geometry-solaris-precision
geometry/sparc.*-linux-gnu=geometry-solaris-precision geometry/sparc.*-linux-gnu=geometry-solaris-precision
geometry/alpha.*-linux-gnu=geometry-solaris-precision geometry/alpha.*-linux-gnu=geometry-solaris-precision
geometry/.*-beos=geometry-intel-beos geometry/.*-beos=geometry-intel-beos
horology/.*-aix4=horology-1947-PDT horology/.*-aix4=horology-no-DST-before-1970
horology/.*-irix6=horology-1947-PDT horology/.*-irix6=horology-no-DST-before-1970
horology/alpha.*-dec-osf=horology-solaris-1947 horology/alpha.*-dec-osf=horology-solaris-1947
horology/.*-cygwin=horology-no-DST-before-1970 horology/.*-cygwin=horology-no-DST-before-1970
horology/hppa=horology-no-DST-before-1970 horology/hppa=horology-no-DST-before-1970
...@@ -74,8 +72,6 @@ int4/sparc-sun-solaris=int4-too-large ...@@ -74,8 +72,6 @@ int4/sparc-sun-solaris=int4-too-large
int4/.*-sysv5uw=int4-too-large int4/.*-sysv5uw=int4-too-large
int4/.*-beos=int4-range-error int4/.*-beos=int4-range-error
int8/.*-qnx=int8-exp-three-digits int8/.*-qnx=int8-exp-three-digits
tinterval/.*-aix4=tinterval-1947-PDT
tinterval/.*-irix6=tinterval-1947-PDT
tinterval/alpha.*-dec-osf=tinterval-solaris-1947 tinterval/alpha.*-dec-osf=tinterval-solaris-1947
tinterval/i.86-pc-solaris=tinterval-solaris-1947 tinterval/i.86-pc-solaris=tinterval-solaris-1947
tinterval/sparc-sun-solaris=tinterval-solaris-1947 tinterval/sparc-sun-solaris=tinterval-solaris-1947
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment