Skip to content

Commit

Permalink
Cease using uppercase for snowflake column identifiers
Browse files Browse the repository at this point in the history
  • Loading branch information
psousa50 committed Apr 18, 2024
1 parent b639244 commit 8bad96a
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 24 deletions.
6 changes: 6 additions & 0 deletions integration-tests/models/model_with_quoted_columns_1.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
select 1 as lower,
2 as UPPER,
3 as MiXeD,
4 as "lower quoted",
5 as "UPPER QUOTED",
6 as "MiXeD Quoted"
17 changes: 17 additions & 0 deletions integration-tests/models/model_with_quoted_columns_2.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
select
lower,
UPPER,
MiXeD,
"lower quoted",
"UPPER QUOTED",
"MiXeD Quoted"
from {{ dbt_unit_testing.ref('model_with_quoted_columns_1') }}
where
(lower = 1 or lower is null)
and (UPPER = 2 or UPPER is null)
and (MiXeD = 3 or MiXeD is null)
and ("lower quoted" = 4 or "lower quoted" is null)
and ("UPPER QUOTED" = 5 or "UPPER QUOTED" is null)
and ("MiXeD Quoted" = 6 or "MiXeD Quoted" is null)


14 changes: 14 additions & 0 deletions integration-tests/tests/unit/model_with_quoted_columns_2.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{{
config(
tags=['unit-test', 'bigquery', 'snowflake', 'postgres']
)
}}

{% call dbt_unit_testing.test('model_with_quoted_columns_2') %}
{% call dbt_unit_testing.mock_ref ('model_with_quoted_columns_1', options={"include_missing_columns": true}) %}
select 1 as lower
{% endcall %}
{% call dbt_unit_testing.expect() %}
select 1 as lower
{% endcall %}
{% endcall %}
56 changes: 32 additions & 24 deletions macros/utils.sql
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
{% endmacro %}

{% macro quote_and_join_columns(columns) %}
{% set columns = dbt_unit_testing.map(columns, dbt_unit_testing.quote_identifier) | join(", ") %}
{% set columns = dbt_unit_testing.map(columns, dbt_unit_testing.quote_column_identifier) | join(", ") %}
{{ return (columns) }}
{% endmacro %}

Expand All @@ -39,7 +39,7 @@
{% endmacro %}

{% macro apply_transformations_to_column(column, column_transformations, use_alias) %}
{% set quoted_column = dbt_unit_testing.quote_identifier(column) %}
{% set quoted_column = dbt_unit_testing.quote_column_identifier(column) %}
{% set transformation = column_transformations.get(column, "") %}
{% if transformation != "" %}
{% set transformation = transformation | replace("##column##", quoted_column) %}
Expand Down Expand Up @@ -91,7 +91,7 @@
{% endmacro %}

{% macro has_value(v) %}
{{ return (v is defined and v is not none) }}
{{ return (v is defined and v is not none) }}
{% endmacro %}

{% macro model_node (node) %}
Expand Down Expand Up @@ -179,39 +179,47 @@
{{ return (dbt_unit_testing.deep_merge_jsons([unit_tests_config] + configs)) }}
{% endmacro %}

{% macro quote_identifier(identifier) %}
{{ return(adapter.dispatch('quote_identifier','dbt_unit_testing')(identifier)) }}
{% macro quote_column_identifier(identifier) %}
{{ return(adapter.dispatch('quote_column_identifier','dbt_unit_testing')(identifier)) }}
{% endmacro %}

{% macro default__quote_identifier(identifier) -%}
{% if identifier.startswith('"') %}
{{ return(identifier) }}
{% else %}
{{ return('"' ~ identifier ~ '"') }}
{% endif %}
{% macro default__quote_column_identifier(identifier) -%}
{{ return(dbt_unit_testing.quote_identifier_if_needed(identifier, '"')) }}
{%- endmacro %}

{% macro bigquery__quote_identifier(identifier) %}
{% if identifier.startswith('`') %}
{{ return(identifier) }}
{% else %}
{{ return('`' ~ identifier ~ '`') }}
{% endif %}
{% macro spark__quote_column_identifier(identifier) %}
{{ return(dbt_unit_testing.quote_identifier_if_needed(identifier, '`')) }}
{% endmacro %}

{% macro bigquery__quote_column_identifier(identifier) %}
{{ return(dbt_unit_testing.quote_identifier_if_needed(identifier, '`')) }}
{% endmacro %}

{% macro databricks__quote_identifier(identifier) %}
{% if identifier.startswith('`') %}
{{ return(identifier) }}
{% else %}
{{ return('`' ~ identifier ~ '`') }}
{% endif %}
{{ return(dbt_unit_testing.quote_identifier_if_needed(identifier, '`')) }}
{% endmacro %}

{% macro snowflake__quote_column_identifier(identifier) %}
{{ return(dbt_unit_testing.quote_identifier_if_needed(identifier, '"')) }}
{% endmacro %}

{% macro quote_identifier(identifier) %}
{{ return(adapter.dispatch('quote_identifier','dbt_unit_testing')(identifier)) }}
{% endmacro %}

{% macro default__quote_identifier(identifier) -%}
{{ return(dbt_unit_testing.quote_column_identifier(identifier)) }}
{%- endmacro %}

{% macro snowflake__quote_identifier(identifier) %}
{% if identifier.startswith('"') %}
{{ return(dbt_unit_testing.quote_identifier_if_needed(identifier, '"') | upper) }}
{% endmacro %}

{% macro quote_identifier_if_needed(identifier, quote) %}
{% if identifier.startswith(quote) %}
{{ return(identifier) }}
{% else %}
{{ return('"' ~ identifier | upper ~ '"') }}
{{ return(quote ~ identifier ~ quote) }}
{% endif %}
{% endmacro %}

Expand Down

0 comments on commit 8bad96a

Please sign in to comment.