diff --git a/src/metabase/lib/common.cljc b/src/metabase/lib/common.cljc
index 284253999addf3de266a05683e9c7a98ede0b19e..34eec2cc3f0c308c300a8295ec8e14c7a140ffdd 100644
--- a/src/metabase/lib/common.cljc
+++ b/src/metabase/lib/common.cljc
@@ -28,8 +28,17 @@
   :hierarchy lib.hierarchy/hierarchy)
 
 (defmethod ->op-arg :default
-  [_query _stage-number x]
-  x)
+  [query stage-number x]
+  (if (and (vector? x)
+           (keyword? (first x)))
+    ;; MBQL clause
+    (mapv #(->op-arg query stage-number %) x)
+    ;; Something else - just return it
+    x))
+
+(defmethod ->op-arg :dispatch-type/sequential
+  [query stage-number xs]
+  (mapv #(->op-arg query stage-number %) xs))
 
 (defmethod ->op-arg :metadata/field
   [_query _stage-number field-metadata]
diff --git a/test/metabase/lib/aggregation_test.cljc b/test/metabase/lib/aggregation_test.cljc
index 85f75de8db7403c9a74553f0d60d21fa23f94df9..c089d9ff81045539e4ad05a313cd00201fe6f600 100644
--- a/test/metabase/lib/aggregation_test.cljc
+++ b/test/metabase/lib/aggregation_test.cljc
@@ -651,3 +651,43 @@
           first-stage (lib.util/query-stage query 0)]
       (is (= 2 (count (:stages query))))
       (is (contains? first-stage :order-by)))))
+
+(deftest ^:parallel aggregation-with-case-expression-metadata-test
+  (let [query (-> (lib/query-for-table-name meta/metadata-provider "VENUES")
+                  (lib/limit 4)
+                  (lib/breakout (lib/field (meta/id :venues :category-id)))
+                  (lib/aggregate (lib/sum (lib/case [[(lib/< (lib/field (meta/id :venues :price)) 2)
+                                                      (lib/field (meta/id :venues :price))]]
+                                            0))))]
+    (is (=? [{:description              nil
+              :lib/type                 :metadata/field
+              :table-id                 (meta/id :venues)
+              :name                     "CATEGORY_ID"
+              :base-type                :type/Integer
+              :semantic-type            :type/FK
+              :database-type            "INTEGER"
+              :effective-type           :type/Integer
+              :lib/source               :source/breakouts
+              :lib/source-column-alias  "CATEGORY_ID"
+              :lib/source-uuid          string?
+              :fk-target-field-id       (meta/id :categories :id)
+              :custom-position          0
+              :active                   true
+              :id                       (meta/id :venues :category-id)
+              :parent-id                nil
+              :visibility-type          :normal
+              :lib/desired-column-alias "CATEGORY_ID"
+              :display-name             "Category ID"
+              :has-field-values         :none
+              :target                   nil
+              :preview-display          true
+              :fingerprint              {:global {:distinct-count 28, :nil% 0.0}}}
+             {:lib/type                 :metadata/field
+              :base-type                :type/Integer
+              :name                     "sum_case"
+              :display-name             "Sum of Case"
+              :lib/source               :source/aggregations
+              :lib/source-uuid          string?
+              :lib/source-column-alias  "sum_case"
+              :lib/desired-column-alias "sum_case"}]
+            (lib.metadata.calculation/metadata query)))))
diff --git a/test/metabase/query_processor_test/test_mlv2.clj b/test/metabase/query_processor_test/test_mlv2.clj
index c00bb64bc3471036cb0d54bf12be8d5fb53dcab3..f20273392b4988c4c9f685d898ee72d5059d53a1 100644
--- a/test/metabase/query_processor_test/test_mlv2.clj
+++ b/test/metabase/query_processor_test/test_mlv2.clj
@@ -42,13 +42,7 @@
      #{:datetime-add :datetime-subtract :convert-timezone}
      (mbql.u/match-one &match
        [_tag (_literal :guard string?) & _]
-       "#29910"))
-   ;; #29935: metadata for an `:aggregation` with a `:case` expression not working
-   (mbql.u/match-one legacy-query
-     {:aggregation aggregations}
-     (mbql.u/match-one aggregations
-       :case
-       "#29935"))))
+       "#29910"))))
 
 (defn- test-mlv2-metadata [original-query _qp-metadata]
   {:pre [(map? original-query)]}