@@ -166,6 +166,7 @@ def test_json(snapshot: Snapshot):
166166 "name" : '"name"' ,
167167 "parents" : [{"name" : '"parent"."tbl"' , "identifier" : snapshot .parents [0 ].identifier }],
168168 "previous_versions" : [],
169+ "table_naming_convention" : "schema_and_table" ,
169170 "updated_ts" : 1663891973000 ,
170171 "version" : snapshot .fingerprint .to_version (),
171172 "migrated" : False ,
@@ -1140,6 +1141,9 @@ def test_snapshot_table_name(snapshot: Snapshot, make_snapshot: t.Callable):
11401141 data_hash = "1" , metadata_hash = "1" , parent_data_hash = "1"
11411142 )
11421143 snapshot .categorize_as (SnapshotChangeCategory .BREAKING )
1144+ assert snapshot .table_naming_convention == TableNamingConvention .SCHEMA_AND_TABLE
1145+ assert snapshot .data_version .table_naming_convention == TableNamingConvention .SCHEMA_AND_TABLE
1146+
11431147 snapshot .previous_versions = ()
11441148 assert snapshot .table_name (is_deployable = True ) == "sqlmesh__default.name__3078928823"
11451149 assert snapshot .table_name (is_deployable = False ) == "sqlmesh__default.name__3078928823__dev"
@@ -1196,6 +1200,8 @@ def test_table_name_naming_convention_table_only(make_snapshot: t.Callable[...,
11961200 table_naming_convention = TableNamingConvention .TABLE_ONLY ,
11971201 )
11981202 snapshot .categorize_as (SnapshotChangeCategory .BREAKING )
1203+ assert snapshot .table_naming_convention == TableNamingConvention .TABLE_ONLY
1204+ assert snapshot .data_version .table_naming_convention == TableNamingConvention .TABLE_ONLY
11991205
12001206 assert snapshot .table_name (is_deployable = True ) == f"foo.sqlmesh__bar.baz__{ snapshot .version } "
12011207 assert (
@@ -1220,6 +1226,8 @@ def test_table_name_naming_convention_hash_md5(make_snapshot: t.Callable[..., Sn
12201226 table_naming_convention = TableNamingConvention .HASH_MD5 ,
12211227 )
12221228 snapshot .categorize_as (SnapshotChangeCategory .BREAKING )
1229+ assert snapshot .table_naming_convention == TableNamingConvention .HASH_MD5
1230+ assert snapshot .data_version .table_naming_convention == TableNamingConvention .HASH_MD5
12231231
12241232 hash = md5 (f"foo.sqlmesh__bar.bar__baz__{ snapshot .version } " )
12251233 assert snapshot .table_name (is_deployable = True ) == f"foo.sqlmesh__bar.sqlmesh_md5__{ hash } "
@@ -1273,6 +1281,36 @@ def test_table_name_view(make_snapshot: t.Callable):
12731281 assert new_snapshot .dev_version != snapshot .dev_version
12741282
12751283
1284+ def test_table_naming_convention_change_reuse_previous_version (make_snapshot ):
1285+ # Ensure that snapshots that trigger "reuse previous version" inherit the naming convention of the previous snapshot
1286+ original_snapshot : Snapshot = make_snapshot (
1287+ SqlModel (name = "a" , query = parse_one ("select 1, ds" )),
1288+ table_naming_convention = TableNamingConvention .SCHEMA_AND_TABLE ,
1289+ )
1290+ original_snapshot .categorize_as (SnapshotChangeCategory .BREAKING )
1291+
1292+ assert original_snapshot .table_naming_convention == TableNamingConvention .SCHEMA_AND_TABLE
1293+ assert original_snapshot .table_name () == "sqlmesh__default.a__4145234055"
1294+
1295+ changed_snapshot : Snapshot = make_snapshot (
1296+ SqlModel (name = "a" , query = parse_one ("select 1, 'forward_only' as a, ds" )),
1297+ table_naming_convention = TableNamingConvention .HASH_MD5 ,
1298+ )
1299+ changed_snapshot .previous_versions = original_snapshot .all_versions
1300+
1301+ assert changed_snapshot .previous_version == original_snapshot .data_version
1302+
1303+ changed_snapshot .categorize_as (SnapshotChangeCategory .FORWARD_ONLY )
1304+
1305+ # inherited from previous version even though changed_snapshot was created with TableNamingConvention.HASH_MD5
1306+ assert changed_snapshot .table_naming_convention == TableNamingConvention .SCHEMA_AND_TABLE
1307+ assert (
1308+ changed_snapshot .previous_version .table_naming_convention
1309+ == TableNamingConvention .SCHEMA_AND_TABLE
1310+ )
1311+ assert changed_snapshot .table_name () == "sqlmesh__default.a__4145234055"
1312+
1313+
12761314def test_categorize_change_sql (make_snapshot ):
12771315 old_snapshot = make_snapshot (SqlModel (name = "a" , query = parse_one ("select 1, ds" )))
12781316
0 commit comments