Skip to content

Connection Impersonation doesn't work with ClickHouse and roles with at least two consecutive hyphens #57016

@Gerrit-K

Description

@Gerrit-K

Describe the bug

When using connection impersonation on a ClickHouse datasource, an error is thrown if the user contains a role with a hyphen (e.g. clickhouse--test-role):

Error processing query: Code: 511. DB::Exception: There is no role `clickhouse` in user directories. (UNKNOWN_ROLE) (version 25.1.8.25 (official build))

To Reproduce

  1. Setup a ClickHouse instance with a user that has a role containing a hyphen, e.g. clickhouse--test-role
  2. Deploy metabase enterprise and set up connection impersonation for the ClickHouse datasource
  3. Attempt to run a query using connection impersonation
  4. The query will fail and the error above will be visible in the logs

Expected behavior

No error

Logs

error message
Error processing query: Code: 511. DB::Exception: There is no role `clickhouse` in user directories. (UNKNOWN_ROLE) (version 25.1.8.25 (official build)) 
{:database_id 2,
 :parameterized true,
 :started_at #t "2025-04-22T09:04:33.029147872Z[UTC]",
 :via
 [{:status :failed,
   :class java.sql.SQLException,
   :error
   "Code: 511. DB::Exception: There is no role `clickhouse` in user directories. (UNKNOWN_ROLE) (version 25.1.8.25 (official build)) ",
   :stacktrace
   ["com.clickhouse.jdbc.internal.ExceptionUtils.toSqlState(ExceptionUtils.java:64)"
    "com.clickhouse.jdbc.internal.ExceptionUtils.toSqlState(ExceptionUtils.java:39)"
    "com.clickhouse.jdbc.StatementImpl.executeQuery(StatementImpl.java:195)"
    "com.clickhouse.jdbc.StatementImpl.executeQuery(StatementImpl.java:143)"
    "com.clickhouse.jdbc.PreparedStatementImpl.executeQuery(PreparedStatementImpl.java:115)"
    "com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:743)"
    "--> driver.sql_jdbc.execute$fn__79915.invokeStatic(execute.clj:567)"
    "driver.sql_jdbc.execute$fn__79915.invoke(execute.clj:565)"
    "driver.sql_jdbc.execute$execute_statement_or_prepared_statement_BANG_.invokeStatic(execute.clj:580)"
    "driver.sql_jdbc.execute$execute_statement_or_prepared_statement_BANG_.invoke(execute.clj:576)"
    "driver.sql_jdbc.execute$execute_reducible_query$fn__80004$fn__80005.invoke(execute.clj:745)"
    "driver.sql_jdbc.execute$execute_reducible_query$fn__80004.invoke(execute.clj:744)"
    "driver.clickhouse$fn__136612$fn__136614.invoke(clickhouse.clj:114)"
    "driver.sql_jdbc.execute$do_with_resolved_connection79763__79764.invokeStatic(execute.clj:339)"
    "driver.sql_jdbc.execute$do_with_resolved_connection79763__79764.invoke(execute.clj:322)"
    "driver.clickhouse$fn__136612.invokeStatic(clickhouse.clj:91)"
    "driver.clickhouse$fn__136612.invoke(clickhouse.clj:89)"
    "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:738)"
    "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:724)"
    "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:735)"
    "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:724)"
    "driver.sql_jdbc$fn__134886.invokeStatic(sql_jdbc.clj:79)"
    "driver.sql_jdbc$fn__134886.invoke(sql_jdbc.clj:77)"
    "query_processor.pipeline$_STAR_execute_STAR_.invokeStatic(pipeline.clj:52)"
    "query_processor.pipeline$_STAR_execute_STAR_.invoke(pipeline.clj:39)"
    "query_processor.pipeline$_STAR_run_STAR_.invokeStatic(pipeline.clj:102)"
    "query_processor.pipeline$_STAR_run_STAR_.invoke(pipeline.clj:95)"
    "query_processor.execute$run.invokeStatic(execute.clj:62)"
    "query_processor.execute$run.invoke(execute.clj:56)"
    "query_processor.middleware.update_used_cards$update_used_cards_BANG_76350__76351$fn__76352.invoke(update_used_cards.clj:62)"
    "query_processor.execute$add_native_form_to_result_metadata$fn__76455.invoke(execute.clj:25)"
    "query_processor.execute$add_preprocessed_query_to_result_metadata_for_userland_query$fn__76461.invoke(execute.clj:36)"
    "query_processor.middleware.cache$maybe_return_cached_results$maybe_return_cached_results_STAR___76298.invoke(cache.clj:241)"
    "query_processor.middleware.permissions$check_query_permissions$fn__76064.invoke(permissions.clj:148)"
    "metabase_enterprise.advanced_permissions.query_processor.middleware.permissions$fn__128284$check_download_permissions__128285$fn__128286.invoke(permissions.clj:99)"
    "query_processor.middleware.enterprise$check_download_permissions_middleware$fn__76165.invoke(enterprise.clj:57)"
    "metabase_enterprise.sandbox.query_processor.middleware.column_level_perms_check$fn__130458$maybe_apply_column_level_perms_check__130459$fn__130460.invoke(column_level_perms_check.clj:38)"
    "query_processor.middleware.enterprise$maybe_apply_column_level_perms_check_middleware$fn__76175.invoke(enterprise.clj:70)"
    "query_processor.execute$execute76488__76489$fn__76490.invoke(execute.clj:94)"
    "query_processor.setup$do_with_qp_setup76441__76442.invokeStatic(setup.clj:225)"
    "query_processor.setup$do_with_qp_setup76441__76442.invoke(setup.clj:216)"
    "query_processor.execute$execute76488__76489.invokeStatic(execute.clj:93)"
    "query_processor.execute$execute76488__76489.invoke(execute.clj:89)"
    "query_processor$process_query_STAR__STAR_.invokeStatic(query_processor.clj:49)"
    "query_processor$process_query_STAR__STAR_.invoke(query_processor.clj:44)"
    "metabase_enterprise.audit_app.query_processor.middleware.handle_audit_queries$fn__82748$handle_audit_app_internal_queries__82749$fn__82750.invoke(handle_audit_queries.clj:143)"
    "query_processor.middleware.enterprise$handle_audit_app_internal_queries_middleware$fn__76203.invoke(enterprise.clj:109)"
    "query_processor.middleware.process_userland_query$process_userland_query_middleware82956__82957$fn__82958.invoke(process_userland_query.clj:221)"
    "query_processor.middleware.catch_exceptions$catch_exceptions83021__83022$fn__83023.invoke(catch_exceptions.clj:135)"
    "query_processor$process_query83184__83185$fn__83186.invoke(query_processor.clj:80)"
    "query_processor.setup$do_with_canceled_chan76436__76437$fn__76438.invoke(setup.clj:187)"
    "query_processor.setup$do_with_database_local_settings76429__76430$fn__76431.invoke(setup.clj:181)"
    "query_processor.setup$do_with_driver76422__76423$fn__76424$fn__76425.invoke(setup.clj:166)"
    "driver$do_with_driver.invokeStatic(driver.clj:112)"
    "driver$do_with_driver.invoke(driver.clj:107)"
    "query_processor.setup$do_with_driver76422__76423$fn__76424.invoke(setup.clj:165)"
    "query_processor.setup$do_with_metadata_provider76413__76414$fn__76415.invoke(setup.clj:140)"
    "query_processor.setup$do_with_resolved_database76403__76404$fn__76405.invoke(setup.clj:128)"
    "query_processor.setup$do_with_qp_setup76441__76442.invokeStatic(setup.clj:232)"
    "query_processor.setup$do_with_qp_setup76441__76442.invoke(setup.clj:216)"
    "query_processor$process_query83184__83185.invokeStatic(query_processor.clj:78)"
    "query_processor$process_query83184__83185.invoke(query_processor.clj:71)"
    "query_processor.card$process_query_for_card_default_qp91004__91005.invokeStatic(card.clj:235)"
    "query_processor.card$process_query_for_card_default_qp91004__91005.invoke(card.clj:231)"
    "query_processor.card$process_query_for_card_default_run_fn$fn__91007$fn__91008.invoke(card.clj:242)"
    "query_processor.streaming$_streaming_response$fn__90382$fn__90383$fn__90384.invoke(streaming.clj:185)"
    "query_processor.streaming$_streaming_response$fn__90382$fn__90383.invoke(streaming.clj:183)"
    "query_processor.streaming$do_with_streaming_rff.invokeStatic(streaming.clj:174)"
    "query_processor.streaming$do_with_streaming_rff.invoke(streaming.clj:161)"
    "query_processor.streaming$_streaming_response$fn__90382.invoke(streaming.clj:180)"
    "server.streaming_response$do_f_STAR_.invokeStatic(streaming_response.clj:78)"
    "server.streaming_response$do_f_STAR_.invoke(streaming_response.clj:76)"
    "server.streaming_response$do_f_async$task__88321.invoke(streaming_response.clj:93)"],
   :state "22000"}
  {:status :failed,
   :class clojure.lang.ExceptionInfo,
   :error
   "Error executing query: Code: 511. DB::Exception: There is no role `clickhouse` in user directories. (UNKNOWN_ROLE) (version 25.1.8.25 (official build)) ",
   :stacktrace
   ["--> driver.sql_jdbc.execute$execute_reducible_query$fn__80004$fn__80005.invoke(execute.clj:747)"
    "driver.sql_jdbc.execute$execute_reducible_query$fn__80004.invoke(execute.clj:744)"
    "driver.clickhouse$fn__136612$fn__136614.invoke(clickhouse.clj:114)"
    "driver.sql_jdbc.execute$do_with_resolved_connection79763__79764.invokeStatic(execute.clj:339)"
    "driver.sql_jdbc.execute$do_with_resolved_connection79763__79764.invoke(execute.clj:322)"
    "driver.clickhouse$fn__136612.invokeStatic(clickhouse.clj:91)"
    "driver.clickhouse$fn__136612.invoke(clickhouse.clj:89)"
    "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:738)"
    "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:724)"
    "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:735)"
    "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:724)"
    "driver.sql_jdbc$fn__134886.invokeStatic(sql_jdbc.clj:79)"
    "driver.sql_jdbc$fn__134886.invoke(sql_jdbc.clj:77)"
    "query_processor.pipeline$_STAR_execute_STAR_.invokeStatic(pipeline.clj:52)"
    "query_processor.pipeline$_STAR_execute_STAR_.invoke(pipeline.clj:39)"
    "query_processor.pipeline$_STAR_run_STAR_.invokeStatic(pipeline.clj:102)"
    "query_processor.pipeline$_STAR_run_STAR_.invoke(pipeline.clj:95)"
    "query_processor.execute$run.invokeStatic(execute.clj:62)"
    "query_processor.execute$run.invoke(execute.clj:56)"
    "query_processor.middleware.update_used_cards$update_used_cards_BANG_76350__76351$fn__76352.invoke(update_used_cards.clj:62)"
    "query_processor.execute$add_native_form_to_result_metadata$fn__76455.invoke(execute.clj:25)"
    "query_processor.execute$add_preprocessed_query_to_result_metadata_for_userland_query$fn__76461.invoke(execute.clj:36)"
    "query_processor.middleware.cache$maybe_return_cached_results$maybe_return_cached_results_STAR___76298.invoke(cache.clj:241)"
    "query_processor.middleware.permissions$check_query_permissions$fn__76064.invoke(permissions.clj:148)"
    "metabase_enterprise.advanced_permissions.query_processor.middleware.permissions$fn__128284$check_download_permissions__128285$fn__128286.invoke(permissions.clj:99)"
    "query_processor.middleware.enterprise$check_download_permissions_middleware$fn__76165.invoke(enterprise.clj:57)"
    "metabase_enterprise.sandbox.query_processor.middleware.column_level_perms_check$fn__130458$maybe_apply_column_level_perms_check__130459$fn__130460.invoke(column_level_perms_check.clj:38)"
    "query_processor.middleware.enterprise$maybe_apply_column_level_perms_check_middleware$fn__76175.invoke(enterprise.clj:70)"
    "query_processor.execute$execute76488__76489$fn__76490.invoke(execute.clj:94)"
    "query_processor.setup$do_with_qp_setup76441__76442.invokeStatic(setup.clj:225)"
    "query_processor.setup$do_with_qp_setup76441__76442.invoke(setup.clj:216)"
    "query_processor.execute$execute76488__76489.invokeStatic(execute.clj:93)"
    "query_processor.execute$execute76488__76489.invoke(execute.clj:89)"
    "query_processor$process_query_STAR__STAR_.invokeStatic(query_processor.clj:49)"
    "query_processor$process_query_STAR__STAR_.invoke(query_processor.clj:44)"
    "metabase_enterprise.audit_app.query_processor.middleware.handle_audit_queries$fn__82748$handle_audit_app_internal_queries__82749$fn__82750.invoke(handle_audit_queries.clj:143)"
    "query_processor.middleware.enterprise$handle_audit_app_internal_queries_middleware$fn__76203.invoke(enterprise.clj:109)"
    "query_processor.middleware.process_userland_query$process_userland_query_middleware82956__82957$fn__82958.invoke(process_userland_query.clj:221)"
    "query_processor.middleware.catch_exceptions$catch_exceptions83021__83022$fn__83023.invoke(catch_exceptions.clj:135)"
    "query_processor$process_query83184__83185$fn__83186.invoke(query_processor.clj:80)"
    "query_processor.setup$do_with_canceled_chan76436__76437$fn__76438.invoke(setup.clj:187)"
    "query_processor.setup$do_with_database_local_settings76429__76430$fn__76431.invoke(setup.clj:181)"
    "query_processor.setup$do_with_driver76422__76423$fn__76424$fn__76425.invoke(setup.clj:166)"
    "driver$do_with_driver.invokeStatic(driver.clj:112)"
    "driver$do_with_driver.invoke(driver.clj:107)"
    "query_processor.setup$do_with_driver76422__76423$fn__76424.invoke(setup.clj:165)"
    "query_processor.setup$do_with_metadata_provider76413__76414$fn__76415.invoke(setup.clj:140)"
    "query_processor.setup$do_with_resolved_database76403__76404$fn__76405.invoke(setup.clj:128)"
    "query_processor.setup$do_with_qp_setup76441__76442.invokeStatic(setup.clj:232)"
    "query_processor.setup$do_with_qp_setup76441__76442.invoke(setup.clj:216)"
    "query_processor$process_query83184__83185.invokeStatic(query_processor.clj:78)"
    "query_processor$process_query83184__83185.invoke(query_processor.clj:71)"
    "query_processor.card$process_query_for_card_default_qp91004__91005.invokeStatic(card.clj:235)"
    "query_processor.card$process_query_for_card_default_qp91004__91005.invoke(card.clj:231)"
    "query_processor.card$process_query_for_card_default_run_fn$fn__91007$fn__91008.invoke(card.clj:242)"
    "query_processor.streaming$_streaming_response$fn__90382$fn__90383$fn__90384.invoke(streaming.clj:185)"
    "query_processor.streaming$_streaming_response$fn__90382$fn__90383.invoke(streaming.clj:183)"
    "query_processor.streaming$do_with_streaming_rff.invokeStatic(streaming.clj:174)"
    "query_processor.streaming$do_with_streaming_rff.invoke(streaming.clj:161)"
    "query_processor.streaming$_streaming_response$fn__90382.invoke(streaming.clj:180)"
    "server.streaming_response$do_f_STAR_.invokeStatic(streaming_response.clj:78)"
    "server.streaming_response$do_f_STAR_.invoke(streaming_response.clj:76)"
    "server.streaming_response$do_f_async$task__88321.invoke(streaming_response.clj:93)"],
   :error_type :invalid-query,
   :ex-data
   {:driver :clickhouse,
    :sql
    ["REDACTED"],
    :params [""],
    :type :invalid-query}}],
 :action_id nil,
 :error_type :invalid-query,
 :json_query
 {:constraints {:max-results 10000, :max-results-bare-rows 2000},
  :type :native,
  :middleware {:js-int-to-string? true, :ignore-cached-results? false, :userland-query? true},
  :cache-strategy nil,
  :native
  {:template-tags
   {"tenant"
    {:type :text, :name "tenant", :id "a6990fd0-1e13-4b71-8ba9-8030cc828990", :display-name "Tenant", :required false},
    "last_n_days"
    {:type :number,
     :name "last_n_days",
     :id "49b56dd3-f75b-4d14-a435-0e4d8aeb3910",
     :display-name "Last N Days",
     :default "14",
     :required true}},
   :query
   "REDACTED"},
  :viz-settings
  {:graph.dimensions ["date" "page_id"],
   :graph.series_order_dimension nil,
   :graph.series_order nil,
   :graph.show_values false,
   :graph.metrics ["error_count"]},
  :database 2,
  :parameters
  [{:type :string/=, :value ["mac"], :id "6679903b", :target [:variable [:template-tag "tenant"]]}
   {:type :number/=, :value [14], :id "dbe9009b", :target [:variable [:template-tag "last_n_days"]]}]},
 :status :failed,
 :class com.clickhouse.client.api.ServerException,
 :stacktrace
 ["com.clickhouse.client.api.internal.HttpAPIClientHelper.readError(HttpAPIClientHelper.java:384)"
  "com.clickhouse.client.api.internal.HttpAPIClientHelper.executeRequest(HttpAPIClientHelper.java:434)"
  "com.clickhouse.client.api.Client.lambda$query$10(Client.java:1623)"
  "com.clickhouse.client.api.Client.runAsyncOperation(Client.java:2007)"
  "com.clickhouse.client.api.Client.query(Client.java:1666)"
  "com.clickhouse.client.api.Client.query(Client.java:1564)"
  "com.clickhouse.jdbc.StatementImpl.executeQuery(StatementImpl.java:181)"
  "com.clickhouse.jdbc.StatementImpl.executeQuery(StatementImpl.java:143)"
  "com.clickhouse.jdbc.PreparedStatementImpl.executeQuery(PreparedStatementImpl.java:115)"
  "com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:743)"
  "--> driver.sql_jdbc.execute$fn__79915.invokeStatic(execute.clj:567)"
  "driver.sql_jdbc.execute$fn__79915.invoke(execute.clj:565)"
  "driver.sql_jdbc.execute$execute_statement_or_prepared_statement_BANG_.invokeStatic(execute.clj:580)"
  "driver.sql_jdbc.execute$execute_statement_or_prepared_statement_BANG_.invoke(execute.clj:576)"
  "driver.sql_jdbc.execute$execute_reducible_query$fn__80004$fn__80005.invoke(execute.clj:745)"
  "driver.sql_jdbc.execute$execute_reducible_query$fn__80004.invoke(execute.clj:744)"
  "driver.clickhouse$fn__136612$fn__136614.invoke(clickhouse.clj:114)"
  "driver.sql_jdbc.execute$do_with_resolved_connection79763__79764.invokeStatic(execute.clj:339)"
  "driver.sql_jdbc.execute$do_with_resolved_connection79763__79764.invoke(execute.clj:322)"
  "driver.clickhouse$fn__136612.invokeStatic(clickhouse.clj:91)"
  "driver.clickhouse$fn__136612.invoke(clickhouse.clj:89)"
  "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:738)"
  "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:724)"
  "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:735)"
  "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:724)"
  "driver.sql_jdbc$fn__134886.invokeStatic(sql_jdbc.clj:79)"
  "driver.sql_jdbc$fn__134886.invoke(sql_jdbc.clj:77)"
  "query_processor.pipeline$_STAR_execute_STAR_.invokeStatic(pipeline.clj:52)"
  "query_processor.pipeline$_STAR_execute_STAR_.invoke(pipeline.clj:39)"
  "query_processor.pipeline$_STAR_run_STAR_.invokeStatic(pipeline.clj:102)"
  "query_processor.pipeline$_STAR_run_STAR_.invoke(pipeline.clj:95)"
  "query_processor.execute$run.invokeStatic(execute.clj:62)"
  "query_processor.execute$run.invoke(execute.clj:56)"
  "query_processor.middleware.update_used_cards$update_used_cards_BANG_76350__76351$fn__76352.invoke(update_used_cards.clj:62)"
  "query_processor.execute$add_native_form_to_result_metadata$fn__76455.invoke(execute.clj:25)"
  "query_processor.execute$add_preprocessed_query_to_result_metadata_for_userland_query$fn__76461.invoke(execute.clj:36)"
  "query_processor.middleware.cache$maybe_return_cached_results$maybe_return_cached_results_STAR___76298.invoke(cache.clj:241)"
  "query_processor.middleware.permissions$check_query_permissions$fn__76064.invoke(permissions.clj:148)"
  "metabase_enterprise.advanced_permissions.query_processor.middleware.permissions$fn__128284$check_download_permissions__128285$fn__128286.invoke(permissions.clj:99)"
  "query_processor.middleware.enterprise$check_download_permissions_middleware$fn__76165.invoke(enterprise.clj:57)"
  "metabase_enterprise.sandbox.query_processor.middleware.column_level_perms_check$fn__130458$maybe_apply_column_level_perms_check__130459$fn__130460.invoke(column_level_perms_check.clj:38)"
  "query_processor.middleware.enterprise$maybe_apply_column_level_perms_check_middleware$fn__76175.invoke(enterprise.clj:70)"
  "query_processor.execute$execute76488__76489$fn__76490.invoke(execute.clj:94)"
  "query_processor.setup$do_with_qp_setup76441__76442.invokeStatic(setup.clj:225)"
  "query_processor.setup$do_with_qp_setup76441__76442.invoke(setup.clj:216)"
  "query_processor.execute$execute76488__76489.invokeStatic(execute.clj:93)"
  "query_processor.execute$execute76488__76489.invoke(execute.clj:89)"
  "query_processor$process_query_STAR__STAR_.invokeStatic(query_processor.clj:49)"
  "query_processor$process_query_STAR__STAR_.invoke(query_processor.clj:44)"
  "metabase_enterprise.audit_app.query_processor.middleware.handle_audit_queries$fn__82748$handle_audit_app_internal_queries__82749$fn__82750.invoke(handle_audit_queries.clj:143)"
  "query_processor.middleware.enterprise$handle_audit_app_internal_queries_middleware$fn__76203.invoke(enterprise.clj:109)"
  "query_processor.middleware.process_userland_query$process_userland_query_middleware82956__82957$fn__82958.invoke(process_userland_query.clj:221)"
  "query_processor.middleware.catch_exceptions$catch_exceptions83021__83022$fn__83023.invoke(catch_exceptions.clj:135)"
  "query_processor$process_query83184__83185$fn__83186.invoke(query_processor.clj:80)"
  "query_processor.setup$do_with_canceled_chan76436__76437$fn__76438.invoke(setup.clj:187)"
  "query_processor.setup$do_with_database_local_settings76429__76430$fn__76431.invoke(setup.clj:181)"
  "query_processor.setup$do_with_driver76422__76423$fn__76424$fn__76425.invoke(setup.clj:166)"
  "driver$do_with_driver.invokeStatic(driver.clj:112)"
  "driver$do_with_driver.invoke(driver.clj:107)"
  "query_processor.setup$do_with_driver76422__76423$fn__76424.invoke(setup.clj:165)"
  "query_processor.setup$do_with_metadata_provider76413__76414$fn__76415.invoke(setup.clj:140)"
  "query_processor.setup$do_with_resolved_database76403__76404$fn__76405.invoke(setup.clj:128)"
  "query_processor.setup$do_with_qp_setup76441__76442.invokeStatic(setup.clj:232)"
  "query_processor.setup$do_with_qp_setup76441__76442.invoke(setup.clj:216)"
  "query_processor$process_query83184__83185.invokeStatic(query_processor.clj:78)"
  "query_processor$process_query83184__83185.invoke(query_processor.clj:71)"
  "query_processor.card$process_query_for_card_default_qp91004__91005.invokeStatic(card.clj:235)"
  "query_processor.card$process_query_for_card_default_qp91004__91005.invoke(card.clj:231)"
  "query_processor.card$process_query_for_card_default_run_fn$fn__91007$fn__91008.invoke(card.clj:242)"
  "query_processor.streaming$_streaming_response$fn__90382$fn__90383$fn__90384.invoke(streaming.clj:185)"
  "query_processor.streaming$_streaming_response$fn__90382$fn__90383.invoke(streaming.clj:183)"
  "query_processor.streaming$do_with_streaming_rff.invokeStatic(streaming.clj:174)"
  "query_processor.streaming$do_with_streaming_rff.invoke(streaming.clj:161)"
  "query_processor.streaming$_streaming_response$fn__90382.invoke(streaming.clj:180)"
  "server.streaming_response$do_f_STAR_.invokeStatic(streaming_response.clj:78)"
  "server.streaming_response$do_f_STAR_.invoke(streaming_response.clj:76)"
  "server.streaming_response$do_f_async$task__88321.invoke(streaming_response.clj:93)"],
 :card_id 14258,
 :context :dashboard,
 :error
 "Code: 511. DB::Exception: There is no role `clickhouse` in user directories. (UNKNOWN_ROLE) (version 25.1.8.25 (official build)) ",
 :row_count 0,
 :running_time 0,
 :data {:rows [], :cols []}}

Information about your Metabase installation

Freshly deployed `metabase/metabase-enterprise:v1.54.3.5`

Severity

Blocking our upgrade from v52 to v53/54

Additional context

Previously, the Metabase ClickHouse driver was a third-party contribution. We already noticed this issue when attempting to upgrade the driver to v53. Now that the driver is officially part of Metabase, it is blocking the upgrade to v54 for us.

We don't exactly know if it's Metabase itself, the driver or the underlying JDBC implementation from https://github.com/ClickHouse/clickhouse-java that causes this behaviour.

We're also not entirely certain that it's related to roles with hyphens, but we think it's very likely. We've had a similar issue in an older version of the driver and implemented support for such roles, after which it was working for us. The recent JDBC v2 upgrade from driver version 53+ seemed to have broken this again.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions