Skip to content

Commit 3d202ea

Browse files
authored
Merge pull request #181 from dbt-msft/one-point-oh
move to 1.0
2 parents 3bd8655 + 183e2b8 commit 3d202ea

File tree

24 files changed

+339
-351
lines changed

24 files changed

+339
-351
lines changed

.circleci/config.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,11 @@ jobs:
125125
export AZURE_TENANT_ID="$DBT_AZURE_TENANT"
126126
cd test/integration
127127
dbt compile --target azuresql_azauto
128-
- run:
129-
name: cnxn -- Azure SQL - AZ SP env
130-
command: |
131-
cd test/integration
132-
dbt compile --target azuresql_azenv
128+
# - run:
129+
# name: cnxn -- Azure SQL - AZ SP env
130+
# command: |
131+
# cd test/integration
132+
# dbt compile --target azuresql_azenv
133133

134134
workflows:
135135
main:

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
# Changelog
22

3+
4+
### v1.0.0
5+
6+
Please see [dbt-core v1.0.0 release notes](https://github.com/dbt-labs/dbt-core/releases/tag/v1.0.0) for upstream changes
7+
8+
#### Fixes
9+
10+
- fix index naming when columns contain spaces [#175](https://github.com/dbt-msft/dbt-sqlserver/pull/175)
11+
#### Under the Hood
12+
13+
- re-organize macros to match new structure [#184](https://github.com/dbt-msft/dbt-sqlserver/pull/184)
314
### v0.21.1
415

516
#### features

dbt/adapters/sqlserver/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version = '0.21.1'
1+
version = '1.0.0'
Lines changed: 2 additions & 270 deletions
Original file line numberDiff line numberDiff line change
@@ -1,271 +1,3 @@
1-
{% macro sqlserver__information_schema_name(database) -%}
2-
information_schema
3-
{%- endmacro %}
4-
5-
6-
{% macro sqlserver__get_columns_in_query(select_sql) %}
7-
{% call statement('get_columns_in_query', fetch_result=True, auto_begin=False) -%}
8-
select TOP 0 * from (
9-
{{ select_sql }}
10-
) as __dbt_sbq
11-
where 0 = 1
12-
{% endcall %}
13-
14-
{{ return(load_result('get_columns_in_query').table.columns | map(attribute='name') | list) }}
15-
{% endmacro %}
16-
17-
18-
{% macro sqlserver__list_relations_without_caching(schema_relation) %}
19-
{% call statement('list_relations_without_caching', fetch_result=True) -%}
20-
select
21-
table_catalog as [database],
22-
table_name as [name],
23-
table_schema as [schema],
24-
case when table_type = 'BASE TABLE' then 'table'
25-
when table_type = 'VIEW' then 'view'
26-
else table_type
27-
end as table_type
28-
29-
from [{{ schema_relation.database }}].information_schema.tables
30-
where table_schema like '{{ schema_relation.schema }}'
31-
{% endcall %}
32-
{{ return(load_result('list_relations_without_caching').table) }}
33-
{% endmacro %}
34-
35-
{% macro sqlserver__list_schemas(database) %}
36-
{% call statement('list_schemas', fetch_result=True, auto_begin=False) -%}
37-
USE {{ database }};
38-
select name as [schema]
39-
from sys.schemas
40-
{% endcall %}
41-
{{ return(load_result('list_schemas').table) }}
42-
{% endmacro %}
43-
44-
{% macro sqlserver__create_schema(relation) -%}
45-
{% call statement('create_schema') -%}
46-
USE [{{ relation.database }}];
47-
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = '{{ relation.without_identifier().schema }}')
48-
BEGIN
49-
EXEC('CREATE SCHEMA {{ relation.without_identifier().schema }}')
50-
END
51-
{% endcall %}
52-
{% endmacro %}
53-
54-
{% macro sqlserver__drop_schema(relation) -%}
55-
{%- set tables_in_schema_query %}
56-
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
57-
WHERE TABLE_SCHEMA = '{{ relation.schema }}'
58-
{% endset %}
59-
{% set tables_to_drop = run_query(tables_in_schema_query).columns[0].values() %}
60-
{% for table in tables_to_drop %}
61-
{%- set schema_relation = adapter.get_relation(database=relation.database,
62-
schema=relation.schema,
63-
identifier=table) -%}
64-
{% do drop_relation(schema_relation) %}
65-
{%- endfor %}
66-
67-
{% call statement('drop_schema') -%}
68-
IF EXISTS (SELECT * FROM sys.schemas WHERE name = '{{ relation.schema }}')
69-
BEGIN
70-
EXEC('DROP SCHEMA {{ relation.schema }}')
71-
END {% endcall %}
72-
{% endmacro %}
73-
74-
{% macro sqlserver__drop_relation(relation) -%}
75-
{% call statement('drop_relation', auto_begin=False) -%}
76-
{{ sqlserver__drop_relation_script(relation) }}
77-
{%- endcall %}
78-
{% endmacro %}
79-
80-
{% macro sqlserver__drop_relation_script(relation) -%}
81-
{% if relation.type == 'view' -%}
82-
{% set object_id_type = 'V' %}
83-
{% elif relation.type == 'table'%}
84-
{% set object_id_type = 'U' %}
85-
{%- else -%} invalid target name
86-
{% endif %}
87-
USE [{{ relation.database }}];
88-
if object_id ('{{ relation.include(database=False) }}','{{ object_id_type }}') is not null
89-
begin
90-
drop {{ relation.type }} {{ relation.include(database=False) }}
91-
end
92-
{% endmacro %}
93-
94-
{% macro sqlserver__check_schema_exists(information_schema, schema) -%}
95-
{% call statement('check_schema_exists', fetch_result=True, auto_begin=False) -%}
96-
--USE {{ database_name }}
97-
SELECT count(*) as schema_exist FROM sys.schemas WHERE name = '{{ schema }}'
98-
{%- endcall %}
99-
{{ return(load_result('check_schema_exists').table) }}
100-
{% endmacro %}
101-
102-
103-
{% macro sqlserver__create_view_exec(relation, sql) -%}
104-
{%- set temp_view_sql = sql.replace("'", "''") -%}
105-
execute('create view {{ relation.include(database=False) }} as
106-
{{ temp_view_sql }}
107-
');
108-
{% endmacro %}
109-
110-
111-
{% macro sqlserver__create_view_as(relation, sql) -%}
112-
USE [{{ relation.database }}];
113-
{{ sqlserver__create_view_exec(relation, sql) }}
114-
{% endmacro %}
115-
116-
117-
{% macro sqlserver__rename_relation(from_relation, to_relation) -%}
118-
{% call statement('rename_relation') -%}
119-
USE [{{ to_relation.database }}];
120-
EXEC sp_rename '{{ from_relation.schema }}.{{ from_relation.identifier }}', '{{ to_relation.identifier }}'
121-
IF EXISTS(
122-
SELECT *
123-
FROM sys.indexes
124-
WHERE name='{{ from_relation.schema }}_{{ from_relation.identifier }}_cci' and object_id = OBJECT_ID('{{ from_relation.schema }}.{{ to_relation.identifier }}'))
125-
EXEC sp_rename N'{{ from_relation.schema }}.{{ to_relation.identifier }}.{{ from_relation.schema }}_{{ from_relation.identifier }}_cci', N'{{ from_relation.schema }}_{{ to_relation.identifier }}_cci', N'INDEX'
126-
{%- endcall %}
127-
{% endmacro %}
128-
129-
{% macro sqlserver__create_clustered_columnstore_index(relation) -%}
130-
{%- set cci_name = relation.schema ~ '_' ~ relation.identifier ~ '_cci' -%}
131-
{%- set relation_name = relation.schema ~ '_' ~ relation.identifier -%}
132-
{%- set full_relation = relation.schema ~ '.' ~ relation.identifier -%}
133-
use [{{ relation.database }}];
134-
if EXISTS (
135-
SELECT * FROM
136-
sys.indexes WHERE name = '{{cci_name}}'
137-
AND object_id=object_id('{{relation_name}}')
138-
)
139-
DROP index {{full_relation}}.{{cci_name}}
140-
CREATE CLUSTERED COLUMNSTORE INDEX {{cci_name}}
141-
ON {{full_relation}}
142-
{% endmacro %}
143-
144-
{% macro sqlserver__create_table_as(temporary, relation, sql) -%}
145-
{%- set as_columnstore = config.get('as_columnstore', default=true) -%}
146-
{% set tmp_relation = relation.incorporate(
147-
path={"identifier": relation.identifier.replace("#", "") ~ '_temp_view'},
148-
type='view')-%}
149-
{%- set temp_view_sql = sql.replace("'", "''") -%}
150-
151-
{{ sqlserver__drop_relation_script(tmp_relation) }}
152-
153-
{{ sqlserver__drop_relation_script(relation) }}
154-
155-
USE [{{ relation.database }}];
156-
EXEC('create view {{ tmp_relation.include(database=False) }} as
157-
{{ temp_view_sql }}
158-
');
159-
160-
SELECT * INTO {{ relation }} FROM
161-
{{ tmp_relation }}
162-
163-
{{ sqlserver__drop_relation_script(tmp_relation) }}
164-
165-
{% if not temporary and as_columnstore -%}
166-
{{ sqlserver__create_clustered_columnstore_index(relation) }}
167-
{% endif %}
168-
169-
{% endmacro %}
170-
171-
{% macro sqlserver__insert_into_from(to_relation, from_relation) -%}
1+
{# {% macro sqlserver__insert_into_from(to_relation, from_relation) -%}
1722
SELECT * INTO {{ to_relation }} FROM {{ from_relation }}
173-
{% endmacro %}
174-
175-
{% macro sqlserver__current_timestamp() -%}
176-
SYSDATETIME()
177-
{%- endmacro %}
178-
179-
{% macro sqlserver__get_columns_in_relation(relation) -%}
180-
{% call statement('get_columns_in_relation', fetch_result=True) %}
181-
SELECT
182-
column_name,
183-
data_type,
184-
character_maximum_length,
185-
numeric_precision,
186-
numeric_scale
187-
FROM
188-
(select
189-
ordinal_position,
190-
column_name,
191-
data_type,
192-
character_maximum_length,
193-
numeric_precision,
194-
numeric_scale
195-
from [{{ relation.database }}].INFORMATION_SCHEMA.COLUMNS
196-
where table_name = '{{ relation.identifier }}'
197-
and table_schema = '{{ relation.schema }}'
198-
UNION ALL
199-
select
200-
ordinal_position,
201-
column_name collate database_default,
202-
data_type collate database_default,
203-
character_maximum_length,
204-
numeric_precision,
205-
numeric_scale
206-
from tempdb.INFORMATION_SCHEMA.COLUMNS
207-
where table_name like '{{ relation.identifier }}%') cols
208-
order by ordinal_position
209-
210-
211-
{% endcall %}
212-
{% set table = load_result('get_columns_in_relation').table %}
213-
{{ return(sql_convert_columns_in_relation(table)) }}
214-
{% endmacro %}
215-
216-
{% macro sqlserver__make_temp_relation(base_relation, suffix) %}
217-
{% set tmp_identifier = '#' ~ base_relation.identifier ~ suffix %}
218-
{% set tmp_relation = base_relation.incorporate(
219-
path={"identifier": tmp_identifier}) -%}
220-
221-
{% do return(tmp_relation) %}
222-
{% endmacro %}
223-
224-
{% macro sqlserver__snapshot_string_as_time(timestamp) -%}
225-
{%- set result = "CONVERT(DATETIME2, '" ~ timestamp ~ "')" -%}
226-
{{ return(result) }}
227-
{%- endmacro %}
228-
229-
{% macro default__alter_relation_add_remove_columns(relation, add_columns, remove_columns) %}
230-
{# default__ macro uses "add column"
231-
TSQL preferes just "add"
232-
#}
233-
{% if add_columns is none %}
234-
{% set add_columns = [] %}
235-
{% endif %}
236-
{% if remove_columns is none %}
237-
{% set remove_columns = [] %}
238-
{% endif %}
239-
240-
{% set sql -%}
241-
242-
alter {{ relation.type }} {{ relation }}
243-
244-
{% for column in add_columns %}
245-
add {{ column.name }} {{ column.data_type }}{{ ',' if not loop.last }}
246-
{% endfor %}{{ ',' if add_columns and remove_columns }}
247-
248-
{% for column in remove_columns %}
249-
drop column {{ column.name }}{{ ',' if not loop.last }}
250-
{% endfor %}
251-
252-
{%- endset -%}
253-
254-
{% do run_query(sql) %}
255-
256-
{% endmacro %}
257-
258-
{% macro sqlserver__alter_column_type(relation, column_name, new_column_type) %}
259-
260-
{%- set tmp_column = column_name + "__dbt_alter" -%}
261-
262-
{% call statement('alter_column_type') -%}
263-
264-
alter {{ relation.type }} {{ relation }} add {{ tmp_column }} {{ new_column_type }};
265-
update {{ relation }} set {{ tmp_column }} = {{ column_name }};
266-
alter {{ relation.type }} {{ relation }} drop column {{ column_name }};
267-
exec sp_rename '{{ relation | replace('"', '') }}.{{ tmp_column }}', '{{ column_name }}', 'column'
268-
269-
{%- endcall -%}
270-
271-
{% endmacro %}
3+
{% endmacro %} #}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
{% macro sqlserver__get_columns_in_relation(relation) -%}
2+
{% call statement('get_columns_in_relation', fetch_result=True) %}
3+
SELECT
4+
column_name,
5+
data_type,
6+
character_maximum_length,
7+
numeric_precision,
8+
numeric_scale
9+
FROM
10+
(select
11+
ordinal_position,
12+
column_name,
13+
data_type,
14+
character_maximum_length,
15+
numeric_precision,
16+
numeric_scale
17+
from [{{ relation.database }}].INFORMATION_SCHEMA.COLUMNS
18+
where table_name = '{{ relation.identifier }}'
19+
and table_schema = '{{ relation.schema }}'
20+
UNION ALL
21+
select
22+
ordinal_position,
23+
column_name collate database_default,
24+
data_type collate database_default,
25+
character_maximum_length,
26+
numeric_precision,
27+
numeric_scale
28+
from tempdb.INFORMATION_SCHEMA.COLUMNS
29+
where table_name like '{{ relation.identifier }}%') cols
30+
order by ordinal_position
31+
32+
33+
{% endcall %}
34+
{% set table = load_result('get_columns_in_relation').table %}
35+
{{ return(sql_convert_columns_in_relation(table)) }}
36+
{% endmacro %}
37+
38+
39+
{% macro sqlserver__get_columns_in_query(select_sql) %}
40+
{% call statement('get_columns_in_query', fetch_result=True, auto_begin=False) -%}
41+
select TOP 0 * from (
42+
{{ select_sql }}
43+
) as __dbt_sbq
44+
where 0 = 1
45+
{% endcall %}
46+
47+
{{ return(load_result('get_columns_in_query').table.columns | map(attribute='name') | list) }}
48+
{% endmacro %}
49+
50+
{% macro sqlserver__alter_column_type(relation, column_name, new_column_type) %}
51+
52+
{%- set tmp_column = column_name + "__dbt_alter" -%}
53+
54+
{% call statement('alter_column_type') -%}
55+
56+
alter {{ relation.type }} {{ relation }} add {{ tmp_column }} {{ new_column_type }};
57+
update {{ relation }} set {{ tmp_column }} = {{ column_name }};
58+
alter {{ relation.type }} {{ relation }} drop column {{ column_name }};
59+
exec sp_rename '{{ relation | replace('"', '') }}.{{ tmp_column }}', '{{ column_name }}', 'column'
60+
61+
{%- endcall -%}
62+
63+
{% endmacro %}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{% macro sqlserver__current_timestamp() -%}
2+
SYSDATETIME()
3+
{%- endmacro %}

0 commit comments

Comments
 (0)