diff --git a/frontend/src/metabase/visualizations/lib/settings/column.js b/frontend/src/metabase/visualizations/lib/settings/column.js
index 3bcfedbcf8061a7dff3068f9c635fcbca5ad930a..69c36480237d96d13f0d4bb6c0e16752c76436d5 100644
--- a/frontend/src/metabase/visualizations/lib/settings/column.js
+++ b/frontend/src/metabase/visualizations/lib/settings/column.js
@@ -479,7 +479,7 @@ export function getSettingDefintionsForColumn(series: Series, column: Column) {
       ? visualization.columnSettings(column)
       : visualization.columnSettings || {};
 
-  if (isDate(column)) {
+  if (isDate(column) || (column.unit && column.unit !== "default")) {
     return {
       ...extraColumnSettings,
       ...DATE_COLUMN_SETTINGS,
diff --git a/modules/drivers/bigquery-cloud-sdk/test/metabase/driver/bigquery_cloud_sdk/query_processor_test.clj b/modules/drivers/bigquery-cloud-sdk/test/metabase/driver/bigquery_cloud_sdk/query_processor_test.clj
index aee52663bb31960dfdac1d8299018033559eff24..43705167ccac0cd013f8ed58454c46d5db841813 100644
--- a/modules/drivers/bigquery-cloud-sdk/test/metabase/driver/bigquery_cloud_sdk/query_processor_test.clj
+++ b/modules/drivers/bigquery-cloud-sdk/test/metabase/driver/bigquery_cloud_sdk/query_processor_test.clj
@@ -38,16 +38,19 @@
                :display_name "venue_id"
                :source       :native
                :base_type    :type/Integer
+               :effective_type :type/Integer
                :field_ref    [:field "venue_id" {:base-type :type/Integer}]}
               {:name         "user_id"
                :display_name "user_id"
                :source       :native
                :base_type    :type/Integer
+               :effective_type :type/Integer
                :field_ref    [:field "user_id" {:base-type :type/Integer}]}
               {:name         "checkins_id"
                :display_name "checkins_id"
                :source       :native
                :base_type    :type/Integer
+               :effective_type :type/Integer
                :field_ref    [:field "checkins_id" {:base-type :type/Integer}]}]
              (qp.test/cols
                (qp/process-query
diff --git a/modules/drivers/bigquery/test/metabase/driver/bigquery/query_processor_test.clj b/modules/drivers/bigquery/test/metabase/driver/bigquery/query_processor_test.clj
index a4492ca89be174cbb7844a987468ee4ae3079c78..9125d43a6b2c946a21ae6c7d7f5460f2d176e351 100644
--- a/modules/drivers/bigquery/test/metabase/driver/bigquery/query_processor_test.clj
+++ b/modules/drivers/bigquery/test/metabase/driver/bigquery/query_processor_test.clj
@@ -38,16 +38,19 @@
                :display_name "venue_id"
                :source       :native
                :base_type    :type/Integer
+               :effective_type :type/Integer
                :field_ref    [:field "venue_id" {:base-type :type/Integer}]}
               {:name         "user_id"
                :display_name "user_id"
                :source       :native
                :base_type    :type/Integer
+               :effective_type :type/Integer
                :field_ref    [:field "user_id" {:base-type :type/Integer}]}
               {:name         "checkins_id"
                :display_name "checkins_id"
                :source       :native
                :base_type    :type/Integer
+               :effective_type :type/Integer
                :field_ref    [:field "checkins_id" {:base-type :type/Integer}]}]
              (qp.test/cols
                (qp/process-query
diff --git a/modules/drivers/druid/test/metabase/driver/druid/query_processor_test.clj b/modules/drivers/druid/test/metabase/driver/druid/query_processor_test.clj
index 88f651b614b51aa6242b79b314ab50feb1e508d4..17f8cd1b5b47bb429250780b09c446929712210b 100644
--- a/modules/drivers/druid/test/metabase/driver/druid/query_processor_test.clj
+++ b/modules/drivers/druid/test/metabase/driver/druid/query_processor_test.clj
@@ -288,26 +288,31 @@
                                             :source       :native
                                             :display_name "id"
                                             :field_ref    [:field "id" {:base-type :type/Integer}]
-                                            :base_type    :type/Integer}
+                                            :base_type    :type/Integer
+                                            :effective_type :type/Integer}
                                            {:name         "user_name"
                                             :source       :native
                                             :display_name "user_name"
                                             :base_type    :type/Text
+                                            :effective_type :type/Text
                                             :field_ref    [:field "user_name" {:base-type :type/Text}]}
                                            {:name         "venue_price"
                                             :source       :native
                                             :display_name "venue_price"
                                             :base_type    :type/Integer
+                                            :effective_type :type/Integer
                                             :field_ref    [:field "venue_price" {:base-type :type/Integer}]}
                                            {:name         "venue_name"
                                             :source       :native
                                             :display_name "venue_name"
                                             :base_type    :type/Text
+                                            :effective_type :type/Text
                                             :field_ref    [:field "venue_name" {:base-type :type/Text}]}
                                            {:name         "count"
                                             :source       :native
                                             :display_name "count"
                                             :base_type    :type/Integer
+                                            :effective_type :type/Integer
                                             :field_ref    [:field "count" {:base-type :type/Integer}]}]
                         :native_form      {:query native-query-1}
                         :results_timezone "UTC"}}
