diff --git a/src/metabase/lib/join.cljc b/src/metabase/lib/join.cljc index 992ebebc254876be62902d2f1fe035ce60e4223f..bc2a47ce2d03ba0ab435ceb056ae457d14794613 100644 --- a/src/metabase/lib/join.cljc +++ b/src/metabase/lib/join.cljc @@ -676,7 +676,13 @@ (defn- mark-selected-column [metadata-providerable existing-column-or-nil columns] (if-not existing-column-or-nil columns - (lib.equality/mark-selected-columns metadata-providerable columns [existing-column-or-nil]))) + (mapv (fn [column] + (if (:selected? column) + (lib.temporal-bucket/with-temporal-bucket + column + (lib.temporal-bucket/temporal-bucket existing-column-or-nil)) + column)) + (lib.equality/mark-selected-columns metadata-providerable columns [existing-column-or-nil])))) (mu/defn join-condition-lhs-columns :- [:sequential lib.metadata/ColumnMetadata] "Get a sequence of columns that can be used as the left-hand-side (source column) in a join condition. This column diff --git a/test/metabase/lib/join_test.cljc b/test/metabase/lib/join_test.cljc index 984e5cdcd9bebd81324ac85610baafa3ac8cc45e..d031325208fd4f1cfe5bfa735bc966319e501a74 100644 --- a/test/metabase/lib/join_test.cljc +++ b/test/metabase/lib/join_test.cljc @@ -1124,4 +1124,9 @@ {:name "RATING", :selected? false} {:name "CREATED_AT", :selected? true}] (mapv #(select-keys % [:name :selected?]) - (lib/join-condition-rhs-columns query join lhs rhs))))))))) + (lib/join-condition-rhs-columns query join lhs rhs)))))) + (testing "temporal bucket returns with column metadata" + (let [[lhs-column] (filter :selected? (lib/join-condition-lhs-columns query 0 join lhs rhs))] + (is (= {:lib/type :option/temporal-bucketing, :unit :month} (lib/temporal-bucket lhs-column)))) + (let [[rhs-column] (filter :selected? (lib/join-condition-rhs-columns query 0 join lhs rhs))] + (is (= {:lib/type :option/temporal-bucketing, :unit :month} (lib/temporal-bucket rhs-column))))))))