summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorTom Lane2023-03-09 21:49:03 +0000
committerTom Lane2023-03-09 21:49:03 +0000
commitbcc704b52490492e6bd73c4444056b3e9644504d (patch)
treebc9b625207a9752b5728af4bbbeef347fc75c368 /src/test
parent27b62377b47f9e7bf58613608bc718c86ea91e91 (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.out85
-rw-r--r--src/test/regress/sql/horology.sql23
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
--