-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
removed deprication for materialization-return and replaced it with a…
…n exception
- Loading branch information
Showing
6 changed files
with
92 additions
and
48 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 4 additions & 0 deletions
4
test/integration/053_custom_materialization/override-view-return-no-relation/dbt_project.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
name: view_adapter_override | ||
version: 2 | ||
macro-paths: ['macros'] | ||
config-version: 2 |
66 changes: 66 additions & 0 deletions
66
...tion/053_custom_materialization/override-view-return-no-relation/macros/override_view.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
{# copy+pasting the default view impl #} | ||
{% materialization view, default %} | ||
|
||
{%- set identifier = model['alias'] -%} | ||
{%- set tmp_identifier = model['name'] + '__dbt_tmp' -%} | ||
{%- set backup_identifier = model['name'] + '__dbt_backup' -%} | ||
|
||
{%- set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) -%} | ||
{%- set target_relation = api.Relation.create(identifier=identifier, schema=schema, database=database, | ||
type='view') -%} | ||
{%- set intermediate_relation = api.Relation.create(identifier=tmp_identifier, | ||
schema=schema, database=database, type='view') -%} | ||
|
||
/* | ||
This relation (probably) doesn't exist yet. If it does exist, it's a leftover from | ||
a previous run, and we're going to try to drop it immediately. At the end of this | ||
materialization, we're going to rename the "old_relation" to this identifier, | ||
and then we're going to drop it. In order to make sure we run the correct one of: | ||
- drop view ... | ||
- drop table ... | ||
We need to set the type of this relation to be the type of the old_relation, if it exists, | ||
or else "view" as a sane default if it does not. Note that if the old_relation does not | ||
exist, then there is nothing to move out of the way and subsequentally drop. In that case, | ||
this relation will be effectively unused. | ||
*/ | ||
{%- set backup_relation_type = 'view' if old_relation is none else old_relation.type -%} | ||
{%- set backup_relation = api.Relation.create(identifier=backup_identifier, | ||
schema=schema, database=database, | ||
type=backup_relation_type) -%} | ||
|
||
{%- set exists_as_view = (old_relation is not none and old_relation.is_view) -%} | ||
|
||
{{ run_hooks(pre_hooks, inside_transaction=False) }} | ||
|
||
-- drop the temp relations if they exists for some reason | ||
{{ adapter.drop_relation(intermediate_relation) }} | ||
{{ adapter.drop_relation(backup_relation) }} | ||
|
||
-- `BEGIN` happens here: | ||
{{ run_hooks(pre_hooks, inside_transaction=True) }} | ||
|
||
-- build model | ||
{% call statement('main') -%} | ||
{{ create_view_as(intermediate_relation, sql) }} | ||
{%- endcall %} | ||
|
||
-- cleanup | ||
-- move the existing view out of the way | ||
{% if old_relation is not none %} | ||
{{ adapter.rename_relation(target_relation, backup_relation) }} | ||
{% endif %} | ||
{{ adapter.rename_relation(intermediate_relation, target_relation) }} | ||
|
||
{{ run_hooks(post_hooks, inside_transaction=True) }} | ||
|
||
{{ adapter.commit() }} | ||
|
||
{{ drop_relation_if_exists(backup_relation) }} | ||
|
||
{{ run_hooks(post_hooks, inside_transaction=False) }} | ||
|
||
{# do not return anything! #} | ||
{# {{ return({'relations': [target_relation]}) }} #} | ||
|
||
{%- endmaterialization -%} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters