Remove explicit error handling for obsolete date/time values
authorPeter Eisentraut <peter@eisentraut.org>
Wed, 12 Jun 2019 09:29:53 +0000 (11:29 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Sun, 30 Jun 2019 08:27:35 +0000 (10:27 +0200)
The date/time values 'current', 'invalid', and 'undefined' were
removed a long time ago, but the code still contains explicit error
handling for the transition.  To simplify the code and avoid having to
handle these values everywhere, just remove the recognition of these
tokens altogether now.

Reviewed-by: Michael Paquier <michael@paquier.xyz>
13 files changed:
src/backend/utils/adt/date.c
src/backend/utils/adt/datetime.c
src/backend/utils/adt/timestamp.c
src/include/utils/datetime.h
src/interfaces/ecpg/pgtypeslib/dt.h
src/interfaces/ecpg/pgtypeslib/dt_common.c
src/interfaces/ecpg/pgtypeslib/timestamp.c
src/test/regress/expected/date.out
src/test/regress/expected/timestamp.out
src/test/regress/expected/timestamptz.out
src/test/regress/sql/date.sql
src/test/regress/sql/timestamp.sql
src/test/regress/sql/timestamptz.sql

index 1ff3cfea8b9804ebc947a3d6f8d4bbe74e21f428..e440a4fedd71387f13ca9094ebc3757b8b42a28f 100644 (file)
@@ -138,14 +138,6 @@ date_in(PG_FUNCTION_ARGS)
                case DTK_DATE:
                        break;
 
-               case DTK_CURRENT:
-                       ereport(ERROR,
-                                       (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                                        errmsg("date/time value \"current\" is no longer supported")));
-
-                       GetCurrentDateTime(tm);
-                       break;
-
                case DTK_EPOCH:
                        GetEpochTime(tm);
                        break;
index 9def318c57d37baaf6fba8aae0f4a151833d921d..e9add385ba56ca658a614e159c24f10a26a38dee 100644 (file)
@@ -99,7 +99,6 @@ static const datetkn datetktbl[] = {
        {"aug", MONTH, 8},
        {"august", MONTH, 8},
        {DB_C, ADBC, BC},                       /* "bc" for years <= 0 */
-       {DCURRENT, RESERV, DTK_CURRENT},        /* "current" is always now */
        {"d", UNITS, DTK_DAY},          /* "day of month" for ISO input */
        {"dec", MONTH, 12},
        {"december", MONTH, 12},
@@ -113,7 +112,6 @@ static const datetkn datetktbl[] = {
        {"friday", DOW, 5},
        {"h", UNITS, DTK_HOUR},         /* "hour" */
        {LATE, RESERV, DTK_LATE},       /* "infinity" reserved for "late time" */
-       {INVALID, RESERV, DTK_INVALID}, /* "invalid" reserved for bad time */
        {"isodow", UNITS, DTK_ISODOW},  /* ISO day of week, Sunday == 7 */
        {"isoyear", UNITS, DTK_ISOYEAR},        /* year in terms of the ISO week date */
        {"j", UNITS, DTK_JULIAN},
@@ -157,7 +155,6 @@ static const datetkn datetktbl[] = {
        {"tue", DOW, 2},
        {"tues", DOW, 2},
        {"tuesday", DOW, 2},
-       {"undefined", RESERV, DTK_INVALID}, /* pre-v6.1 invalid time */
        {"wed", DOW, 3},
        {"wednesday", DOW, 3},
        {"weds", DOW, 3},
@@ -191,7 +188,6 @@ static const datetkn deltatktbl[] = {
        {"hours", UNITS, DTK_HOUR}, /* "hours" relative */
        {"hr", UNITS, DTK_HOUR},        /* "hour" relative */
        {"hrs", UNITS, DTK_HOUR},       /* "hours" relative */
-       {INVALID, RESERV, DTK_INVALID}, /* reserved for invalid time */
        {"m", UNITS, DTK_MINUTE},       /* "minute" relative */
        {"microsecon", UNITS, DTK_MICROSEC},    /* "microsecond" relative */
        {"mil", UNITS, DTK_MILLENNIUM}, /* "millennium" relative */
@@ -222,7 +218,6 @@ static const datetkn deltatktbl[] = {
        {DTIMEZONE, UNITS, DTK_TZ}, /* "timezone" time offset */
        {"timezone_h", UNITS, DTK_TZ_HOUR}, /* timezone hour units */
        {"timezone_m", UNITS, DTK_TZ_MINUTE},   /* timezone minutes units */
-       {"undefined", RESERV, DTK_INVALID}, /* pre-v6.1 invalid time */
        {"us", UNITS, DTK_MICROSEC},    /* "microsecond" relative */
        {"usec", UNITS, DTK_MICROSEC},  /* "microsecond" relative */
        {DMICROSEC, UNITS, DTK_MICROSEC},       /* "microsecond" relative */
@@ -1186,14 +1181,6 @@ DecodeDateTime(char **field, int *ftype, int nf,
                                        case RESERV:
                                                switch (val)
                                                {
-                                                       case DTK_CURRENT:
-                                                               ereport(ERROR,
-                                                                               (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                                                                                errmsg("date/time value \"current\" is no longer supported")));
-
-                                                               return DTERR_BAD_FORMAT;
-                                                               break;
-
                                                        case DTK_NOW:
                                                                tmask = (DTK_DATE_M | DTK_TIME_M | DTK_M(TZ));
                                                                *dtype = DTK_DATE;
@@ -2097,13 +2084,6 @@ DecodeTimeOnly(char **field, int *ftype, int nf,
                                        case RESERV:
                                                switch (val)
                                                {
-                                                       case DTK_CURRENT:
-                                                               ereport(ERROR,
-                                                                               (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                                                                                errmsg("date/time value \"current\" is no longer supported")));
-                                                               return DTERR_BAD_FORMAT;
-                                                               break;
-
                                                        case DTK_NOW:
                                                                tmask = DTK_TIME_M;
                                                                *dtype = DTK_TIME;
index 853a8dc49a469e2309dbbd7f32a5c1daa6a37db6..5861ffbbc970c6630bbc3951723ccd7c16e34440 100644 (file)
@@ -188,14 +188,6 @@ timestamp_in(PG_FUNCTION_ARGS)
                        TIMESTAMP_NOBEGIN(result);
                        break;
 
-               case DTK_INVALID:
-                       ereport(ERROR,
-                                       (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                                        errmsg("date/time value \"%s\" is no longer supported", str)));
-
-                       TIMESTAMP_NOEND(result);
-                       break;
-
                default:
                        elog(ERROR, "unexpected dtype %d while parsing timestamp \"%s\"",
                                 dtype, str);
@@ -439,14 +431,6 @@ timestamptz_in(PG_FUNCTION_ARGS)
                        TIMESTAMP_NOBEGIN(result);
                        break;
 
-               case DTK_INVALID:
-                       ereport(ERROR,
-                                       (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                                        errmsg("date/time value \"%s\" is no longer supported", str)));
-
-                       TIMESTAMP_NOEND(result);
-                       break;
-
                default:
                        elog(ERROR, "unexpected dtype %d while parsing timestamptz \"%s\"",
                                 dtype, str);
@@ -946,12 +930,6 @@ interval_in(PG_FUNCTION_ARGS)
                                                 errmsg("interval out of range")));
                        break;
 
-               case DTK_INVALID:
-                       ereport(ERROR,
-                                       (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                                        errmsg("date/time value \"%s\" is no longer supported", str)));
-                       break;
-
                default:
                        elog(ERROR, "unexpected dtype %d while parsing interval \"%s\"",
                                 dtype, str);
index 4de78ebe3665a0a735936d90ee3299338a6f2e11..b8a199cddedf569542d1c5f03f8e5103bcc907bf 100644 (file)
@@ -148,8 +148,6 @@ struct tzEntry;
 #define DTK_AGO                        5
 
 #define DTK_SPECIAL            6
-#define DTK_INVALID            7
-#define DTK_CURRENT            8
 #define DTK_EARLY              9
 #define DTK_LATE               10
 #define DTK_EPOCH              11
index a9884f278cf2c1f79f6b080e4b588ef377a95513..c5fd6bdaed9ae4f228600e1c70f211c97f55cc6d 100644 (file)
@@ -143,8 +143,6 @@ typedef int32 fsec_t;
 #define DTK_AGO                        5
 
 #define DTK_SPECIAL            6
-#define DTK_INVALID            7
-#define DTK_CURRENT            8
 #define DTK_EARLY              9
 #define DTK_LATE               10
 #define DTK_EPOCH              11
index f5aed794fda654112e3bd291c0dbf5758a9264ea..24fff28f0aed83fd0cac1225b5b20e06d4656b84 100644 (file)
@@ -111,7 +111,6 @@ static const datetkn datetktbl[] = {
 #endif
        {"cot", TZ, -18000},            /* Columbia Time */
        {"cst", TZ, -21600},            /* Central Standard Time */
-       {DCURRENT, RESERV, DTK_CURRENT},        /* "current" is always now */
 #if 0
        cvst
 #endif
@@ -201,7 +200,6 @@ static const datetkn datetktbl[] = {
        idt                                                     /* Israeli, Iran, Indian Daylight Time */
 #endif
        {LATE, RESERV, DTK_LATE},       /* "infinity" reserved for "late time" */
-       {INVALID, RESERV, DTK_INVALID}, /* "invalid" reserved for bad time */
        {"iot", TZ, 18000},                     /* Indian Chagos Time */
        {"irkst", DTZ, 32400},          /* Irkutsk Summer Time */
        {"irkt", TZ, 28800},            /* Irkutsk Time */
@@ -372,7 +370,6 @@ static const datetkn datetktbl[] = {
 #endif
        {"ulast", DTZ, 32400},          /* Ulan Bator Summer Time */
        {"ulat", TZ, 28800},            /* Ulan Bator Time */
-       {"undefined", RESERV, DTK_INVALID}, /* pre-v6.1 invalid time */
        {"ut", TZ, 0},
        {"utc", TZ, 0},
        {"uyst", DTZ, -7200},           /* Uruguay Summer Time */
@@ -440,7 +437,6 @@ static const datetkn deltatktbl[] = {
        {"hours", UNITS, DTK_HOUR}, /* "hours" relative */
        {"hr", UNITS, DTK_HOUR},        /* "hour" relative */
        {"hrs", UNITS, DTK_HOUR},       /* "hours" relative */
-       {INVALID, RESERV, DTK_INVALID}, /* reserved for invalid time */
        {"m", UNITS, DTK_MINUTE},       /* "minute" relative */
        {"microsecon", UNITS, DTK_MICROSEC},    /* "microsecond" relative */
        {"mil", UNITS, DTK_MILLENNIUM}, /* "millennium" relative */
@@ -471,7 +467,6 @@ static const datetkn deltatktbl[] = {
        {DTIMEZONE, UNITS, DTK_TZ}, /* "timezone" time offset */
        {"timezone_h", UNITS, DTK_TZ_HOUR}, /* timezone hour units */
        {"timezone_m", UNITS, DTK_TZ_MINUTE},   /* timezone minutes units */
-       {"undefined", RESERV, DTK_INVALID}, /* pre-v6.1 invalid time */
        {"us", UNITS, DTK_MICROSEC},    /* "microsecond" relative */
        {"usec", UNITS, DTK_MICROSEC},  /* "microsecond" relative */
        {DMICROSEC, UNITS, DTK_MICROSEC},       /* "microsecond" relative */
index a7e0fe66f086b0d9c79af9e55645b19134c6aff8..efd9f3aa7198ce0c0db7eec3aadbc4eb8e0563f8 100644 (file)
@@ -253,10 +253,6 @@ PGTYPEStimestamp_from_asc(char *str, char **endptr)
                        TIMESTAMP_NOBEGIN(result);
                        break;
 
-               case DTK_INVALID:
-                       errno = PGTYPES_TS_BAD_TIMESTAMP;
-                       return noresult;
-
                default:
                        errno = PGTYPES_TS_BAD_TIMESTAMP;
                        return noresult;
index 1bcc9465a93e041f685d6eaa28e0f691e1859567..4686d0d8cab46e2582934ef4cae3c36fb6105740 100644 (file)
@@ -1444,9 +1444,6 @@ SELECT EXTRACT(EPOCH      FROM DATE 'infinity');    --  Infinity
 SELECT EXTRACT(MICROSEC  FROM DATE 'infinity');     -- ERROR:  timestamp units "microsec" not recognized
 ERROR:  timestamp units "microsec" not recognized
 CONTEXT:  SQL function "date_part" statement 1
-SELECT EXTRACT(UNDEFINED FROM DATE 'infinity');     -- ERROR:  timestamp units "undefined" not supported
-ERROR:  timestamp units "undefined" not supported
-CONTEXT:  SQL function "date_part" statement 1
 -- test constructors
 select make_date(2013, 7, 15);
  make_date  
index b2b171f56013829b5f71e8e8339c88268f89c932..715680e33025fdf9d6aa67e124d0d9c29cdb082c 100644 (file)
@@ -79,19 +79,6 @@ TRUNCATE TIMESTAMP_TBL;
 INSERT INTO TIMESTAMP_TBL VALUES ('-infinity');
 INSERT INTO TIMESTAMP_TBL VALUES ('infinity');
 INSERT INTO TIMESTAMP_TBL VALUES ('epoch');
--- Obsolete special values
-INSERT INTO TIMESTAMP_TBL VALUES ('invalid');
-ERROR:  date/time value "invalid" is no longer supported
-LINE 1: INSERT INTO TIMESTAMP_TBL VALUES ('invalid');
-                                          ^
-INSERT INTO TIMESTAMP_TBL VALUES ('undefined');
-ERROR:  date/time value "undefined" is no longer supported
-LINE 1: INSERT INTO TIMESTAMP_TBL VALUES ('undefined');
-                                          ^
-INSERT INTO TIMESTAMP_TBL VALUES ('current');
-ERROR:  date/time value "current" is no longer supported
-LINE 1: INSERT INTO TIMESTAMP_TBL VALUES ('current');
-                                          ^
 -- Postgres v6.0 standard output format
 INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01 1997 PST');
 -- Variations on Postgres v6.1 standard output format
index 8a4c719993422a456404ad5db770338836ea3bfd..5551fa6610eabc60692aaf1bc312429353e2492c 100644 (file)
@@ -78,19 +78,6 @@ DELETE FROM TIMESTAMPTZ_TBL;
 INSERT INTO TIMESTAMPTZ_TBL VALUES ('-infinity');
 INSERT INTO TIMESTAMPTZ_TBL VALUES ('infinity');
 INSERT INTO TIMESTAMPTZ_TBL VALUES ('epoch');
--- Obsolete special values
-INSERT INTO TIMESTAMPTZ_TBL VALUES ('invalid');
-ERROR:  date/time value "invalid" is no longer supported
-LINE 1: INSERT INTO TIMESTAMPTZ_TBL VALUES ('invalid');
-                                            ^
-INSERT INTO TIMESTAMPTZ_TBL VALUES ('undefined');
-ERROR:  date/time value "undefined" is no longer supported
-LINE 1: INSERT INTO TIMESTAMPTZ_TBL VALUES ('undefined');
-                                            ^
-INSERT INTO TIMESTAMPTZ_TBL VALUES ('current');
-ERROR:  date/time value "current" is no longer supported
-LINE 1: INSERT INTO TIMESTAMPTZ_TBL VALUES ('current');
-                                            ^
 -- Postgres v6.0 standard output format
 INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mon Feb 10 17:32:01 1997 PST');
 -- Variations on Postgres v6.1 standard output format
index 22f80f2ee255b1ddcf8b7b513b830862989344f1..4c5b94a14ad11cc000d968d8d7282a031f88d864 100644 (file)
@@ -334,7 +334,6 @@ SELECT EXTRACT(EPOCH      FROM DATE 'infinity');    --  Infinity
 -- wrong fields from non-finite date:
 --
 SELECT EXTRACT(MICROSEC  FROM DATE 'infinity');     -- ERROR:  timestamp units "microsec" not recognized
-SELECT EXTRACT(UNDEFINED FROM DATE 'infinity');     -- ERROR:  timestamp units "undefined" not supported
 
 -- test constructors
 select make_date(2013, 7, 15);
index 150eb54c870fb8afabc43981ca5e7cfedf5c613f..031b22bc3c16daa5dc76359850e6ce31c4d1d425 100644 (file)
@@ -50,10 +50,6 @@ TRUNCATE TIMESTAMP_TBL;
 INSERT INTO TIMESTAMP_TBL VALUES ('-infinity');
 INSERT INTO TIMESTAMP_TBL VALUES ('infinity');
 INSERT INTO TIMESTAMP_TBL VALUES ('epoch');
--- Obsolete special values
-INSERT INTO TIMESTAMP_TBL VALUES ('invalid');
-INSERT INTO TIMESTAMP_TBL VALUES ('undefined');
-INSERT INTO TIMESTAMP_TBL VALUES ('current');
 
 -- Postgres v6.0 standard output format
 INSERT INTO TIMESTAMP_TBL VALUES ('Mon Feb 10 17:32:01 1997 PST');
index c3bd46c2331cda5ad6162c8546a128bf057c68ff..28c76d6b72c87bfdb5c074715de414aa677a5b71 100644 (file)
@@ -49,10 +49,6 @@ DELETE FROM TIMESTAMPTZ_TBL;
 INSERT INTO TIMESTAMPTZ_TBL VALUES ('-infinity');
 INSERT INTO TIMESTAMPTZ_TBL VALUES ('infinity');
 INSERT INTO TIMESTAMPTZ_TBL VALUES ('epoch');
--- Obsolete special values
-INSERT INTO TIMESTAMPTZ_TBL VALUES ('invalid');
-INSERT INTO TIMESTAMPTZ_TBL VALUES ('undefined');
-INSERT INTO TIMESTAMPTZ_TBL VALUES ('current');
 
 -- Postgres v6.0 standard output format
 INSERT INTO TIMESTAMPTZ_TBL VALUES ('Mon Feb 10 17:32:01 1997 PST');