ClickHouse/metabase-clickhouse-driver

problem with field classification in metabase when field are defined as nullable in clickhouse

alongls opened this issue · 3 comments

in the clickhouse DB the column is defined as - LowCardinality(Nullable(String))
in this case when the metabase syncs with the database the field is define as type/* and not as type/Text

when the column in the clickhouse is defined as LowCardinality(String) the field in metabase is described as type/Text

the problem - in a dashboards when trying to define a search again a filed that metabase classified as type/* we get an error (Cannot search against non-Text Field) and the search fails:

error is:
2023-11-05 15:13:09,094 DEBUG middleware.log :: GET /api/dashboard/115/params/7e7fa74e/search/visa 400 64.0 ms (10 DB calls)
{:via
[{:type clojure.lang.ExceptionInfo,
:message "Cannot search against non-Text Field 144 "OG_CustomerName"",
:data {:status-code 400, :field-id 144, :field "OG_CustomerName", :base-type :type/*},
:at [metabase.models.params.chain_filter$check_valid_search_field invokeStatic "chain_filter.clj" 601]}],
:trace
[[metabase.models.params.chain_filter$check_valid_search_field invokeStatic "chain_filter.clj" 601]
[metabase.models.params.chain_filter$check_valid_search_field invoke "chain_filter.clj" 592]
[metabase.models.params.chain_filter$fn__104174$unremapped_chain_filter_search__104179$fn__104180
invoke
"chain_filter.clj"
612]

To Reproduce
in clickhouse define a column as LowCardinality(Nullable(String)) - try to run a search against it
in a dashboard define a search filter against this field . no value will be retrieved (in a question it will retrieve the data)
change the filed to LowCardinality(String) try to run the search against it and it will sucseed
Expected behavior
the metabase should read "LowCardinality(String)" as test fields

@alongls, it should be fixed by 1.2.3