Hi, Using the PostgreSQL code coverage report, I found that tests for comparisons between date and timestamp[tz] are missing. Some of them have only partial coverage.
Attached patch will cover following functions: date_eq_timestamp date_ne_timestamp date_lt_timestamp date_gt_timestamp // already covered date_le_timestamp date_ge_timestamp date_eq_timestamptz date_ne_timestamptz date_lt_timestamptz // already covered date_gt_timestamptz // already covered date_le_timestamptz date_ge_timestamptz timestamp_eq_date timestamp_ne_date timestamp_lt_date timestamp_gt_date // already covered timestamp_le_date timestamp_ge_date timestamptz_eq_date timestamptz_ne_date timestamptz_lt_date timestamptz_gt_date // already covered timestamptz_le_date timestamptz_ge_date // already covered This is a minor patch, but I’d like to submit it to enhance test coverage. Best regards, Kwangwon Seo
From 6031a064cbfb5581a159d160f3dbb1d8a3d81b6b Mon Sep 17 00:00:00 2001 From: Kwangwon Seo <kei...@protonmail.com> Date: Fri, 28 Mar 2025 17:58:49 +0900 Subject: [PATCH v1] Add test for extra comparison between date and timestamp(tz) 1. Add missing resgression tests for comparison between date and timestamp --- src/test/regress/expected/horology.out | 160 +++++++++++++++++++++++++ src/test/regress/sql/horology.sql | 52 ++++++++ 2 files changed, 212 insertions(+) diff --git a/src/test/regress/expected/horology.out b/src/test/regress/expected/horology.out index 12eefb09d4d..03ad3a75084 100644 --- a/src/test/regress/expected/horology.out +++ b/src/test/regress/expected/horology.out @@ -2500,6 +2500,166 @@ SELECT '2020-10-05'::timestamptz >= '4714-11-24 BC'::timestamp as t; t (1 row) +RESET TimeZone; +-- +-- Comparisons between date and timestamp types +--- +SELECT '2025-03-28'::date = '2025-03-28 00:00:00'::timestamp as t; + t +--- + t +(1 row) + +SELECT '2025-03-28'::date <> '2025-03-28 00:00:01'::timestamp as t; + t +--- + t +(1 row) + +SELECT '2025-03-28'::date < '2025-03-28 00:00:01'::timestamp as t; + t +--- + t +(1 row) + +SELECT '2025-03-28'::date <= '2025-03-28 00:00:00'::timestamp as t; + t +--- + t +(1 row) + +SELECT '2025-03-28'::date > '2025-03-27 23:59:59'::timestamp as t; + t +--- + t +(1 row) + +SELECT '2025-03-28'::date >= '2025-03-28 00:00:00'::timestamp as t; + t +--- + t +(1 row) + +-- +-- Comparisons between timestamp and date types +--- +SELECT '2025-03-28 00:00:00'::timestamp = '2025-03-28'::date as t; + t +--- + t +(1 row) + +SELECT '2025-03-28 00:00:00'::timestamp <> '2025-03-27'::date as t; + t +--- + t +(1 row) + +SELECT '2025-03-28 00:00:00'::timestamp < '2025-03-29'::date as t; + t +--- + t +(1 row) + +SELECT '2025-03-28 00:00:00'::timestamp <= '2025-03-28'::date as t; + t +--- + t +(1 row) + +SELECT '2025-03-28 00:00:00'::timestamp > '2025-03-27'::date as t; + t +--- + t +(1 row) + +SELECT '2025-03-28 00:00:00'::timestamp >= '2025-03-28'::date as t; + t +--- + t +(1 row) + +-- +-- Comparisons between date and timestamptz types +--- +SET TimeZone to 'UTC'; +SELECT '2025-03-28'::date = '2025-03-28 00:00:00'::timestamptz as t; + t +--- + t +(1 row) + +SELECT '2025-03-28'::date <> '2025-03-28 00:00:01'::timestamptz as t; + t +--- + t +(1 row) + +SELECT '2025-03-28'::date < '2025-03-28 00:00:01'::timestamptz as t; + t +--- + t +(1 row) + +SELECT '2025-03-28'::date <= '2025-03-28 00:00:00'::timestamptz as t; + t +--- + t +(1 row) + +SELECT '2025-03-28'::date > '2025-03-27 23:59:59'::timestamptz as t; + t +--- + t +(1 row) + +SELECT '2025-03-28'::date >= '2025-03-28 00:00:00'::timestamptz as t; + t +--- + t +(1 row) + +RESET TimeZone; +-- +-- Comparisons between timestamptz and date types +--- +SET TimeZone to 'UTC'; +SELECT '2025-03-28 00:00:00'::timestamptz = '2025-03-28'::date as t; + t +--- + t +(1 row) + +SELECT '2025-03-28 00:00:00'::timestamptz <> '2025-03-27'::date as t; + t +--- + t +(1 row) + +SELECT '2025-03-28 00:00:00'::timestamptz < '2025-03-29'::date as t; + t +--- + t +(1 row) + +SELECT '2025-03-28 00:00:00'::timestamptz <= '2025-03-28'::date as t; + t +--- + t +(1 row) + +SELECT '2025-03-28 00:00:00'::timestamptz > '2025-03-27'::date as t; + t +--- + t +(1 row) + +SELECT '2025-03-28 00:00:00'::timestamptz >= '2025-03-28'::date as t; + t +--- + t +(1 row) + RESET TimeZone; -- -- Tests for BETWEEN diff --git a/src/test/regress/sql/horology.sql b/src/test/regress/sql/horology.sql index 86481637223..e85ba6e1b4c 100644 --- a/src/test/regress/sql/horology.sql +++ b/src/test/regress/sql/horology.sql @@ -376,6 +376,58 @@ SELECT '2020-10-05'::timestamptz >= '4714-11-24 BC'::timestamp as t; RESET TimeZone; +-- +-- Comparisons between date and timestamp types +--- + +SELECT '2025-03-28'::date = '2025-03-28 00:00:00'::timestamp as t; +SELECT '2025-03-28'::date <> '2025-03-28 00:00:01'::timestamp as t; +SELECT '2025-03-28'::date < '2025-03-28 00:00:01'::timestamp as t; +SELECT '2025-03-28'::date <= '2025-03-28 00:00:00'::timestamp as t; +SELECT '2025-03-28'::date > '2025-03-27 23:59:59'::timestamp as t; +SELECT '2025-03-28'::date >= '2025-03-28 00:00:00'::timestamp as t; + +-- +-- Comparisons between timestamp and date types +--- + +SELECT '2025-03-28 00:00:00'::timestamp = '2025-03-28'::date as t; +SELECT '2025-03-28 00:00:00'::timestamp <> '2025-03-27'::date as t; +SELECT '2025-03-28 00:00:00'::timestamp < '2025-03-29'::date as t; +SELECT '2025-03-28 00:00:00'::timestamp <= '2025-03-28'::date as t; +SELECT '2025-03-28 00:00:00'::timestamp > '2025-03-27'::date as t; +SELECT '2025-03-28 00:00:00'::timestamp >= '2025-03-28'::date as t; + +-- +-- Comparisons between date and timestamptz types +--- + +SET TimeZone to 'UTC'; + +SELECT '2025-03-28'::date = '2025-03-28 00:00:00'::timestamptz as t; +SELECT '2025-03-28'::date <> '2025-03-28 00:00:01'::timestamptz as t; +SELECT '2025-03-28'::date < '2025-03-28 00:00:01'::timestamptz as t; +SELECT '2025-03-28'::date <= '2025-03-28 00:00:00'::timestamptz as t; +SELECT '2025-03-28'::date > '2025-03-27 23:59:59'::timestamptz as t; +SELECT '2025-03-28'::date >= '2025-03-28 00:00:00'::timestamptz as t; + +RESET TimeZone; + +-- +-- Comparisons between timestamptz and date types +--- + +SET TimeZone to 'UTC'; + +SELECT '2025-03-28 00:00:00'::timestamptz = '2025-03-28'::date as t; +SELECT '2025-03-28 00:00:00'::timestamptz <> '2025-03-27'::date as t; +SELECT '2025-03-28 00:00:00'::timestamptz < '2025-03-29'::date as t; +SELECT '2025-03-28 00:00:00'::timestamptz <= '2025-03-28'::date as t; +SELECT '2025-03-28 00:00:00'::timestamptz > '2025-03-27'::date as t; +SELECT '2025-03-28 00:00:00'::timestamptz >= '2025-03-28'::date as t; + +RESET TimeZone; + -- -- Tests for BETWEEN -- -- 2.43.0