From 609c56f52b91cf48641cf8ead8492fc174d643e5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 26 Oct 2023 14:30:28 -0400 Subject: [PATCH] Fix parsing of database results for materialized view autorefresh (#643) (#644) * map t/f to bool for database results * remove unnecessary test that did not properly test its hypothesis * changelog (cherry picked from commit b4176b95ee976b6c503a49904f754c8953730480) Co-authored-by: Mike Alfare <13974384+mikealfare@users.noreply.github.com> --- .changes/unreleased/Fixes-20231025-203732.yaml | 6 ++++++ .../redshift/relation_configs/materialized_view.py | 6 +++++- .../test_materialized_views.py | 13 ------------- 3 files changed, 11 insertions(+), 14 deletions(-) create mode 100644 .changes/unreleased/Fixes-20231025-203732.yaml diff --git a/.changes/unreleased/Fixes-20231025-203732.yaml b/.changes/unreleased/Fixes-20231025-203732.yaml new file mode 100644 index 000000000..9e6bf1af7 --- /dev/null +++ b/.changes/unreleased/Fixes-20231025-203732.yaml @@ -0,0 +1,6 @@ +kind: Fixes +body: Fix parsing of database results for materialized view auto refresh +time: 2023-10-25T20:37:32.191259-04:00 +custom: + Author: mikealfare + Issue: "643" diff --git a/dbt/adapters/redshift/relation_configs/materialized_view.py b/dbt/adapters/redshift/relation_configs/materialized_view.py index 1c6fb229a..44e18e3ac 100644 --- a/dbt/adapters/redshift/relation_configs/materialized_view.py +++ b/dbt/adapters/redshift/relation_configs/materialized_view.py @@ -182,10 +182,14 @@ def parse_relation_results(cls, relation_results: RelationResults) -> dict: "mv_name": materialized_view.get("table"), "schema_name": materialized_view.get("schema"), "database_name": materialized_view.get("database"), - "autorefresh": materialized_view.get("autorefresh"), "query": cls._parse_query(query.get("definition")), } + autorefresh_value = materialized_view.get("autorefresh") + if autorefresh_value is not None: + bool_filter = {"t": True, "f": False} + config_dict["autorefresh"] = bool_filter.get(autorefresh_value, autorefresh_value) + # the default for materialized views differs from the default for diststyle in general # only set it if we got a value if materialized_view.get("diststyle"): diff --git a/tests/functional/adapter/materialized_view_tests/test_materialized_views.py b/tests/functional/adapter/materialized_view_tests/test_materialized_views.py index cf7d433c7..d2bf1cda4 100644 --- a/tests/functional/adapter/materialized_view_tests/test_materialized_views.py +++ b/tests/functional/adapter/materialized_view_tests/test_materialized_views.py @@ -163,19 +163,6 @@ def test_change_is_applied_via_alter_str_true(self, project, my_materialized_vie assert_message_in_logs(f"Applying ALTER to: {my_materialized_view}", logs) assert_message_in_logs(f"Applying REPLACE to: {my_materialized_view}", logs, False) - def test_change_is_applied_via_alter_str_false(self, project, my_materialized_view): - self.check_start_state(project, my_materialized_view) - - self.change_config_via_alter_str_false(project, my_materialized_view) - _, logs = run_dbt_and_capture_with_retries_redshift_mv( - ["--debug", "run", "--models", my_materialized_view.name] - ) - - self.check_state_alter_change_is_applied_str_false(project, my_materialized_view) - - assert_message_in_logs(f"Applying ALTER to: {my_materialized_view}", logs) - assert_message_in_logs(f"Applying REPLACE to: {my_materialized_view}", logs, False) - def test_change_is_applied_via_replace(self, project, my_materialized_view): self.check_start_state(project, my_materialized_view)