Skip to content

Commit 340906e

Browse files
committed
fix(mssql): accounting for schema_name.name
Signed-off-by: Cortland Goffena <30168413+cmgoffena13@users.noreply.github.com>
1 parent f99abbf commit 340906e

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

‎sqlmesh/core/engine_adapter/mssql.py‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,11 @@ def drop_schema(
203203
exists=ignore_if_not_exists,
204204
)
205205

206-
schema = schema_name.db if isinstance(schema_name, exp.Table) else schema_name
206+
schema = (
207+
(schema_name.db or schema_name.name)
208+
if isinstance(schema_name, exp.Table)
209+
else schema_name
210+
)
207211
if schema.lower() == "dbo":
208212
return
209213

‎tests/core/engine_adapter/test_mssql.py‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -727,12 +727,24 @@ def test_drop_schema_skips_dbo(make_mocked_engine_adapter: t.Callable):
727727
)
728728
]
729729

730+
# String "dbo" path (original coverage)
730731
adapter.drop_schema("dbo", cascade=True)
731732

732733
sql_calls = to_sql_calls(adapter)
733734
assert """DROP VIEW IF EXISTS [dbo].[test_view];""" in sql_calls
734735
assert """DROP SCHEMA IF EXISTS [dbo];""" not in sql_calls
735736

737+
# exp.to_table("dbo") path — schema ends up in .name, not .db
738+
adapter2 = make_mocked_engine_adapter(MSSQLEngineAdapter)
739+
adapter2._get_data_objects = mock.Mock()
740+
adapter2._get_data_objects.return_value = []
741+
742+
schema_name = exp.to_table("dbo", dialect="tsql")
743+
adapter2.drop_schema(schema_name, cascade=False)
744+
745+
sql_calls2 = to_sql_calls(adapter2)
746+
assert """DROP SCHEMA IF EXISTS [dbo];""" not in sql_calls2
747+
736748

737749
def test_drop_schema_with_special_identifiers(make_mocked_engine_adapter: t.Callable):
738750
adapter = make_mocked_engine_adapter(MSSQLEngineAdapter)

0 commit comments

Comments
 (0)