-- Copyright Materialize, Inc. and contributors. All rights reserved. -- -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. -- You may obtain a copy of the License in the LICENSE file at the -- root of this repository, or online at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. {% materialization seed, adapter='materialize' %} {%- set identifier = model['alias'] -%} {%- set full_refresh_mode = (should_full_refresh()) -%} {%- set old_relation = adapter.get_relation(database=database, schema=schema, identifier=identifier) -%} {%- set exists_as_table = (old_relation is not none and old_relation.is_table) -%} {%- set exists_as_view = (old_relation is not none and old_relation.is_view) -%} {%- set exists_as_materialized_view = (old_relation is not none and old_relation.is_materialized_view) -%} {%- set exists_as_source = (old_relation is not none and old_relation.is_source) -%} {%- set exists_as_sink = (old_relation is not none and old_relation.is_sink) -%} {%- set agate_table = load_agate_table() -%} {%- do store_result('agate_table', response='OK', agate_table=agate_table) -%} {{ run_hooks(pre_hooks, inside_transaction=False) }} {{ run_hooks(pre_hooks, inside_transaction=True) }} {% set create_table_sql = "" %} {% if exists_as_view or exists_as_materialized_view or exists_as_source or exists_as_sink %} {{ exceptions.raise_compiler_error("Cannot seed to '{}', it is a '{}'".format(old_relation.render(),old_relation.type)) }} {% elif exists_as_table %} {% set create_table_sql = reset_csv_table(model, full_refresh_mode, old_relation, agate_table) %} {% else %} {% set create_table_sql = create_csv_table(model, agate_table) %} {% endif %} {% set code = 'CREATE' if full_refresh_mode else 'INSERT' %} {% set rows_affected = (agate_table.rows | length) %} {% set sql = load_csv_rows(model, agate_table) %} {% call noop_statement('main', code ~ ' ' ~ rows_affected, code, rows_affected) %} {{ get_csv_sql(create_table_sql, sql) }}; {% endcall %} {% set target_relation = this.incorporate(type='table') %} {% do persist_docs(target_relation, model) %} {% if full_refresh_mode or not exists_as_table %} {% do create_indexes(target_relation) %} {% endif %} {{ run_hooks(post_hooks, inside_transaction=True) }} {{ adapter.commit() }} {{ run_hooks(post_hooks, inside_transaction=False) }} {{ return({'relations': [target_relation]}) }} {% endmaterialization %}