diff --git a/src/metabase/driver/query_processor.clj b/src/metabase/driver/query_processor.clj
index 7d011182e0314bb3b1f639980c1af055c2cc1daf..dfb2b2a01846dd0638a96d8ee6f30429fc962cc5 100644
--- a/src/metabase/driver/query_processor.clj
+++ b/src/metabase/driver/query_processor.clj
@@ -69,7 +69,7 @@
     (qp (if (or (not (= ag-type :rows)) breakout fields) query
             (-> query
                 (assoc-in [:query :fields-is-implicit] true)
-                (assoc-in [:query :fields] (->> (sel :many :fields [Field :name :base_type :special_type :table_id], :table_id source-table-id, :active true,
+                (assoc-in [:query :fields] (->> (sel :many :fields [Field :name :base_type :special_type :table_id :id], :table_id source-table-id, :active true,
                                                      :preview_display true, :field_type [not= "sensitive"], :parent_id nil, (k/order :position :asc), (k/order :id :desc))
                                                 (map expand/rename-mb-field-keys)
                                                 (map expand/map->Field)
@@ -175,12 +175,13 @@
 (defn- limit
   "Add an implicit `limit` clause to queries with `rows` aggregations, and limit the maximum number of rows that can be returned in post-processing."
   [qp]
-  (fn [{{{ag-type :aggregation-type} :aggregation, limit :limit} :query, :as query}]
+  (fn [{{{ag-type :aggregation-type} :aggregation, :keys [limit page]} :query, :as query}]
     (let [query   (cond-> query
                     (and (not limit)
+                         (not page)
                          (= ag-type :rows)) (assoc-in [:query :limit] max-result-bare-rows))
           results (qp query)]
-      (update-in results [:rows] (partial take max-result-rows)))))
+      (update results :rows (partial take max-result-rows)))))
 
 
 (defn- pre-log-query [qp]
diff --git a/src/metabase/driver/query_processor/expand.clj b/src/metabase/driver/query_processor/expand.clj
index 8e376ec89be051977339b845286aa69c17756262..33e26664d70607e403dc321790ffeeb6039297ad 100644
--- a/src/metabase/driver/query_processor/expand.clj
+++ b/src/metabase/driver/query_processor/expand.clj
@@ -110,15 +110,17 @@
                 (not (every? nil? clause))))))
 
 (defn- parse [query-dict]
-  (update-in query-dict [:query] #(-<> (assoc %
-                                              :aggregation (parse-aggregation (:aggregation %))
-                                              :breakout    (parse-breakout    (:breakout %))
-                                              :fields      (parse-fields      (:fields %))
-                                              :filter      (parse-filter      (:filter %))
-                                              :order_by    (parse-order-by    (:order_by %)))
-                                       (set/rename-keys <> {:order_by     :order-by
-                                                            :source_table :source-table})
-                                       (m/filter-vals non-empty-clause? <>))))
+  ;; TODO - we should parse the Page clause so we can validate it
+  ;; And convert to a limit / offset clauses
+  (update query-dict :query #(-<> (assoc %
+                                         :aggregation (parse-aggregation (:aggregation %))
+                                         :breakout    (parse-breakout    (:breakout %))
+                                         :fields      (parse-fields      (:fields %))
+                                         :filter      (parse-filter      (:filter %))
+                                         :order_by    (parse-order-by    (:order_by %)))
+                                  (set/rename-keys <> {:order_by     :order-by
+                                                       :source_table :source-table})
+                                  (m/filter-vals non-empty-clause? <>))))
 
 (defn rename-mb-field-keys
   "Rename the keys in a Metabase `Field` to match the format of those in Query Expander `Fields`."
@@ -350,15 +352,15 @@
                         ^Field field])
 
 (defparser parse-aggregation
-  ["rows"]              (->Aggregation :rows nil)
-  ["count"]             (->Aggregation :count nil)
-  ["avg" field-id]      (->Aggregation :avg (ph field-id))
-  ["count" field-id]    (->Aggregation :count (ph field-id))
-  ["distinct" field-id] (->Aggregation :distinct (ph field-id))
-  ["stddev" field-id]   (do (assert-driver-supports :standard-deviation-aggregations)
-                            (->Aggregation :stddev (ph field-id)))
-  ["sum" field-id]      (->Aggregation :sum (ph field-id))
-  ["cum_sum" field-id]  (->Aggregation :cumulative-sum (ph field-id)))
+  ["rows"]                              (->Aggregation :rows nil)
+  ["count"]                             (->Aggregation :count nil)
+  ["avg" (field-id :guard Field?)]      (->Aggregation :avg (ph field-id))
+  ["count" (field-id :guard Field?)]    (->Aggregation :count (ph field-id))
+  ["distinct" (field-id :guard Field?)] (->Aggregation :distinct (ph field-id))
+  ["stddev" (field-id :guard Field?)]   (do (assert-driver-supports :standard-deviation-aggregations)
+                                            (->Aggregation :stddev (ph field-id)))
+  ["sum" (field-id :guard Field?)]      (->Aggregation :sum (ph field-id))
+  ["cum_sum" (field-id :guard Field?)]  (->Aggregation :cumulative-sum (ph field-id)))
 
 
 ;; ## -------------------- Breakout --------------------
diff --git a/test/metabase/api/session_test.clj b/test/metabase/api/session_test.clj
index 5313b50a7ce6d89fa3fc55cb6027d2c4e97f8301..c140df9a5e3761ec52ced4bb16adbe73f33ad3d4 100644
--- a/test/metabase/api/session_test.clj
+++ b/test/metabase/api/session_test.clj
@@ -1,7 +1,6 @@
 (ns metabase.api.session-test
   "Tests for /api/session"
   (:require [expectations :refer :all]
-            [korma.core :refer :all]
             [metabase.db :refer :all]
             [metabase.http-client :refer :all]
             (metabase.models [session :refer [Session]]