diff --git a/superset/databases/schemas.py b/superset/databases/schemas.py index ac4d0e127d..b56c98c5d6 100644 --- a/superset/databases/schemas.py +++ b/superset/databases/schemas.py @@ -750,6 +750,7 @@ class ImportV1DatabaseExtraSchema(Schema): allows_virtual_table_explore = fields.Boolean(required=False) cancel_query_on_windows_unload = fields.Boolean(required=False) disable_data_preview = fields.Boolean(required=False) + version = fields.String(required=False, allow_none=True) class ImportV1DatabaseSchema(Schema): diff --git a/tests/unit_tests/databases/commands/importers/v1/import_test.py b/tests/unit_tests/databases/commands/importers/v1/import_test.py index dcd093a9cf..5fb4d12ce5 100644 --- a/tests/unit_tests/databases/commands/importers/v1/import_test.py +++ b/tests/unit_tests/databases/commands/importers/v1/import_test.py @@ -17,6 +17,7 @@ # pylint: disable=unused-argument, import-outside-toplevel, invalid-name import copy +import json import pytest from pytest_mock import MockFixture @@ -142,3 +143,23 @@ def test_import_database_without_permission( str(excinfo.value) == "Database doesn't exist and user doesn't have permission to create databases" ) + + +def test_import_database_with_version(mocker: MockFixture, session: Session) -> None: + """ + Test importing a database with a version set. + """ + from superset import security_manager + from superset.commands.database.importers.v1.utils import import_database + from superset.models.core import Database + from tests.integration_tests.fixtures.importexport import database_config + + mocker.patch.object(security_manager, "can_access", return_value=True) + + engine = session.get_bind() + Database.metadata.create_all(engine) # pylint: disable=no-member + + config = copy.deepcopy(database_config) + config["extra"]["version"] = "1.1.1" + database = import_database(session, config) + assert json.loads(database.extra)["version"] == "1.1.1"