@@ -4131,3 +4131,71 @@ def test_plan_ignore_cron_flag(make_snapshot):
41314131 ],
41324132 )
41334133 ]
4134+
4135+
4136+ def test_indirect_change_to_materialized_view_is_breaking (make_snapshot ):
4137+ snapshot_a_old = make_snapshot (
4138+ SqlModel (name = "a" ,
4139+ query = parse_one ("select 1 as col_a, col_b" ),
4140+ kind = ViewKind (materialized = True ),
4141+ )
4142+ )
4143+ snapshot_a_old .categorize_as (SnapshotChangeCategory .BREAKING , forward_only = False )
4144+
4145+ snapshot_b_old = make_snapshot (
4146+ SqlModel (
4147+ name = "b" ,
4148+ query = parse_one ("select col_a from a" ),
4149+ kind = ViewKind (materialized = True ),
4150+ ),
4151+ nodes = {'"a"' : snapshot_a_old .model },
4152+ )
4153+ snapshot_b_old .categorize_as (SnapshotChangeCategory .BREAKING , forward_only = False )
4154+
4155+ snapshot_a_new = make_snapshot (
4156+ SqlModel (name = "a" ,
4157+ query = parse_one ("select 2 as col_a, col_b" ),
4158+ kind = ViewKind (materialized = True ),
4159+ )
4160+ )
4161+
4162+ snapshot_a_new .previous_versions = snapshot_a_old .all_versions
4163+
4164+ snapshot_b_new = make_snapshot (
4165+ snapshot_b_old .model ,
4166+ nodes = {'"a"' : snapshot_a_new .model },
4167+ )
4168+ snapshot_b_new .previous_versions = snapshot_b_old .all_versions
4169+
4170+ context_diff = ContextDiff (
4171+ environment = "test_environment" ,
4172+ is_new_environment = True ,
4173+ is_unfinalized_environment = False ,
4174+ normalize_environment_name = True ,
4175+ create_from = "prod" ,
4176+ create_from_env_exists = True ,
4177+ added = set (),
4178+ removed_snapshots = {},
4179+ modified_snapshots = {
4180+ snapshot_a_new .name : (snapshot_a_new , snapshot_a_old ),
4181+ snapshot_b_new .name : (snapshot_b_new , snapshot_b_old ),
4182+ },
4183+ snapshots = {
4184+ snapshot_a_new .snapshot_id : snapshot_a_new ,
4185+ snapshot_b_new .snapshot_id : snapshot_b_new ,
4186+ },
4187+ new_snapshots = {
4188+ snapshot_a_new .snapshot_id : snapshot_a_new ,
4189+ snapshot_b_new .snapshot_id : snapshot_b_new ,
4190+ },
4191+ previous_plan_id = None ,
4192+ previously_promoted_snapshot_ids = set (),
4193+ previous_finalized_snapshots = None ,
4194+ previous_gateway_managed_virtual_layer = False ,
4195+ gateway_managed_virtual_layer = False ,
4196+ environment_statements = [],
4197+ )
4198+
4199+ PlanBuilder (context_diff ).build ()
4200+
4201+ assert snapshot_b_new .change_category == SnapshotChangeCategory .BREAKING
0 commit comments