From 8d6c11d7176b7abd40a129164329d01b13f0a7d7 Mon Sep 17 00:00:00 2001 From: Mila Page Date: Tue, 27 Feb 2024 02:10:47 -0800 Subject: [PATCH 1/2] Migrate 1.8 over --- .../Under the Hood-20240227-020742.yaml | 6 +++++ dbt/adapters/snowflake/relation.py | 27 +++++++++++++------ dev-requirements.txt | 2 +- tests/unit/test_renamed_relations.py | 16 +++++++++++ 4 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 .changes/unreleased/Under the Hood-20240227-020742.yaml create mode 100644 tests/unit/test_renamed_relations.py diff --git a/.changes/unreleased/Under the Hood-20240227-020742.yaml b/.changes/unreleased/Under the Hood-20240227-020742.yaml new file mode 100644 index 000000000..f7764706c --- /dev/null +++ b/.changes/unreleased/Under the Hood-20240227-020742.yaml @@ -0,0 +1,6 @@ +kind: Under the Hood +body: Add unit test for transaction semantics. +time: 2024-02-27T02:07:42.87704-08:00 +custom: + Author: versusfacit + Issue: "914" diff --git a/dbt/adapters/snowflake/relation.py b/dbt/adapters/snowflake/relation.py index 9d6182a71..8c93de69b 100644 --- a/dbt/adapters/snowflake/relation.py +++ b/dbt/adapters/snowflake/relation.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field -from typing import Optional, Type +from typing import FrozenSet, Optional, Type from dbt.adapters.base.relation import BaseRelation from dbt.adapters.relation_configs import RelationConfigChangeAction, RelationResults @@ -20,13 +20,24 @@ class SnowflakeRelation(BaseRelation): type: Optional[SnowflakeRelationType] = None # type: ignore quote_policy: SnowflakeQuotePolicy = field(default_factory=lambda: SnowflakeQuotePolicy()) - renameable_relations = frozenset({SnowflakeRelationType.Table, SnowflakeRelationType.View}) - replaceable_relations = frozenset( - { - SnowflakeRelationType.DynamicTable, - SnowflakeRelationType.Table, - SnowflakeRelationType.View, - } + + renameable_relations: FrozenSet[SnowflakeRelationType] = field( + default_factory=lambda: frozenset( + { + SnowflakeRelationType.Table, + SnowflakeRelationType.View, + } + ) + ) + + replaceable_relations: FrozenSet[SnowflakeRelationType] = field( + default_factory=lambda: frozenset( + { + SnowflakeRelationType.DynamicTable, + SnowflakeRelationType.Table, + SnowflakeRelationType.View, + } + ) ) @property diff --git a/dev-requirements.txt b/dev-requirements.txt index c3bc47131..c17e2a3c0 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -1,6 +1,6 @@ # install latest changes in dbt-core # TODO: how to automate switching from develop to version branches? -git+https://github.com/dbt-labs/dbt-core.git@1.7.latest#egg=dbt-core&subdirectory=core +git+https://github.com/dbt-labs/dbt-core.git@ADAP-9681/fix_renamed_relations_override_pre_1.8#egg=dbt-core&subdirectory=core git+https://github.com/dbt-labs/dbt-core.git@1.7.latest#egg=dbt-tests-adapter&subdirectory=tests/adapter # if version 1.x or greater -> pin to major version diff --git a/tests/unit/test_renamed_relations.py b/tests/unit/test_renamed_relations.py new file mode 100644 index 000000000..8e787e6a3 --- /dev/null +++ b/tests/unit/test_renamed_relations.py @@ -0,0 +1,16 @@ +from dbt.adapters.bigquery.relation import BigQueryRelation +from dbt.adapters.contracts.relation import RelationType + + +def test_renameable_relation(): + relation = BigQueryRelation.create( + database="my_db", + schema="my_schema", + identifier="my_table", + type=RelationType.Table, + ) + assert relation.renameable_relations == frozenset( + { + RelationType.Table, + } + ) From 5507afb2b655283d40d8f17e719eb0623f7d93f0 Mon Sep 17 00:00:00 2001 From: Mila Page Date: Tue, 27 Feb 2024 02:21:27 -0800 Subject: [PATCH 2/2] Fix test. --- tests/unit/test_renamed_relations.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tests/unit/test_renamed_relations.py b/tests/unit/test_renamed_relations.py index 8e787e6a3..315d5f343 100644 --- a/tests/unit/test_renamed_relations.py +++ b/tests/unit/test_renamed_relations.py @@ -1,16 +1,17 @@ -from dbt.adapters.bigquery.relation import BigQueryRelation -from dbt.adapters.contracts.relation import RelationType +from dbt.adapters.snowflake.relation import SnowflakeRelation +from dbt.adapters.snowflake.relation_configs import SnowflakeRelationType def test_renameable_relation(): - relation = BigQueryRelation.create( + relation = SnowflakeRelation.create( database="my_db", schema="my_schema", identifier="my_table", - type=RelationType.Table, + type=SnowflakeRelationType.Table, ) assert relation.renameable_relations == frozenset( { - RelationType.Table, + SnowflakeRelationType.Table, + SnowflakeRelationType.View, } )