Compare commits

...

7 Commits

Author SHA1 Message Date
Chris Truter
e550ccb2b6 Update deprecation version 2024-07-24 10:57:33 +00:00
Chris Truter
cf7d541ba9 Fixup rebase mess ups 2024-07-24 10:57:33 +00:00
Chris Truter
df5f81fffa Can't stop tweaking (out) 2024-07-24 10:57:33 +00:00
Chris Truter
2f204af266 test more 2024-07-24 10:57:33 +00:00
Chris Truter
f6fcb1e3c5 Refactor tests 2024-07-24 10:57:33 +00:00
Chris Truter
9dc430e24d Fixup 2024-07-24 10:57:33 +00:00
Chris Truter
8ad7069da0 Add more query analysis feature flags 2024-07-24 10:57:33 +00:00
3 changed files with 75 additions and 18 deletions

View File

@@ -926,7 +926,8 @@ See [fonts](../configuring-metabase/fonts.md).")
:doc false)
(defsetting sql-parsing-enabled
(deferred-tru "SQL Parsing is disabled")
(deferred-tru "SQL Parsing is enabled. Please use [[query-analysis-native-disabled]] instead.")
:deprecated "0.51.0"
:visibility :internal
:export? false
:default true
@@ -938,3 +939,17 @@ See [fonts](../configuring-metabase/fonts.md).")
:export? false
:default true
:type :boolean)
(defsetting query-analysis-mbql-disabled
(deferred-tru "Whether we should disable analysis of all ML-based queries")
:visibility :internal
:export? false
:default false
:type :boolean)
(defsetting query-analysis-native-disabled
(deferred-tru "Whether we should disable analysis of all native queries")
:visibility :internal
:export? false
:init (comp not sql-parsing-enabled)
:type :boolean)

View File

@@ -75,9 +75,9 @@
[query-type]
(and (public-settings/query-analysis-enabled)
(case query-type
:native (public-settings/sql-parsing-enabled)
:query true
:mbql/query true
:native (not (public-settings/query-analysis-native-disabled))
:query (not (public-settings/query-analysis-mbql-disabled))
:mbql/query (not (public-settings/query-analysis-mbql-disabled))
false)))
(defn- query-field-ids
@@ -89,11 +89,11 @@
(query-field-ids query (lib/normalized-query-type query)))
([query query-type]
(case query-type
:native (try
(nqa/field-ids-for-native query)
(catch Exception e
(log/error e "Error parsing SQL" query)))
:query {:explicit (mbql.u/referenced-field-ids query)}
:native (try
(nqa/field-ids-for-native query)
(catch Exception e
(log/error e "Error parsing SQL" query)))
:query {:explicit (mbql.u/referenced-field-ids query)}
:mbql/query {:explicit (lib.util/referenced-field-ids query)})))
(defn update-query-analysis-for-card!

View File

@@ -10,21 +10,63 @@
[metabase.test :as mt]
[toucan2.tools.with-temp :as t2.with-temp]))
(deftest native-query-enabled-test
(mt/discard-setting-changes [sql-parsing-enabled]
(testing "sql parsing enabled"
(deftest legacy-sql-parsing-enabled-test
(mt/discard-setting-changes [query-analysis-native-disabled sql-parsing-enabled]
(testing "legacy setting enabled"
(public-settings/sql-parsing-enabled! true)
;; I'm not sure why this is `nil`, but it is fine for our purposes.
(is (nil? (public-settings/query-analysis-native-disabled)))
(testing "we can override the legacy setting"
(public-settings/query-analysis-native-disabled! true)
(is (true? (public-settings/query-analysis-native-disabled))))))
(mt/discard-setting-changes [query-analysis-native-disabled sql-parsing-enabled]
(testing "legacy setting disabled"
(public-settings/sql-parsing-enabled! false)
(is (true? (public-settings/query-analysis-native-disabled)))
(public-settings/query-analysis-native-disabled! false)
(is (false? (public-settings/query-analysis-native-disabled))))))
(deftest native-query-enabled-test
(mt/discard-setting-changes [query-analysis-enabled
query-analysis-native-disabled]
(public-settings/query-analysis-enabled! true)
(testing "sql parsing enabled"
(public-settings/query-analysis-native-disabled! false)
(is (true? (query-analysis/enabled-type? :native))))
(testing "sql parsing disabled"
(public-settings/sql-parsing-enabled! false)
(public-settings/query-analysis-native-disabled! true)
(is (false? (query-analysis/enabled-type? :native))))))
(deftest non-native-query-enabled-test
(testing "mbql parsing is always enabled"
(is (query-analysis/enabled-type? :query))
(is (query-analysis/enabled-type? :mbql/query)))
(testing "other types are disabled"
(is (false? (query-analysis/enabled-type? :unexpected)))))
(mt/discard-setting-changes [query-analysis-enabled
query-analysis-mbql-disabled]
(public-settings/query-analysis-enabled! true)
(testing "mbql parsing enabled"
(public-settings/query-analysis-mbql-disabled! false)
(is (true? (query-analysis/enabled-type? :query)))
(is (true? (query-analysis/enabled-type? :mbql/query))))
(testing "mbql parsing disabled"
(public-settings/query-analysis-mbql-disabled! true)
(is (false? (query-analysis/enabled-type? :query)))
(is (false? (query-analysis/enabled-type? :mbql/query))))))
(deftest other-query-type-enabled-test
(mt/discard-setting-changes [query-analysis-enabled]
(public-settings/query-analysis-enabled! true)
(testing "all other query types are disabled"
(is (false? (query-analysis/enabled-type? :unexpected))))))
(deftest no-query-analysis-enabled-test
(mt/discard-setting-changes [query-analysis-enabled
query-analysis-mbql-disabled
query-analysis-native-disabled]
(public-settings/query-analysis-enabled! false)
(testing "All query analysis is disabled"
(public-settings/query-analysis-native-disabled! false)
(public-settings/query-analysis-mbql-disabled! false)
(is (false? (query-analysis/enabled-type? :native)))
(is (false? (query-analysis/enabled-type? :query)))
(is (false? (query-analysis/enabled-type? :mbql/query))))))
(deftest parse-mbql-test
(testing "Parsing MBQL query returns correct used fields"