From 6131ffc43ff3d2f566e93f017e56a09e4e717318 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Tue, 30 Mar 2021 22:05:18 +0200 Subject: [PATCH] Add tests for date_part of epoch near upper bound of timestamp range This exercises a special case in the implementations of date_part('epoch', timestamp[tz]) that was previously not tested. --- src/test/regress/expected/timestamp.out | 7 +++++++ src/test/regress/expected/timestamptz.out | 7 +++++++ src/test/regress/sql/timestamp.sql | 3 +++ src/test/regress/sql/timestamptz.sql | 3 +++ 4 files changed, 20 insertions(+) diff --git a/src/test/regress/expected/timestamp.out b/src/test/regress/expected/timestamp.out index bde6d786ae..fff3cf08c1 100644 --- a/src/test/regress/expected/timestamp.out +++ b/src/test/regress/expected/timestamp.out @@ -1012,6 +1012,13 @@ SELECT d1 as "timestamp", Mon Jan 01 17:32:01 2001 | 200 | 21 | 3 | 2451912 | 978370321 (65 rows) +-- value near upper bound uses special case in code +SELECT date_part('epoch', '294270-01-01 00:00:00'::timestamp); + date_part +--------------- + 9224097091200 +(1 row) + -- TO_CHAR() SELECT to_char(d1, 'DAY Day day DY Dy dy MONTH Month month RM MON Mon mon') FROM TIMESTAMP_TBL; diff --git a/src/test/regress/expected/timestamptz.out b/src/test/regress/expected/timestamptz.out index 752333f0b0..ff07008073 100644 --- a/src/test/regress/expected/timestamptz.out +++ b/src/test/regress/expected/timestamptz.out @@ -1189,6 +1189,13 @@ SELECT d1 as timestamptz, Mon Jan 01 17:32:01 2001 PST | -28800 | -8 | 0 (66 rows) +-- value near upper bound uses special case in code +SELECT date_part('epoch', '294270-01-01 00:00:00+00'::timestamptz); + date_part +--------------- + 9224097091200 +(1 row) + -- TO_CHAR() SELECT to_char(d1, 'DAY Day day DY Dy dy MONTH Month month RM MON Mon mon') FROM TIMESTAMPTZ_TBL; diff --git a/src/test/regress/sql/timestamp.sql b/src/test/regress/sql/timestamp.sql index 458a16b5c6..ed03d7c218 100644 --- a/src/test/regress/sql/timestamp.sql +++ b/src/test/regress/sql/timestamp.sql @@ -261,6 +261,9 @@ SELECT d1 as "timestamp", date_part( 'epoch', d1) AS epoch FROM TIMESTAMP_TBL; +-- value near upper bound uses special case in code +SELECT date_part('epoch', '294270-01-01 00:00:00'::timestamp); + -- TO_CHAR() SELECT to_char(d1, 'DAY Day day DY Dy dy MONTH Month month RM MON Mon mon') FROM TIMESTAMP_TBL; diff --git a/src/test/regress/sql/timestamptz.sql b/src/test/regress/sql/timestamptz.sql index d21a8a4dff..fd1bf50a9c 100644 --- a/src/test/regress/sql/timestamptz.sql +++ b/src/test/regress/sql/timestamptz.sql @@ -275,6 +275,9 @@ SELECT d1 as timestamptz, date_part( 'timezone_minute', d1) AS timezone_minute FROM TIMESTAMPTZ_TBL; +-- value near upper bound uses special case in code +SELECT date_part('epoch', '294270-01-01 00:00:00+00'::timestamptz); + -- TO_CHAR() SELECT to_char(d1, 'DAY Day day DY Dy dy MONTH Month month RM MON Mon mon') FROM TIMESTAMPTZ_TBL;