Skip to content

Commit 84e3df6

Browse files
authored
Fix: Include unrendered query into the metadata hash (#3710)
1 parent d1833c0 commit 84e3df6

File tree

4 files changed

+16
-6
lines changed

4 files changed

+16
-6
lines changed

Diff for: sqlmesh/core/model/definition.py

+4
Original file line numberDiff line numberDiff line change
@@ -1386,6 +1386,10 @@ def _data_hash_values(self) -> t.List[str]:
13861386
data.extend(self.jinja_macros.data_hash_values)
13871387
return data
13881388

1389+
@property
1390+
def _additional_metadata(self) -> t.List[str]:
1391+
return [*super()._additional_metadata, gen(self.query)]
1392+
13891393

13901394
class SeedModel(_Model):
13911395
"""The model definition which uses a pre-built static dataset to source the data from.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
"""Include the unrendered query in the metadata hash."""
2+
3+
4+
def migrate(state_sync, **kwargs): # type: ignore
5+
pass

Diff for: tests/core/test_model.py

-1
Original file line numberDiff line numberDiff line change
@@ -6207,7 +6207,6 @@ def noop(evaluator) -> None:
62076207
assert model.metadata_hash != new_model.metadata_hash
62086208
else:
62096209
assert "noop" in new_model._data_hash_values[0]
6210-
assert not new_model._additional_metadata
62116210
assert model.data_hash != new_model.data_hash
62126211
assert model.metadata_hash == new_model.metadata_hash
62136212

Diff for: tests/core/test_snapshot.py

+7-5
Original file line numberDiff line numberDiff line change
@@ -760,7 +760,7 @@ def test_fingerprint(model: Model, parent_model: Model):
760760

761761
original_fingerprint = SnapshotFingerprint(
762762
data_hash="1312415267",
763-
metadata_hash="2476734280",
763+
metadata_hash="2967945306",
764764
)
765765

766766
assert fingerprint == original_fingerprint
@@ -782,7 +782,7 @@ def test_fingerprint(model: Model, parent_model: Model):
782782
new_fingerprint = fingerprint_from_node(model, nodes={})
783783
assert new_fingerprint != fingerprint
784784
assert new_fingerprint.data_hash != fingerprint.data_hash
785-
assert new_fingerprint.metadata_hash == fingerprint.metadata_hash
785+
assert new_fingerprint.metadata_hash != fingerprint.metadata_hash
786786

787787
model = SqlModel(**{**model.dict(), "query": parse_one("select 1, ds -- annotation")})
788788
fingerprint = fingerprint_from_node(model, nodes={})
@@ -796,13 +796,15 @@ def test_fingerprint(model: Model, parent_model: Model):
796796
fingerprint = fingerprint_from_node(model, nodes={})
797797
assert new_fingerprint != fingerprint
798798
assert new_fingerprint.data_hash != fingerprint.data_hash
799-
assert new_fingerprint.metadata_hash == fingerprint.metadata_hash
799+
assert new_fingerprint.metadata_hash != fingerprint.metadata_hash
800+
assert fingerprint.metadata_hash == original_fingerprint.metadata_hash
800801

801802
model = SqlModel(**{**original_model.dict(), "post_statements": [parse_one("DROP TABLE test")]})
802803
fingerprint = fingerprint_from_node(model, nodes={})
803804
assert new_fingerprint != fingerprint
804805
assert new_fingerprint.data_hash != fingerprint.data_hash
805-
assert new_fingerprint.metadata_hash == fingerprint.metadata_hash
806+
assert new_fingerprint.metadata_hash != fingerprint.metadata_hash
807+
assert fingerprint.metadata_hash == original_fingerprint.metadata_hash
806808

807809

808810
def test_fingerprint_seed_model():
@@ -858,7 +860,7 @@ def test_fingerprint_jinja_macros(model: Model):
858860
)
859861
original_fingerprint = SnapshotFingerprint(
860862
data_hash="923305614",
861-
metadata_hash="2476734280",
863+
metadata_hash="2967945306",
862864
)
863865

864866
fingerprint = fingerprint_from_node(model, nodes={})

0 commit comments

Comments
 (0)