From 11cbccafc54fb4420364b45fce9a0439a8c13c01 Mon Sep 17 00:00:00 2001 From: Vitor Avila Date: Fri, 30 Oct 2026 22:08:49 -0300 Subject: [PATCH 1/2] fix(databricks): restore the dynamic connection form --- superset/db_engine_specs/databricks.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/superset/db_engine_specs/databricks.py b/superset/db_engine_specs/databricks.py index d15797eac698..3534d0c7d1ba 100644 --- a/superset/db_engine_specs/databricks.py +++ b/superset/db_engine_specs/databricks.py @@ -742,8 +742,8 @@ def validate_parameters( # type: ignore class DatabricksPythonConnectorEngineSpec(DatabricksDynamicBaseEngineSpec): engine = "databricks" engine_name = "Databricks" - default_driver = "databricks-sql-python" - drivers = {"databricks-sql-python": "Databricks SQL Python"} + default_driver = "databricks" + drivers = {"databricks": "Databricks SQL Python"} parameters_schema = DatabricksPythonConnectorSchema() From 4588aa07f2f96b8298f3cfeb932c112db7464cae Mon Sep 17 00:00:00 2001 From: Vitor Avila Date: Sat, 31 Oct 2026 01:28:58 -0300 Subject: [PATCH 2/2] test(databricks): cover dynamic connection form discovery --- docs/src/data/databases.json | 2 +- tests/unit_tests/databases/api_test.py | 27 +++++++++++++++++++ .../db_engine_specs/test_databricks.py | 7 ++++- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/docs/src/data/databases.json b/docs/src/data/databases.json index b0f1a236eced..bda43e605820 100644 --- a/docs/src/data/databases.json +++ b/docs/src/data/databases.json @@ -3707,7 +3707,7 @@ "engine": "databricks", "engine_name": "Databricks", "engine_aliases": [], - "default_driver": "databricks-sql-python", + "default_driver": "databricks", "supports_file_upload": true, "supports_dynamic_schema": true, "supports_catalog": true, diff --git a/tests/unit_tests/databases/api_test.py b/tests/unit_tests/databases/api_test.py index b5e7b488cd66..d7959d74e9d6 100644 --- a/tests/unit_tests/databases/api_test.py +++ b/tests/unit_tests/databases/api_test.py @@ -3044,3 +3044,30 @@ def test_related_objects_limits_dataset_details( assert payload["count"] == MAX_RELATED_DATASETS + 2 assert len(payload["result"]) == MAX_RELATED_DATASETS assert can_access.call_count == MAX_RELATED_DATASETS + + +def test_available_databricks_includes_dynamic_form( + client: FlaskClient, + full_api_access: None, + mocker: MockerFixture, +) -> None: + """An installed official Databricks driver exposes the connection form.""" + from superset.db_engine_specs.databricks import DatabricksPythonConnectorEngineSpec + + mocker.patch( + "superset.databases.api.get_available_engine_specs", + return_value={DatabricksPythonConnectorEngineSpec: {"databricks"}}, + ) + + response = client.get("/api/v1/database/available/") + + assert response.status_code == 200 + assert response.json is not None + entry = response.json["databases"][0] + assert entry["engine"] == "databricks" + assert entry["available_drivers"] == ["databricks"] + assert entry["default_driver"] == "databricks" + assert entry["parameters"] + assert {"host", "http_path_field", "access_token"} <= set( + entry["parameters"]["properties"] + ) diff --git a/tests/unit_tests/db_engine_specs/test_databricks.py b/tests/unit_tests/db_engine_specs/test_databricks.py index af8b50def4f3..7e80ac4f0d5a 100644 --- a/tests/unit_tests/db_engine_specs/test_databricks.py +++ b/tests/unit_tests/db_engine_specs/test_databricks.py @@ -1403,11 +1403,16 @@ def test_get_engine_spec_unrecognized_driver_prefers_python_connector() -> None: is DatabricksPythonConnectorEngineSpec ) + assert ( + get_engine_spec("databricks", "databricks-sql-python") + is DatabricksPythonConnectorEngineSpec + ) + # Exact driver matches must still resolve to their specific spec; the # relocation must not disturb exact-match resolution. assert get_engine_spec("databricks", "pyhive") is DatabricksHiveEngineSpec assert ( - get_engine_spec("databricks", "databricks-sql-python") + get_engine_spec("databricks", "databricks") is DatabricksPythonConnectorEngineSpec )