aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2020-09-29 13:48:06 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2020-09-29 13:48:06 -0400
commita094c8ff53523e88ff9dd28ad467618039e27b58 (patch)
tree74e9cb9f1ae1702f2d865481aa684b952f0375a4 /src/test
parenta6b1f5365d58356b5d42829e9cd89a6c725d7a0a (diff)
downloadpostgresql-a094c8ff53523e88ff9dd28ad467618039e27b58.tar.gz
postgresql-a094c8ff53523e88ff9dd28ad467618039e27b58.zip
Fix make_timestamp[tz] to accept negative years as meaning BC.
Previously we threw an error. But make_date already allowed the case, so it is inconsistent as well as unhelpful for make_timestamp not to. Both functions continue to reject year zero. Code and test fixes by Peter Eisentraut, doc changes by me Discussion: https://postgr.es/m/13c0992c-f15a-a0ca-d839-91d3efd965d9@2ndquadrant.com
Diffstat (limited to 'src/test')
-rw-r--r--src/test/regress/expected/date.out2
-rw-r--r--src/test/regress/expected/timestamp.out11
-rw-r--r--src/test/regress/sql/date.sql1
-rw-r--r--src/test/regress/sql/timestamp.sql5
4 files changed, 17 insertions, 2 deletions
diff --git a/src/test/regress/expected/date.out b/src/test/regress/expected/date.out
index d035fe1f1e0..1b921ce215b 100644
--- a/src/test/regress/expected/date.out
+++ b/src/test/regress/expected/date.out
@@ -1607,6 +1607,8 @@ select make_time(8, 20, 0.0);
(1 row)
-- should fail
+select make_date(0, 7, 15);
+ERROR: date field value out of range: 0-07-15
select make_date(2013, 2, 30);
ERROR: date field value out of range: 2013-02-30
select make_date(2013, 13, 1);
diff --git a/src/test/regress/expected/timestamp.out b/src/test/regress/expected/timestamp.out
index 5f97505a307..96551160901 100644
--- a/src/test/regress/expected/timestamp.out
+++ b/src/test/regress/expected/timestamp.out
@@ -1704,9 +1704,18 @@ SELECT '' AS to_char_12, to_char(d, 'FF1 FF2 FF3 FF4 FF5 FF6 ff1 ff2 ff3 ff4 ff
(4 rows)
-- timestamp numeric fields constructor
-SELECT make_timestamp(2014,12,28,6,30,45.887);
+SELECT make_timestamp(2014, 12, 28, 6, 30, 45.887);
make_timestamp
------------------------------
Sun Dec 28 06:30:45.887 2014
(1 row)
+SELECT make_timestamp(-44, 3, 15, 12, 30, 15);
+ make_timestamp
+-----------------------------
+ Fri Mar 15 12:30:15 0044 BC
+(1 row)
+
+-- should fail
+select make_timestamp(0, 7, 15, 12, 30, 15);
+ERROR: date field value out of range: 0-07-15
diff --git a/src/test/regress/sql/date.sql b/src/test/regress/sql/date.sql
index 488f5faa076..7a734fb1a05 100644
--- a/src/test/regress/sql/date.sql
+++ b/src/test/regress/sql/date.sql
@@ -378,6 +378,7 @@ select make_date(2013, 7, 15);
select make_date(-44, 3, 15);
select make_time(8, 20, 0.0);
-- should fail
+select make_date(0, 7, 15);
select make_date(2013, 2, 30);
select make_date(2013, 13, 1);
select make_date(2013, 11, -1);
diff --git a/src/test/regress/sql/timestamp.sql b/src/test/regress/sql/timestamp.sql
index 7b58c3cfa5f..727ee500845 100644
--- a/src/test/regress/sql/timestamp.sql
+++ b/src/test/regress/sql/timestamp.sql
@@ -240,4 +240,7 @@ SELECT '' AS to_char_12, to_char(d, 'FF1 FF2 FF3 FF4 FF5 FF6 ff1 ff2 ff3 ff4 ff
) d(d);
-- timestamp numeric fields constructor
-SELECT make_timestamp(2014,12,28,6,30,45.887);
+SELECT make_timestamp(2014, 12, 28, 6, 30, 45.887);
+SELECT make_timestamp(-44, 3, 15, 12, 30, 15);
+-- should fail
+select make_timestamp(0, 7, 15, 12, 30, 15);