From 801445b1e1c710ed3862b89c544db40d0d0d9625 Mon Sep 17 00:00:00 2001 From: Alexander Solovyov <alexander@solovyov.net> Date: Tue, 16 Apr 2024 13:21:49 +0300 Subject: [PATCH] global setting to enable/disable native sql parsing (#41315) --- src/metabase/native_query_analyzer.clj | 8 +++++--- src/metabase/public_settings.clj | 7 +++++++ test/metabase/native_query_analyzer_test.clj | 17 +++++++++++++++++ 3 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 test/metabase/native_query_analyzer_test.clj diff --git a/src/metabase/native_query_analyzer.clj b/src/metabase/native_query_analyzer.clj index 94bd457965a..be0bd201ded 100644 --- a/src/metabase/native_query_analyzer.clj +++ b/src/metabase/native_query_analyzer.clj @@ -10,6 +10,7 @@ [macaw.core :as mac] [metabase.config :as config] [metabase.native-query-analyzer.parameter-substitution :as nqa.sub] + [metabase.public-settings :as public-settings] [metabase.util :as u] [metabase.util.log :as log] [toucan2.core :as t2])) @@ -24,10 +25,11 @@ (defn- active? "Should the query run? Either we're not testing or it's been explicitly turned on. - c.f. [[*parse-queries-in-test?*]]" + c.f. [[*parse-queries-in-test?*]], [[public-settings/sql-parsing-enabled]]" [] - (or (not config/is-test?) - *parse-queries-in-test?*)) + (and (public-settings/sql-parsing-enabled) + (or (not config/is-test?) + *parse-queries-in-test?*))) (defn- normalize-name ;; TODO: This is wildly naive and will be revisited once the rest of the plumbing is sorted out diff --git a/src/metabase/public_settings.clj b/src/metabase/public_settings.clj index b9643120ef0..15731f1b9bd 100644 --- a/src/metabase/public_settings.clj +++ b/src/metabase/public_settings.clj @@ -859,3 +859,10 @@ (when (and id (t2/exists? :model/Dashboard :id id :archived false)) id))) :doc false) + +(defsetting sql-parsing-enabled + (deferred-tru "SQL Parsing is disabled") + :visibility :internal + :export? false + :default true + :type :boolean) diff --git a/test/metabase/native_query_analyzer_test.clj b/test/metabase/native_query_analyzer_test.clj new file mode 100644 index 00000000000..be19fda8df1 --- /dev/null +++ b/test/metabase/native_query_analyzer_test.clj @@ -0,0 +1,17 @@ +(ns metabase.native-query-analyzer-test + (:require + [clojure.test :refer :all] + [metabase.native-query-analyzer :as query-analyzer] + [metabase.public-settings :as public-settings] + [metabase.test :as mt])) + +(deftest active-test + (mt/discard-setting-changes [sql-parsing-enabled] + (testing "sql parsing enabled" + (public-settings/sql-parsing-enabled! true) + (binding [query-analyzer/*parse-queries-in-test?* true] + (is (true? (#'query-analyzer/active?))))) + (testing "sql parsing disabled" + (public-settings/sql-parsing-enabled! false) + (binding [query-analyzer/*parse-queries-in-test?* true] + (is (false? (#'query-analyzer/active?))))))) -- GitLab