From 048a7bce0640afd0da3edf64a5634dab89fb13f6 Mon Sep 17 00:00:00 2001 From: Kevin Conroy Date: Thu, 19 Sep 2019 23:24:30 -0400 Subject: [PATCH 1/2] GlobalGiving UPKEEP-28988 - Setup Eclipse project --- .project | 11 +++++++++++ resources/locales.clj | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 .project diff --git a/.project b/.project new file mode 100644 index 000000000000..dcdb95aaf819 --- /dev/null +++ b/.project @@ -0,0 +1,11 @@ + + + metabase + + + + + + + + diff --git a/resources/locales.clj b/resources/locales.clj index 132368c0a198..6ec884781a83 100644 --- a/resources/locales.clj +++ b/resources/locales.clj @@ -1,5 +1,5 @@ { - :locales #{"en" "ca" "de" "es" "fa" "fr" "it" "ja" "nb" "pl" "pt" "ru" "tr" "uk" "vi" "zh" } + :locales #{"en" "uk" "fr" "nl" "tr" "it" "es" "nb" "ca" "de" "ja" "vi" "pl" "pt" "ru" } :packages ["metabase"] :bundle "metabase.Messages" } From cbd6fdbb264dc372174cfd801aad691ec9bd1035 Mon Sep 17 00:00:00 2001 From: Kevin Conroy Date: Thu, 19 Sep 2019 23:25:24 -0400 Subject: [PATCH 2/2] UPKEEP-28988 Add support for higher max results in queries --- src/metabase/pulse.clj | 2 +- src/metabase/query_processor.clj | 10 +++++++++ .../middleware/constraints.clj | 21 +++++++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/metabase/pulse.clj b/src/metabase/pulse.clj index bb5e1492b485..928799bdeadf 100644 --- a/src/metabase/pulse.clj +++ b/src/metabase/pulse.clj @@ -35,7 +35,7 @@ (let [{:keys [creator_id dataset_query]} card query (assoc dataset_query :async? false)] {:card card - :result (qp/process-query-and-save-with-max-results-constraints! query + :result (qp/process-query-and-save-with-higher-max-results-constraints! query (merge {:executed-by creator_id :context :pulse :card-id card-id} diff --git a/src/metabase/query_processor.clj b/src/metabase/query_processor.clj index db992f14e3f1..4fb596b9b512 100644 --- a/src/metabase/query_processor.clj +++ b/src/metabase/query_processor.clj @@ -353,3 +353,13 @@ [query, options :- mbql.s/Info] (let [query (assoc-in query [:middleware :add-default-userland-constraints?] true)] (process-query-and-save-execution! query options))) + + +(s/defn process-query-and-save-with-higher-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} + [query, options :- mbql.s/Info] + (let [query (assoc-in query [:middleware :add-higher-userland-constraints?] true)] + (process-query-and-save-execution! query options))) + \ No newline at end of file diff --git a/src/metabase/query_processor/middleware/constraints.clj b/src/metabase/query_processor/middleware/constraints.clj index 253fce9d5c96..51cf10969983 100644 --- a/src/metabase/query_processor/middleware/constraints.clj +++ b/src/metabase/query_processor/middleware/constraints.clj @@ -40,3 +40,24 @@ [qp] (fn [query respond raise canceled-chan] (qp (add-default-userland-constraints* query) respond raise canceled-chan))) + +(def higher-query-constraints + "Default map of constraints that we apply on dataset queries executed by the api for pulse emails." + {:max-results 30000 + :max-results-bare-rows 20000}) + +(defn- merge-higher-constraints [constraints] + (merge higher-query-constraints constraints)) + +(defn- add-higher-userland-constraints* + "Add default values of `:max-results` and `:max-results-bare-rows` to `:constraints` map `m`." + [{{:keys [add-higher-userland-constraints?]} :middleware, :as query}] + (cond-> query + add-higher-userland-constraints? (update :constraints (comp ensure-valid-constraints merge-higher-constraints)))) + +(defn add-higher-userland-constraints + "Middleware that optionally adds expanded `max-results` and `max-results-bare-rows` constraints to queries, meant for + use with `process-query-and-save-with-higher-max-results-constraints!`, which ultimately powers the pulse attachments" + [qp] + (fn [query respond raise canceled-chan] + (qp (add-higher-userland-constraints* query) respond raise canceled-chan)))