diff --git a/src/metabase/api/dataset.clj b/src/metabase/api/dataset.clj
index 28024af1e50772a08a9c0a8599544788bab5092c..4bfa5f7e343e268bce132facc48187926ba86fe0 100644
--- a/src/metabase/api/dataset.clj
+++ b/src/metabase/api/dataset.clj
@@ -47,7 +47,7 @@
   (let [source-card-id (query->source-card-id query)
         options        {:executed-by api/*current-user-id*, :context :ad-hoc,
                         :card-id     source-card-id,        :nested? (boolean source-card-id)}]
-    (qp.async/process-query-and-save-with-max! query options)))
+    (qp.async/process-query-and-save-with-max-results-constraints! query options)))
 
 
 ;;; ----------------------------------- Downloading Query Results in Other Formats -----------------------------------
diff --git a/src/metabase/mbql/schema.clj b/src/metabase/mbql/schema.clj
index a4a3499ec36c9e76d246eff513d0180d30df9031..765b27c149d0ee002c347a0836652cb18e416701 100644
--- a/src/metabase/mbql/schema.clj
+++ b/src/metabase/mbql/schema.clj
@@ -656,7 +656,7 @@
           :question
           :xlsx-download))
 
-;; TODO - this schema is somewhat misleading because if you use a function like `qp/process-query-and-save-with-max!`
+;; TODO - this schema is somewhat misleading because if you use a function like `qp/process-query-and-save-with-max-results-constraints!`
 ;; some of these keys (e.g. `:context`) are in fact required
 (def Info
   "Schema for query `:info` dictionary, which is used for informational purposes to record information about how a query
diff --git a/src/metabase/pulse.clj b/src/metabase/pulse.clj
index 03972a4f517a6ba904437da73bc406e9a19b7114..1e4331c3ff70d8472ff76783cd3b0c5495981829 100644
--- a/src/metabase/pulse.clj
+++ b/src/metabase/pulse.clj
@@ -33,10 +33,11 @@
     (when-let [card (Card :id card-id, :archived false)]
       (let [{:keys [creator_id dataset_query]} card]
         {:card   card
-         :result (qp/process-query-and-save-with-max! dataset_query (merge {:executed-by creator_id,
-                                                                            :context     :pulse,
-                                                                            :card-id     card-id}
-                                                                           options))}))
+         :result (qp/process-query-and-save-with-max-results-constraints! dataset_query
+                   (merge {:executed-by creator_id,
+                           :context     :pulse,
+                           :card-id     card-id}
+                          options))}))
     (catch Throwable t
       (log/warn t (trs "Error running query for Card {0}" card-id)))))
 
diff --git a/src/metabase/query_processor.clj b/src/metabase/query_processor.clj
index fd64e52000b294e59ee98689760fe28332641ace..4794a3fbead20f13003a7fa24845a68537be8ba6 100644
--- a/src/metabase/query_processor.clj
+++ b/src/metabase/query_processor.clj
@@ -395,7 +395,7 @@
      {:max-results-bare-rows max-results})
    m))
 
-(s/defn process-query-and-save-with-max!
+(s/defn process-query-and-save-with-max-results-constraints!
   "Same as `process-query-and-save-execution!` but will include the default max rows returned as a constraint. (This
   function is ulitmately what powers most API endpoints that run queries, including `POST /api/dataset`.)"
   {:style/indent 1}
diff --git a/src/metabase/query_processor/async.clj b/src/metabase/query_processor/async.clj
index b829c6c3d7c29eb6d145b7d78139daab8c0dcb27..48ae943491025b9d24beec4979e573231807c856 100644
--- a/src/metabase/query_processor/async.clj
+++ b/src/metabase/query_processor/async.clj
@@ -70,12 +70,12 @@
   [query options]
   (do-async (:database query) qp/process-query-and-save-execution! query options))
 
-(defn process-query-and-save-with-max!
-  "Async version of `metabase.query-processor/process-query-and-save-with-max!`. Runs query asynchronously, and returns
-  a `core.async` channel that can be used to fetch the results once the query finishes running. Closing the channel
-  will cancel the query."
+(defn process-query-and-save-with-max-results-constraints!
+  "Async version of `metabase.query-processor/process-query-and-save-with-max-results-constraints!`. Runs query
+  asynchronously, and returns a `core.async` channel that can be used to fetch the results once the query finishes
+  running. Closing the channel will cancel the query."
   [query options]
-  (do-async (:database query) qp/process-query-and-save-with-max! query options))
+  (do-async (:database query) qp/process-query-and-save-with-max-results-constraints! query options))
 
 (defn process-query-without-save!
   "Async version of `metabase.query-processor/process-query-without-save!`. Runs query asynchronously, and returns a
diff --git a/test/metabase/query_processor_test/constraints_test.clj b/test/metabase/query_processor_test/constraints_test.clj
index 02978fc1c17af92a3c4d9ab41dda943fe1e90a85..a25d8922a3a85f0b98242c0efe508a6f2369495b 100644
--- a/test/metabase/query_processor_test/constraints_test.clj
+++ b/test/metabase/query_processor_test/constraints_test.clj
@@ -29,8 +29,8 @@
        :native      (native-query)
        :constraints {:max-results 5}})))
 
-;; does it also work when running via `process-query-and-save-with-max!`, the function that powers endpoints like
-;; `POST /api/dataset`?
+;; does it also work when running via `process-query-and-save-with-max-results-constraints!`, the function that powers
+;; endpoints like `POST /api/dataset`?
 (qp.test/expect-with-non-timeseries-dbs
   [["Red Medicine"]
    ["Stout Burgers & Beers"]
@@ -38,7 +38,7 @@
    ["Wurstküche"]
    ["Brite Spot Family Restaurant"]]
   (qp.test/rows
-    (qp/process-query-and-save-with-max!
+    (qp/process-query-and-save-with-max-results-constraints!
         {:database    (data/id)
          :type        :native
          :native      (native-query)