Adds | (ns metabase.query-processor.middleware.add-rows-truncated (:require [metabase.query-processor.middleware.limit :as limit])) |
(defn- results-limit
[{{:keys [max-results max-results-bare-rows]} :constraints
{aggregations :aggregation, :keys [limit page], ::limit/keys [original-limit]} :query
:as _query}]
(or (when (and (or (not limit)
(= original-limit nil))
(not page)
(empty? aggregations))
max-results-bare-rows)
max-results
limit/absolute-max-results)) | |
(defn- add-rows-truncated-xform [limit rf]
{:pre [(int? limit) (fn? rf)]}
(let [row-count (volatile! 0)]
(fn
([]
(rf))
([result]
(rf (cond-> result
(and (map? result)
(= @row-count limit))
(assoc-in [:data :rows_truncated] limit))))
([result row]
(vswap! row-count inc)
(rf result row))))) | |
Add | (defn add-rows-truncated
[query rff]
(fn add-rows-truncated-rff* [metadata]
(add-rows-truncated-xform (results-limit query) (rff metadata)))) |