Skip to content

Commit 3669830

Browse files
Merge pull request #67 from Snowflake-Labs/fix-snowflake-permission-lookup
Full credits for this release goes to @sfc-gh-tbraunschober who identified an issue and provided the fix for where the Python and SQL would produce an error for users not yet using database roles.
2 parents 39bab00 + d20d2d5 commit 3669830

File tree

3 files changed

+5
-17
lines changed

3 files changed

+5
-17
lines changed

dbt_project.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
name: 'dbt_constraints'
3-
version: '0.6.2'
3+
version: '0.6.3'
44
config-version: 2
55

66
# These macros depend on the results and graph objects in dbt >=0.19.0

macros/create_constraints.sql

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@
175175
and ( res.failures == 0 or
176176
res.node.config.get("always_create_constraint", false) )
177177
and ( res.node.config.where is none or
178-
res.node.config.get("always_create_constraint", false) ) -%}
178+
res.node.config.get("always_create_constraint", false) )
179+
and res.node.config.get("dbt_constraints_enabled", true) -%}
179180

180181
{%- set test_model = res.node -%}
181182
{%- set test_parameters = test_model.test_metadata.kwargs -%}

macros/snowflake__create_constraints.sql

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -272,23 +272,10 @@ SHOW IMPORTED KEYS IN TABLE {{ table_relation }}
272272
upper(tp.table_name) as "table_name",
273273
tp.privilege_type as "privilege_type"
274274
from {{ table_relation.database }}.information_schema.table_privileges tp
275-
where is_role_in_session(tp.grantee)
275+
where (is_role_in_session(tp.grantee) or is_database_role_in_session(tp.grantee))
276276
and tp.privilege_type in ('OWNERSHIP', 'REFERENCES')
277277
{%- endset -%}
278-
{%- set role_privilege_list = run_query(lookup_query) -%}
279-
280-
{%- set lookup_query -%}
281-
select distinct
282-
upper(tp.table_schema) as "table_schema",
283-
upper(tp.table_name) as "table_name",
284-
tp.privilege_type as "privilege_type"
285-
from {{ table_relation.database }}.information_schema.table_privileges tp
286-
where is_database_role_in_session(tp.grantee)
287-
and tp.privilege_type in ('OWNERSHIP', 'REFERENCES')
288-
{%- endset -%}
289-
{%- set db_role_privilege_list = run_query(lookup_query) -%}
290-
291-
{%- set privilege_list = role_privilege_list.merge([role_privilege_list, db_role_privilege_list]).distinct() -%}
278+
{%- set privilege_list = run_query(lookup_query) -%}
292279
{%- do lookup_cache.table_privileges.update({ table_relation.database: privilege_list }) -%}
293280
{%- endif -%}
294281

0 commit comments

Comments
 (0)