diff --git a/CHANGELOG.md b/CHANGELOG.md index 97c16aa48..f232552e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ ### Fixes +- Fix latent AssertionError when evaluating `is_hudi` or `is_iceberg` properties on relations without metadata - Validate relation identifier length at creation time and raise a clear error when it exceeds Databricks' 255-character limit ([#1309](https://github.com/databricks/dbt-databricks/issues/1309)) - Fix spurious `MicrobatchConcurrency` behavior-change warning firing on every run regardless of whether the project contained microbatch models ([#1406](https://github.com/databricks/dbt-databricks/issues/1406)) - Fix DBR capability cache being permanently poisoned by a transient version-query failure ([#1398](https://github.com/databricks/dbt-databricks/issues/1398)) diff --git a/dbt/adapters/databricks/relation.py b/dbt/adapters/databricks/relation.py index 1b18e3ece..cf4e9a280 100644 --- a/dbt/adapters/databricks/relation.py +++ b/dbt/adapters/databricks/relation.py @@ -146,13 +146,11 @@ def is_dlt(self) -> bool: @property def is_hudi(self) -> bool: - assert self.metadata is not None - return self.metadata.get(KEY_TABLE_PROVIDER) == "hudi" + return self.metadata is not None and self.metadata.get(KEY_TABLE_PROVIDER) == "hudi" @property def is_iceberg(self) -> bool: - assert self.metadata is not None - return self.metadata.get(KEY_TABLE_PROVIDER) == "iceberg" + return self.metadata is not None and self.metadata.get(KEY_TABLE_PROVIDER) == "iceberg" @property def owner(self) -> Optional[str]: diff --git a/tests/unit/test_relation.py b/tests/unit/test_relation.py index 9a2ef2af8..e2ada0aaf 100644 --- a/tests/unit/test_relation.py +++ b/tests/unit/test_relation.py @@ -264,6 +264,22 @@ def test_is_iceberg_false_for_delta(self): ) assert relation.is_iceberg is False + def test_is_iceberg_no_metadata(self): + relation = DatabricksRelation.create( + identifier="no_metadata_iceberg_table", + type="table", + metadata=None, + ) + assert relation.is_iceberg is False + + def test_is_hudi_no_metadata(self): + relation = DatabricksRelation.create( + identifier="no_metadata_hudi_table", + type="table", + metadata=None, + ) + assert relation.is_hudi is False + @pytest.mark.parametrize( "type_, is_delta, is_iceberg, expected_can_be_replaced", [