diff options
| author | Tom Lane | 2023-03-09 21:49:03 +0000 |
|---|---|---|
| committer | Tom Lane | 2023-03-09 21:49:03 +0000 |
| commit | bcc704b52490492e6bd73c4444056b3e9644504d (patch) | |
| tree | bc9b625207a9752b5728af4bbbeef347fc75c368 /src/test | |
| parent | 27b62377b47f9e7bf58613608bc718c86ea91e91 (diff) | |
Reject combining "epoch" and "infinity" with other datetime fields.
Datetime input formerly accepted combinations such as
'1995-08-06 infinity', but this seems like a clear error.
Reject any combination of regular y/m/d/h/m/s fields with
these special tokens.
Joseph Koshakow, reviewed by Keisuke Kuroda and myself
Discussion: https://postgr.es/m/CAAvxfHdm8wwXwG_FFRaJ1nTHiMWb7YXS2YKCzCt8Q0a2ZoMcHg@mail.gmail.com
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/regress/expected/horology.out | 85 | ||||
| -rw-r--r-- | src/test/regress/sql/horology.sql | 23 |
2 files changed, 108 insertions, 0 deletions
diff --git a/src/test/regress/expected/horology.out b/src/test/regress/expected/horology.out index de73683690..4f01131077 100644 --- a/src/test/regress/expected/horology.out +++ b/src/test/regress/expected/horology.out @@ -283,6 +283,91 @@ SELECT date 'J0' AS "Julian Epoch"; 11-24-4714 BC (1 row) +-- conflicting fields should throw errors +SELECT date '1995-08-06 epoch'; +ERROR: invalid input syntax for type date: "1995-08-06 epoch" +LINE 1: SELECT date '1995-08-06 epoch'; + ^ +SELECT date '1995-08-06 infinity'; +ERROR: invalid input syntax for type date: "1995-08-06 infinity" +LINE 1: SELECT date '1995-08-06 infinity'; + ^ +SELECT date '1995-08-06 -infinity'; +ERROR: invalid input syntax for type date: "1995-08-06 -infinity" +LINE 1: SELECT date '1995-08-06 -infinity'; + ^ +SELECT date 'today infinity'; +ERROR: invalid input syntax for type date: "today infinity" +LINE 1: SELECT date 'today infinity'; + ^ +SELECT date '-infinity infinity'; +ERROR: invalid input syntax for type date: "-infinity infinity" +LINE 1: SELECT date '-infinity infinity'; + ^ +SELECT timestamp '1995-08-06 epoch'; +ERROR: invalid input syntax for type timestamp: "1995-08-06 epoch" +LINE 1: SELECT timestamp '1995-08-06 epoch'; + ^ +SELECT timestamp '1995-08-06 infinity'; +ERROR: invalid input syntax for type timestamp: "1995-08-06 infinity" +LINE 1: SELECT timestamp '1995-08-06 infinity'; + ^ +SELECT timestamp '1995-08-06 -infinity'; +ERROR: invalid input syntax for type timestamp: "1995-08-06 -infinity" +LINE 1: SELECT timestamp '1995-08-06 -infinity'; + ^ +SELECT timestamp 'epoch 01:01:01'; +ERROR: invalid input syntax for type timestamp: "epoch 01:01:01" +LINE 1: SELECT timestamp 'epoch 01:01:01'; + ^ +SELECT timestamp 'infinity 01:01:01'; +ERROR: invalid input syntax for type timestamp: "infinity 01:01:01" +LINE 1: SELECT timestamp 'infinity 01:01:01'; + ^ +SELECT timestamp '-infinity 01:01:01'; +ERROR: invalid input syntax for type timestamp: "-infinity 01:01:01" +LINE 1: SELECT timestamp '-infinity 01:01:01'; + ^ +SELECT timestamp 'now epoch'; +ERROR: invalid input syntax for type timestamp: "now epoch" +LINE 1: SELECT timestamp 'now epoch'; + ^ +SELECT timestamp '-infinity infinity'; +ERROR: invalid input syntax for type timestamp: "-infinity infinity" +LINE 1: SELECT timestamp '-infinity infinity'; + ^ +SELECT timestamptz '1995-08-06 epoch'; +ERROR: invalid input syntax for type timestamp with time zone: "1995-08-06 epoch" +LINE 1: SELECT timestamptz '1995-08-06 epoch'; + ^ +SELECT timestamptz '1995-08-06 infinity'; +ERROR: invalid input syntax for type timestamp with time zone: "1995-08-06 infinity" +LINE 1: SELECT timestamptz '1995-08-06 infinity'; + ^ +SELECT timestamptz '1995-08-06 -infinity'; +ERROR: invalid input syntax for type timestamp with time zone: "1995-08-06 -infinity" +LINE 1: SELECT timestamptz '1995-08-06 -infinity'; + ^ +SELECT timestamptz 'epoch 01:01:01'; +ERROR: invalid input syntax for type timestamp with time zone: "epoch 01:01:01" +LINE 1: SELECT timestamptz 'epoch 01:01:01'; + ^ +SELECT timestamptz 'infinity 01:01:01'; +ERROR: invalid input syntax for type timestamp with time zone: "infinity 01:01:01" +LINE 1: SELECT timestamptz 'infinity 01:01:01'; + ^ +SELECT timestamptz '-infinity 01:01:01'; +ERROR: invalid input syntax for type timestamp with time zone: "-infinity 01:01:01" +LINE 1: SELECT timestamptz '-infinity 01:01:01'; + ^ +SELECT timestamptz 'now epoch'; +ERROR: invalid input syntax for type timestamp with time zone: "now epoch" +LINE 1: SELECT timestamptz 'now epoch'; + ^ +SELECT timestamptz '-infinity infinity'; +ERROR: invalid input syntax for type timestamp with time zone: "-infinity infinity" +LINE 1: SELECT timestamptz '-infinity infinity'; + ^ -- -- date, time arithmetic -- diff --git a/src/test/regress/sql/horology.sql b/src/test/regress/sql/horology.sql index 2724a2bbc7..0676cac5d1 100644 --- a/src/test/regress/sql/horology.sql +++ b/src/test/regress/sql/horology.sql @@ -62,6 +62,29 @@ SET DateStyle = 'Postgres, MDY'; SELECT date 'J1520447' AS "Confucius' Birthday"; SELECT date 'J0' AS "Julian Epoch"; +-- conflicting fields should throw errors +SELECT date '1995-08-06 epoch'; +SELECT date '1995-08-06 infinity'; +SELECT date '1995-08-06 -infinity'; +SELECT date 'today infinity'; +SELECT date '-infinity infinity'; +SELECT timestamp '1995-08-06 epoch'; +SELECT timestamp '1995-08-06 infinity'; +SELECT timestamp '1995-08-06 -infinity'; +SELECT timestamp 'epoch 01:01:01'; +SELECT timestamp 'infinity 01:01:01'; +SELECT timestamp '-infinity 01:01:01'; +SELECT timestamp 'now epoch'; +SELECT timestamp '-infinity infinity'; +SELECT timestamptz '1995-08-06 epoch'; +SELECT timestamptz '1995-08-06 infinity'; +SELECT timestamptz '1995-08-06 -infinity'; +SELECT timestamptz 'epoch 01:01:01'; +SELECT timestamptz 'infinity 01:01:01'; +SELECT timestamptz '-infinity 01:01:01'; +SELECT timestamptz 'now epoch'; +SELECT timestamptz '-infinity infinity'; + -- -- date, time arithmetic -- |
