@@ -714,6 +714,38 @@ def test_drop_schema(make_mocked_engine_adapter: t.Callable):
714714 ]
715715
716716
717+ def test_drop_schema_skips_dbo (make_mocked_engine_adapter : t .Callable ):
718+ adapter = make_mocked_engine_adapter (MSSQLEngineAdapter )
719+
720+ adapter ._get_data_objects = mock .Mock ()
721+ adapter ._get_data_objects .return_value = [
722+ DataObject (
723+ catalog = "test_catalog" ,
724+ schema = "dbo" ,
725+ name = "test_view" ,
726+ type = DataObjectType .from_str ("VIEW" ),
727+ )
728+ ]
729+
730+ # String "dbo" path (original coverage)
731+ adapter .drop_schema ("dbo" , cascade = True )
732+
733+ sql_calls = to_sql_calls (adapter )
734+ assert """DROP VIEW IF EXISTS [dbo].[test_view];""" in sql_calls
735+ assert """DROP SCHEMA IF EXISTS [dbo];""" not in sql_calls
736+
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+
748+
717749def test_drop_schema_with_special_identifiers (make_mocked_engine_adapter : t .Callable ):
718750 adapter = make_mocked_engine_adapter (MSSQLEngineAdapter )
719751
0 commit comments