Skip to content

Commit 305f668

Browse files
committed
stick closer to default impl for create_x_as
1 parent d398b9f commit 305f668

File tree

2 files changed

+37
-18
lines changed

2 files changed

+37
-18
lines changed
Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,43 @@
11
{% macro sqlserver__create_table_as(temporary, relation, sql) -%}
2+
{#- TODO: add contracts here when in dbt 1.5 -#}
3+
{%- set sql_header = config.get('sql_header', none) -%}
24
{%- set as_columnstore = config.get('as_columnstore', default=true) -%}
3-
{% set tmp_relation = relation.incorporate(
4-
path={"identifier": relation.identifier.replace("#", "") ~ '_temp_view'},
5-
type='view')-%}
65
{%- set temp_view_sql = sql.replace("'", "''") -%}
6+
{%- set tmp_relation = relation.incorporate(
7+
path={"identifier": relation.identifier.replace("#", "") ~ '_temp_view'},
8+
type='view') -%}
79

8-
{{ sqlserver__drop_relation_script(tmp_relation) }}
10+
{{- sql_header if sql_header is not none -}}
911

10-
{{ sqlserver__drop_relation_script(relation) }}
12+
-- drop previous temp view
13+
{{- sqlserver__drop_relation_script(tmp_relation) }}
1114

15+
-- create temp view
1216
USE [{{ relation.database }}];
1317
EXEC('create view {{ tmp_relation.include(database=False) }} as
14-
{{ temp_view_sql }}
18+
{{- temp_view_sql -}}
1519
');
1620

17-
SELECT * INTO {{ relation }} FROM
18-
{{ tmp_relation }}
21+
-- drop current version of the table
22+
{{- sqlserver__drop_relation_script(relation) -}}
23+
24+
-- select into the table and create it that way
25+
{#- see https://learn.microsoft.com/en-us/sql/t-sql/queries/select-into-clause-transact-sql?view=sql-server-ver16#b-inserting-rows-using-minimal-logging #}
26+
ALTER DATABASE [{{ relation.database }}] SET RECOVERY BULK_LOGGED
27+
28+
SELECT *
29+
INTO {% if temporary %}#{% endif %}{{ relation.include(database=(not temporary), schema=(not temporary)) }}
30+
FROM {{ tmp_relation }}
31+
32+
{#- see https://learn.microsoft.com/en-us/sql/t-sql/queries/select-into-clause-transact-sql?view=sql-server-ver16#b-inserting-rows-using-minimal-logging #}
33+
ALTER DATABASE [{{ relation.database }}] SET RECOVERY FULL
1934

35+
-- drop temp view
2036
{{ sqlserver__drop_relation_script(tmp_relation) }}
2137

22-
{% if not temporary and as_columnstore -%}
23-
{{ sqlserver__create_clustered_columnstore_index(relation) }}
24-
{% endif %}
38+
{%- if not temporary and as_columnstore -%}
39+
-- add columnstore index
40+
{{ sqlserver__create_clustered_columnstore_index(relation) }}
41+
{%- endif -%}
2542

2643
{% endmacro %}

dbt/include/sqlserver/macros/materializations/models/view/create_view_as.sql

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1+
{% macro sqlserver__create_view_as(relation, sql) -%}
2+
{%- set sql_header = config.get('sql_header', none) -%}
3+
{{ sql_header if sql_header is not none }}
4+
USE [{{ relation.database }}];
5+
{{ sqlserver__create_view_exec(relation, sql) }}
6+
{% endmacro %}
7+
18
{% macro sqlserver__create_view_exec(relation, sql) -%}
9+
{#- TODO: add contracts here when in dbt 1.5 -#}
210
{%- set temp_view_sql = sql.replace("'", "''") -%}
311
execute('create view {{ relation.include(database=False) }} as
4-
{{ temp_view_sql }}
12+
{{ temp_view_sql }}
513
');
614
{% endmacro %}
7-
8-
9-
{% macro sqlserver__create_view_as(relation, sql) -%}
10-
USE [{{ relation.database }}];
11-
{{ sqlserver__create_view_exec(relation, sql) }}
12-
{% endmacro %}

0 commit comments

Comments
 (0)