Initial commit
This commit is contained in:
163
skills/dbt/macros/override_dbt_trino.sql
Normal file
163
skills/dbt/macros/override_dbt_trino.sql
Normal file
@@ -0,0 +1,163 @@
|
||||
-- Import from dbt-trino v1.7.1
|
||||
-- https://github.com/starburstdata/dbt-trino/blob/v1.7.1/dbt/include/trino/macros/catalog.sql
|
||||
-- To remove unnecessary parts that cause errors with TD Presto
|
||||
-- https://github.com/starburstdata/dbt-trino/blob/1.4.latest/dbt/include/trino/macros/catalog.sql#L40-L59
|
||||
-- https://github.com/starburstdata/dbt-trino/issues/298
|
||||
|
||||
{% macro trino__get_catalog(information_schema, schemas) -%}
|
||||
|
||||
{% set query %}
|
||||
with tables as (
|
||||
{{ trino__get_catalog_tables_sql(information_schema) }}
|
||||
{{ trino__get_catalog_schemas_where_clause_sql(schemas) }}
|
||||
),
|
||||
columns as (
|
||||
{{ trino__get_catalog_columns_sql(information_schema) }}
|
||||
{{ trino__get_catalog_schemas_where_clause_sql(schemas) }}
|
||||
)
|
||||
{{ trino__get_catalog_results_sql() }}
|
||||
{%- endset -%}
|
||||
|
||||
{{ return(run_query(query)) }}
|
||||
|
||||
{%- endmacro %}
|
||||
|
||||
|
||||
{% macro trino__get_catalog_relations(information_schema, relations) -%}
|
||||
|
||||
{% set query %}
|
||||
with tables as (
|
||||
{{ trino__get_catalog_tables_sql(information_schema) }}
|
||||
{{ trino__get_catalog_relations_where_clause_sql(relations) }}
|
||||
),
|
||||
columns as (
|
||||
{{ trino__get_catalog_columns_sql(information_schema) }}
|
||||
{{ trino__get_catalog_relations_where_clause_sql(relations) }}
|
||||
)
|
||||
{{ trino__get_catalog_results_sql() }}
|
||||
{%- endset -%}
|
||||
|
||||
{{ return(run_query(query)) }}
|
||||
|
||||
{%- endmacro %}
|
||||
|
||||
|
||||
{% macro trino__get_catalog_tables_sql(information_schema) -%}
|
||||
select
|
||||
table_catalog as "table_database",
|
||||
table_schema as "table_schema",
|
||||
table_name as "table_name",
|
||||
table_type as "table_type",
|
||||
null as "table_owner"
|
||||
from {{ information_schema }}.tables
|
||||
{%- endmacro %}
|
||||
|
||||
|
||||
{% macro trino__get_catalog_columns_sql(information_schema) -%}
|
||||
select
|
||||
table_catalog as "table_database",
|
||||
table_schema as "table_schema",
|
||||
table_name as "table_name",
|
||||
column_name as "column_name",
|
||||
ordinal_position as "column_index",
|
||||
data_type as "column_type",
|
||||
comment as "column_comment"
|
||||
from {{ information_schema }}.columns
|
||||
{%- endmacro %}
|
||||
|
||||
|
||||
{% macro trino__get_catalog_results_sql() -%}
|
||||
select
|
||||
table_database,
|
||||
table_schema,
|
||||
table_name,
|
||||
table_type,
|
||||
table_owner,
|
||||
column_name,
|
||||
column_index,
|
||||
column_type,
|
||||
column_comment
|
||||
from tables
|
||||
join columns using ("table_database", "table_schema", "table_name")
|
||||
order by "column_index"
|
||||
{%- endmacro %}
|
||||
|
||||
|
||||
{% macro trino__get_catalog_schemas_where_clause_sql(schemas) -%}
|
||||
where
|
||||
table_schema != 'information_schema'
|
||||
and
|
||||
table_schema in ('{{ schemas | join("','") | lower }}')
|
||||
{%- endmacro %}
|
||||
|
||||
|
||||
{% macro trino__get_catalog_relations_where_clause_sql(relations) -%}
|
||||
where
|
||||
table_schema != 'information_schema'
|
||||
and
|
||||
(
|
||||
{%- for relation in relations -%}
|
||||
{% if relation.schema and relation.identifier %}
|
||||
(
|
||||
table_schema = '{{ relation.schema | lower }}'
|
||||
and table_name = '{{ relation.identifier | lower }}'
|
||||
)
|
||||
{% elif relation.schema %}
|
||||
(
|
||||
table_schema = '{{ relation.schema | lower }}'
|
||||
)
|
||||
{% else %}
|
||||
{% do exceptions.raise_compiler_error(
|
||||
'`get_catalog_relations` requires a list of relations, each with a schema'
|
||||
) %}
|
||||
{% endif %}
|
||||
|
||||
{%- if not loop.last %} or {% endif -%}
|
||||
{%- endfor -%}
|
||||
)
|
||||
{%- endmacro %}
|
||||
|
||||
|
||||
-- - get_catalog
|
||||
-- - list_relations_without_caching
|
||||
-- - get_columns_in_relation
|
||||
|
||||
-- Import from dbt-trino v1.1
|
||||
-- https://github.com/starburstdata/dbt-trino/blob/1.1.latest/dbt/include/trino/macros/adapters.sql
|
||||
-- To remove unnecessary parts that cause errors with TD Presto
|
||||
-- https://github.com/starburstdata/dbt-trino/blob/1.4.latest/dbt/include/trino/macros/adapters.sql#L29-L48
|
||||
-- https://github.com/starburstdata/dbt-trino/issues/298
|
||||
{% macro trino__list_relations_without_caching(relation) %}
|
||||
{% call statement('list_relations_without_caching', fetch_result=True) -%}
|
||||
select
|
||||
table_catalog as database,
|
||||
table_name as name,
|
||||
table_schema as schema,
|
||||
case when table_type = 'BASE TABLE' then 'table'
|
||||
when table_type = 'VIEW' then 'view'
|
||||
else table_type
|
||||
end as table_type
|
||||
from {{ relation.information_schema() }}.tables
|
||||
where table_schema = '{{ relation.schema | lower }}'
|
||||
{% endcall %}
|
||||
{{ return(load_result('list_relations_without_caching').table) }}
|
||||
{% endmacro %}
|
||||
|
||||
-- Override dbt-trino "trino__create_view_as" macro with "create table if not exists"
|
||||
-- https://github.com/starburstdata/dbt-trino/blob/1.4.latest/dbt/include/trino/macros/adapters.sql#L102-L115
|
||||
-- To void unsupported "create view" action with TD Presto
|
||||
-- Database Error in model dbt_results (models/dbt_results.sql)
|
||||
-- TrinoUserError(type=USER_ERROR, name=NOT_SUPPORTED, message="This connector does not support creating views")
|
||||
{% macro trino__create_view_as(relation, sql) -%}
|
||||
{%- set view_security = config.get('view_security', 'definer') -%}
|
||||
{%- if view_security not in ['definer', 'invoker'] -%}
|
||||
{%- set log_message = 'Invalid value for view_security (%s) specified. Setting default value (%s).' % (view_security, 'definer') -%}
|
||||
{% do log(log_message) %}
|
||||
{%- set on_table_exists = 'definer' -%}
|
||||
{% endif %}
|
||||
create table if not exists
|
||||
{{ relation }}
|
||||
as
|
||||
{{ sql }}
|
||||
;
|
||||
{% endmacro %}
|
||||
Reference in New Issue
Block a user