Skip to content

Commit

Permalink
partial parsing - account for modified versioned source files
Browse files Browse the repository at this point in the history
  • Loading branch information
MichelleArk committed Apr 11, 2023
1 parent 717c491 commit b5ba176
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
13 changes: 13 additions & 0 deletions core/dbt/parser/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -1125,11 +1125,24 @@ def parse_patch(self, block: TargetBlock[UnparsedModelUpdate], refs: ParserRef)
)
continue

# update versioned node unique_id
versioned_model_node_unique_id_old = versioned_model_node.unique_id
versioned_model_node.unique_id = (
f"model.{target.package_name}.{target.name}.{unparsed_version.formatted_v}"
)
# update source file.nodes with new unique_id
self.manifest.files[versioned_model_node.file_id].nodes.remove(
versioned_model_node_unique_id_old
)
self.manifest.files[versioned_model_node.file_id].nodes.append(
versioned_model_node.unique_id
)

# update versioned node fqn
versioned_model_node.fqn[-1] = target.name
versioned_model_node.fqn.append(unparsed_version.formatted_v)

# add versioned node back to nodes/disabled
add_node_nofile_fn(versioned_model_node)

# flatten columns based on include/exclude
Expand Down
7 changes: 6 additions & 1 deletion tests/functional/partial_parsing/test_partial_parsing.py
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@ def test_pp_versioned_models(self, project):
model_two_node = manifest.nodes["model.test.model_one.v2"]
assert model_two_node.is_latest_version

# update versions block - latest_version from 2 to 1
# update versions schema.yml block - latest_version from 2 to 1
write_file(
models_versions_updated_schema_yml, project.project_root, "models", "schema.yml"
)
Expand All @@ -330,6 +330,11 @@ def test_pp_versioned_models(self, project):
model_two_node = manifest.nodes["model.test.model_one.v2"]
assert not model_two_node.is_latest_version

# update versioned model
write_file(model_two_sql, project.project_root, "models", "model_one_v2.sql")
results = run_dbt(["--partial-parse", "run"])
assert len(results) == 2


class TestSources:
@pytest.fixture(scope="class")
Expand Down

0 comments on commit b5ba176

Please sign in to comment.