From ce00efce757e0697fb4dad23b02963b53d7dd7a3 Mon Sep 17 00:00:00 2001 From: john-metabase <92878045+john-metabase@users.noreply.github.com> Date: Mon, 22 May 2023 13:07:45 -0400 Subject: [PATCH] Updates Postgres format-interval to accept decimal numbers (#30849) --- src/metabase/driver/postgres.clj | 2 +- test/metabase/driver/postgres_test.clj | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/metabase/driver/postgres.clj b/src/metabase/driver/postgres.clj index dd1e1de4f98..0b5c1db1cf9 100644 --- a/src/metabase/driver/postgres.clj +++ b/src/metabase/driver/postgres.clj @@ -240,7 +240,7 @@ ;; I tried to write this with Malli but couldn't figure out how to make it work. See ;; https://metaboat.slack.com/archives/CKZEMT1MJ/p1676076592468909 [_fn [amount unit]] - {:pre [(int? amount) + {:pre [(number? amount) (#{:millisecond :second :minute :hour :day :week :month :year} unit)]} [(format "INTERVAL '%s %s'" (num amount) (name unit))]) diff --git a/test/metabase/driver/postgres_test.clj b/test/metabase/driver/postgres_test.clj index cc00d80a64a..82ebe1b9bb4 100644 --- a/test/metabase/driver/postgres_test.clj +++ b/test/metabase/driver/postgres_test.clj @@ -54,13 +54,14 @@ (deftest ^:parallel interval-test (is (= ["INTERVAL '2 day'"] (sql/format-expr [::postgres/interval 2 :day]))) + (is (= ["INTERVAL '-2.5 year'"] + (sql/format-expr [::postgres/interval -2.5 :year]))) (are [amount unit msg] (thrown-with-msg? AssertionError msg (sql/format-expr [::postgres/interval amount unit])) - 2.0 :day #"\QAssert failed: (int? amount)\E" - "2" :day #"\QAssert failed: (int? amount)\E" - :day 2 #"\QAssert failed: (int? amount)\E" + "2" :day #"\QAssert failed: (number? amount)\E" + :day 2 #"\QAssert failed: (number? amount)\E" 2 "day" #"\QAssert failed: (#{:day :hour :week :second :month :year :millisecond :minute} unit)\E" 2 2 #"\QAssert failed: (#{:day :hour :week :second :month :year :millisecond :minute} unit)\E" 2 :can #"\QAssert failed: (#{:day :hour :week :second :month :year :millisecond :minute} unit)\E")) -- GitLab