diff --git a/sqlmesh/core/engine_adapter/base.py b/sqlmesh/core/engine_adapter/base.py index 54a27c0920..bd435db76f 100644 --- a/sqlmesh/core/engine_adapter/base.py +++ b/sqlmesh/core/engine_adapter/base.py @@ -178,6 +178,7 @@ def with_settings(self, **kwargs: t.Any) -> EngineAdapter: "query_execution_tracker": kwargs.pop( "query_execution_tracker", self._query_execution_tracker ), + "pre_ping": kwargs.pop("pre_ping", self._pre_ping), **self._extra_config, **kwargs, } diff --git a/tests/core/engine_adapter/test_base.py b/tests/core/engine_adapter/test_base.py index 2b9bcc665f..1971ba3bbc 100644 --- a/tests/core/engine_adapter/test_base.py +++ b/tests/core/engine_adapter/test_base.py @@ -3522,6 +3522,15 @@ def test_pre_ping(mocker: MockerFixture, make_mocked_engine_adapter: t.Callable) adapter._connection_pool.get().close.assert_called_once() +def test_with_settings_preserves_pre_ping(make_mocked_engine_adapter: t.Callable): + adapter = make_mocked_engine_adapter(EngineAdapter, pre_ping=True) + assert adapter.with_settings()._pre_ping is True + assert adapter.with_settings(pre_ping=False)._pre_ping is False + + adapter = make_mocked_engine_adapter(EngineAdapter) + assert adapter.with_settings()._pre_ping is False + + @pytest.mark.parametrize( "partitioned_by", [