diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/adt/date.c | 5 | ||||
-rw-r--r-- | src/test/regress/expected/horology-no-DST-before-1970.out | 26 | ||||
-rw-r--r-- | src/test/regress/expected/horology-solaris-1947.out | 26 | ||||
-rw-r--r-- | src/test/regress/expected/horology.out | 26 | ||||
-rw-r--r-- | src/test/regress/expected/time.out | 9 | ||||
-rw-r--r-- | src/test/regress/sql/horology.sql | 2 | ||||
-rw-r--r-- | src/test/regress/sql/time.sql | 7 |
7 files changed, 73 insertions, 28 deletions
diff --git a/src/backend/utils/adt/date.c b/src/backend/utils/adt/date.c index 90f41ad817d..09d0e9aa256 100644 --- a/src/backend/utils/adt/date.c +++ b/src/backend/utils/adt/date.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.77 2003/01/29 01:08:42 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.78 2003/01/31 01:08:08 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -511,6 +511,7 @@ time_in(PG_FUNCTION_ARGS) fsec_t fsec; struct tm tt, *tm = &tt; + int tz; int nf; char lowstr[MAXDATELEN + 1]; char *field[MAXDATEFIELDS]; @@ -521,7 +522,7 @@ time_in(PG_FUNCTION_ARGS) elog(ERROR, "Bad time external representation (too long) '%s'", str); if ((ParseDateTime(str, lowstr, field, ftype, MAXDATEFIELDS, &nf) != 0) - || (DecodeTimeOnly(field, ftype, nf, &dtype, tm, &fsec, NULL) != 0)) + || (DecodeTimeOnly(field, ftype, nf, &dtype, tm, &fsec, &tz) != 0)) elog(ERROR, "Bad time external representation '%s'", str); tm2time(tm, fsec, &result); diff --git a/src/test/regress/expected/horology-no-DST-before-1970.out b/src/test/regress/expected/horology-no-DST-before-1970.out index b8b7423ec52..ab40a6404ca 100644 --- a/src/test/regress/expected/horology-no-DST-before-1970.out +++ b/src/test/regress/expected/horology-no-DST-before-1970.out @@ -196,15 +196,31 @@ SELECT timestamp with time zone '27.12.2001 04:05:06.789-08'; (1 row) SET DateStyle = 'ISO'; --- Reject time without time zone having a time zone specified +-- As of 7.4, allow time without time zone having a time zone specified SELECT time without time zone '040506.789+08'; -ERROR: Bad time external representation '040506.789+08' + time +--------------- + 04:05:06.7890 +(1 row) + SELECT time without time zone '040506.789-08'; -ERROR: Bad time external representation '040506.789-08' + time +--------------- + 04:05:06.7890 +(1 row) + SELECT time without time zone 'T040506.789+08'; -ERROR: Bad time external representation 'T040506.789+08' + time +--------------- + 04:05:06.7890 +(1 row) + SELECT time without time zone 'T040506.789-08'; -ERROR: Bad time external representation 'T040506.789-08' + time +--------------- + 04:05:06.7890 +(1 row) + SELECT time with time zone '040506.789+08'; timetz ------------------ diff --git a/src/test/regress/expected/horology-solaris-1947.out b/src/test/regress/expected/horology-solaris-1947.out index 1601a346f01..222ee303679 100644 --- a/src/test/regress/expected/horology-solaris-1947.out +++ b/src/test/regress/expected/horology-solaris-1947.out @@ -196,15 +196,31 @@ SELECT timestamp with time zone '27.12.2001 04:05:06.789-08'; (1 row) SET DateStyle = 'ISO'; --- Reject time without time zone having a time zone specified +-- As of 7.4, allow time without time zone having a time zone specified SELECT time without time zone '040506.789+08'; -ERROR: Bad time external representation '040506.789+08' + time +--------------- + 04:05:06.7890 +(1 row) + SELECT time without time zone '040506.789-08'; -ERROR: Bad time external representation '040506.789-08' + time +--------------- + 04:05:06.7890 +(1 row) + SELECT time without time zone 'T040506.789+08'; -ERROR: Bad time external representation 'T040506.789+08' + time +--------------- + 04:05:06.7890 +(1 row) + SELECT time without time zone 'T040506.789-08'; -ERROR: Bad time external representation 'T040506.789-08' + time +--------------- + 04:05:06.7890 +(1 row) + SELECT time with time zone '040506.789+08'; timetz ------------------ diff --git a/src/test/regress/expected/horology.out b/src/test/regress/expected/horology.out index 294b7854106..2735641e396 100644 --- a/src/test/regress/expected/horology.out +++ b/src/test/regress/expected/horology.out @@ -196,15 +196,31 @@ SELECT timestamp with time zone '27.12.2001 04:05:06.789-08'; (1 row) SET DateStyle = 'ISO'; --- Reject time without time zone having a time zone specified +-- As of 7.4, allow time without time zone having a time zone specified SELECT time without time zone '040506.789+08'; -ERROR: Bad time external representation '040506.789+08' + time +--------------- + 04:05:06.7890 +(1 row) + SELECT time without time zone '040506.789-08'; -ERROR: Bad time external representation '040506.789-08' + time +--------------- + 04:05:06.7890 +(1 row) + SELECT time without time zone 'T040506.789+08'; -ERROR: Bad time external representation 'T040506.789+08' + time +--------------- + 04:05:06.7890 +(1 row) + SELECT time without time zone 'T040506.789-08'; -ERROR: Bad time external representation 'T040506.789-08' + time +--------------- + 04:05:06.7890 +(1 row) + SELECT time with time zone '040506.789+08'; timetz ------------------ diff --git a/src/test/regress/expected/time.out b/src/test/regress/expected/time.out index ddefeadc34d..e8b2b6de337 100644 --- a/src/test/regress/expected/time.out +++ b/src/test/regress/expected/time.out @@ -4,12 +4,9 @@ CREATE TABLE TIME_TBL (f1 time(2)); INSERT INTO TIME_TBL VALUES ('00:00'); INSERT INTO TIME_TBL VALUES ('01:00'); -INSERT INTO TIME_TBL VALUES ('02:03'); -INSERT INTO TIME_TBL VALUES ('07:07 PST'); -ERROR: Bad time external representation '07:07 PST' -INSERT INTO TIME_TBL VALUES ('08:08 EDT'); -ERROR: Bad time external representation '08:08 EDT' -INSERT INTO TIME_TBL VALUES ('11:59'); +-- as of 7.4, timezone spec should be accepted and ignored +INSERT INTO TIME_TBL VALUES ('02:03 PST'); +INSERT INTO TIME_TBL VALUES ('11:59 EDT'); INSERT INTO TIME_TBL VALUES ('12:00'); INSERT INTO TIME_TBL VALUES ('12:01'); INSERT INTO TIME_TBL VALUES ('23:59'); diff --git a/src/test/regress/sql/horology.sql b/src/test/regress/sql/horology.sql index 6d767d23760..0af769a8b2c 100644 --- a/src/test/regress/sql/horology.sql +++ b/src/test/regress/sql/horology.sql @@ -42,7 +42,7 @@ SET DateStyle = 'German'; SELECT timestamp with time zone '27.12.2001 04:05:06.789+08'; SELECT timestamp with time zone '27.12.2001 04:05:06.789-08'; SET DateStyle = 'ISO'; --- Reject time without time zone having a time zone specified +-- As of 7.4, allow time without time zone having a time zone specified SELECT time without time zone '040506.789+08'; SELECT time without time zone '040506.789-08'; SELECT time without time zone 'T040506.789+08'; diff --git a/src/test/regress/sql/time.sql b/src/test/regress/sql/time.sql index 8ab8caa6077..510cc148549 100644 --- a/src/test/regress/sql/time.sql +++ b/src/test/regress/sql/time.sql @@ -6,10 +6,9 @@ CREATE TABLE TIME_TBL (f1 time(2)); INSERT INTO TIME_TBL VALUES ('00:00'); INSERT INTO TIME_TBL VALUES ('01:00'); -INSERT INTO TIME_TBL VALUES ('02:03'); -INSERT INTO TIME_TBL VALUES ('07:07 PST'); -INSERT INTO TIME_TBL VALUES ('08:08 EDT'); -INSERT INTO TIME_TBL VALUES ('11:59'); +-- as of 7.4, timezone spec should be accepted and ignored +INSERT INTO TIME_TBL VALUES ('02:03 PST'); +INSERT INTO TIME_TBL VALUES ('11:59 EDT'); INSERT INTO TIME_TBL VALUES ('12:00'); INSERT INTO TIME_TBL VALUES ('12:01'); INSERT INTO TIME_TBL VALUES ('23:59'); |