diff --git a/modules/drivers/mongo/test/metabase/driver/mongo_test.clj b/modules/drivers/mongo/test/metabase/driver/mongo_test.clj
index f44ae69ae5f3ff4e5887c39adb74579e3e32c863..fe25525f6060a41f120c823a0db3f36365bafc91 100644
--- a/modules/drivers/mongo/test/metabase/driver/mongo_test.clj
+++ b/modules/drivers/mongo/test/metabase/driver/mongo_test.clj
@@ -104,6 +104,7 @@
                         :cols             [{:name         "count"
                                             :display_name "count"
                                             :base_type    :type/Integer
+                                            :effective_type :type/Integer
                                             :source       :native
                                             :field_ref    [:field "count" {:base-type :type/Integer}]}]
                         :native_form      {:collection "venues"
diff --git a/src/metabase/query_processor/middleware/annotate.clj b/src/metabase/query_processor/middleware/annotate.clj
index 97c5ad5aa664e1b34e12a49fc9a63bbb866be326..2dc84c860a6695958847fa03c61f16ae802a5b86 100644
--- a/src/metabase/query_processor/middleware/annotate.clj
+++ b/src/metabase/query_processor/middleware/annotate.clj
@@ -549,11 +549,18 @@
   (let [non-nil-driver-col-metadata (m/filter-vals some? driver-col-metadata)
         our-base-type               (when (= (:base_type driver-col-metadata) :type/*)
                                       (u/select-non-nil-keys our-col-metadata [:base_type]))
+        ;; whatever type comes back from the query is by definition the effective type, fallback to our effective
+        ;; type, fallback to the base_type
+        effective-type              (when-let [db-base (or (:base_type driver-col-metadata)
+                                                           (:effective_type our-col-metadata)
+                                                           (:base_type our-col-metadata))]
+                                      {:effective_type db-base})
         our-name                    (u/select-non-nil-keys our-col-metadata [:name])]
     (merge our-col-metadata
            non-nil-driver-col-metadata
            our-base-type
-           our-name)))
+           our-name
+           effective-type)))
 
 (defn- merge-cols-returned-by-driver
   "Merge our column metadata (`:cols`) derived from logic above with the column metadata returned by the driver. We'll
diff --git a/test/metabase/api/card_test.clj b/test/metabase/api/card_test.clj
index 40e42f48523786c427455015350bd412fabd5a15..20b1b1b61b20bfca7a8a783e32a6f4009d90c637 100644
--- a/test/metabase/api/card_test.clj
+++ b/test/metabase/api/card_test.clj
@@ -474,6 +474,7 @@
                         :metadata_checksum  "ABCDEF"))) ; bad checksum
               (testing "check the correct metadata was fetched and was saved in the DB"
                 (is (= [{:base_type     (count-base-type)
+                         :effective_type (count-base-type)
                          :display_name  "count"
                          :name          "count"
                          :semantic_type :type/Quantity
diff --git a/test/metabase/api/dataset_test.clj b/test/metabase/api/dataset_test.clj
index e25ecbbea9383065dac748a87784d24ff77166e5..9bcba8842dfbbf915e4f3d14e7d7b110e5de257d 100644
--- a/test/metabase/api/dataset_test.clj
+++ b/test/metabase/api/dataset_test.clj
@@ -341,6 +341,7 @@
                         "test-expr"]
                        (map :display_name cols)))
                 (is (= {:base_type       "type/Integer"
+                        :effective_type  "type/Integer"
                         :name            "pivot-grouping"
                         :display_name    "pivot-grouping"
                         :expression_name "pivot-grouping"
diff --git a/test/metabase/api/table_test.clj b/test/metabase/api/table_test.clj
index 0b2fe3ce96447589a3184e8ddbc749f233954232..8227944fb403e6dbb189206d694da0af65d546ce 100644
--- a/test/metabase/api/table_test.clj
+++ b/test/metabase/api/table_test.clj
@@ -469,12 +469,14 @@
                                           [{:name         "NAME"
                                             :display_name "NAME"
                                             :base_type    "type/Text"
+                                            :effective_type "type/Text"
                                             :semantic_type "type/Name"
                                             :fingerprint  (:name mutil/venue-fingerprints)
                                             :field_ref    ["field" "NAME" {:base-type "type/Text"}]}
                                            {:name         "ID"
                                             :display_name "ID"
                                             :base_type    "type/BigInteger"
+                                            :effective_type "type/BigInteger"
                                             :semantic_type nil
                                             :fingerprint  (:id mutil/venue-fingerprints)
                                             :field_ref    ["field" "ID" {:base-type "type/BigInteger"}]}
@@ -482,6 +484,7 @@
                                              {:name         "PRICE"
                                               :display_name "PRICE"
                                               :base_type    "type/Integer"
+                                              :effective_type "type/Integer"
                                               :semantic_type nil
                                               :fingerprint  (:price mutil/venue-fingerprints)
                                               :field_ref    ["field" "PRICE" {:base-type "type/Integer"}]})
@@ -489,6 +492,7 @@
                                              {:name         "LATITUDE"
                                               :display_name "LATITUDE"
                                               :base_type    "type/Float"
+                                              :effective_type "type/Float"
                                               :semantic_type "type/Latitude"
                                               :fingerprint  (:latitude mutil/venue-fingerprints)
                                               :field_ref    ["field" "LATITUDE" {:base-type "type/Float"}]})])})
@@ -522,6 +526,7 @@
                     :fields            [{:name                     "NAME"
                                          :display_name             "NAME"
                                          :base_type                "type/Text"
+                                         :effective_type           "type/Text"
                                          :table_id                 card-virtual-table-id
                                          :id                       ["field" "NAME" {:base-type "type/Text"}]
                                          :semantic_type            "type/Name"
@@ -532,6 +537,7 @@
                                         {:name                     "LAST_LOGIN"
                                          :display_name             "LAST_LOGIN"
                                          :base_type                "type/DateTime"
+                                         :effective_type           "type/DateTime"
                                          :table_id                 card-virtual-table-id
                                          :id                       ["field" "LAST_LOGIN" {:base-type "type/DateTime"}]
                                          :semantic_type            nil
diff --git a/test/metabase/driver/h2_test.clj b/test/metabase/driver/h2_test.clj
index be69bba01247f6446063f8b57c8f1dec24b6e471..7b284d9f88d1028861887630af28f11b91e4e819 100644
--- a/test/metabase/driver/h2_test.clj
+++ b/test/metabase/driver/h2_test.clj
@@ -93,6 +93,7 @@
         (testing "cols"
           (is (= [{:display_name "NAME"
                    :base_type    :type/Text
+                   :effective_type :type/Text
                    :source       :native
                    :field_ref    [:field "NAME" {:base-type :type/Text}]
                    :name         "NAME"}]
@@ -103,6 +104,7 @@
     (testing "A native query that doesn't return a column class name metadata should work correctly (#12150)"
       (is (= [{:display_name "D"
                :base_type    :type/DateTime
+               :effective_type :type/DateTime
                :source       :native
                :field_ref    [:field "D" {:base-type :type/DateTime}]
                :name         "D"}]
diff --git a/test/metabase/driver/postgres_test.clj b/test/metabase/driver/postgres_test.clj
index b354825864871049e78a07dd6d655cdad65d4bd0..884e5aa89abd20e28ff4a7c1d2a7a139a955a414 100644
--- a/test/metabase/driver/postgres_test.clj
+++ b/test/metabase/driver/postgres_test.clj
@@ -588,6 +588,7 @@
         (testing "cols"
           (is (= [{:display_name "sleep"
                    :base_type    :type/Text
+                   :effective_type :type/Text
                    :source       :native
                    :field_ref    [:field "sleep" {:base-type :type/Text}]
                    :name         "sleep"}]
diff --git a/test/metabase/driver/sql_jdbc/native_test.clj b/test/metabase/driver/sql_jdbc/native_test.clj
index 77bd5682526ab98955605f5ca8208fec1e270fa8..c92b3f64d2e6f3ba1ac0326356be479018f38bf8 100644
--- a/test/metabase/driver/sql_jdbc/native_test.clj
+++ b/test/metabase/driver/sql_jdbc/native_test.clj
@@ -17,6 +17,7 @@
                         :cols             [{:name         "ID"
                                             :display_name "ID"
                                             :base_type    :type/BigInteger
+                                            :effective_type :type/BigInteger
                                             :source       :native
                                             :field_ref    [:field "ID" {:base-type :type/BigInteger}]}]
                         :native_form      {:query "SELECT ID FROM VENUES ORDER BY ID DESC LIMIT 2"}
@@ -37,16 +38,19 @@
                                             :display_name "ID"
                                             :source       :native
                                             :base_type    :type/BigInteger
+                                            :effective_type :type/BigInteger
                                             :field_ref    [:field "ID" {:base-type :type/BigInteger}]}
                                            {:name         "NAME"
                                             :display_name "NAME"
                                             :source       :native
                                             :base_type    :type/Text
+                                            :effective_type :type/Text
                                             :field_ref    [:field "NAME" {:base-type :type/Text}]}
                                            {:name         "CATEGORY_ID"
                                             :display_name "CATEGORY_ID"
                                             :source       :native
                                             :base_type    :type/Integer
+                                            :effective_type :type/Integer
                                             :field_ref    [:field "CATEGORY_ID" {:base-type :type/Integer}]}]
                         :native_form      {:query "SELECT ID, NAME, CATEGORY_ID FROM VENUES ORDER BY ID DESC LIMIT 2"}
                         :results_timezone "UTC"}}
diff --git a/test/metabase/query_processor/middleware/add_source_metadata_test.clj b/test/metabase/query_processor/middleware/add_source_metadata_test.clj
index da58f366b57a6a687cf5ce7afc412440ff74c8b2..994a6c9b7a5caa23bebfd568727dc42f2b886ac1 100644
--- a/test/metabase/query_processor/middleware/add_source_metadata_test.clj
+++ b/test/metabase/query_processor/middleware/add_source_metadata_test.clj
@@ -200,7 +200,9 @@
                        (concat
                         (venues-source-metadata :price)
                         (let [[count-col] (results-metadata (mt/run-mbql-query venues {:aggregation [[:count]]}))]
-                          [(assoc count-col :field_ref field-ref)])))]
+                          [(-> count-col
+                               (dissoc :effective_type)
+                               (assoc :field_ref field-ref))])))]
                (mt/mbql-query venues
                  {:source-query    {:source-query    {:source-query    {:source-table $$venues
                                                                         :aggregation  [[:count]]
@@ -253,7 +255,9 @@
                                                                            :max-value 45.0
                                                                            :num-bins  7
                                                                            :bin-width 5.0}}])])
-                                  (results-metadata (mt/run-mbql-query venues {:aggregation [[:count]]})))})
+                                  ;; computed column doesn't have an effective type in middleware before query
+                                  (map #(dissoc % :effective_type)
+                                       (results-metadata (mt/run-mbql-query venues {:aggregation [[:count]]}))))})
              (add-source-metadata
               (mt/mbql-query venues
                 {:source-query
diff --git a/test/metabase/query_processor/middleware/annotate_test.clj b/test/metabase/query_processor/middleware/annotate_test.clj
index 21558d95e2455069b8af232c404b1ab6e7c77cbc..b7b67d93a6816b926500a982047390e0f322c4e2 100644
--- a/test/metabase/query_processor/middleware/annotate_test.clj
+++ b/test/metabase/query_processor/middleware/annotate_test.clj
@@ -416,6 +416,7 @@
       (is (= {:cols [{:name         "metric"
                       :display_name "Total Events"
                       :base_type    :type/Text
+                      :effective_type :type/Text
                       :source       :aggregation
                       :field_ref    [:aggregation 0]}]}
              (add-column-info
@@ -486,6 +487,7 @@
   (testing "Make sure `:cols` always come back with a unique `:name` key (#8759)"
     (is (= {:cols
             [{:base_type     :type/Number
+              :effective_type :type/Number
               :semantic_type :type/Quantity
               :name          "count"
               :display_name  "count"
@@ -495,14 +497,17 @@
               :name         "sum"
               :display_name "sum"
               :base_type    :type/Number
+              :effective_type :type/Number
               :field_ref    [:aggregation 1]}
              {:base_type     :type/Number
+              :effective_type :type/Number
               :semantic_type :type/Quantity
               :name          "count_2"
               :display_name  "count"
               :source        :aggregation
               :field_ref     [:aggregation 2]}
              {:base_type     :type/Number
+              :effective_type :type/Number
               :semantic_type :type/Quantity
               :name          "count_3"
               :display_name  "count_2"
diff --git a/test/metabase/query_processor/middleware/results_metadata_test.clj b/test/metabase/query_processor/middleware/results_metadata_test.clj
index fedfbe3633d7ab1ec1db0098779955b0d4ce9a01..69c6ede4015aa974357356b71fa9c69b30cadee0 100644
--- a/test/metabase/query_processor/middleware/results_metadata_test.clj
+++ b/test/metabase/query_processor/middleware/results_metadata_test.clj
@@ -29,36 +29,42 @@
   [{:name         "ID"
     :display_name "ID"
     :base_type    :type/BigInteger
+    :effective_type :type/BigInteger
     :semantic_type :type/PK
     :fingerprint  (:id mutil/venue-fingerprints)
     :field_ref    [:field "ID" {:base-type :type/BigInteger}]}
    {:name         "NAME"
     :display_name "Name"
     :base_type    :type/Text
+    :effective_type :type/Text
     :semantic_type :type/Name
     :fingerprint  (:name mutil/venue-fingerprints)
     :field_ref    [:field "NAME" {:base-type :type/Text}]}
    {:name         "PRICE"
     :display_name "Price"
     :base_type    :type/Integer
+    :effective_type :type/Integer
     :semantic_type nil
     :fingerprint  (:price mutil/venue-fingerprints)
     :field_ref    [:field "PRICE" {:base-type :type/Integer}]}
    {:name         "CATEGORY_ID"
     :display_name "Category ID"
     :base_type    :type/Integer
+    :effective_type :type/Integer
     :semantic_type nil
     :fingerprint  (:category_id mutil/venue-fingerprints)
     :field_ref    [:field "CATEGORY_ID" {:base-type :type/Integer}]}
    {:name         "LATITUDE"
     :display_name "Latitude"
     :base_type    :type/Float
+    :effective_type :type/Float
     :semantic_type :type/Latitude
     :fingerprint  (:latitude mutil/venue-fingerprints)
     :field_ref    [:field "LATITUDE" {:base-type :type/Float}]}
    {:name         "LONGITUDE"
     :display_name "Longitude"
     :base_type    :type/Float
+    :effective_type :type/Float
     :semantic_type :type/Longitude
     :fingerprint  (:longitude mutil/venue-fingerprints)
     :field_ref    [:field "LONGITUDE" {:base-type :type/Float}]}])
@@ -190,7 +196,7 @@
         :info     {:card-id    (u/the-id card)
                    :query-hash (qputil/query-hash {})}})
       (is (= [{:base_type    :type/DateTime
-               :effective_type    :type/Date
+               :effective_type    :type/DateTime
                :coercion_strategy nil
                :display_name "Date"
                :name         "DATE"
@@ -202,6 +208,7 @@
                :id           (mt/id :checkins :date)
                :field_ref    [:field (mt/id :checkins :date) {:temporal-unit :year}]}
               {:base_type    :type/BigInteger
+               :effective_type :type/BigInteger
                :display_name "Count"
                :name         "count"
                :semantic_type :type/Quantity
@@ -239,6 +246,7 @@
                      :database (mt/id)}))]
       (testing "Sanity check: annotate should infer correct type from `:cols`"
         (is (= {:base_type    :type/DateTime,
+                :effective_type :type/DateTime
                 :display_name "D" :name "D"
                 :source       :native
                 :field_ref    [:field "D" {:base-type :type/DateTime}]}
@@ -246,6 +254,7 @@
 
       (testing "Results metadata should have the same type info")
       (is (= {:base_type    :type/DateTime
+              :effective_type :type/DateTime
               :display_name "D"
               :name         "D"
               :semantic_type nil
diff --git a/test/metabase/query_processor_test.clj b/test/metabase/query_processor_test.clj
index de00d051465e1407fc544c27256078c8cc1c3dd0..2fb703a9a00d3505cfed22c5295f86d63a260060 100644
--- a/test/metabase/query_processor_test.clj
+++ b/test/metabase/query_processor_test.clj
@@ -111,6 +111,10 @@
   ([table-kw cols]
    (mapv (partial col table-kw) cols)))
 
+(defn- backfill-effective-type [{:keys [base_type effective_type] :as col}]
+  (cond-> col
+    (and (nil? effective_type) base_type) (assoc :effective_type base_type)))
+
 (defn aggregate-col
   "Return the column information we'd expect for an aggregate column. For all columns besides `:count`, you'll need to
   pass the `Field` in question as well.
@@ -119,13 +123,16 @@
     (aggregate-col :avg (col :venues :id))
     (aggregate-col :avg :venues :id)"
   ([ag-type]
-   (tx/aggregate-column-info (tx/driver) ag-type))
+   (backfill-effective-type
+    (tx/aggregate-column-info (tx/driver) ag-type)))
 
   ([ag-type field]
-   (tx/aggregate-column-info (tx/driver) ag-type field))
+   (backfill-effective-type
+    (tx/aggregate-column-info (tx/driver) ag-type field)))
 
   ([ag-type table-kw field-kw]
-   (tx/aggregate-column-info (tx/driver) ag-type (col table-kw field-kw))))
+   (backfill-effective-type
+    (tx/aggregate-column-info (tx/driver) ag-type (col table-kw field-kw)))))
 
 (defn breakout-col
   "Return expected `:cols` info for a Field used as a breakout.
diff --git a/test/metabase/query_processor_test/aggregation_test.clj b/test/metabase/query_processor_test/aggregation_test.clj
index 57696537d1b10bbce387258376453b1606a289cf..a4002ba6c7c137c2daad3afbbfdf9461c0de17a6 100644
--- a/test/metabase/query_processor_test/aggregation_test.clj
+++ b/test/metabase/query_processor_test/aggregation_test.clj
@@ -198,7 +198,6 @@
 
 
 ;;; ------------------------------------------------ CUMULATIVE COUNT ------------------------------------------------
-
 (deftest cumulative-count-test
   (mt/test-drivers (mt/normal-drivers)
     (testing "cumulative count aggregations"
diff --git a/test/metabase/query_processor_test/breakout_test.clj b/test/metabase/query_processor_test/breakout_test.clj
index c9563adf0c7661b20d14050434105fde42568c82..015ff7fdd3de885a47b47d63be47f601d6d34a94 100644
--- a/test/metabase/query_processor_test/breakout_test.clj
+++ b/test/metabase/query_processor_test/breakout_test.clj
@@ -167,7 +167,7 @@
     (testing "Validate binning info is returned with the binning-strategy"
       (testing "binning-strategy = default"
         ;; base_type can differ slightly between drivers and it's really not important for the purposes of this test
-        (is (= (assoc (dissoc (qp.test/breakout-col :venues :latitude) :base_type)
+        (is (= (assoc (dissoc (qp.test/breakout-col :venues :latitude) :base_type :effective_type)
                       :binning_info {:min_value 10.0, :max_value 50.0, :num_bins 4, :bin_width 10.0, :binning_strategy :bin-width}
                       :field_ref    [:field (mt/id :venues :latitude) {:binning {:strategy  :bin-width
                                                                                  :min-value 10.0
@@ -179,10 +179,10 @@
                       :breakout    [[:field %latitude {:binning {:strategy :default}}]]})
                    qp.test/cols
                    first
-                   (dissoc :base_type)))))
+                   (dissoc :base_type :effective_type)))))
 
       (testing "binning-strategy = num-bins: 5"
-        (is (= (assoc (dissoc (qp.test/breakout-col :venues :latitude) :base_type)
+        (is (= (assoc (dissoc (qp.test/breakout-col :venues :latitude) :base_type :effective_type)
                       :binning_info {:min_value 7.5, :max_value 45.0, :num_bins 5, :bin_width 7.5, :binning_strategy :num-bins}
                       :field_ref    [:field (mt/id :venues :latitude) {:binning {:strategy  :num-bins
                                                                                  :min-value 7.5
@@ -194,7 +194,7 @@
                       :breakout    [[:field %latitude {:binning {:strategy :num-bins, :num-bins 5}}]]})
                    qp.test/cols
                    first
-                   (dissoc :base_type))))))))
+                   (dissoc :base_type :effective_type))))))))
 
 (deftest binning-error-test
   (mt/test-drivers (mt/normal-drivers-with-feature :binning)
diff --git a/test/metabase/query_processor_test/native_test.clj b/test/metabase/query_processor_test/native_test.clj
index 511e0f0c6852e47022d16f9523481b5d6a9a03da..d893c0beee5a1b1fbdb97b3ee5b6a60c7996a1f8 100644
--- a/test/metabase/query_processor_test/native_test.clj
+++ b/test/metabase/query_processor_test/native_test.clj
@@ -26,7 +26,8 @@
             :source       :native
             :field_ref    [:field "NAME" {:base-type :type/Text}]
             :name         "NAME"
-            :base_type    :type/Text}]}
+            :base_type    :type/Text
+            :effective_type :type/Text}]}
          (qp.test/rows-and-cols
           (qp/process-query
            (mt/native-query
diff --git a/test/metabase/query_processor_test/nested_queries_test.clj b/test/metabase/query_processor_test/nested_queries_test.clj
index 36f5863fb1ecbfd19067aaf7fa02c282c05bd472..9240b353062dc27de5f25902cfe8b817fa8ec340 100644
--- a/test/metabase/query_processor_test/nested_queries_test.clj
+++ b/test/metabase/query_processor_test/nested_queries_test.clj
@@ -67,12 +67,12 @@
           [4  6]]
    :cols [(cond-> (qp.test/breakout-col (qp.test/col :venues :price))
             native-source?
-            (-> (assoc :field_ref [:field "PRICE" {:base-type :type/Integer}])
+            (-> (assoc :field_ref [:field "PRICE" {:base-type :type/Integer}]
+                       :effective_type :type/Integer)
                 (dissoc :description :parent_id :visibility_type))
 
             (not has-source-metadata?)
-            (dissoc :id :semantic_type :settings :fingerprint :table_id
-                    :effective_type :coercion_strategy))
+            (dissoc :id :semantic_type :settings :fingerprint :table_id :coercion_strategy))
           (qp.test/aggregate-col :count)]})
 
 (deftest mbql-source-query-breakout-aggregation-test
@@ -400,7 +400,7 @@
                        :unit      :day)
                 ;; because this field literal comes from a native query that does not include `:source-metadata` it won't have
                 ;; the usual extra keys
-                (dissoc :semantic_type :effective_type :coercion_strategy :table_id
+                (dissoc :semantic_type :coercion_strategy :table_id
                         :id :settings :fingerprint))
             (qp.test/aggregate-col :count)]
            (mt/cols
diff --git a/test/metabase/query_processor_test/remapping_test.clj b/test/metabase/query_processor_test/remapping_test.clj
index 682930beba0801c57910176889d90931c9faee7c..3882e2fdf754e1ed79773d87945eb1d7017f29e1 100644
--- a/test/metabase/query_processor_test/remapping_test.clj
+++ b/test/metabase/query_processor_test/remapping_test.clj
@@ -51,7 +51,7 @@
                       :limit       3}))
                  qp.test/rows-and-cols
                  (update :cols (fn [[c1 c2 agg]]
-                                 [(dissoc c1 :source_alias) c2 (dissoc agg :base_type)]))))))))
+                                 [(dissoc c1 :source_alias) c2 (dissoc agg :base_type :effective_type)]))))))))
 
 (deftest nested-remapping-test
   (mt/test-drivers (mt/normal-drivers-with-feature :nested-queries)
diff --git a/test/metabase/util/ssh_test.clj b/test/metabase/util/ssh_test.clj
index 1c4e74bdcbb35810c5ff2634d7b4e15d9a433b2a..a6c6844d83f6cce3564ee4a75acf5239883ab707 100644
--- a/test/metabase/util/ssh_test.clj
+++ b/test/metabase/util/ssh_test.clj
@@ -263,11 +263,13 @@
               (mt/with-db db
                 (sync/sync-database! db)
                 (letfn [(check-data [] (is (= {:cols [{:base_type    :type/Text
+                                                       :effective_type :type/Text
                                                        :display_name "COL1"
                                                        :field_ref    [:field "COL1" {:base-type :type/Text}]
                                                        :name         "COL1"
                                                        :source       :native}
                                                       {:base_type    :type/Decimal
+                                                       :effective_type :type/Decimal
                                                        :display_name "COL2"
                                                        :field_ref    [:field "COL2" {:base-type :type/Decimal}]
                                                        :name         "COL2"