Skip to content

Commit cc0af18

Browse files
committed
✨ Mejora: Ajustar el tamaño de NVARCHAR y NCHAR en SQLServerColumn; normalizar nombres de columnas en pruebas unitarias
1 parent 4aa63b6 commit cc0af18

4 files changed

Lines changed: 19 additions & 8 deletions

File tree

dbt/adapters/sqlserver/sqlserver_column.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,10 @@ def string_type_instance(self, size: int) -> str:
4949
Instance-level string type selection that respects NVARCHAR/NCHAR.
5050
"""
5151
dtype = (self.dtype or "").lower()
52-
# n types use half the byte size for character count
5352
if dtype == "nvarchar":
54-
return f"nvarchar({size//2 if size > 0 else '4000'})"
53+
return f"nvarchar({size if size > 0 else '4000'})"
5554
if dtype == "nchar":
56-
return f"nchar({size//2 if size > 1 else '1'})"
55+
return f"nchar({size if size > 0 else '1'})"
5756
# default to varchar/char behaviour
5857
return f"varchar({size if size > 0 else '8000'})"
5958

dbt/include/sqlserver/macros/materializations/models/unit_test/unit_test_create_table_as.sql

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,7 @@
5050

5151
{%- else %}
5252

53-
{%- set query_label_option = query_label.replace("'", "''") -%}
54-
{%- set sql_with_quotes = sql.replace("'", "''") -%}
55-
EXEC('CREATE TABLE {{relation}} AS {{sql_with_quotes}} {{ query_label_option }}');
53+
{{ sqlserver__create_table_as(temporary, relation, sql) }}
5654

5755
{% endif %}
5856
{% endmacro %}

dbt/include/sqlserver/macros/materializations/unit_test/unit_test_table.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
{%- set expected_column_names_quoted = [] -%}
2121
{%- for column_name in tested_expected_column_names -%}
22-
{%- do expected_column_names_quoted.append(column_name_to_quoted[column_name]) -%}
22+
{%- do expected_column_names_quoted.append(column_name_to_quoted[column_name|lower]) -%}
2323
{%- endfor -%}
2424

2525
{% if not expected_sql %}

dbt/include/sqlserver/macros/unit_test_sql/get_fixture_sql.sql

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,24 @@
1+
{% macro sqlserver__normalize_unit_test_row(row, column_name_to_data_types) %}
2+
{%- set normalized_row = {} -%}
3+
{%- for column_name, column_value in row.items() -%}
4+
{%- set normalized_column_name = column_name | lower -%}
5+
{%- if normalized_column_name in column_name_to_data_types -%}
6+
{%- do normalized_row.update({normalized_column_name: column_value}) -%}
7+
{%- else -%}
8+
{%- do normalized_row.update({column_name: column_value}) -%}
9+
{%- endif -%}
10+
{%- endfor -%}
11+
{{ return(normalized_row) }}
12+
{% endmacro %}
13+
114
{% macro get_expected_sql(rows, column_name_to_data_types, column_name_to_quoted) %}
215

316
{%- if (rows | length) == 0 -%}
417
select top 0 * from dbt_internal_unit_test_actual where 1=0
518
{%- else -%}
619
{%- for row in rows -%}
7-
{%- set formatted_row = format_row(row, column_name_to_data_types) -%}
20+
{%- set normalized_row = sqlserver__normalize_unit_test_row(row, column_name_to_data_types) -%}
21+
{%- set formatted_row = format_row(normalized_row, column_name_to_data_types) -%}
822
select
923
{%- for column_name, column_value in formatted_row.items() %} {{ column_value }} as {{ column_name_to_quoted[column_name] }}{% if not loop.last -%}, {%- endif %}
1024
{%- endfor %}

0 commit comments

Comments
 (0)