ClickHouse/metabase-clickhouse-driver

No method in multimethod 'connection-details->spec' for dispatch value: :clickhouse

kenchangh opened this issue · 1 comments

Describe the bug

I am seeing this error upon creating the connection:

No method in multimethod 'connection-details->spec' for dispatch value: :clickhouse

Steps to reproduce

  1. I am unable to connect to Clickhouse with our Metabase cloud instance. However, a direct connection with clickhouse client works. clickhouse client -h <HOST> --port <PORT> -s --user= --password

Expected behaviour

Error log

 {:query
  "REDACTED",
  :params nil},
 :status :failed,
 :class java.lang.IllegalArgumentException,
 :stacktrace
 ["clojure.lang.MultiFn.getFn(MultiFn.java:156)"
  "clojure.lang.MultiFn.invoke(MultiFn.java:233)"
  "--> driver.sql_jdbc.connection$create_pool_BANG_.invokeStatic(connection.clj:173)"
  "driver.sql_jdbc.connection$create_pool_BANG_.invoke(connection.clj:165)"
  "driver.sql_jdbc.connection$db__GT_pooled_connection_spec.invokeStatic(connection.clj:293)"
  "driver.sql_jdbc.connection$db__GT_pooled_connection_spec.invoke(connection.clj:233)"
  "driver.sql_jdbc.execute$datasource.invokeStatic(execute.clj:198)"
  "driver.sql_jdbc.execute$datasource.invoke(execute.clj:194)"
  "driver.sql_jdbc.execute$datasource_with_diagnostic_info_BANG_.invokeStatic(execute.clj:205)"
  "driver.sql_jdbc.execute$datasource_with_diagnostic_info_BANG_.invoke(execute.clj:200)"
  "driver.sql_jdbc.execute$do_with_resolved_connection_data_source.invokeStatic(execute.clj:297)"
  "driver.sql_jdbc.execute$do_with_resolved_connection_data_source.invoke(execute.clj:256)"
  "driver.sql_jdbc.execute$do_with_resolved_connection.invokeStatic(execute.clj:334)"
  "driver.sql_jdbc.execute$do_with_resolved_connection.invoke(execute.clj:318)"
  "driver.sql_jdbc.execute$fn__79649.invokeStatic(execute.clj:383)"
  "driver.sql_jdbc.execute$fn__79649.invoke(execute.clj:381)"
  "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:693)"
  "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:679)"
  "driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:690)"
  "driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:679)"
  "driver.sql_jdbc$fn__113249.invokeStatic(sql_jdbc.clj:78)"
  "driver.sql_jdbc$fn__113249.invoke(sql_jdbc.clj:76)"
  "query_processor.context$executef.invokeStatic(context.clj:60)"
  "query_processor.context$executef.invoke(context.clj:49)"
  "query_processor.context.default$default_runf.invokeStatic(default.clj:44)"
  "query_processor.context.default$default_runf.invoke(default.clj:42)"
  "query_processor.context$runf.invokeStatic(context.clj:46)"
  "query_processor.context$runf.invoke(context.clj:40)"
  "query_processor.reducible$identity_qp.invokeStatic(reducible.clj:39)"
  "query_processor.reducible$identity_qp.invoke(reducible.clj:36)"
  "query_processor.middleware.cache$maybe_return_cached_results$maybe_return_cached_results_STAR___72665.invoke(cache.clj:229)"
  "query_processor.middleware.permissions$check_query_permissions$fn__67012.invoke(permissions.clj:140)"
  "query_processor.middleware.enterprise$check_download_permissions_middleware$fn__72486.invoke(enterprise.clj:51)"
  "query_processor.middleware.enterprise$maybe_apply_column_level_perms_check_middleware$fn__72496.invoke(enterprise.clj:64)"
  "query_processor.middleware.mbql_to_native$mbql__GT_native$fn__71928.invoke(mbql_to_native.clj:24)"
  "query_processor$fn__73833$combined_post_process__73838$combined_post_process_STAR___73839.invoke(query_processor.clj:262)"
  "query_processor$fn__73833$combined_pre_process__73834$combined_pre_process_STAR___73835.invoke(query_processor.clj:259)"
  "query_processor.middleware.fetch_source_query$resolve_card_id_source_tables$fn__67109.invoke(fetch_source_query.clj:303)"
  "query_processor.middleware.resolve_database_and_driver$resolve_driver_and_database_local_values$fn__72576$fn__72580.invoke(resolve_database_and_driver.clj:77)"
  "driver$do_with_driver.invokeStatic(driver.clj:97)"
  "driver$do_with_driver.invoke(driver.clj:92)"
  "query_processor.middleware.resolve_database_and_driver$resolve_driver_and_database_local_values$fn__72576.invoke(resolve_database_and_driver.clj:76)"
  "query_processor.middleware.store$initialize_store$fn__67736$fn__67737.invoke(store.clj:14)"
  "query_processor.store$do_with_metadata_provider.invokeStatic(store.clj:169)"
  "query_processor.store$do_with_metadata_provider.invoke(store.clj:150)"
  "query_processor.store$do_with_metadata_provider.invokeStatic(store.clj:158)"
  "query_processor.store$do_with_metadata_provider.invoke(store.clj:150)"
  "query_processor.middleware.store$initialize_store$fn__67736.invoke(store.clj:13)"
  "query_processor.middleware.resolve_database_and_driver$resolve_database$fn__72573.invoke(resolve_database_and_driver.clj:60)"
  "query_processor.middleware.normalize_query$normalize$fn__72878.invoke(normalize_query.clj:38)"
  "query_processor.middleware.enterprise$fn__72513$handle_audit_app_internal_queries__72514$fn__72516.invoke(enterprise.clj:96)"
  "query_processor.middleware.enterprise$handle_audit_app_internal_queries_middleware$fn__72524.invoke(enterprise.clj:103)"
  "query_processor.middleware.constraints$mark_needs_default_userland_constraints$fn__71639.invoke(constraints.clj:104)"
  "query_processor.middleware.process_userland_query$process_userland_query$fn__72809.invoke(process_userland_query.clj:156)"
  "query_processor.middleware.catch_exceptions$catch_exceptions$fn__73410.invoke(catch_exceptions.clj:171)"
  "query_processor.reducible$async_qp$qp_STAR___63228$thunk__63230.invoke(reducible.clj:126)"
  "query_processor.reducible$async_qp$qp_STAR___63228.invoke(reducible.clj:132)"
  "query_processor.reducible$sync_qp$qp_STAR___63240.doInvoke(reducible.clj:153)"
  "query_processor$process_userland_query.invokeStatic(query_processor.clj:402)"
  "query_processor$process_userland_query.doInvoke(query_processor.clj:398)"
  "query_processor$process_query_and_save_execution_BANG_.invokeStatic(query_processor.clj:416)"
  "query_processor$process_query_and_save_execution_BANG_.invoke(query_processor.clj:406)"
  "query_processor$process_query_and_save_with_max_results_constraints_BANG_.invokeStatic(query_processor.clj:431)"
  "query_processor$process_query_and_save_with_max_results_constraints_BANG_.invoke(query_processor.clj:421)"
  "api.dataset$run_query_async$fn__95067.invoke(dataset.clj:79)"
  "query_processor.streaming$streaming_response_STAR_$fn__53640$fn__53642.invoke(streaming.clj:168)"
  "query_processor.streaming$streaming_response_STAR_$fn__53640.invoke(streaming.clj:167)"
  "async.streaming_response$do_f_STAR_.invokeStatic(streaming_response.clj:69)"
  "async.streaming_response$do_f_STAR_.invoke(streaming_response.clj:67)"
  "async.streaming_response$do_f_async$task__44095.invoke(streaming_response.clj:88)"],
 :card_id nil,
 :context :ad-hoc,
 :error "No method in multimethod 'connection-details->spec' for dispatch value: :clickhouse",
 :row_count 0,
 :running_time 0,
 :preprocessed
 {:database 2,
  :query
  {:source-table 20,
   :fields
   [[:field 239 nil]
    [:field 242 nil]
    [:field 240 nil]
    [:field 246 nil]
    [:field 241 nil]
    [:field 237 nil]
    [:field 243 nil]
    [:field 238 nil]
    [:field 278 nil]
    [:field 244 nil]
    [:field 245 nil]],
   :limit 1048575,
   :metabase.query-processor.middleware.limit/original-limit nil},
  :type :query,
  :middleware {:js-int-to-string? true, :add-default-userland-constraints? true},
  :info {:executed-by 134, :context :ad-hoc}},
 :data {:rows [], :cols []}}

Configuration

Environment

  • metabase-clickhouse-driver version: Unknown, we are using Metabase Cloud
  • metabase-clickhouse-driver configuration: Unknown, we are using Metabase Cloud
  • Metabase version: metabase-enterprise v1.49.17-X01
  • OS: Unknown, we are using Metabase Cloud

ClickHouse server

  • ClickHouse Server version: 23.8.8.21
  • ClickHouse Server non-default settings, if any: N/A

This is fixed now, Metabase bundled the wrong driver version (1.50)