diff --git a/.changes/unreleased/Fixes-20230810-233738.yaml b/.changes/unreleased/Fixes-20230810-233738.yaml new file mode 100644 index 00000000..62aeea20 --- /dev/null +++ b/.changes/unreleased/Fixes-20230810-233738.yaml @@ -0,0 +1,7 @@ +kind: Fixes +body: Only set the comment when persist_docs.relation is set +time: 2023-08-10T23:37:38.828664+02:00 +custom: + Author: Fokko + Issue: "317" + PR: "343" diff --git a/dbt/include/trino/macros/adapters.sql b/dbt/include/trino/macros/adapters.sql index 32362349..2228934e 100644 --- a/dbt/include/trino/macros/adapters.sql +++ b/dbt/include/trino/macros/adapters.sql @@ -89,8 +89,12 @@ {%- endmacro -%} {% macro comment(comment) %} - {%- if comment is not none and comment|length > 0 -%} - comment '{{ comment | replace("'", "''") }}' + {%- set persist_docs = model['config'].get('persist_docs') -%} + {%- if persist_docs -%} + {%- set persist_relation = persist_docs.get('relation') -%} + {%- if persist_relation and comment is not none and comment|length > 0 -%} + comment '{{ comment | replace("'", "''") }}' + {%- endif -%} {%- endif -%} {%- endmacro -%} diff --git a/tests/functional/adapter/persist_docs/test_persist_docs.py b/tests/functional/adapter/persist_docs/test_persist_docs.py index 4d681203..01640c70 100644 --- a/tests/functional/adapter/persist_docs/test_persist_docs.py +++ b/tests/functional/adapter/persist_docs/test_persist_docs.py @@ -1,10 +1,11 @@ import pytest from dbt.tests.adapter.persist_docs.test_persist_docs import ( BasePersistDocs, + BasePersistDocsBase, BasePersistDocsColumnMissing, BasePersistDocsCommentOnQuotedColumn, ) -from dbt.tests.util import run_dbt +from dbt.tests.util import run_dbt, run_sql_with_adapter from tests.functional.adapter.persist_docs.fixtures import ( incremental_model, @@ -142,3 +143,60 @@ class TestPersistDocsColumnMissing(BasePersistDocsColumnMissing): class TestPersistDocsCommentOnQuotedColumn(BasePersistDocsCommentOnQuotedColumn): pass + + +class BasePersistDocsDisabled(BasePersistDocsBase): + def test_persist_docs_disabled(self, project): + sql = f"""select * from system.metadata.table_comments + where catalog_name = '{project.database}' + and schema_name = '{project.test_schema}' + and table_name = 'table_model' + and comment is not null + """ + result = run_sql_with_adapter(project.adapter, sql, fetch="all") + assert len(result) == 0 + + +class TestPersistDocsDisabledByDefault(BasePersistDocsDisabled): + """ + Without providing `persist_docs` config, table comments shouldn't be added by default. + """ + + pass + + +class TestPersistDocsRelationSetToFalse(BasePersistDocsDisabled): + """ + With `persist_docs.relation` config set to False, table comments shouldn't be added. + """ + + @pytest.fixture(scope="class") + def project_config_update(self): + return { + "models": { + "test": { + "+persist_docs": { + "relation": False, + "columns": True, + }, + } + } + } + + +class TestPersistDocsRelationNotSet(BasePersistDocsDisabled): + """ + Without providing `persist_docs.relation` config, table comments shouldn't be added by default. + """ + + @pytest.fixture(scope="class") + def project_config_update(self): + return { + "models": { + "test": { + "+persist_docs": { + "columns": True, + }, + } + } + }