diff --git a/.changes/unreleased/Under the Hood-20240227-002713.yaml b/.changes/unreleased/Under the Hood-20240227-002713.yaml new file mode 100644 index 000000000..48b8de8e4 --- /dev/null +++ b/.changes/unreleased/Under the Hood-20240227-002713.yaml @@ -0,0 +1,6 @@ +kind: Under the Hood +body: Add unit test for transaction semantics. +time: 2024-02-27T00:27:13.299107-08:00 +custom: + Author: versusfacit + Issue: "722" diff --git a/dbt/adapters/redshift/relation.py b/dbt/adapters/redshift/relation.py index 7255288e2..e120a2fac 100644 --- a/dbt/adapters/redshift/relation.py +++ b/dbt/adapters/redshift/relation.py @@ -1,6 +1,6 @@ -from dataclasses import dataclass +from dataclasses import dataclass, field from dbt.adapters.contracts.relation import RelationConfig -from typing import Optional +from typing import FrozenSet, Optional from dbt.adapters.base.relation import BaseRelation from dbt.adapters.relation_configs import ( @@ -30,16 +30,20 @@ class RedshiftRelation(BaseRelation): relation_configs = { RelationType.MaterializedView.value: RedshiftMaterializedViewConfig, } - renameable_relations = frozenset( - { - RelationType.View, - RelationType.Table, - } + renameable_relations: FrozenSet[RelationType] = field( + default_factory=lambda: frozenset( + { + RelationType.View, + RelationType.Table, + } + ) ) - replaceable_relations = frozenset( - { - RelationType.View, - } + replaceable_relations: FrozenSet[RelationType] = field( + default_factory=lambda: frozenset( + { + RelationType.View, + } + ) ) def __post_init__(self): diff --git a/dbt/include/redshift/macros/relations/materialized_view/create.sql b/dbt/include/redshift/macros/relations/materialized_view/create.sql index 06fe2b6b5..1b81992e4 100644 --- a/dbt/include/redshift/macros/relations/materialized_view/create.sql +++ b/dbt/include/redshift/macros/relations/materialized_view/create.sql @@ -10,6 +10,6 @@ auto refresh {% if materialized_view.autorefresh %}yes{% else %}no{% endif %} as ( {{ materialized_view.query }} - ); + ) {% endmacro %} diff --git a/dbt/include/redshift/macros/relations/view/rename.sql b/dbt/include/redshift/macros/relations/view/rename.sql index 0c6cdcdfa..a96b04451 100644 --- a/dbt/include/redshift/macros/relations/view/rename.sql +++ b/dbt/include/redshift/macros/relations/view/rename.sql @@ -1,3 +1,3 @@ {% macro redshift__get_rename_view_sql(relation, new_name) %} - alter view {{ relation }} rename to {{ new_name }} + alter table {{ relation }} rename to {{ new_name }} {% endmacro %} diff --git a/dbt/include/redshift/macros/relations/view/replace.sql b/dbt/include/redshift/macros/relations/view/replace.sql index 25a9d8b38..7ae89ab45 100644 --- a/dbt/include/redshift/macros/relations/view/replace.sql +++ b/dbt/include/redshift/macros/relations/view/replace.sql @@ -13,6 +13,6 @@ {{ get_assert_columns_equivalent(sql) }} {%- endif %} as ( {{ sql }} - ) {{ bind_qualifier }}; + ) {{ bind_qualifier }} {%- endmacro %} diff --git a/tests/unit/test_renamed_relations.py b/tests/unit/test_renamed_relations.py new file mode 100644 index 000000000..4817ab100 --- /dev/null +++ b/tests/unit/test_renamed_relations.py @@ -0,0 +1,17 @@ +from dbt.adapters.redshift.relation import RedshiftRelation +from dbt.adapters.contracts.relation import RelationType + + +def test_renameable_relation(): + relation = RedshiftRelation.create( + database="my_db", + schema="my_schema", + identifier="my_table", + type=RelationType.Table, + ) + assert relation.renameable_relations == frozenset( + { + RelationType.View, + RelationType.Table, + } + )